LTE... sur le bord de foutre le bordel ;)

This commit is contained in:
jfmartel 2024-12-30 15:06:41 -05:00
parent cfed167881
commit 460a19c557
10 changed files with 9474 additions and 9343 deletions

View File

@ -180,6 +180,14 @@ int AnalyzeNewATString(char* Str, int StrLen, int CurCmd)
}
case LTE_MODULE_TX_DATA_CMD:
{
if(strncmp(mInputString,"OK",2) == 0) //The command was executed
{
LTECmdResponseReceived(CurCmd,LTE_MODULE_RESULT_OK);
}
else if(strncmp(mInputString,"ERROR",5) == 0) //The command was not executed
{
LTECmdResponseReceived(CurCmd,LTE_MODULE_RESULT_ERROR);
}
break;
}

View File

@ -5,6 +5,7 @@
#include "Syslog.h"
#include "WiFiCtrl.h"
#include "ATCmdInterpreter.h"
#include "ProtocolDefs.h"
static BYTE mActivateNetworkCmd[] = "AT+CNACT=0,1\r";
static BYTE mDisconnectNetworkCmd[] = "AT+CNACT=0,0\r";
@ -13,6 +14,8 @@ static BYTE mConnectToMasterCmd[] = "AT+CAOPEN=0,0,\"TCP\",\"grosgin.myftp.org\"
static BYTE mDisconnectFromMasterCmd[] = "AT+CACLOSE=0\r";
static BYTE mReceiveDataCmd[] = "AT+CARECV=0,100\r";
char mMasterTxBuffer[MAX_MESSAGE_SIZE];
int mMasterTxSize;
int mLTEModuleSMState;
int mLTEModuleOperationSMState;
@ -178,7 +181,11 @@ void LTEModuleNewData(unsigned char Data)
if(Data != '\r')
{
if(mNbCmdCharsReceived < LTE_MODULE_MAX_CMD_LENGTH)
if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_SENDING_DATA_STATE && Data == '>')
{
LTESendMasterBufferToModule();
}
else if(mNbCmdCharsReceived < LTE_MODULE_MAX_CMD_LENGTH)
{
mATCmd[mNbCmdCharsReceived] = Data;
mNbCmdCharsReceived++;
@ -273,10 +280,11 @@ void SendDataToLteModule(char *Data, int Size)
{
if(mPICSerialDebugEnabled)
{
char *ptr = Data;
int i;
for(i = 0; i < Size; i++)
{
SyslogNewByte(*Data++);
SyslogNewByte(*ptr++);
}
}
UartTransmitData(LTE_IF_UART_PORT,Data,Size);
@ -384,6 +392,15 @@ void LTECmdResponseReceived(int Cmd, int Result)
}
case LTE_MODULE_TX_DATA_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
LTEModuleOperationSM(LTE_MODULE_OP_MASTER_DATA_SENT_EVENT);
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
//TODO: Manage a TX error...
LTEModuleOperationSM(LTE_MODULE_OP_MASTER_DATA_SENT_EVENT);
}
break;
}
}
@ -393,12 +410,12 @@ void LTEModuleAPNConnectionStatus(int Status)
if(Status == LTE_MODULE_APN_CONNECTED)
{
mAPNConnected = true;
SyslogNewString("APN connected\n");
// SyslogNewString("APN connected\n");
}
else
{
mAPNConnected = false;
SyslogNewString("APN disconnected\n");
// SyslogNewString("APN disconnected\n");
}
}
void LTEModuleMasterConnectionStatus(int Status)
@ -406,18 +423,18 @@ void LTEModuleMasterConnectionStatus(int Status)
if(Status == LTE_MODULE_MASTER_CONNECTED)
{
mMasterConnected = true;
SyslogNewString("Master connected\n");
// SyslogNewString("Master connected\n");
}
else if(Status == LTE_MODULE_MASTER_SOCKET_ERROR)
{
mMasterConnected = false;
mMasterSocketError = true;
SyslogNewString("Master socket error\n");
// SyslogNewString("Master socket error\n");
}
else
{
mMasterConnected = false;
SyslogNewString("Master disconnected\n");
// SyslogNewString("Master disconnected\n");
}
}
@ -494,6 +511,7 @@ void LTEModuleOperationSM(int OperationEvent)
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
}
if(OperationEvent == LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT)
{
@ -501,6 +519,7 @@ void LTEModuleOperationSM(int OperationEvent)
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
}
if(OperationEvent == LTE_MODULE_OP_SERVER_CONN_FAILED_EVENT)
{
@ -535,8 +554,10 @@ void LTEModuleOperationSM(int OperationEvent)
{
if(mMasterConnected == true) //All is good for now...
{
char tmp[] = "Ca marche\n\r";
mNbMasterReconnectCount = 0;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
LTESendDataToMaster(tmp,strlen(tmp));
}
else
{
@ -547,7 +568,7 @@ void LTEModuleOperationSM(int OperationEvent)
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_RECONNECT_MASTER_SUBSTATE;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_DISCONNECT_SERVER_STATE;
LTESendCommandToModule(LTE_MODULE_DISCONNECT_FROM_MASTER_CMD); //Always disconnect before reconnecting...
SyslogNewString("Master reconnection attempt\n");
// SyslogNewString("Master reconnection attempt\n");
}
else //We tried 10 times, check the APN
{
@ -555,7 +576,7 @@ void LTEModuleOperationSM(int OperationEvent)
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_CHECK_APN_SUBSTATE;
LTESendCommandToModule(LTE_MODULE_CHECK_APN_CONNECTION_CMD);
mNbMasterReconnectCount = 0;
SyslogNewString("Master reconnection attempt count reached.. checking APN\n");
// SyslogNewString("Master reconnection attempt count reached.. checking APN\n");
}
}
}
@ -600,11 +621,19 @@ void LTEModuleOperationSM(int OperationEvent)
}
}
}
if(OperationEvent == LTE_MODULE_OP_MASTER_DATA_READY_EVENT)
else if(OperationEvent == LTE_MODULE_OP_MASTER_DATA_READY_EVENT)
{
LTESendCommandToModule(LTE_MODULE_RX_DATA_CMD);
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE;
}
else if(OperationEvent == LTE_MODULE_OP_MASTER_SEND_DATA_REQUEST_EVENT)
{
if(mMasterConnected == true)
{
LTESendCommandToModule(LTE_MODULE_TX_DATA_CMD);
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_SENDING_DATA_STATE;
}
}
break;
}
case LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE:
@ -621,6 +650,19 @@ void LTEModuleOperationSM(int OperationEvent)
break;
}
case LTE_MODULE_OPERATION_SENDING_DATA_STATE:
{
if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
//TODO: manage timeouts
}
if(OperationEvent == LTE_MODULE_OP_MASTER_DATA_SENT_EVENT)
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
}
break;
}
}
}
@ -672,6 +714,10 @@ int LTESendCommandToModule(int Cmd)
}
case LTE_MODULE_TX_DATA_CMD:
{
char Cmd[25];
sprintf(Cmd,"AT+CASEND=0,%d\r",mMasterTxSize);
mCurrentCmd = LTE_MODULE_TX_DATA_CMD;
SendDataToLteModule(Cmd,strlen(Cmd));
break;
}
case LTE_MODULE_CHECK_APN_CONNECTION_CMD:
@ -704,4 +750,29 @@ void LTEModuleMasterCtrlCommStatus(bool Offline)
}
// else
// mMasterConnected = true;
}
//This is the function to call from outside to send data to the server
int LTESendDataToMaster(char *Buffer, int Size)
{
if(Size > MAX_MESSAGE_SIZE)
{
return RET_ERROR;
}
if(mMasterConnected == false)
{
return RET_ERROR;
}
memcpy(mMasterTxBuffer,Buffer,Size);
mMasterTxSize = Size;
LTEModuleOperationSM(LTE_MODULE_OP_MASTER_SEND_DATA_REQUEST_EVENT);
return RET_OK;
}
//The module is ready... send the payload so it can transmit it to the master
int LTESendMasterBufferToModule()
{
SendDataToLteModule(mMasterTxBuffer,mMasterTxSize);
return RET_OK;
}

View File

@ -88,6 +88,7 @@ enum eLTEModuleOperationStates
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
};
@ -115,6 +116,8 @@ enum eLTEModuleOperationSMEvents
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
};
@ -133,6 +136,8 @@ 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);

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#
#Mon Dec 30 11:27:34 EST 2024
#Mon Dec 30 11:51:17 EST 2024
ChaletDuinoV2_795F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
proj.dir=D\:\\Main\\PicDev\\Projets\\ChaletLora\\ChaletLora.X

View File

@ -1,27 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="9">
<file>
<url>Source/hd44780.c</url>
<bookmark id="7">
<name/>
<line>340</line>
<key/>
</bookmark>
</file>
<file>
<url>Source/SIM7080GInterface.c</url>
<bookmark id="8">
<name/>
<line>424</line>
<key/>
</bookmark>
<bookmark id="9">
<name/>
<line>525</line>
<key/>
</bookmark>
</file>
<file>
<url>Source/BootloaderInterface.c</url>
<bookmark id="5">
@ -35,15 +14,32 @@
<key/>
</bookmark>
</file>
<file>
<url>Source/hd44780.c</url>
<bookmark id="7">
<name/>
<line>340</line>
<key/>
</bookmark>
</file>
<file>
<url>Source/SIM7080GInterface.c</url>
<bookmark id="8">
<name/>
<line>426</line>
<key/>
</bookmark>
<bookmark id="9">
<name/>
<line>527</line>
<key/>
</bookmark>
</file>
</editor-bookmarks>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/SIM7080GInterface.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/ATCmdInterpreter.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/SIM7080GInterface.h</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/winc3400_142/driver/source/nmspi.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/LoraNetworkInterface.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/ATCmdInterpreter.h</file>
</group>
</open-files>
</project-private>