//****************************************************************************
//
//                        N E T M G R _ S M . S T M
//
//****************************************************************************
//
//****************************************************************************
//
//  @file    netmgr_sm.stm
//  @brief   Network Manager state machine specificaiton
//
//  DESCRIPTION
//  NetMgr's specification for the stame machine framework (STM2).
//
//****************************************************************************
//============================================================================
//
//  Copyright (c) 2010-2015 Qualcomm Technologies, Inc. All Rights Reserved
//
//  Qualcomm Technologies Proprietary
//
//  Export of this technology or software is regulated by the U.S. Government.
//  Diversion contrary to U.S. law prohibited.
//
//  All ideas, data and information contained in or disclosed by
//  this document are confidential and proprietary information of
//  Qualcomm Technologies, Inc. and all rights therein are expressly reserved.
//  By accepting this material the recipient agrees that this material
//  and the information contained therein are held in confidence and in
//  trust and will not be used, copied, reproduced in whole or in part,
//  nor its contents revealed in any manner to others without the express
//  written permission of Qualcomm Technologies, Inc.
//
//===========================================================================
//
//***************************************************************************
//
//                      EDIT HISTORY FOR FILE
//
//  $Id:$
//
//when       who        what, where, why
//--------   ---        -----------------------------------------------------
//02/08/10   ar         Initial version
//
//***************************************************************************

STATE_MACHINE NETMGR_SM
{
  INPUT_DEF_FILE  netmgr_sm.h;
  ENTRY           netmgr_sm_entry;
  EXIT            netmgr_sm_exit;
  INSTANCES       34;              /* Match NETMGR_MAX_LINK in netmgr_defs.h */
  INITIAL_STATE   NETMGR_STATE_DOWN;
  DEBUG_HOOK      netmgr_sm_debug_hook;
  ERROR_HOOK      netmgr_sm_error_hook;

  STATE NETMGR_STATE_DOWN
  {
    ENTRY       netmgr_sm_state_down_entry;
    EXIT        netmgr_sm_state_down_exit;

    INPUTS
    {
      NETMGR_INITED_EV             netmgr_sm_modem_is_msg;
      NETMGR_MODEM_IS_EV           netmgr_sm_modem_is_msg;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;
    }
  }

  STATE NETMGR_STATE_INITED
  {
    ENTRY netmgr_sm_state_inited_entry;
    EXIT  netmgr_sm_state_inited_exit;

    INPUTS
    {
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_modem_connected;
      NETMGR_WDS_DISCONNECTED_EV   netmgr_sm_modem_disconnected_in_inited;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_QOS_DELETE_EV         netmgr_sm_qos_delete;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_QOS_ACTIVATE_EV       netmgr_sm_qos_activate;
      NETMGR_QOS_SUSPEND_EV        netmgr_sm_qos_suspend;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;
    }
  }

  STATE NETMGR_STATE_COMING_UP
  {
    ENTRY       netmgr_sm_state_comingup_entry;
    EXIT        netmgr_sm_state_comingup_exit;

    INPUTS
    {
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_repost_modem_connected;
      NETMGR_WDS_DISCONNECTED_EV   netmgr_sm_modem_disconnected;
      NETMGR_KIF_OPENED_EV         netmgr_sm_kif_opened;
      NETMGR_KIF_CLOSED_EV         netmgr_sm_kif_closed;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_QOS_ACTIVATE_EV       netmgr_sm_qos_activate;
      NETMGR_QOS_SUSPEND_EV        netmgr_sm_qos_suspend;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;
    }
  }

  STATE NETMGR_STATE_CONFIGURING
  {
    ENTRY       netmgr_sm_state_configuring_entry;
    EXIT        netmgr_sm_state_configuring_exit;

    INPUTS
    {
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_repost_modem_connected;
      NETMGR_WDS_DISCONNECTED_EV   netmgr_sm_modem_disconnected;
      NETMGR_KIF_CONFIGURED_EV     netmgr_sm_kif_configured;
      NETMGR_KIF_CLOSED_EV         netmgr_sm_kif_closed;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_QOS_ACTIVATE_EV       netmgr_sm_qos_activate;
      NETMGR_QOS_SUSPEND_EV        netmgr_sm_qos_suspend;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;
    }
  }

  STATE NETMGR_STATE_RECONFIGURING
  {
    ENTRY       netmgr_sm_state_reconfiguring_entry;
    EXIT        netmgr_sm_state_reconfiguring_exit;

    INPUTS
    {
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_modem_reconfig;
      NETMGR_WDS_DISCONNECTED_EV   netmgr_sm_modem_disconnected;
      NETMGR_KIF_RECONFIGURED_EV   netmgr_sm_kif_configured;
      NETMGR_KIF_CLOSED_EV         netmgr_sm_kif_closed;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_QOS_ACTIVATE_EV       netmgr_sm_qos_activate;
      NETMGR_QOS_SUSPEND_EV        netmgr_sm_qos_suspend;
      NETMGR_QOS_FLOCNTRL_EV       netmgr_sm_qos_flow_control;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;

      NETMGR_WLAN_OPENED_EV        netmgr_sm_wlan_opened;
      NETMGR_WLAN_CLOSED_EV        netmgr_sm_wlan_closed;
    }
  }

  STATE NETMGR_STATE_UP
  {
    ENTRY       netmgr_sm_state_up_entry;
    EXIT        netmgr_sm_state_up_exit;

    INPUTS
    {
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_modem_reconfig;
      NETMGR_WDS_DISCONNECTED_EV   netmgr_sm_modem_disconnected;
      NETMGR_KIF_OPENED_EV         netmgr_sm_kif_opened;
      NETMGR_KIF_CLOSED_EV         netmgr_sm_kif_closed;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_QOS_ACTIVATE_EV       netmgr_sm_qos_activate;
      NETMGR_QOS_SUSPEND_EV        netmgr_sm_qos_suspend;
      NETMGR_QOS_MODIFY_EV         netmgr_sm_qos_modify;
      NETMGR_QOS_DELETE_EV         netmgr_sm_qos_delete;
      NETMGR_QOS_FLOCNTRL_EV       netmgr_sm_qos_flow_control;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;

      NETMGR_WLAN_OPENED_EV        netmgr_sm_wlan_opened;
      NETMGR_WLAN_CLOSED_EV        netmgr_sm_wlan_closed;
    }
  }

  STATE NETMGR_STATE_GOING_DOWN
  {
    ENTRY       netmgr_sm_state_goingdown_entry;
    EXIT        netmgr_sm_state_goingdown_exit;

    INPUTS
    {
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_modem_connected_while_going_down;
      NETMGR_KIF_OPENED_EV         netmgr_sm_kif_opened_while_going_down;
      NETMGR_KIF_CLOSED_EV         netmgr_sm_kif_closed;
      NETMGR_QOS_DELETE_EV         netmgr_sm_qos_delete;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;
    }
  }

  STATE NETMGR_STATE_GOING_DOWN_TO_COME_UP
  {
    ENTRY       netmgr_sm_state_goingdowntocomeup_entry;
    EXIT        netmgr_sm_state_goingdowntocomeup_exit;

    INPUTS
    {
      NETMGR_WDS_CONNECTED_EV      netmgr_sm_repost_modem_connected;
      NETMGR_WDS_DISCONNECTED_EV   netmgr_sm_modem_disconnected;
      NETMGR_KIF_CLOSED_EV         netmgr_sm_kif_down_to_come_up;
      NETMGR_KIF_OPENED_EV         netmgr_sm_kif_opened_while_going_down;
      NETMGR_MODEM_OOS_EV          netmgr_sm_modem_oos_msg;
      NETMGR_QOS_DELETE_EV         netmgr_sm_qos_delete;
      NETMGR_NETD_RESTART_EV       netmgr_sm_netd_restart;

      NETMGR_KIF_MSG_CMD           netmgr_sm_dispatch_kif_msg;
      NETMGR_QMI_MSG_CMD           netmgr_sm_dispatch_qmi_msg;
      NETMGR_RESET_MSG_CMD         netmgr_sm_modem_reset_msg;
    }
  }
}
