AudioConsole/AudioConsole.X/Source/SIM7080GInterface.h
2025-02-15 11:05:28 -05:00

154 lines
3.8 KiB
C

/*
* 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 */