/* * File: SIM7080GInterface.h * Author: JF * * Created on August 13, 2024, 1:43 PM */ #ifndef SIM7080GINTERFACE_H #define SIM7080GINTERFACE_H #include "define.h" #define LTE_MODULE_POWERUP_TIMEOUT 2000 #define LTE_MODULE_WAIT_INIT_TIMEOUT 5000 #define LTE_MODULE_CONNECTION_CHECK_TIMEOUT 5000 #define LTE_MODULE_MAX_CMD_LENGTH 128 #define LTE_MODULE_MAX_MASTER_CONNECT_RETRY 5 #define LTE_MODULE_MAX_COMM_TIMEOUT 10000 enum eLTEModuleCommands { LTE_MODULE_NO_CMD = 0, LTE_MODULE_CONNECT_APN_CMD, LTE_MODULE_DISCONNECT_APN_CMD, LTE_MODULE_CONNECT_TO_MASTER_CMD, LTE_MODULE_DISCONNECT_FROM_MASTER_CMD, LTE_MODULE_RX_DATA_CMD, LTE_MODULE_TX_DATA_CMD, LTE_MODULE_CHECK_APN_CONNECTION_CMD, LTE_MODULE_CHECK_MASTER_CONNECTION_CMD, LTE_MODULE_MAX_CMD }; enum eLTEModuleCmdResult { LTE_MODULE_RESULT_OK, LTE_MODULE_RESULT_ERROR }; enum eLTEModuleAPNConnectionStatus { LTE_MODULE_APN_DISCONNECTED, LTE_MODULE_APN_CONNECTED }; enum eLTEModuleMasterConnectionStatus { LTE_MODULE_MASTER_DISCONNECTED, LTE_MODULE_MASTER_CONNECTED, LTE_MODULE_MASTER_SOCKET_ERROR }; enum eLTEModuleStates { LTE_MODULE_SM_INIT_STATE, LTE_MODULE_SM_RESET_STATE, LTE_MODULE_SM_POWERUP_STATE, LTE_MODULE_SM_WAIT_RDY_STATE, LTE_MODULE_SM_SETECHOOFF_STATE, LTE_MODULE_SM_SETAPN_STATE, LTE_MODULE_SM_DELAY_STATE, LTE_MODULE_SM_RUN_STATE, LTE_MODULE_SM_PASSTHROUGH_STATE, LTE_MODULE_SM_MAX_STATE }; enum eLTEModuleEvents { LTE_MODULE_SM_TICK_EVENT, LTE_MODULE_RX_DATA_EVENT, LTE_MODULE_RX_RDY_EVENT, LTE_MODULE_ENTER_PASSTHROUGH_EVENT, LTE_MODULE_EXIT_PASSTHROUGH_EVENT, LTE_MODULE_MAX_EVENT }; enum eLTEModuleOperationStates { LTE_MODULE_OPERATION_INIT_STATE, LTE_MODULE_OPERATION_WAIT_CONNECT_APN_STATE, LTE_MODULE_OPERATION_CHECK_APN_STATE, LTE_MODULE_OPERATION_WAIT_CONNECT_SERVER_STATE, LTE_MODULE_OPERATION_WAIT_DISCONNECT_SERVER_STATE, LTE_MODULE_OPERATION_STANDBY_STATE, LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE, LTE_MODULE_OPERATION_SENDING_DATA_STATE, LTE_MODULE_OPERATION_MAX_STATE }; enum eLTEModuleOperationSubStates { LTE_MODULE_OPERATION_NOMINAL_SUBSTATE, LTE_MODULE_OPERATION_RECONNECT_MASTER_SUBSTATE, LTE_MODULE_OPERATION_CHECK_APN_SUBSTATE, LTE_MODULE_OPERATION_RECONNECT_APN_SUBSTATE, LTE_MODULE_OPERATION_MAX_SUBSTATE }; enum eLTEModuleOperationSMEvents { LTE_MODULE_OP_TICK_EVENT, LTE_MODULE_OP_APN_CONNECTED_EVENT, LTE_MODULE_OP_APN_DISCONNECTED_EVENT, LTE_MODULE_OP_APN_CONN_FAILED_EVENT, LTE_MODULE_OP_APN_CONN_OK_EVENT, LTE_MODULE_OP_SERVER_CONNECTED_EVENT, LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT, LTE_MODULE_OP_SERVER_CONN_FAILED_EVENT, LTE_MODULE_OP_CMD_RESP_RECEIVED_EVENT, LTE_MODULE_OP_MASTER_DATA_READY_EVENT, LTE_MODULE_OP_MASTER_DATA_RECEIVED_EVENT, LTE_MODULE_OP_MASTER_SEND_DATA_REQUEST_EVENT, LTE_MODULE_OP_MASTER_DATA_SENT_EVENT, LTE_MODULE_OP_MAX_EVENT }; void InitLTEModule(); void LTEModuleSM(int SMEvent); void TickLTEModule(); void LTEModuleOperationSM(int OperationEvent); void LTEModuleNewData(unsigned char Data); void LTEEnterSerialPassthrough(); void LTEExitSerialPassthrough(); void LTEFwdPassthroughData(char Data); int LTEEnableSerialDebug(bool EnModule, bool EnPic); int LTESendCommandToModule(int Command); void SendDataToLteModule(char *Data, int Size); int LTEModuleReset(); int LTESendDataToMaster(char *Buffer, int Size); int LTESendMasterBufferToModule(); void LTECmdResponseReceived(int Cmd, int Result); void LTEModuleAPNConnectionStatus(int Status); void LTEModuleMasterConnectionStatus(int Status); void LTEModuleNewDataReady(); void LTEModuleDataReceived(char *Data, int Size); void LTEModuleMasterCtrlCommStatus(bool Offline); bool LTEModuleIsMasterConnected(); #endif /* SIM7080GINTERFACE_H */