Corrigé le problème de driver LTE. Prêt à apporter au chalet

This commit is contained in:
jfmartel 2025-07-10 18:09:53 -04:00
parent 06ab16b771
commit 647f38c4ca
15 changed files with 10046 additions and 15560 deletions

View File

@ -77,7 +77,7 @@ int AnalyzeNewATString(char* Str, int StrLen, int CurCmd)
if(strncmp("+CAOPEN:",mInputString,strlen("+CAOPEN:")) == 0) if(strncmp("+CAOPEN:",mInputString,strlen("+CAOPEN:")) == 0)
{ {
int result = atoi(&mInputString[11]); int result = atoi(&mInputString[11]);
if(StrLen == 12 && mInputString[11] == '0') //The connection on port 0 is established if(StrLen >= 12 && mInputString[11] == '0') //The connection on port 0 is established
{ {
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_CONNECTED); LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_CONNECTED);
} }
@ -147,6 +147,7 @@ int AnalyzeNewATString(char* Str, int StrLen, int CurCmd)
{ {
if(strncmp("+CARECV:",mInputString,strlen("+CARECV:")) == 0) //+CARECV: 4,test if(strncmp("+CARECV:",mInputString,strlen("+CARECV:")) == 0) //+CARECV: 4,test
{ {
// printf("ATCmdInterpreter : Received +CARECV, storing data in buffer, waiting for OK\n\r");
memset(mMasterData,0,100); memset(mMasterData,0,100);
mMasterDataSize = 0; mMasterDataSize = 0;
char *token; char *token;
@ -168,7 +169,7 @@ int AnalyzeNewATString(char* Str, int StrLen, int CurCmd)
} }
if(strncmp(mInputString,"OK",2) == 0) //The command was executed if(strncmp(mInputString,"OK",2) == 0) //The command was executed
{ {
// printf("ATCmdInterpreter : Received OK, calling LTEModuleDataReceived\n\r");
LTEModuleDataReceived(mMasterData,mMasterDataSize); LTEModuleDataReceived(mMasterData,mMasterDataSize);
// LTECmdResponseReceived(CurCmd,LTE_MODULE_RESULT_OK); // LTECmdResponseReceived(CurCmd,LTE_MODULE_RESULT_OK);
} }
@ -197,6 +198,7 @@ int AnalyzeNewATString(char* Str, int StrLen, int CurCmd)
{ {
if(strncmp("+CADATAIND:",mInputString,strlen("+CADATAIND:")) == 0) if(strncmp("+CADATAIND:",mInputString,strlen("+CADATAIND:")) == 0)
{ {
// printf("ATCmdInterpreter : Received +CADATAIND, calling NewDataReady\n\r");
LTEModuleNewDataReady(); LTEModuleNewDataReady();
} }
if(strncmp("+APP PDP:",mInputString,strlen("+APP PDP:")) == 0) if(strncmp("+APP PDP:",mInputString,strlen("+APP PDP:")) == 0)

View File

@ -296,7 +296,7 @@ enum CHALET_CMDS
CHALET_DO_HARAKIRI_CONFIRMATION, CHALET_DO_HARAKIRI_CONFIRMATION,
CHALET_REBOOT_CPU_REQUEST, CHALET_REBOOT_CPU_REQUEST,
CHALET_REBOOT_CPU_RESPONSE, CHALET_REBOOT_CPU_RESPONSE,
CHALET_GET_STORED_WIFI_SETTINGS_REQUEST, CHALET_GET_STORED_WIFI_SETTINGS_REQUEST,//14
CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE, CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,
CHALET_SET_STORED_WIFI_SETTINGS_REQUEST, CHALET_SET_STORED_WIFI_SETTINGS_REQUEST,
CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE, CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,

View File

@ -165,6 +165,8 @@ void TickLTEModule()
void LTEModuleNewData(unsigned char Data) void LTEModuleNewData(unsigned char Data)
{ {
// printf("%c - 0x%x\n",Data,Data);
if(mIsPassthroughEnabled == true) if(mIsPassthroughEnabled == true)
{ {
SyslogNewByte(Data); SyslogNewByte(Data);
@ -177,10 +179,131 @@ void LTEModuleNewData(unsigned char Data)
SyslogNewByte(Data); SyslogNewByte(Data);
} }
if(Data == '\n') //ignore line feeds mATCmd[mNbCmdCharsReceived++] = Data;
return;
if(Data != '\r') if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_SENDING_DATA_STATE && Data == '>')
{
LTESendMasterBufferToModule();
}
if(Data == 0x0A) //Line feed... '\n'
{
if(mNbCmdCharsReceived >= 2)
{
if(mATCmd[mNbCmdCharsReceived-2] == 0x0D) //do we have the escape sequence? \r\n ??
{
//check if it's part of a data payload
if(strncmp("+CARECV:",mATCmd,strlen("+CARECV:")) == 0)
{
// printf("3\n");
char DataSzString[2];
DataSzString[0] = mATCmd[9];
int LenghtSize = 1;
if(mATCmd[10] != ',')
{
// printf("4\n");
DataSzString[1] = mATCmd[10];
LenghtSize = 2;
}
else
{
// printf("5\n");
DataSzString[1] = '\0';
}
int DataSize = 0;
DataSize = atoi(&DataSzString[0]);
// printf("Received escape sequence, DataSize = %d\n", DataSize);
//
//
//Check if we received the whole payload.
if(mNbCmdCharsReceived-1 < (DataSize + LenghtSize + 10))
{
//The \n character is part of the payload, continue receiving...
return;
}
}
if(mLTEModuleSMState == LTE_MODULE_SM_WAIT_RDY_STATE)
{
if(mATCmd[0] == 'R' && mATCmd[1] == 'D' && mATCmd[2] == 'Y')
{
LTEModuleSM(LTE_MODULE_RX_RDY_EVENT);
}
}
else if(mLTEModuleSMState == LTE_MODULE_SM_RUN_STATE)
{
AnalyzeNewATString(mATCmd,mNbCmdCharsReceived,mCurrentCmd);
}
mNbCmdCharsReceived = 0;
}
}
}
/*
if(Data == 0x0D) //ignore line feeds '\n'
{
if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE)
{
printf("1 mNbCmdCharsReceived = %d\n",mNbCmdCharsReceived);
// //Verify if \n is part of the payload data..
if(mNbCmdCharsReceived > 11) //Check that we received the datasize from module
{
printf("2\n");
// //Extract datasize
if(strncmp("+CARECV:",mATCmd,strlen("+CARECV:")) == 0)
{
// printf("3\n");
char DataSzString[2];
DataSzString[0] = mATCmd[9];
int LenghtSize = 1;
if(mATCmd[10] != ',')
{
// printf("4\n");
DataSzString[1] = mATCmd[10];
LenghtSize = 2;
}
else
{
// printf("5\n");
DataSzString[1] = '\0';
}
int DataSize = 0;
DataSize = atoi(&DataSzString[0]);
printf("Received \\n, DataSize = %d\n", DataSize);
//
//
//Check if we received the whole payload.
if(mNbCmdCharsReceived >= (DataSize + LenghtSize + 10))
{
// printf("6\n");
//The whole payload is received... do not store the \n
// printf("Received \\n, all payload received, ignoring. NbCharReceived = %d\n",mNbCmdCharsReceived);
}
else
{
// printf("7\n");
//The \n character is part of the payload, store it and continue receiving...
mATCmd[mNbCmdCharsReceived] = Data;
// printf("Received \\n in payload, storing data. NbCharReceived = %d\n",mNbCmdCharsReceived);
mNbCmdCharsReceived++;
}
}
}
}
// printf("8\n");
return;
}
if(Data != 0x0A) // '\r'
{ {
if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_SENDING_DATA_STATE && Data == '>') if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_SENDING_DATA_STATE && Data == '>')
{ {
@ -199,6 +322,60 @@ void LTEModuleNewData(unsigned char Data)
} }
else else
{ {
// if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_WAIT_FOR_DATA_STATE)
// {
// //Verify if we really are done or if \r is part of the payload data..
// if(mNbCmdCharsReceived > 11) //Check that we received the datasize from module
// {
// //Extract datasize
// if(strncmp("+CARECV:",mATCmd,strlen("+CARECV:")) == 0)
// {
// char DataSzString[2];
// DataSzString[0] = mATCmd[9];
// int LenghtSize = 1;
// if(mATCmd[10] != ',')
// {
// DataSzString[1] = mATCmd[10];
// LenghtSize = 2;
// }
// else
// {
// DataSzString[1] = '\0';
// }
//
// int DataSize = 0;
// DataSize = atoi(&DataSzString[0]);
// printf("DataSzString : 0x%x - 0x%x\n",DataSzString[0],DataSzString[1]);
// printf("Received \\r, DataSize = %d\n", DataSize);
// printf("%s\n",mATCmd);
// //Check if we received the whole payload.
// if(mNbCmdCharsReceived >= (DataSize + LenghtSize + 10))
// {
// //The \r character is not part of the payload, continue normally
// printf("Received \\r normally, all payload received, continuing. NbCharReceived = %d\n",mNbCmdCharsReceived);
// }
// else
// {
// //The \r character is part of the payload, store it and continue receiving...
// mATCmd[mNbCmdCharsReceived] = Data;
// printf("Received \\r in payload, storing data. NbCharReceived = %d\n",mNbCmdCharsReceived);
// mNbCmdCharsReceived++;
//
// return;
// }
// }
// else
// {
// //weird stuff happening...
//
// }
// }
// else
// {
// //Weird stuff happening...
//
// }
// }
if(mNbCmdCharsReceived != 0) //New Command received if(mNbCmdCharsReceived != 0) //New Command received
{ {
@ -212,13 +389,14 @@ void LTEModuleNewData(unsigned char Data)
else if(mLTEModuleSMState == LTE_MODULE_SM_RUN_STATE) else if(mLTEModuleSMState == LTE_MODULE_SM_RUN_STATE)
{ {
AnalyzeNewATString(mATCmd,mNbCmdCharsReceived,mCurrentCmd); AnalyzeNewATString(mATCmd,mNbCmdCharsReceived,mCurrentCmd);
mNbCmdCharsReceived = mNbCmdCharsReceived;
} }
mNbCmdCharsReceived = 0; mNbCmdCharsReceived = 0;
} }
} }
*/
} }
void LTEEnterSerialPassthrough() void LTEEnterSerialPassthrough()
@ -289,6 +467,7 @@ void SendDataToLteModule(char *Data, int Size)
SyslogNewByte(*ptr++); SyslogNewByte(*ptr++);
} }
} }
// printf("PIC: %s",Data);
UartTransmitData(LTE_IF_UART_PORT,Data,Size); UartTransmitData(LTE_IF_UART_PORT,Data,Size);
} }

View File

@ -98,7 +98,8 @@ void InitUart(void)
setbuf(stdout,NULL); //to use printf without \r setbuf(stdout,NULL); //to use printf without \r
fflush(stdout); fflush(stdout);
UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open LoRa module port //UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open LoRa module port
UartOpenComPort(NETWORK_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open printf port
UartOpenComPort(LTE_IF_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open LTE module port UartOpenComPort(LTE_IF_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open LTE module port
#ifdef USE_PRINTF #ifdef USE_PRINTF
//UartOpenComPort(CONSOLE_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port //UartOpenComPort(CONSOLE_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port

View File

@ -399,6 +399,7 @@ int InitWiFi()
char IP1,IP2,IP3,IP4,GW1,GW2,GW3,GW4; char IP1,IP2,IP3,IP4,GW1,GW2,GW3,GW4;
//Load WiFi parameters from flash if present //Load WiFi parameters from flash if present
#ifndef FORCE_WIFI_SETTINGS
if(SPIFlashIsPresent() == 1) if(SPIFlashIsPresent() == 1)
{ {
char StoredIPConfig[11]; char StoredIPConfig[11];
@ -456,6 +457,7 @@ int InitWiFi()
} }
} }
else else
#endif
{ {
IP1 = STATIC_IP_ADDRESS_1; IP1 = STATIC_IP_ADDRESS_1;
IP2 = STATIC_IP_ADDRESS_2; IP2 = STATIC_IP_ADDRESS_2;

View File

@ -100,7 +100,7 @@ void SendBootloaderByte(uint8 data);
int IsBootloaderClientConnected(); int IsBootloaderClientConnected();
//#define FORCE_WIFI_SETTINGS
//#define USE_STATIC_IP //#define USE_STATIC_IP
@ -168,12 +168,12 @@ int IsBootloaderClientConnected();
//#define HOME_AP_NAME "ImprVEmard" //#define HOME_AP_NAME "ImprVEmard"
//#define HOME_AP_PWD "12345fffff" //#define HOME_AP_PWD "12345fffff"
#define HOME_AP_NAME "ChaletVilleEmard" //#define HOME_AP_NAME "ChaletVilleEmard"
//#define HOME_AP_NAME "ImprVilleEmard" #define HOME_AP_NAME "ImprVilleEmard"
//#define HOME_AP_NAME "ElRouteurDuChalet" //#define HOME_AP_NAME "ElRouteurDuChalet"
//#define HOME_AP_NAME "LeChalet" //#define HOME_AP_NAME "LeChalet"
#define HOME_AP_PWD "Evinrude30" //#define HOME_AP_PWD "Evinrude30"
//#define HOME_AP_PWD "12345fffff" #define HOME_AP_PWD "12345fffff"
#define TERMINAL_SERVER_PORT 85 #define TERMINAL_SERVER_PORT 85
#define NETWORK_SERVER_PORT 86 #define NETWORK_SERVER_PORT 86
@ -185,12 +185,12 @@ int IsBootloaderClientConnected();
//Module Static IP settings //Module Static IP settings
#define STATIC_IP_ADDRESS_1 192 #define STATIC_IP_ADDRESS_1 192
#define STATIC_IP_ADDRESS_2 168 #define STATIC_IP_ADDRESS_2 168
#define STATIC_IP_ADDRESS_3 30 #define STATIC_IP_ADDRESS_3 50
#define STATIC_IP_ADDRESS_4 127 #define STATIC_IP_ADDRESS_4 125
#define GATEWAY_ADDRESS_1 192 #define GATEWAY_ADDRESS_1 192
#define GATEWAY_ADDRESS_2 168 #define GATEWAY_ADDRESS_2 168
#define GATEWAY_ADDRESS_3 30 #define GATEWAY_ADDRESS_3 50
#define GATEWAY_ADDRESS_4 1 #define GATEWAY_ADDRESS_4 1
#define DEFAULT_DNS_ADD_1 8 #define DEFAULT_DNS_ADD_1 8

View File

@ -242,17 +242,24 @@ void InitializeBoard()
} }
void _mon_putc(char c)
{
// U2TXREG = c;
// while (U2STAbits.TRMT==0);
UartTransmitData(NETWORK_UART_PORT,&c,1);
}
#ifdef USE_PRINTF #ifdef USE_PRINTF
void _mon_putc(char c) void _mon_putc(char c)
{ {
U2TXREG = c; U2TXREG = c;
while (U2STAbits.TRMT==0); while (U2STAbits.TRMT==0);
} }
#elif defined USE_SYSLOG //#elif defined USE_SYSLOG
void _mon_putc(char c) //void _mon_putc(char c)
{ //{
SyslogNewByte(c); // SyslogNewByte(c);
} //}
#endif #endif

View File

@ -1,4 +1,4 @@
#define VERSIONNUMBER "CHALET_V01.01.6" //shall be 15 chars... #define VERSIONNUMBER "CHALET_V01.02.1" //shall be 15 chars...
//Force DHCP instead of static IP. //Force DHCP instead of static IP.
//#define VERSIONNUMBER "CHALET_V01.00.1" //shall be 15 chars... //#define VERSIONNUMBER "CHALET_V01.00.1" //shall be 15 chars...

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# #
#Sun Mar 09 13:04:22 EDT 2025 #Thu Jul 10 17:51:07 EDT 2025
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,19 +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="11"> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="11">
<file>
<url>Source/BootloaderInterface.c</url>
<bookmark id="5">
<name/>
<line>387</line>
<key/>
</bookmark>
<bookmark id="4">
<name/>
<line>437</line>
<key/>
</bookmark>
</file>
<file> <file>
<url>Source/hd44780.c</url> <url>Source/hd44780.c</url>
<bookmark id="7"> <bookmark id="7">
@ -31,17 +18,30 @@
</bookmark> </bookmark>
<bookmark id="10"> <bookmark id="10">
<name/> <name/>
<line>201</line> <line>378</line>
<key/> <key/>
</bookmark> </bookmark>
<bookmark id="8"> <bookmark id="8">
<name/> <name/>
<line>443</line> <line>622</line>
<key/> <key/>
</bookmark> </bookmark>
<bookmark id="9"> <bookmark id="9">
<name/> <name/>
<line>560</line> <line>739</line>
<key/>
</bookmark>
</file>
<file>
<url>Source/BootloaderInterface.c</url>
<bookmark id="5">
<name/>
<line>387</line>
<key/>
</bookmark>
<bookmark id="4">
<name/>
<line>437</line>
<key/> <key/>
</bookmark> </bookmark>
</file> </file>