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: 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; break;
} }

View File

@ -5,6 +5,7 @@
#include "Syslog.h" #include "Syslog.h"
#include "WiFiCtrl.h" #include "WiFiCtrl.h"
#include "ATCmdInterpreter.h" #include "ATCmdInterpreter.h"
#include "ProtocolDefs.h"
static BYTE mActivateNetworkCmd[] = "AT+CNACT=0,1\r"; static BYTE mActivateNetworkCmd[] = "AT+CNACT=0,1\r";
static BYTE mDisconnectNetworkCmd[] = "AT+CNACT=0,0\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 mDisconnectFromMasterCmd[] = "AT+CACLOSE=0\r";
static BYTE mReceiveDataCmd[] = "AT+CARECV=0,100\r"; static BYTE mReceiveDataCmd[] = "AT+CARECV=0,100\r";
char mMasterTxBuffer[MAX_MESSAGE_SIZE];
int mMasterTxSize;
int mLTEModuleSMState; int mLTEModuleSMState;
int mLTEModuleOperationSMState; int mLTEModuleOperationSMState;
@ -178,7 +181,11 @@ void LTEModuleNewData(unsigned char Data)
if(Data != '\r') 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; mATCmd[mNbCmdCharsReceived] = Data;
mNbCmdCharsReceived++; mNbCmdCharsReceived++;
@ -273,10 +280,11 @@ void SendDataToLteModule(char *Data, int Size)
{ {
if(mPICSerialDebugEnabled) if(mPICSerialDebugEnabled)
{ {
char *ptr = Data;
int i; int i;
for(i = 0; i < Size; i++) for(i = 0; i < Size; i++)
{ {
SyslogNewByte(*Data++); SyslogNewByte(*ptr++);
} }
} }
UartTransmitData(LTE_IF_UART_PORT,Data,Size); UartTransmitData(LTE_IF_UART_PORT,Data,Size);
@ -384,6 +392,15 @@ void LTECmdResponseReceived(int Cmd, int Result)
} }
case LTE_MODULE_TX_DATA_CMD: 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; break;
} }
} }
@ -393,12 +410,12 @@ void LTEModuleAPNConnectionStatus(int Status)
if(Status == LTE_MODULE_APN_CONNECTED) if(Status == LTE_MODULE_APN_CONNECTED)
{ {
mAPNConnected = true; mAPNConnected = true;
SyslogNewString("APN connected\n"); // SyslogNewString("APN connected\n");
} }
else else
{ {
mAPNConnected = false; mAPNConnected = false;
SyslogNewString("APN disconnected\n"); // SyslogNewString("APN disconnected\n");
} }
} }
void LTEModuleMasterConnectionStatus(int Status) void LTEModuleMasterConnectionStatus(int Status)
@ -406,18 +423,18 @@ void LTEModuleMasterConnectionStatus(int Status)
if(Status == LTE_MODULE_MASTER_CONNECTED) if(Status == LTE_MODULE_MASTER_CONNECTED)
{ {
mMasterConnected = true; mMasterConnected = true;
SyslogNewString("Master connected\n"); // SyslogNewString("Master connected\n");
} }
else if(Status == LTE_MODULE_MASTER_SOCKET_ERROR) else if(Status == LTE_MODULE_MASTER_SOCKET_ERROR)
{ {
mMasterConnected = false; mMasterConnected = false;
mMasterSocketError = true; mMasterSocketError = true;
SyslogNewString("Master socket error\n"); // SyslogNewString("Master socket error\n");
} }
else else
{ {
mMasterConnected = false; mMasterConnected = false;
SyslogNewString("Master disconnected\n"); // SyslogNewString("Master disconnected\n");
} }
} }
@ -494,6 +511,7 @@ void LTEModuleOperationSM(int OperationEvent)
{ {
mCurrentCmd = LTE_MODULE_NO_CMD; mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE; mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
} }
if(OperationEvent == LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT) if(OperationEvent == LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT)
{ {
@ -501,6 +519,7 @@ void LTEModuleOperationSM(int OperationEvent)
mCurrentCmd = LTE_MODULE_NO_CMD; mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE; mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
} }
if(OperationEvent == LTE_MODULE_OP_SERVER_CONN_FAILED_EVENT) 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... if(mMasterConnected == true) //All is good for now...
{ {
char tmp[] = "Ca marche\n\r";
mNbMasterReconnectCount = 0; mNbMasterReconnectCount = 0;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT); TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
LTESendDataToMaster(tmp,strlen(tmp));
} }
else else
{ {
@ -547,7 +568,7 @@ void LTEModuleOperationSM(int OperationEvent)
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_RECONNECT_MASTER_SUBSTATE; mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_RECONNECT_MASTER_SUBSTATE;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_DISCONNECT_SERVER_STATE; mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_DISCONNECT_SERVER_STATE;
LTESendCommandToModule(LTE_MODULE_DISCONNECT_FROM_MASTER_CMD); //Always disconnect before reconnecting... 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 else //We tried 10 times, check the APN
{ {
@ -555,7 +576,7 @@ void LTEModuleOperationSM(int OperationEvent)
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_CHECK_APN_SUBSTATE; mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_CHECK_APN_SUBSTATE;
LTESendCommandToModule(LTE_MODULE_CHECK_APN_CONNECTION_CMD); LTESendCommandToModule(LTE_MODULE_CHECK_APN_CONNECTION_CMD);
mNbMasterReconnectCount = 0; 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); LTESendCommandToModule(LTE_MODULE_RX_DATA_CMD);
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE; 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; break;
} }
case LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE: case LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE:
@ -621,6 +650,19 @@ void LTEModuleOperationSM(int OperationEvent)
break; 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: 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; break;
} }
case LTE_MODULE_CHECK_APN_CONNECTION_CMD: case LTE_MODULE_CHECK_APN_CONNECTION_CMD:
@ -705,3 +751,28 @@ void LTEModuleMasterCtrlCommStatus(bool Offline)
// else // else
// mMasterConnected = true; // 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_WAIT_DISCONNECT_SERVER_STATE,
LTE_MODULE_OPERATION_STANDBY_STATE, LTE_MODULE_OPERATION_STANDBY_STATE,
LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE, LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE,
LTE_MODULE_OPERATION_SENDING_DATA_STATE,
LTE_MODULE_OPERATION_MAX_STATE LTE_MODULE_OPERATION_MAX_STATE
}; };
@ -115,6 +116,8 @@ enum eLTEModuleOperationSMEvents
LTE_MODULE_OP_CMD_RESP_RECEIVED_EVENT, LTE_MODULE_OP_CMD_RESP_RECEIVED_EVENT,
LTE_MODULE_OP_MASTER_DATA_READY_EVENT, LTE_MODULE_OP_MASTER_DATA_READY_EVENT,
LTE_MODULE_OP_MASTER_DATA_RECEIVED_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 LTE_MODULE_OP_MAX_EVENT
}; };
@ -133,6 +136,8 @@ int LTEEnableSerialDebug(bool EnModule, bool EnPic);
int LTESendCommandToModule(int Command); int LTESendCommandToModule(int Command);
void SendDataToLteModule(char *Data, int Size); void SendDataToLteModule(char *Data, int Size);
int LTEModuleReset(); int LTEModuleReset();
int LTESendDataToMaster(char *Buffer, int Size);
int LTESendMasterBufferToModule();
void LTECmdResponseReceived(int Cmd, int Result); void LTECmdResponseReceived(int Cmd, int Result);
void LTEModuleAPNConnectionStatus(int Status); 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 ChaletDuinoV2_795F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
default.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 proj.dir=D\:\\Main\\PicDev\\Projets\\ChaletLora\\ChaletLora.X

View File

@ -1,27 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="9"> <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> <file>
<url>Source/BootloaderInterface.c</url> <url>Source/BootloaderInterface.c</url>
<bookmark id="5"> <bookmark id="5">
@ -35,15 +14,32 @@
<key/> <key/>
</bookmark> </bookmark>
</file> </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> </editor-bookmarks>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/SIM7080GInterface.c</file> <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/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> </group>
</open-files> </open-files>
</project-private> </project-private>