Compare commits

..

No commits in common. "773adac6f4c61af0e4ce63ddec36ff858ff28f8d" and "44ecb553af0c3a0842dbcda23f7a7fcd9bd09066" have entirely different histories.

53 changed files with 24626 additions and 22347 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
*.o
*.o.d
/ChaletLora.X/.generated_files/flags/*

View File

@ -1,23 +0,0 @@
/*
* File: ATCmdInterpreter.h
* Author: JF
*
* Created on December 28, 2024, 8:08 AM
*/
#ifndef ATCMDINTERPRETER_H
#define ATCMDINTERPRETER_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* ATCMDINTERPRETER_H */

View File

@ -1,221 +0,0 @@
#include "ATCmdInterpreter.h"
#include "SIM7080GInterface.h"
#include "define.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "SIM7080GInterface.h"
bool mCAStateReceived;
char mMasterData[100];
int mMasterDataSize;
char mInputString[100];
void InitATCmdInterpreter()
{
mCAStateReceived = false;
}
int AnalyzeNewATString(char* Str, int StrLen, int CurCmd)
{
memset(mInputString,0,100);
memcpy(mInputString,Str,StrLen);
switch(CurCmd)
{
case LTE_MODULE_CONNECT_APN_CMD: //AT+CNACT=0,1
{
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;
}
case LTE_MODULE_DISCONNECT_APN_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;
}
case LTE_MODULE_CHECK_APN_CONNECTION_CMD:
{
if(strncmp("+CNACT:",mInputString,strlen("+CNACT:")) == 0) //+CNACT: 0,1,"10.177.232.192","2605:8D80:5C0:3EED:D90E:5B72:BC1B:281"
{
if(mInputString[8] == '0') //Only consider port 0
{
if(mInputString[10] == '1' || mInputString[10] == '2')
{
LTEModuleAPNConnectionStatus(LTE_MODULE_APN_CONNECTED);
}
else
{
LTEModuleAPNConnectionStatus(LTE_MODULE_APN_DISCONNECTED);
}
}
}
else 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;
}
case LTE_MODULE_CONNECT_TO_MASTER_CMD:
{
if(strncmp("+CAOPEN:",mInputString,strlen("+CAOPEN:")) == 0)
{
int result = atoi(&mInputString[11]);
if(StrLen == 12 && mInputString[11] == '0') //The connection on port 0 is established
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_CONNECTED);
}
else if(result == 1) //socket error, probably caused by APN not connected..
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_SOCKET_ERROR);
}
else
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_DISCONNECTED);
}
}
else 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;
}
case LTE_MODULE_DISCONNECT_FROM_MASTER_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;
}
case LTE_MODULE_CHECK_MASTER_CONNECTION_CMD:
{
if(strncmp("+CASTATE:",mInputString,strlen("+CASTATE:")) == 0) //+CASTATE: 0,0
{
mCAStateReceived = true;
if(mInputString[12] == '1') //The connection is established
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_CONNECTED);
}
else
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_DISCONNECTED);
}
}
else if(strncmp(mInputString,"OK",2) == 0) //The command was executed
{
if(mCAStateReceived == false)
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_DISCONNECTED);
}
mCAStateReceived = false;
LTECmdResponseReceived(CurCmd,LTE_MODULE_RESULT_OK);
}
else if(strncmp(mInputString,"ERROR",5) == 0) //The command was not executed
{
mCAStateReceived = false;
LTECmdResponseReceived(CurCmd,LTE_MODULE_RESULT_ERROR);
}
break;
}
case LTE_MODULE_RX_DATA_CMD:
{
if(strncmp("+CARECV:",mInputString,strlen("+CARECV:")) == 0) //+CARECV: 4,test
{
memset(mMasterData,0,100);
mMasterDataSize = 0;
char *token;
// sscanf("%d,%s",&mInputString[9],&DataSize,Data);
token = strtok(&mInputString[9],",");
if(token != NULL)
{
mMasterDataSize = atoi(token);
if(mMasterDataSize < 100)
{
token = strtok(NULL, ",");
if(token != NULL)
{
memcpy(mMasterData,token,mMasterDataSize);
}
}
}
}
if(strncmp(mInputString,"OK",2) == 0) //The command was executed
{
LTEModuleDataReceived(mMasterData,mMasterDataSize);
// 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;
}
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;
}
case LTE_MODULE_NO_CMD: //+CADATAIND:
default:
{
if(strncmp("+CADATAIND:",mInputString,strlen("+CADATAIND:")) == 0)
{
LTEModuleNewDataReady();
}
if(strncmp("+APP PDP:",mInputString,strlen("+APP PDP:")) == 0)
{
// LTEModuleNewDataReady();
}
if(strncmp("+CASTATE:",mInputString,strlen("+CASTATE:")) == 0) //+CASTATE: 0,0
{
if(mInputString[12] == '1') //The connection is established
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_CONNECTED);
}
else
{
LTEModuleMasterConnectionStatus(LTE_MODULE_MASTER_DISCONNECTED);
}
}
break;
}
}
}

View File

@ -1,15 +0,0 @@
/*
* File: ATCmdInterpreter.h
* Author: JF
*
* Created on December 28, 2024, 8:08 AM
*/
#ifndef ATCMDINTERPRETER_H
#define ATCMDINTERPRETER_H
void InitATCmdInterpreter();
int AnalyzeNewATString(char* Str, int StrLen, int CurCmd);
#endif /* ATCMDINTERPRETER_H */

View File

@ -13,7 +13,7 @@ int mBatterySOC;
float mVoltageMeanSum;
int mVoltageMeanCount;
unsigned int mCurrentMeanSum;
int mCurrentMeanSum;
int mCurrentMeanCount;
bool mCurrentModuleOK;
@ -90,16 +90,6 @@ void BatteryMonitorTick()
}
else
{
unsigned int Ref = 0;
AD1CHSbits.CH0SA = 0; //AN0
AD1CON1bits.SAMP = 0;
while(AD1CON1bits.DONE == 0);
Ref = ADC1BUF0;
AD1CON1bits.SAMP = 1;
AD1CHSbits.CH0SA = 2; //AN2
AD1CON1bits.SAMP = 0;
while(AD1CON1bits.DONE == 0);
@ -107,12 +97,12 @@ void BatteryMonitorTick()
AD1CON1bits.SAMP = 1;
// adc &= 0xFFFE;
adc -= Ref;
//40mV/A
conv = (double)adc * 1.0;
conv /= 1023;
conv *= 3.3; //Volts
conv /= 0.05; //Amps (50mV/A)
conv /= 0.04; //Amps (40mV/A)
raw = conv;
@ -120,7 +110,7 @@ void BatteryMonitorTick()
//This could go for a long time but 5000 samples is too much anyways.
if(mCurrentMeanCount >= 500)
{
mCurrentMeanCount = 1;
mCurrentMeanCount = 0;
mCurrentMeanSum = adc;
}
else
@ -132,20 +122,16 @@ void BatteryMonitorTick()
mBatteryCurrent = adc;
//mBatteryCurrent = mCurrentMeanSum / mCurrentMeanCount;
}
}
}
float GetBatteryVoltage(int Reset)
float GetBatteryVoltage()
{
if(Reset == 1)
{
mBatteryVoltage = (mVoltageMeanSum/mVoltageMeanCount);
mVoltageMeanSum = 0.0;
mVoltageMeanCount = 0;
}
mBatteryVoltage = (mVoltageMeanSum/mVoltageMeanCount);
mVoltageMeanSum = 0.0;
mVoltageMeanCount = 0;
return mBatteryVoltage;
@ -155,16 +141,11 @@ float GetBatteryVoltage(int Reset)
int GetSolarPanelCurrent()
{
//mBatteryCurrent = (mCurrentMeanSum/mCurrentMeanCount);
//mVoltageMeanCount = 0;
mVoltageMeanCount = 0;
mCurrentMeanSum = 0.0;
return mBatteryCurrent;
}
float GetConvertedSolarPanelCurrent()
{
float Cur = (mBatteryCurrent - 2) * (3.3/1023);
return Cur;
}
int GetBatterySOC()
{

View File

@ -15,12 +15,11 @@
void InitBatteryMonitor();
void BatteryMonitorTick();
float GetBatteryVoltage(int Reset);
float GetBatteryVoltage();
int GetSolarPanelCurrent();
int GetBatterySOC();
int SendNetworkBatteryData();
bool GetCurrentModuleOK();
float GetConvertedSolarPanelCurrent();
#endif /* BATTERYMONITOR_H */

View File

@ -41,7 +41,12 @@ extern "C" {
#define HEARTBEAT_LED_1_CLEAR_REG LATECLR
#define HEARTBEAT_LED_1_TOGGLE_MASK _LATE_LATE5_MASK
#define LORA_ACTIVITY_LED_PIN_DIR TRISFbits.TRISF1
#define LORA_ACTIVITY_LED_PIN LATFbits.LATF1
#define LORA_ACTIVITY_LED_TOGGLE_REG LATFINV
#define LORA_ACTIVITY_LED_SET_REG LATFSET
#define LORA_ACTIVITY_LED_CLEAR_REG LATFCLR
#define LORA_ACTIVITY_LED_TOGGLE_MASK _LATE_LATF1_MASK
// #define GP_DEBUG_1_PIN_DIR TRISEbits.TRISE5
// #define GP_DEBUG_1_PIN LATEbits.LATE5
@ -118,29 +123,17 @@ extern "C" {
//LoRa
#define LORA_MODULE_RELAY_PIN_DIR TRISDbits.TRISD11
#define LORA_MODULE_RELAY_PIN LATDbits.LATD11
#define LORA_MODULE_M0_PIN_DIR TRISDbits.TRISD3 //V2
#define LORA_MODULE_M0_PIN LATDbits.LATD3
#define LORA_MODULE_M0_PIN_DIR TRISEbits.TRISE7 //FUCK, double assignation avec Inverter ON
#define LORA_MODULE_M0_PIN LATEbits.LATE7
#define LORA_MODULE_M1_PIN_DIR TRISDbits.TRISD9
#define LORA_MODULE_M1_PIN LATDbits.LATD9
#define LORA_MODULE_INT_PIN_DIR TRISDbits.TRISD8
#define LORA_MODULE_INT_PIN PORTDbits.RD8
//#define LORA_MODULE_RX_LED_PIN_DIR TRISCbits.TRISC14
//#define LORA_MODULE_RX_LED_PIN LATCbits.LATC14
//#define LORA_MODULE_TX_LED_PIN_DIR TRISCbits.TRISC13
//#define LORA_MODULE_TX_LED_PIN LATCbits.LATC13
#define LORA_MODULE_INT_PIN PORTDits.RD8
#define LORA_MODULE_RX_LED_PIN_DIR TRISCbits.TRISC14
#define LORA_MODULE_RX_LED_PIN LATCbits.LATC14
#define LORA_MODULE_TX_LED_PIN_DIR TRISCbits.TRISC13
#define LORA_MODULE_TX_LED_PIN LATCbits.LATC13
// SIMCOM LTE Module
#define LTE_MODULE_TX_LED_PIN_DIR TRISFbits.TRISF1
#define LTE_MODULE_TX_LED_PIN LATFbits.LATF1
#define LTE_MODULE_RX_LED_PIN_DIR TRISBbits.TRISB4
#define LTE_MODULE_RX_LED_PIN LATBbits.LATB4
#define LTE_MODULE_PWR_PIN_DIR TRISDbits.TRISD10
#define LTE_MODULE_PWR_PIN LATDbits.LATD10
//LCD Screen
#define LCD_RS_PIN_DIR TRISDbits.TRISD5
#define LCD_RS_PIN LATDbits.LATD5
@ -156,8 +149,9 @@ extern "C" {
#define LCD_DB6_PIN LATBbits.LATB10
#define LCD_DB7_PIN_DIR TRISBbits.TRISB11
#define LCD_DB7_PIN LATBbits.LATB11
#define LCD_SCROLL_BTN_PIN_DIR TRISBbits.TRISB5
#define LCD_SCROLL_BTN_PIN PORTBbits.RB5
//#define LCD_SCROLL_BTN_PIN_DIR TRISCbits.TRISC13
//#define LCD_SCROLL_BTN_PIN PORTCbits.PORTC13
/* ************************************************************************** */
/* Prototypes */

View File

@ -2,17 +2,14 @@
int InitBoard()
{
DDPCONbits.JTAGEN = 0;
HEARTBEAT_LED_1_PIN_DIR = PIN_OUTPUT;
HEARTBEAT_LED_2_PIN_DIR = PIN_OUTPUT;
HEARTBEAT_LED_2_PIN = LED_OFF;
HEARTBEAT_LED_1_PIN = LED_ON;
// LORA_ACTIVITY_LED_PIN_DIR = PIN_OUTPUT;
// LORA_ACTIVITY_LED_PIN = LED_OFF;
LORA_ACTIVITY_LED_PIN_DIR = PIN_OUTPUT;
LORA_ACTIVITY_LED_PIN = LED_OFF;
// GP_DEBUG_1_PIN_DIR = PIN_OUTPUT;
// GP_DEBUG_1_PIN = 0;
@ -132,14 +129,6 @@ int InitBoard()
// AD1CON1bits.SAMP = 1;
////////////////LTE MODULE /////////////
LTE_MODULE_TX_LED_PIN_DIR = PIN_OUTPUT;
LTE_MODULE_TX_LED_PIN = LED_OFF;
LTE_MODULE_RX_LED_PIN_DIR = PIN_OUTPUT;
LTE_MODULE_RX_LED_PIN = LED_OFF;
LTE_MODULE_PWR_PIN_DIR = PIN_OUTPUT;
LTE_MODULE_PWR_PIN = 1;
//////////////// LORA //////////////////
LORA_MODULE_RELAY_PIN_DIR = PIN_OUTPUT;
LORA_MODULE_RELAY_PIN = 0;
@ -169,10 +158,8 @@ int InitBoard()
LCD_DB6_PIN = 0;
LCD_DB7_PIN_DIR = PIN_OUTPUT;
LCD_DB7_PIN = 0;
LCD_SCROLL_BTN_PIN_DIR = PIN_INPUT;
// LCD_SCROLL_BTN_PIN_DIR = PIN_INPUT;
@ -211,7 +198,7 @@ int InitBoard()
// OC3CONbits.ON = 1;
RTCCONbits.ON = 1;
return RET_OK;
}

View File

@ -23,12 +23,6 @@
#define FLASH_BTLDR_FLAGS_ADDRESS 0x000000
#define FLASH_WIFI_IP_ADDRESS 0X00000C
#define FLASH_WIFI_GATEWAY_ADDRESS 0x000010
#define FLASH_USE_DHCP_FLAG_ADDRESS 0x000014
#define FLASH_WIFI_ACCESS_PT_NAME_LENGTH_ADDRESS 0X000015
#define FLASH_WIFI_ACCESS_PT_NAME_ADDRESS 0x000016
#define FLASH_WIFI_ACCESS_PT_PASSWD_LENGTH_ADDRESS 0x000056
#define FLASH_WIFI_ACCESS_PT_PASSWD_ADDRESS 0x000057
#define FLASH_LAST_ADDRESS 0X000097

View File

@ -1,26 +1,26 @@
/*******************************************************************************
* *
* Copyright 2010 Rheinmetall Canada Inc. *
* *
* No part of this document may be reproduced, stored in *
* a retrieval system, or transmitted, in any form or by any means, *
* electronic, mechanical, photocopying, recording, or otherwise, *
* without the prior written permission of Rheinmetall Canada Inc. *
* *
*******************************************************************************/
* *
* Copyright 2010 Rheinmetall Canada Inc. *
* *
* No part of this document may be reproduced, stored in *
* a retrieval system, or transmitted, in any form or by any means, *
* electronic, mechanical, photocopying, recording, or otherwise, *
* without the prior written permission of Rheinmetall Canada Inc. *
* *
*******************************************************************************/
/*
Description:
This is a template file for standard C code file.
*/
Description:
This is a template file for standard C code file.
*/
/* ************************************************************************** */
/* ¤Revision:
000 20100616 JFM,
Original version.
### YYYYMMDD Initial, Bug Identification
Change description.
000 20100616 JFM,
Original version.
### YYYYMMDD Initial, Bug Identification
Change description.
*/
/* ************************************************************************** */
@ -47,24 +47,24 @@ void InternalUartInit(void)
{
//Setup port 1
//
// U1MODEbits.ON = 0; //disable module
// U1STA = 0;
// U1STAbits.UTXEN = 0; //disable transmitter
// IPC6bits.U1IP = 7; //priority 7
// IPC6bits.U1IS = 3; //sub-priority 3
// U1STAbits.UTXSEL = 0b01; //interrupt when all characters are transmitted
//// U1STAbits.UTXSEL = 0b01; // //JFM 2012-08-27
// IFS0bits.U1TXIF = 0; //clear interrupt flag
// IEC0bits.U1TXIE = 1; //enable tx interrupt
// U1STAbits.URXISEL = 0b00; //interrupt for each character received
// IFS0bits.U1RXIF = 0;
//#ifdef POLL_UART1_RX
// IEC0bits.U1RXIE = 0; //disable rx interrupts
//#else
// IEC0bits.U1RXIE = 1; //enable rx interrupts
//#endif
// U1STAbits.URXEN = 1; //enable receiver
// U1MODEbits.ON = 0; //disable module
// U1MODEbits.ON = 0; //disable module
// U1STA = 0;
// U1STAbits.UTXEN = 0; //disable transmitter
// IPC6bits.U1IP = 7; //priority 7
// IPC6bits.U1IS = 3; //sub-priority 3
// U1STAbits.UTXSEL = 0b01; //interrupt when all characters are transmitted
//// U1STAbits.UTXSEL = 0b01; // //JFM 2012-08-27
// IFS0bits.U1TXIF = 0; //clear interrupt flag
// IEC0bits.U1TXIE = 1; //enable tx interrupt
// U1STAbits.URXISEL = 0b00; //interrupt for each character received
// IFS0bits.U1RXIF = 0;
//#ifdef POLL_UART1_RX
// IEC0bits.U1RXIE = 0; //disable rx interrupts
//#else
// IEC0bits.U1RXIE = 1; //enable rx interrupts
//#endif
// U1STAbits.URXEN = 1; //enable receiver
// U1MODEbits.ON = 0; //disable module
//Setup port 2
//
@ -72,7 +72,7 @@ void InternalUartInit(void)
U2STA = 0;
U2STAbits.UTXEN = 0; //disable transmitter
IPC8bits.U2IP = 7; //priority 7
IPC8bits.U2IS = 2; //sub-priority 2
IPC8bits.U2IS = 0; //sub-priority 2
U2STAbits.UTXSEL = 0b01; //interrupt when all characters are transmitted
IFS1bits.U2TXIF = 0; //clear interrupt flag
IEC1bits.U2TXIE = 0; //enable tx interrupt
@ -86,29 +86,8 @@ void InternalUartInit(void)
U2STAbits.URXEN = 1; //enable receiver
U2STAbits.UTXEN = 1;
U2MODEbits.ON = 0; //disable module
//Setup port 5
//
U5MODEbits.ON = 0; //disable module
U5STA = 0;
U5STAbits.UTXEN = 0; //disable transmitter
IPC12bits.U5IP = 7; //priority 7
IPC12bits.U5IS = 1; //sub-priority 1
U5STAbits.UTXSEL = 0b01; //interrupt when all characters are transmitted
IFS2bits.U5TXIF = 0; //clear interrupt flag
IEC2bits.U5TXIE = 0; //enable tx interrupt
U5STAbits.URXISEL = 0b00; //interrupt for each character received
IFS2bits.U5RXIF = 0;
#ifdef POLL_UART2_RX
IEC1bits.U2RXIE = 0; //disable rx interrupts
#else
IEC2bits.U5RXIE = 1; //enable rx interrupts
#endif
U5STAbits.URXEN = 1; //enable receiver
U5STAbits.UTXEN = 1;
U5MODEbits.ON = 0; //disable module
int i;
for(i = 0; i < MAX_INTERNAL_UART_PORT; i++)
{
@ -191,7 +170,7 @@ int OpenInternalPort(int p_iUartPort,int p_iUartHandle,char *p_pcHeadPtr, char *
{
if(p_iUartPort > MAX_INTERNAL_UART_PORT)
return UART_INVALID_PORT;
int iBRG = (PERIPHERAL_FREQ/(4*p_iBaudRate)) - 1;
int iMask = 0;
@ -240,30 +219,20 @@ int OpenInternalPort(int p_iUartPort,int p_iUartHandle,char *p_pcHeadPtr, char *
U1MODEbits.ON = 1; //enable module
break;
}
case INTERNAL_UART_PORT_2:
{
INTERNAL_UART2_TX_PIN_DIR = PIN_OUTPUT;
INTERNAL_UART2_TX_PIN = 1;
U2MODE = iMask;
U2MODEbits.BRGH = 1;
U2BRG = iBRG;
U2MODEbits.ON = 1; //enable module
break;
}
case INTERNAL_UART_PORT_5:
case INTERNAL_UART_PORT_2:
{
INTERNAL_UART5_TX_PIN_DIR = PIN_OUTPUT;
INTERNAL_UART5_TX_PIN = 1;
U5MODE = iMask;
U5MODEbits.BRGH = 1;
U5BRG = iBRG;
U5MODEbits.ON = 1; //enable module
INTERNAL_UART2_TX_PIN_DIR = PIN_OUTPUT;
INTERNAL_UART2_TX_PIN = 1;
U2MODE = iMask;
U2MODEbits.BRGH = 1;
U2BRG = iBRG;
U2MODEbits.ON = 1; //enable module
break;
}
}
astInternalUartData[p_iUartPort].iIsOpened = 1;
return UART_OK;
}
@ -288,7 +257,7 @@ int SendInternalUartData(char *p_pcDataBuf, int p_iDataSize, int p_iUartPort, ch
//if(p_stUartDataPtr->iNbFIFOPendingBytes != 0) //If FIFO not empty
if(p_stUartDataPtr->iIsBusy == 1)
return UART_PORT_BUSY; //no space is available so flag the port as BUSY...
iBufSize = p_iDataSize;
if(iBufSize > INTERNAL_UART_BUFFER_DEPTH)
iBufSize = INTERNAL_UART_BUFFER_DEPTH;
@ -324,7 +293,7 @@ int SendInternalUartData(char *p_pcDataBuf, int p_iDataSize, int p_iUartPort, ch
int i;
for(i = 0; i < iBufSize; i++)
{
// KickWatchdog();
// KickWatchdog();
U1TXREG = *p_stUartDataPtr->pcTxDataPtr++;
while(U1STAbits.TRMT == 0);
}
@ -333,47 +302,23 @@ int SendInternalUartData(char *p_pcDataBuf, int p_iDataSize, int p_iUartPort, ch
}
break;
}
case INTERNAL_UART_PORT_2:
{
if(IEC1bits.U2TXIE)
{
//We consider at this point that the data has been sent for the upper layer.
DataSentNotification(p_stUartDataPtr->iUartHandle,iBufSize);
U2STAbits.UTXEN = 1;
}
else
{
int i;
for(i = 0; i < iBufSize; i++)
{
// KickWatchdog();
U2TXREG = *p_stUartDataPtr->pcTxDataPtr++;
while(U2STAbits.TRMT == 0);
LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
}
p_stUartDataPtr->iIsBusy = 0;
DataSentNotification(p_stUartDataPtr->iUartHandle,iBufSize);
}
break;
}
case INTERNAL_UART_PORT_5:
case INTERNAL_UART_PORT_2:
{
if(IEC2bits.U5TXIE)
if(IEC1bits.U2TXIE)
{
//We consider at this point that the data has been sent for the upper layer.
DataSentNotification(p_stUartDataPtr->iUartHandle,iBufSize);
U5STAbits.UTXEN = 1;
U2STAbits.UTXEN = 1;
}
else
{
int i;
for(i = 0; i < iBufSize; i++)
{
// KickWatchdog();
U5TXREG = *p_stUartDataPtr->pcTxDataPtr++;
while(U5STAbits.TRMT == 0);
// LTE_MODULE_TX_LED_PIN = ~ LTE_MODULE_TX_LED_PIN;
// KickWatchdog();
U2TXREG = *p_stUartDataPtr->pcTxDataPtr++;
while(U2STAbits.TRMT == 0);
LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
}
p_stUartDataPtr->iIsBusy = 0;
DataSentNotification(p_stUartDataPtr->iUartHandle,iBufSize);
@ -389,64 +334,24 @@ int SendInternalUartData(char *p_pcDataBuf, int p_iDataSize, int p_iUartPort, ch
int SendInternalUartDataBlocking(char *p_pcDataBuf, int p_iDataSize, int p_iUartPort)
{
int i;
switch(p_iUartPort)
{
case INTERNAL_UART_PORT_1:
{
int temp = IEC1;
IEC0bits.U1TXIE = 0;
for(i = 0; i < p_iDataSize; i++)
{
// LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
U1TXREG = *p_pcDataBuf++;
while(U1STAbits.TRMT == 0);
}
// LORA_MODULE_TX_LED_PIN = LED_OFF;
IFS0bits.U1TXIF = 0;
IEC1 = temp;
break;
}
case INTERNAL_UART_PORT_2:
{
int temp = IEC1;
IEC1bits.U2TXIE = 0;
for(i = 0; i < p_iDataSize; i++)
{
LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
U2TXREG = *p_pcDataBuf++;
while(U2STAbits.TRMT == 0);
}
LORA_MODULE_TX_LED_PIN = LED_OFF;
IFS1bits.U2TXIF = 0;
IEC1 = temp;
break;
}
case INTERNAL_UART_PORT_5:
{
int temp = IEC2;
IEC2bits.U5TXIE = 0;
for(i = 0; i < p_iDataSize; i++)
{
// LTE_MODULE_TX_LED_PIN = ~ LTE_MODULE_TX_LED_PIN;
U2TXREG = *p_pcDataBuf++;
while(U5STAbits.TRMT == 0);
}
// LTE_MODULE_TX_LED_PIN = LED_OFF;
IFS2bits.U5TXIF = 0;
IEC2 = temp;
break;
}
int temp = IEC1;
IEC1bits.U2TXIE = 0;
for(i = 0; i < p_iDataSize; i++)
{
LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
U2TXREG = *p_pcDataBuf++;
while(U2STAbits.TRMT == 0);
}
LORA_MODULE_TX_LED_PIN = LED_OFF;
IFS1bits.U2TXIF = 0;
IEC1 = temp;
return UART_OK;
}
void TickInternalUart(void)
{
#ifdef POLL_UART1_RX
if(U1STAbits.URXDA == 1)
{
if(U1STAbits.OERR) //Buffer overrun error. Data is lost.
@ -458,14 +363,14 @@ void TickInternalUart(void)
while(U1STAbits.URXDA && i < INTERNAL_UART_BUFFER_DEPTH)
{
char NewByte = U1RXREG;
// DriveProtocolRxData(&NewByte,1);
// DriveProtocolRxData(&NewByte,1);
acIntUartRxBuff[INTERNAL_UART_PORT_1][i++] = NewByte;
}
// UartReceiveData(UART_1,&acIntUartRxBuff[INTERNAL_UART_PORT_1][0], i);
// DriveProtocolRxData(&acIntUartRxBuff[INTERNAL_UART_PORT_1][0], i);
// UartReceiveData(UART_1,&acIntUartRxBuff[INTERNAL_UART_PORT_1][0], i);
// DriveProtocolRxData(&acIntUartRxBuff[INTERNAL_UART_PORT_1][0], i);
}
#endif
#ifdef POLL_UART2_RX
if(U2STAbits.URXDA == 1)
{
@ -473,34 +378,34 @@ void TickInternalUart(void)
while(U2STAbits.URXDA == 1 && i < INTERNAL_UART_BUFFER_DEPTH)
{
char NewByte = U2RXREG;
// acIntUartRxBuff[INTERNAL_UART_PORT_2][i++] = NewByte;
// acIntUartRxBuff[INTERNAL_UART_PORT_2][i++] = NewByte;
LORA_MODULE_RX_LED_PIN = ~LORA_MODULE_RX_LED_PIN;
ProtocolAnalyzeNewData(NewByte);
// LoraData <<= 8;
// unsigned int toto = NewByte;
// toto &= 0x000000FF;
// LoraData |= toto;
//
// if(LoraData == 0xDEADBEEF)
// {
// HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
// LORA_ACTIVITY_LED_PIN = ~LORA_ACTIVITY_LED_PIN;
// LoraData = 0;
// }
// HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
ProtocolAnalyzeNewData(NewByte);
// LoraData <<= 8;
// unsigned int toto = NewByte;
// toto &= 0x000000FF;
// LoraData |= toto;
//
// if(LoraData == 0xDEADBEEF)
// {
// HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
// LORA_ACTIVITY_LED_PIN = ~LORA_ACTIVITY_LED_PIN;
// LoraData = 0;
// }
// HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
}
if(U2STAbits.OERR) //Buffer overrun error. Data is lost.
{
U2STAbits.OERR = 0;
printf("Overrun\n");
}
// UartReceiveData(UART_2,&acIntUartRxBuff[INTERNAL_UART_PORT_2][0], i);
// CUProtocolRxData(&acIntUartRxBuff[INTERNAL_UART_PORT_2][0], i);
// UartReceiveData(UART_2,&acIntUartRxBuff[INTERNAL_UART_PORT_2][0], i);
// CUProtocolRxData(&acIntUartRxBuff[INTERNAL_UART_PORT_2][0], i);
}
#endif
}
//-----------------------------------------------------------------------------
@ -529,16 +434,16 @@ void __ISR(_UART_1_VECTOR, ipl7) InternalUart1AInterrupt(void)
}
while((U1STAbits.UTXBF == 0) && //while there is space in buffer
(p_acUartDataPtr->iNbFIFOPendingBytes != 0)); //and data to send
(p_acUartDataPtr->iNbFIFOPendingBytes != 0)); //and data to send
// HCAM
// if(p_acUartDataPtr->iNbFIFOPendingBytes == 0)
// {
// // U1STAbits.UTXEN = 0; //all data sent, stop transmitter
// p_acUartDataPtr->iIsBusy = 0;
// }
// if(p_acUartDataPtr->iNbFIFOPendingBytes == 0)
// {
// // U1STAbits.UTXEN = 0; //all data sent, stop transmitter
// p_acUartDataPtr->iIsBusy = 0;
// }
}
}
if(IFS0bits.U1RXIF && IEC0bits.U1RXIE)
@ -562,7 +467,7 @@ void __ISR(_UART_1_VECTOR, ipl7) InternalUart1AInterrupt(void)
NewByte = U1RXREG;
acIntUartRxBuff[INTERNAL_UART_PORT_1][i++] = NewByte;
}
UartReceiveData(p_acUartDataPtr->iUartHandle,&acIntUartRxBuff[INTERNAL_UART_PORT_1][0], i);
@ -593,7 +498,7 @@ void __ISR(_UART_2_VECTOR, ipl7) InternalUart2Interrupt(void)
LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
}
while((U2STAbits.UTXBF == 0) && //while there is space in buffer
(p_acUartDataPtr->iNbFIFOPendingBytes != 0)); //and data to send
(p_acUartDataPtr->iNbFIFOPendingBytes != 0)); //and data to send
}
}
@ -618,60 +523,7 @@ void __ISR(_UART_2_VECTOR, ipl7) InternalUart2Interrupt(void)
LORA_MODULE_RX_LED_PIN = ~LORA_MODULE_RX_LED_PIN;
}
UartReceiveData(p_acUartDataPtr->iUartHandle,&acIntUartRxBuff[INTERNAL_UART_PORT_2][0], i);
}
}
void __ISR(_UART_5_VECTOR, ipl7) InternalUart5Interrupt(void)
{
stInternalUartData *p_acUartDataPtr = &astInternalUartData[INTERNAL_UART_PORT_5];
if(IFS2bits.U5TXIF && IEC2bits.U5TXIE)
{
IFS2bits.U5TXIF = 0;
//Check if there is still data to send in FIFO
if(p_acUartDataPtr->iNbFIFOPendingBytes == 0)
{
U5STAbits.UTXEN = 0; //all data sent, stop transmitter
p_acUartDataPtr->iIsBusy = 0;
//LORA_MODULE_TX_LED_PIN = LED_OFF;
}
else
{
// LTE_MODULE_TX_LED_PIN = LED_ON;
do
{
U5TXREG = *p_acUartDataPtr->pcTxDataPtr++; //send data
p_acUartDataPtr->iNbFIFOPendingBytes--;
}
while((U5STAbits.UTXBF == 0) && //while there is space in buffer
(p_acUartDataPtr->iNbFIFOPendingBytes != 0)); //and data to send
// LTE_MODULE_TX_LED_PIN = LED_OFF;
}
}
if(IFS2bits.U5RXIF && IEC2bits.U5RXIE)
{
IFS2bits.U5RXIF = 0;
char NewByte;
int i;
if(U5STAbits.OERR) //Buffer overrun error. Data is lost.
{
U5STAbits.OERR = 0;
IFS2bits.U5RXIF = 0;
printf("UART5 OERR\n");
return;
}
i = 0;
while(U5STAbits.URXDA)
{
NewByte = U5RXREG;
acIntUartRxBuff[INTERNAL_UART_PORT_5][i++] = NewByte;
LTE_MODULE_RX_LED_PIN = ~LTE_MODULE_RX_LED_PIN;
}
UartReceiveData(p_acUartDataPtr->iUartHandle,&acIntUartRxBuff[INTERNAL_UART_PORT_5][0], i);
}
}
@ -708,12 +560,12 @@ void ResetUart1(void)
//-----------------------------------------------------------------------------
void ResetUart2(void)
{
//Setup port 2
//Setup port 2
//
U2MODEbits.ON = 0; //disable module
U2STAbits.UTXEN = 0; //disable transmitter
IEC1bits.U2TXIE = 0; //disable tx interrupt
IFS1bits.U2TXIF = 0; //clear interrupt flag
IEC1bits.U2TXIE = 0; //enable tx interrupt
@ -734,35 +586,6 @@ void ResetUart2(void)
U2MODEbits.ON = 1; //disable module
}
void ResetUart5(void)
{
//Setup port 2
//
U5MODEbits.ON = 0; //disable module
U5STAbits.UTXEN = 0; //disable transmitter
IEC2bits.U5TXIE = 0; //disable tx interrupt
IFS2bits.U5TXIF = 0; //clear interrupt flag
IEC2bits.U5TXIE = 0; //enable tx interrupt
IEC2bits.U5RXIE = 0; //disable rx interrupts
IFS2bits.U5RXIF = 1;
#ifdef POLL_UART2_RX
IEC2bits.U5RXIE = 0; //disable rx interrupts
#else
IEC2bits.U5RXIE = 1; //enable rx interrupts
#endif
U5STAbits.URXEN = 1; //enable receiver
astInternalUartData[INTERNAL_UART_PORT_5].pcTxDataPtr = &astInternalUartData[INTERNAL_UART_PORT_5].acIntUartTxFIFO[0];
astInternalUartData[INTERNAL_UART_PORT_5].iTxDataSize = 0;
astInternalUartData[INTERNAL_UART_PORT_5].iIsBusy = 0;
U5MODEbits.ON = 1; //enable module
}
//-----------------------------------------------------------------------------
void process(void)

View File

@ -40,16 +40,13 @@
#define INTERNAL_UART2_TX_PIN_DIR TRISFbits.TRISF5
#define INTERNAL_UART2_TX_PIN LATFbits.LATF5
#define INTERNAL_UART5_TX_PIN_DIR TRISBbits.TRISB14
#define INTERNAL_UART5_TX_PIN LATBbits.LATB14
/* ************************************************************************** */
/* Type definitions */
typedef enum
{
INTERNAL_UART_PORT_1,
INTERNAL_UART_PORT_2,
INTERNAL_UART_PORT_5,
INTERNAL_UART_PORT_2,
MAX_INTERNAL_UART_PORT
}eInternalUartPorts;
@ -95,7 +92,6 @@ int SendInternalUartDataBlocking(char *p_pcDataBuf, int p_iDataSize, int p_iUart
void TickInternalUart(void);
void ResetUart1(void);
void ResetUart2(void);
void ResetUart5(void);
#endif
//EOF

View File

@ -1,108 +0,0 @@
//#include <proc/p32mx440f256h.h>
#include "LCDCtrl.h"
#include "BoardCfg.h"
#include "timer.h"
#include "hd44780.h"
#include "BatteryMonitor.h"
unsigned int mIsLCDON;
unsigned int mPinStateToggle;
void InitLCDCtrl()
{
mIsLCDON = 0;
mPinStateToggle = 0;
LCD_RS_PIN = 0;
LCD_RW_PIN = 0;
LCD_E_PIN = 0;
LCD_DB4_PIN = 0;
LCD_DB5_PIN = 0;
LCD_DB6_PIN = 0;
LCD_DB7_PIN = 0;
// HD44780_Init();
//
// HD44780_DisplayClear();
// HD44780_PositionXY(0, 0);
// // send char
// HD44780_DrawString("Le Chalet");
// HD44780_PositionXY(0, 1);
// HD44780_DrawString("Ile aux chevres");
// display clear
//HD44780_DisplayOn();
TimerStart(LCD_CTRL_TIMER,LCD_REFRESH_TIMEOUT);
}
void TickLCDCtrl()
{
if(LCD_SCROLL_BTN_PIN == 0)
{
if(mPinStateToggle == 0)
{
mPinStateToggle = 1;
if(mIsLCDON == 1)
{
mIsLCDON = 0;
HD44780_DisplayClear();
LCD_RS_PIN = 0;
LCD_RW_PIN = 0;
LCD_E_PIN = 0;
LCD_DB4_PIN = 0;
LCD_DB5_PIN = 0;
LCD_DB6_PIN = 0;
LCD_DB7_PIN = 0;
}
else
{
mIsLCDON = 1;
HD44780_Init();
HD44780_DisplayClear();
HD44780_DisplayOn();
}
}
}
else
{
if(mPinStateToggle == 1)
{
mPinStateToggle = 0;
}
}
if(IsTimerExpired(LCD_CTRL_TIMER))
{
if(mIsLCDON == 1)
{
float VBat = GetBatteryVoltage(0);
float ISolar = GetConvertedSolarPanelCurrent();
char line1[16], line2[16];
snprintf(line1,16,"VBat: %.2fV ",VBat);
if(ISolar < (float)0.1)
{
ISolar *= 1000;
snprintf(line2,16,"ISol: %.2fmA ",ISolar);
}
else
{
snprintf(line2,16,"ISol: %.5fA ",ISolar);
}
//
// HD44780_Init();
// HD44780_DisplayClear();
HD44780_PositionXY(0, 0);
HD44780_DrawString(line1);
HD44780_PositionXY(0, 1);
HD44780_DrawString(line2);
}
TimerStart(LCD_CTRL_TIMER,LCD_REFRESH_TIMEOUT);
}
}

View File

@ -1,21 +0,0 @@
/*
* File: LCDCtrl.h
* Author: JF
*
*
*/
#ifndef LCDCTRL_H
#define LCDCTRL_H
#include "define.h"
#define LCD_REFRESH_TIMEOUT 1000 //1h Time without comm. before we reset the LoRa module
void InitLCDCtrl();
void TickLCDCtrl();
#endif /* LCDCTRL_H */

View File

@ -1,344 +0,0 @@
#include "LTENetworkInterface.h"
#include "NetworkProtocol.h"
#include "SIM7080GInterface.h"
#include "timer.h"
#include "ChaletPowerRelay.h"
#include "HarakiriRelay.h"
#include "BatteryMonitor.h"
#include "LedLightCtrl.h"
#include "TemperatureSensor.h"
#include "SPI_Flash.h"
#include "FlashMapping.h"
#include "LoraWatchdog.h"
#include "versionbuild.h"
#include "WiFiCtrl.h"
#include "BoardCfg.h"
int mLTENWISMState;
static const char mFirmwareVersion[15] = VERSIONNUMBER;
#define LORA_CHALET_STATUS_CUR_SENSOR_MASK 0x02
#define LORA_CHALET_STATUS_POWER_RELAY_MASK 0x01
unsigned int mLTETotalMasterNbRequests = 0;
void LTENetworkInterfaceInit()
{
ProtocolInit(NETWORK_PROTOCOL_USER_LTE);
mLTENWISMState = LTE_NWI_INIT_STATE;
}
void ExecuteLTEMasterCommand(int SenderID, int Command, unsigned char *Data, int DataSize)
{
KickLoraWatchdog();
ChaletPowerRelayKickTimer();
mLTETotalMasterNbRequests++;
LTE_MODULE_RX_LED_PIN = LED_OFF;
switch(SenderID)
{
case ID_MASTER:
{
switch(Command)
{
case CHALET_INTERFACE_ACK:
{
break;
}
case CHALET_GENERAL_STATUS_REQUEST:
{
float FloatVoltage = GetBatteryVoltage(1);
float FloatTemperature = TempSensorGetTemp();
unsigned int BattVoltage = *((int*)&FloatVoltage);
unsigned int Temperature = *((int*)&FloatTemperature);
int SolarPanelCurrent = GetSolarPanelCurrent();
int SOC = GetBatterySOC();
char GeneralStatus = 0;
char ChaletStatus[18];
if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
{
GeneralStatus |= LORA_CHALET_STATUS_POWER_RELAY_MASK;
}
if(GetCurrentModuleOK() == true)
{
GeneralStatus |= LORA_CHALET_STATUS_CUR_SENSOR_MASK;
}
ChaletStatus[0] = GeneralStatus; //General Status
ChaletStatus[1] = GetWiFiSate(); //Wifi Module state
ChaletStatus[2] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 1
BattVoltage >>= 8;
ChaletStatus[3] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 2
BattVoltage >>= 8;
ChaletStatus[4] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 3
BattVoltage >>= 8;
ChaletStatus[5] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 4
ChaletStatus[6] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 1
SolarPanelCurrent >>= 8;
ChaletStatus[7] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 2
ChaletStatus[8] = (char)(SOC & 0x000000FF); //Battery SOC 1
SolarPanelCurrent >>= 8;
ChaletStatus[9] = (char)(SolarPanelCurrent & 0x000000FF); //Battery SOC 2
ChaletStatus[10] = (char)(Temperature & 0x000000FF); //Temperature 1
Temperature >>= 8;
ChaletStatus[11] = (char)(Temperature & 0x000000FF); //Temperature 2
Temperature >>= 8;
ChaletStatus[12] = (char)(Temperature & 0x000000FF); //BTemperature 3
Temperature >>= 8;
ChaletStatus[13] = (char)(Temperature & 0x000000FF); //Temperature 4
int tmp = mLTETotalMasterNbRequests;
ChaletStatus[14] = (char)(mLTETotalMasterNbRequests & 0x000000FF); //Total Nb Requests 1
mLTETotalMasterNbRequests >>= 8;
ChaletStatus[15] = (char)(mLTETotalMasterNbRequests & 0x000000FF); //Total Nb Requests 2
mLTETotalMasterNbRequests >>= 8;
ChaletStatus[16] = (char)(mLTETotalMasterNbRequests & 0x000000FF); //Total Nb Requests 3
mLTETotalMasterNbRequests >>= 8;
ChaletStatus[17] = (char)(mLTETotalMasterNbRequests & 0x000000FF); //Total Nb Requests 4
mLTETotalMasterNbRequests = tmp;
SendLTENetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,18);
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
break;
}
case CHALET_AC_POWER_STATE_STATUS_REQUEST:
{
char PowerStatus = GetChaletPowerRelayState();
SendLTENetworkCommand(CHALET_AC_POWER_STATE_STATUS_RESPONSE,&PowerStatus,1);
break;
}
case CHALET_AC_POWER_SET_STATE_REQUEST:
{
char response = CHALET_POWER_RELAY_UNKNOWN_STATE;
if(Data[0] == CHALET_POWER_RELAY_OFF_STATE)
{
ChaletPowerRelayTurnOff();
response = CHALET_POWER_RELAY_OFF_STATE;
}
else if(Data[0] == CHALET_POWER_RELAY_ON_STATE)
{
ChaletPowerRelayTurnOn();
response = CHALET_POWER_RELAY_ON_STATE;
}
else
{
//invalid state requested.... don't do anything
response = CHALET_POWER_RELAY_UNKNOWN_STATE;
}
SendLTENetworkCommand(CHALET_AC_POWER_SET_STATE_RESPONSE,&response,1);
break;
}
case CHALET_BATTERY_VOLTAGE_REQUEST:
{
break;
}
case CHALET_WIFI_STATUS_REQUEST:
{
char response[5];
uint32 IPAddress = GetCurIPAddress();
response[0] = GetWiFiSate(); //Wifi Module state
response[1] = IPV4_BYTE(IPAddress,0);
response[2] = IPV4_BYTE(IPAddress,1);
response[3] = IPV4_BYTE(IPAddress,2);
response[4] = IPV4_BYTE(IPAddress,3);
SendLTENetworkCommand(CHALET_WIFI_STATUS_RESPONSE,(unsigned char*)&response,5);
break;
}
case CHALET_WIFI_SET_STATE_REQUEST:
{
char response = WIFI_UNKNOWN_STATE;
if(Data[0] == 0)
{
TurnOFFWiFi();
response = 0;
}
else if(Data[0] == 1)
{
if(GetWiFiSate() != WIFI_CONNECTED_STATE)
{
InitWiFi();
response = GetWiFiSate();
}
else
{
response = 1;
}
}
else
{
//invalid state requested.... don't do anything
response = WIFI_UNKNOWN_STATE;
}
SendLTENetworkCommand(CHALET_WIFI_SET_STATE_RESPONSE,&response,1);
break;
}
case CHALET_DO_HARAKIRI_REQUEST:
{
char response;
if(Data[0] == 0xBA &&
Data[1] == 0xAD &&
Data[2] == 0xBE &&
Data[3] == 0xEF)
{
//Magic word is OK... let's suicide...
response = 0x01;
//First, send an ACK to master (this is blocking so it's OK)
SendLTENetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
HarakiriRelayTurnOff();
}
else
{
response = 0x00;
SendLTENetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
}
break;
}
case CHALET_REBOOT_CPU_REQUEST:
{
char response;
if(Data[0] == 0xBA &&
Data[1] == 0xAD &&
Data[2] == 0xCA &&
Data[3] == 0xFE)
{
//Magic word is OK... let's reboot...
response = 0x01;
//First, send an ACK to master (this is blocking so it's OK)
SendLTENetworkCommand(CHALET_REBOOT_CPU_RESPONSE,&response,1);
Sleep(100);
TurnOFFWiFi();
Sleep(100);
SoftReset();
}
else
{
response = 0x00;
SendLTENetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
}
break;
}
case CHALET_GET_STORED_WIFI_SETTINGS_REQUEST:
{
char response[140];
char WifiDataSize;
SPIFlashReadBuffer(response,11,FLASH_WIFI_IP_ADDRESS);
WifiDataSize = 11 + response[9] + response[10];
if(WifiDataSize > 140)
break;
SPIFlashReadBuffer(response,WifiDataSize,FLASH_WIFI_IP_ADDRESS);
SendLTENetworkCommand(CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,response,WifiDataSize);
break;
}
case CHALET_SET_STORED_WIFI_SETTINGS_REQUEST:
{
char response = 0;
if(SPIFlashWriteBuffer(Data,DataSize,FLASH_WIFI_IP_ADDRESS) == 1)
{
response = 1;
}
SendLTENetworkCommand(CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,&response,1);
break;
}
case CHALET_GET_FIRMWARE_VERSION_REQUEST:
{
SendLTENetworkCommand(CHALET_GET_FIRMWARE_VERSION_RESPONSE,(unsigned char*)mFirmwareVersion,15);
break;
}
case CHALET_CLEAR_COMMS_STATISTICS_REQUEST:
{
char response = 1;
mLTETotalMasterNbRequests = 0;
SendLTENetworkCommand(CHALET_CLEAR_COMMS_STATISTICS_RESPONSE,&response,1);
break;
}
case ETH_NETWK_DEVICE_INFO_REQUEST:
{
char data[2];
data[0] = ID_CHALET_DEVICE;
data[1] = MY_DEVICE_ADDRESS;
int PayloadSize;
unsigned char *response = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_ETHERNET_VIRTUAL,ETH_NETWK_DEVICE_INFO_RESPONSE, data,2,0, &PayloadSize);
LTESendDataToMaster((char*)response,PayloadSize);
break;
}
case ETH_NETWK_SET_DEVICE_INFO_ACK:
{
LTENetworInterfaceExecSM(LTE_NWI_MASTER_CONNECTED_EVENT);
break;
}
case ETH_NETWK_CONNECTION_REFUSED:
{
//TODO: reset the TCP module to retry connection???
break;
}
}
break;
}
default:
{
break;
}
}
}
void TickLTENetworkInterface()
{
LTENetworInterfaceExecSM(LTE_NWI_TICK_EVENT);
}
void LTENetworInterfaceExecSM(int Event)
{
switch(mLTENWISMState)
{
case LTE_NWI_INIT_STATE:
{
mLTENWISMState = LTE_NWI_CONNECT_TO_MASTER_STATE;
TimerStart(LTE_NWI_TIMER,LTE_NWI_MASTER_CONNECT_POLL_INTERVAL);
break;
}
case LTE_NWI_WAIT_FOR_LTE_STATE:
{
//Not necessary... master will init handshake on TCP connection....
break;
}
case LTE_NWI_CONNECT_TO_MASTER_STATE: //Here we wait for the master to initiate the handshake after a TCP connection
{
if(Event == LTE_NWI_MASTER_CONNECTED_EVENT)
{
mLTENWISMState = LTE_NWI_OPERATE_STATE;
}
break;
}
case LTE_NWI_OPERATE_STATE:
{
if(Event == LTE_NWI_TICK_EVENT)
{
}
break;
}
}
}
void SendLTENetworkCommand(int Command, unsigned char *Data, unsigned int DataSize)
{
unsigned char *Payload;
unsigned int PayloadSize;
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_CHALET_DEVICE,Command,Data,DataSize,0,&PayloadSize);
LTESendDataToMaster(Payload,PayloadSize);
}

View File

@ -1,40 +0,0 @@
/*
* File: LTENetworkInterface.h
* Author: JF
*
* Created on December 28, 2024, 8:05 AM
*/
#ifndef LTENETWORKINTERFACE_H
#define LTENETWORKINTERFACE_H
#define LTE_NWI_MASTER_CONNECT_POLL_INTERVAL 5000
enum eLTENWISMStates
{
LTE_NWI_INIT_STATE,
LTE_NWI_WAIT_FOR_LTE_STATE,
LTE_NWI_CONNECT_TO_MASTER_STATE,
LTE_NWI_OPERATE_STATE,
LTE_NWI_MAX_STATE
};
enum eLTENWISMEvents
{
LTE_NWI_TICK_EVENT,
LTE_NWI_MASTER_CONNECTED_EVENT,
LTE_NWI_MAX_EVENT
};
void LTENetworkInterfaceInit();
void ExecuteLTEMasterCommand(int SenderID, int Command, unsigned char *Data, int DataSize);
void TickLTENetworkInterface();
void LTENetworInterfaceExecSM(int Event);
void SendLTENetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
#endif /* LTENETWORKINTERFACE_H */

View File

@ -14,8 +14,6 @@
#include "FlashMapping.h"
#include "LoraWatchdog.h"
#include "versionbuild.h"
#include "WiFiCtrl.h"
//#include "WiFiCtrl.h"
//
@ -30,22 +28,14 @@
unsigned char mLoraPreamble[3]={0x00,LORA_MASTER_ADDRESS,LORA_CHANNEL};
static const char mFirmwareVersion[15] = VERSIONNUMBER;
unsigned int mTotalMasterNbRequests = 0;
void LoraNetworkInterfaceInit()
{
ProtocolInit(NETWORK_PROTOCOL_USER_LORA);
}
void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
void ExecuteMasterCommand(int Command, unsigned char *Data)
{
//Whatever was the command, we are online...
LORA_MODULE_RX_LED_PIN = LED_OFF;
KickLoraWatchdog();
// printf("EXEC\n\n");
ChaletPowerRelayKickTimer();
mTotalMasterNbRequests++;
switch(Command)
{
case CHALET_INTERFACE_ACK:
@ -54,7 +44,7 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
}
case CHALET_GENERAL_STATUS_REQUEST:
{
float FloatVoltage = GetBatteryVoltage(1);
float FloatVoltage = GetBatteryVoltage();
float FloatTemperature = TempSensorGetTemp();
unsigned int BattVoltage = *((int*)&FloatVoltage);
unsigned int Temperature = *((int*)&FloatTemperature);
@ -62,7 +52,7 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
int SOC = GetBatterySOC();
char GeneralStatus = 0;
char ChaletStatus[18];
char ChaletStatus[14];
if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
{
@ -75,7 +65,6 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
ChaletStatus[0] = GeneralStatus; //General Status
ChaletStatus[1] = GetWiFiSate(); //Wifi Module state
ChaletStatus[2] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 1
BattVoltage >>= 8;
ChaletStatus[3] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 2
@ -83,35 +72,23 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
ChaletStatus[4] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 3
BattVoltage >>= 8;
ChaletStatus[5] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 4
ChaletStatus[6] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 1
SolarPanelCurrent >>= 8;
ChaletStatus[7] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 2
ChaletStatus[8] = (char)(SOC & 0x000000FF); //Battery SOC 1
SolarPanelCurrent >>= 8;
ChaletStatus[9] = (char)(SolarPanelCurrent & 0x000000FF); //Battery SOC 2
ChaletStatus[10] = (char)(Temperature & 0x000000FF); //Temperature 1
ChaletStatus[10] = (char)(Temperature & 0x000000FF); //Battery Voltage 1
Temperature >>= 8;
ChaletStatus[11] = (char)(Temperature & 0x000000FF); //Temperature 2
ChaletStatus[11] = (char)(Temperature & 0x000000FF); //Battery Voltage 2
Temperature >>= 8;
ChaletStatus[12] = (char)(Temperature & 0x000000FF); //BTemperature 3
ChaletStatus[12] = (char)(Temperature & 0x000000FF); //Battery Voltage 3
Temperature >>= 8;
ChaletStatus[13] = (char)(Temperature & 0x000000FF); //Temperature 4
ChaletStatus[13] = (char)(Temperature & 0x000000FF); //Battery Voltage 4
int tmp = mTotalMasterNbRequests;
ChaletStatus[14] = (char)(mTotalMasterNbRequests & 0x000000FF); //Total Nb Requests 1
mTotalMasterNbRequests >>= 8;
ChaletStatus[15] = (char)(mTotalMasterNbRequests & 0x000000FF); //Total Nb Requests 2
mTotalMasterNbRequests >>= 8;
ChaletStatus[16] = (char)(mTotalMasterNbRequests & 0x000000FF); //Total Nb Requests 3
mTotalMasterNbRequests >>= 8;
ChaletStatus[17] = (char)(mTotalMasterNbRequests & 0x000000FF); //Total Nb Requests 4
mTotalMasterNbRequests = tmp;
SendLoraNetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,18);
SendLoraNetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,14);
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
@ -148,20 +125,10 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
}
case CHALET_BATTERY_VOLTAGE_REQUEST:
{
break;
}
case CHALET_WIFI_STATUS_REQUEST:
{
char response[5];
uint32 IPAddress = GetCurIPAddress();
response[0] = GetWiFiSate(); //Wifi Module state
response[1] = IPV4_BYTE(IPAddress,0);
response[2] = IPV4_BYTE(IPAddress,1);
response[3] = IPV4_BYTE(IPAddress,2);
response[4] = IPV4_BYTE(IPAddress,3);
SendLoraNetworkCommand(CHALET_WIFI_STATUS_RESPONSE,(unsigned char*)&response,5);
break;
}
case CHALET_WIFI_SET_STATE_REQUEST:
@ -240,20 +207,15 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
}
case CHALET_GET_STORED_WIFI_SETTINGS_REQUEST:
{
char response[140];
char WifiDataSize;
SPIFlashReadBuffer(response,11,FLASH_WIFI_IP_ADDRESS);
WifiDataSize = 11 + response[9] + response[10];
if(WifiDataSize > 140)
break;
SPIFlashReadBuffer(response,WifiDataSize,FLASH_WIFI_IP_ADDRESS);
SendLoraNetworkCommand(CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,response,WifiDataSize);
char response[8];
SPIFlashReadBuffer(response,8,FLASH_WIFI_IP_ADDRESS);
SendLoraNetworkCommand(CHALET_GET_STORED_WIFI_SETTINGS_RESPONSE,response,8);
break;
}
case CHALET_SET_STORED_WIFI_SETTINGS_REQUEST:
{
char response = 0;
if(SPIFlashWriteBuffer(Data,DataSize,FLASH_WIFI_IP_ADDRESS) == 1)
if(SPIFlashWriteBuffer(Data,8,FLASH_WIFI_IP_ADDRESS) == 1)
{
response = 1;
}
@ -266,13 +228,6 @@ void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize)
SendLoraNetworkCommand(CHALET_GET_FIRMWARE_VERSION_RESPONSE,(unsigned char*)mFirmwareVersion,15);
break;
}
case CHALET_CLEAR_COMMS_STATISTICS_REQUEST:
{
char response = 1;
mTotalMasterNbRequests = 0;
SendLoraNetworkCommand(CHALET_CLEAR_COMMS_STATISTICS_RESPONSE,&response,1);
break;
}
}
}

View File

@ -2,16 +2,13 @@
#ifndef LORANEETWORKINTERFACE_H /* Guard against multiple inclusion */
#define LORANEETWORKINTERFACE_H
//#define LORA_CHANNEL 0x04
//#define LORA_MASTER_ADDRESS 0x05
#define LORA_CHANNEL 65
#define LORA_CHANNEL 0x04
#define LORA_MASTER_ADDRESS 0x05
#define LORA_CHALET_STATUS_POWER_RELAY_MASK 0x01
#define LORA_CHALET_STATUS_CUR_SENSOR_MASK 0x02
void LoraNetworkInterfaceInit();
void ExecuteLoraMasterCommand(int Command, unsigned char *Data, int DataSize);
void ExecuteMasterCommand(int Command, unsigned char *Data);
void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
void SendLoraNetworkCommandBlocking(int Command, unsigned char *Data, unsigned int DataSize); //USE WITH CARE

View File

@ -4,7 +4,6 @@
#include "BoardCfg.h"
#include "timer.h"
#include "LoraWatchdog.h"
#include "SIM7080GInterface.h"
int mLoraSMState;
@ -62,7 +61,6 @@ void LoraWatchdogStateMachine(int Event)
LORA_MODULE_RELAY_PIN = 0; //Turn ON the LoRa module
TimerStart(LORA_WATCHDOG_TIMER,LORA_WATCHDOG_REBOOT_TIMEOUT); //If we don't get Comm. back after this delay... reboot the PIC
mLoraSMState = LORA_WATCHDOG_WAIT_FOR_RECONNECT_STATE;
LTEModuleReset();
}
break;
}

View File

@ -15,89 +15,79 @@ jean-francois.martel@polymtl.ca
#include "NetworkProtocol.h"
#include "Uart.h"
#include <string.h>
#include "ProtocolDefs.h"
#include "MasterCtrlInterface.h"
#include "LoraNetworkInterface.h"
#include "LTENetworkInterface.h"
unsigned char mRxData[MAX_MESSAGE_SIZE+10], mTxData[MAX_MESSAGE_SIZE+10];
unsigned int DataSize = 0;
unsigned int DataCtr = 0;
unsigned int BufPtr = 0;
unsigned char RxPtr = 0;
unsigned char Command = 0;
unsigned char State = RxHeader;
unsigned char CRC = 0;
unsigned char SenderID = 0;
unsigned char SenderAddress = 0;
unsigned char Flags = 0;
unsigned char IsUpdating = 0;
unsigned char *BmpDataPtr = 0;
static char MyDeviceID = ID_SPRINKLER_DEVICE;
char mFrameData[MAX_MESSAGE_SIZE+10];
ProtocolData_t mLoraProtocolData;
ProtocolData_t mLTEProtocolData;
void ProtocolInit(int User)
void ProtocolInit(void)
{
ProtocolData_t *DataStruct;
switch(User)
{
case NETWORK_PROTOCOL_USER_LORA:
{
DataStruct = &mLoraProtocolData;
break;
}
case NETWORK_PROTOCOL_USER_LTE:
{
DataStruct = &mLTEProtocolData;
break;
}
default:
return;
break;
}
ResetStateMachine(DataStruct);
ResetStateMachine();
}
void StateMachine(unsigned char Data,ProtocolData_t *ProtocolData )
void StateMachine(unsigned char Data)
{
switch(ProtocolData->State)
switch(State)
{
case Initialization: //Reset all pointers and data...
{
ProtocolData->DataSize = 0;
ProtocolData->BufPtr = 0;
ProtocolData->RxPtr = 0;
ProtocolData->Command = 0;
ProtocolData->CRC = 0;
ProtocolData->State = RxHeader;
DataSize = 0;
BufPtr = 0;
RxPtr = 0;
Command = 0;
CRC = 0;
State = RxHeader;
break;
}
case RxHeader: //Wait for data header...
{
if(Data == FRAME_HEADER)
{
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxAdd;
ProtocolData->CRC ^= Data;
mRxData[BufPtr++] = Data;
State = RxAdd;
CRC ^= Data;
}
else
{
ProtocolData->DataSize = 0;
ResetStateMachine(ProtocolData);
DataSize = 0;
ResetStateMachine();
}
break;
}
case RxAdd: //Sender Address.
{
ProtocolData->SenderAddress = Data;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxID;
ProtocolData->CRC ^= Data;
SenderAddress = Data;
mRxData[BufPtr++] = Data;
State = RxID;
CRC ^= Data;
break;
}
case RxID: //Sender ID
{
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxMyID;
ProtocolData->SenderID = Data;
ProtocolData->CRC ^= Data;
mRxData[BufPtr++] = Data;
State = RxMyID;
SenderID = Data;
CRC ^= Data;
break;
}
case RxMyID:
@ -107,182 +97,158 @@ void StateMachine(unsigned char Data,ProtocolData_t *ProtocolData )
// ResetStateMachine();
// break;
// }
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxMyAddress;
ProtocolData->CRC ^= Data;
mRxData[BufPtr++] = Data;
State = RxMyAddress;
CRC ^= Data;
break;
}
case RxMyAddress:
{
if(Data != MY_DEVICE_ADDRESS && Data != BROADCAST_VALUE) //Message is not for this device address and it's not a broadcast
{
ResetStateMachine(ProtocolData);
ResetStateMachine();
break;
}
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxFlags;
ProtocolData->CRC ^= Data;
mRxData[BufPtr++] = Data;
State = RxFlags;
CRC ^= Data;
break;
}
case RxFlags:
{
ProtocolData->Flags = Data;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxCMD;
ProtocolData->CRC ^= Data;
Flags = Data;
mRxData[BufPtr++] = Data;
State = RxCMD;
CRC ^= Data;
break;
}
case RxCMD:
{
ProtocolData->Command = Data;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->State = RxSize1;
ProtocolData->CRC ^= Data;
Command = Data;
mRxData[BufPtr++] = Data;
State = RxSize1;
CRC ^= Data;
break;
}
case RxSize1: //Data size MSB
{
ProtocolData->DataSize = 0;
ProtocolData->DataSize = (unsigned int)Data;
ProtocolData->DataSize <<= 8;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
DataSize = 0;
DataSize = (unsigned int)Data;
DataSize <<= 8;
mRxData[BufPtr++] = Data;
ProtocolData->State = RxSize2;
ProtocolData->CRC ^= Data;
State = RxSize2;
CRC ^= Data;
break;
}
case RxSize2: //Data size
{
ProtocolData->DataSize |= (unsigned int)Data;
ProtocolData->DataSize <<= 8;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
DataSize |= (unsigned int)Data;
DataSize <<= 8;
mRxData[BufPtr++] = Data;
ProtocolData->State = RxSize3;
ProtocolData->CRC ^= Data;
State = RxSize3;
CRC ^= Data;
break;
}
case RxSize3: //Data size
{
ProtocolData->DataSize |= (unsigned int)Data;
ProtocolData->DataSize <<= 8;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
DataSize |= (unsigned int)Data;
DataSize <<= 8;
mRxData[BufPtr++] = Data;
ProtocolData->State = RxSize4;
ProtocolData->CRC ^= Data;
State = RxSize4;
CRC ^= Data;
break;
}
case RxSize4: //Data size LSB
{
ProtocolData->DataSize |= (unsigned int)Data;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
DataSize |= (unsigned int)Data;
mRxData[BufPtr++] = Data;
if(ProtocolData->DataSize > MAX_MESSAGE_SIZE)
ResetStateMachine(ProtocolData);
if(DataSize > MAX_MESSAGE_SIZE)
ResetStateMachine();
if(ProtocolData->DataSize == 0)
ProtocolData->State = RxCRC;
if(DataSize == 0)
State = RxCRC;
else
ProtocolData->State = RxData;
State = RxData;
ProtocolData->CRC ^= Data;
CRC ^= Data;
break;
}
case RxData:
{
ProtocolData->CRC ^= Data;
CRC ^= Data;
ProtocolData->mRxData[ProtocolData->BufPtr++] = Data;
ProtocolData->DataCtr++;
mRxData[BufPtr++] = Data;
DataCtr++;
if(ProtocolData->DataCtr == ProtocolData->DataSize)
if(DataCtr == DataSize)
{
ProtocolData->State = RxCRC;
State = RxCRC;
}
break;
}
case RxCRC:
{
if(Data != ProtocolData->CRC)
if(Data != CRC)
{
ResetStateMachine(ProtocolData);
ResetStateMachine();
// ProtocolAcknowledge(0,Command,0);
break;
}
// NewMasterMessageReceived(mRxData);
if(ProtocolData == &mLoraProtocolData)
{
ExecuteLoraMasterCommand(ProtocolData->Command,ProtocolMsgDataPtr(ProtocolData),ProtocolData->DataSize);
}
else if(ProtocolData == &mLTEProtocolData)
{
ExecuteLTEMasterCommand(ProtocolData->SenderID, ProtocolData->Command,ProtocolMsgDataPtr(ProtocolData),ProtocolData->DataSize);
}
ResetStateMachine(ProtocolData);
ExecuteMasterCommand(Command,ProtocolMsgDataPtr());
ResetStateMachine();
break;
}
default:
{
ResetStateMachine(ProtocolData);
ResetStateMachine();
break;
}
}
}
void ProtocolAnalyzeNewData(unsigned char Data, int User)
void ProtocolAnalyzeNewData(unsigned char Data)
{
ProtocolData_t *DataStruct;
switch(User)
{
case NETWORK_PROTOCOL_USER_LORA:
{
DataStruct = &mLoraProtocolData;
break;
}
case NETWORK_PROTOCOL_USER_LTE:
{
DataStruct = &mLTEProtocolData;
break;
}
default:
return;
break;
}
// mRxData[RxPtr] = Data;
// printf("%X",Data);
StateMachine(Data, DataStruct);
StateMachine(Data);
}
void ResetStateMachine(ProtocolData_t *ProtocolData)
void ResetStateMachine(void)
{
ProtocolData->DataSize = 0;
ProtocolData->BufPtr = 0;
ProtocolData->RxPtr = 0;
ProtocolData->Command = 0;
ProtocolData->CRC = 0;
ProtocolData->State = RxHeader;
ProtocolData->DataCtr = 0;
ProtocolData->Flags = 0;
ProtocolData->SenderAddress = 0;
DataSize = 0;
BufPtr = 0;
RxPtr = 0;
Command = 0;
CRC = 0;
State = RxHeader;
DataCtr = 0;
Flags = 0;
SenderAddress = 0;
}
void ProtocolExecCmd(void)
{
// switch(Command)
// {
// case RX_GET_STATUS:
// {
// unsigned char StatusByte =0;
//// memcpy(&StatusByte, &IRRemoteStatus, sizeof(IRRemoteStatus));
//// ProtocolSendCmd(TX_DEADBOLT_STATUS,&StatusByte,sizeof(StatusByte),1,0);
//
// break;
// }
// }
switch(Command)
{
case RX_GET_STATUS:
{
unsigned char StatusByte =0;
// memcpy(&StatusByte, &IRRemoteStatus, sizeof(IRRemoteStatus));
// ProtocolSendCmd(TX_DEADBOLT_STATUS,&StatusByte,sizeof(StatusByte),1,0);
break;
}
}
}
void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char Data)
@ -315,10 +281,10 @@ unsigned char ProtocolCalcCrc(unsigned char* Buffer,unsigned char size)
unsigned char ProtocolIsReceiving(void)
{
// if(State == RxHeader)
// return 0; // Idle...
// else
// return 1; //receiving from serial port
if(State == RxHeader)
return 0; // Idle...
else
return 1; //receiving from serial port
}
@ -329,32 +295,30 @@ unsigned char* ProtocolGetFrame(unsigned char DestDevice,unsigned char DestAddre
if(Size > MAX_MESSAGE_SIZE)
{
*FrameSize = 0;
return &mFrameData[FRAME_HEADER_INDEX];
return &mTxData[FRAME_HEADER_INDEX];
}
mFrameData[FRAME_HEADER_INDEX] = FRAME_HEADER; //header
mFrameData[FRAME_SENDER_ADDRESS_INDEX] = MY_DEVICE_ADDRESS; //My Address
mFrameData[FRAME_SENDER_DEVICE_ID_INDEX] = SenderDevice; //My ID
mFrameData[FRAME_DEST_DEVICE_ID_INDEX] = DestDevice; //Destination ID
mFrameData[FRAME_DEST_ADDRESS_INDEX] = DestAddress ;//Address; //Destination Address
mFrameData[FRAME_FLAGS_INDEX] = Flags; //Flags
mFrameData[FRAME_COMMAND_INDEX] = Cmd; //Command to send
mFrameData[FRAME_SIZE1_INDEX] = (unsigned char)((Size >> 24) & 0xFF);
mFrameData[FRAME_SIZE2_INDEX] = (unsigned char)((Size >> 16) & 0xFF);
mFrameData[FRAME_SIZE3_INDEX] = (unsigned char)((Size >> 8) & 0xFF);
mFrameData[FRAME_SIZE4_INDEX] = (unsigned char)(Size & 0xFF);
memcpy((void*)&mFrameData[FRAME_DATA_INDEX],(void*)Data,Size); //Cmd data
mFrameData[Size+FRAME_DATA_INDEX] = ProtocolCalcCrc(mFrameData,Size + FRAME_DATA_INDEX); // CRC
mTxData[FRAME_HEADER_INDEX] = FRAME_HEADER; //header
mTxData[FRAME_SENDER_ADDRESS_INDEX] = MY_DEVICE_ADDRESS; //My Address
mTxData[FRAME_SENDER_DEVICE_ID_INDEX] = SenderDevice; //My ID
mTxData[FRAME_DEST_DEVICE_ID_INDEX] = DestDevice; //Destination ID
mTxData[FRAME_DEST_ADDRESS_INDEX] = DestAddress ;//Address; //Destination Address
mTxData[FRAME_FLAGS_INDEX] = Flags; //Flags
mTxData[FRAME_COMMAND_INDEX] = Cmd; //Command to send
mTxData[FRAME_SIZE1_INDEX] = (unsigned char)((Size >> 24) & 0xFF);
mTxData[FRAME_SIZE2_INDEX] = (unsigned char)((Size >> 16) & 0xFF);
mTxData[FRAME_SIZE3_INDEX] = (unsigned char)((Size >> 8) & 0xFF);
mTxData[FRAME_SIZE4_INDEX] = (unsigned char)(Size & 0xFF);
memcpy((void*)&mTxData[FRAME_DATA_INDEX],(void*)Data,Size); //Cmd data
mTxData[Size+FRAME_DATA_INDEX] = ProtocolCalcCrc(mTxData,Size + FRAME_DATA_INDEX); // CRC
*FrameSize = Size + FRAME_INDEX_NBR;
return &mFrameData[FRAME_HEADER_INDEX];
return &mTxData[FRAME_HEADER_INDEX];
}
unsigned char *ProtocolMsgDataPtr(ProtocolData_t *ProtocolData)
unsigned char *ProtocolMsgDataPtr()
{
return &ProtocolData->mRxData[FRAME_DATA_INDEX];
return &mRxData[FRAME_DATA_INDEX];
}

View File

@ -17,19 +17,12 @@ jean-francois.martel@polymtl.ca
#define BOOTLOADERINTERFACE_H
//Protocol buffer specific definitions
#include "ProtocolDefs.h"
#define MASTER_ADDRESS 0x01
#define MY_DEVICE_ADDRESS 0x01
#define ADDRESS 0x01
enum eProtocolUser
{
NETWORK_PROTOCOL_USER_LORA,
NETWORK_PROTOCOL_USER_LTE
};
//State Machine states
enum States
{
@ -70,33 +63,15 @@ enum States
//State machine states definition
typedef struct stProtocolData
{
unsigned char mRxData[MAX_MESSAGE_SIZE+10];
unsigned char mTxData[MAX_MESSAGE_SIZE+10];
unsigned int DataSize;
unsigned int DataCtr;
unsigned int BufPtr;
unsigned char RxPtr;
unsigned char Command;
unsigned char State;
unsigned char CRC;
unsigned char SenderID;
unsigned char SenderAddress;
unsigned char Flags;
unsigned char IsUpdating;
unsigned char *BmpDataPtr;
}ProtocolData_t;
void ProtocolInit(int User);
void StateMachine(unsigned char STATE, ProtocolData_t *ProtocolData);
void ProtocolAnalyzeNewData(unsigned char RxByte, int User);
void ResetStateMachine(ProtocolData_t *ProtocolData);
void ProtocolInit(void);
void StateMachine(unsigned char STATE);
void ProtocolAnalyzeNewData(unsigned char RxByte);
void ResetStateMachine(void);
void ProtocolExecCmd(void);
void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char Data);
unsigned char* ProtocolGetFrame(unsigned char DestDevice,unsigned char DestAddress, unsigned char SenderDevice, unsigned char Cmd, unsigned char *Data,unsigned int Size,unsigned char Flags, int *FrameSize);
unsigned char ProtocolCalcCrc(unsigned char* Buffer,unsigned char size);
unsigned char ProtocolIsReceiving(void);
unsigned char *ProtocolMsgDataPtr(ProtocolData_t *ProtocolData);
unsigned char *ProtocolMsgDataPtr();
#endif

View File

@ -298,13 +298,6 @@ enum CHALET_CMDS
CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,
CHALET_GET_FIRMWARE_VERSION_REQUEST,
CHALET_GET_FIRMWARE_VERSION_RESPONSE,
CHALET_CLEAR_COMMS_STATISTICS_REQUEST,
CHALET_CLEAR_COMMS_STATISTICS_RESPONSE,
CHALET_REGISTER_FRIENDLY_DEVICE_REQUEST,
CHALET_REGISTER_FRIENDLY_DEVICE_RESPONSE,
CHALET_FWD_DEVICE_MESSAGE_REQUEST,
CHALET_FWD_DEVICE_MESSAGE_RESPONSE,
MAX_CHALET_CMD
};
@ -338,7 +331,7 @@ enum BOOTLOADER_CMDS
BOOTLOADER_CHECK_FLASH_FIRMW_INTEGRITY_RESPONSE,
BOOTLOADER_GET_STORED_FIRMWARE_INFO_REQUEST,
BOOTLOADER_GET_STORED_FIRMWARE_INFO_RESPONSE,
MAX_BOOTLOADER_CMD
};
#endif

View File

@ -1,816 +0,0 @@
#include "SIM7080GInterface.h"
#include "BoardCfg.h"
#include "timer.h"
#include "Uart.h"
#include "Syslog.h"
#include "WiFiCtrl.h"
#include "ATCmdInterpreter.h"
#include "ProtocolDefs.h"
#include "NetworkProtocol.h"
static BYTE mActivateNetworkCmd[] = "AT+CNACT=0,1\r";
static BYTE mDisconnectNetworkCmd[] = "AT+CNACT=0,0\r";
static BYTE mCheckAPNConnectionCmd[] = "AT+CNACT?\r";
static BYTE mConnectToMasterCmd[] = "AT+CAOPEN=0,0,\"TCP\",\"grosgin.myftp.org\",2182\r";
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;
int mLTEModuleOperationSMSubState;
int mNbCmdCharsReceived;
char mATCmd[LTE_MODULE_MAX_CMD_LENGTH];
bool mIsPassthroughEnabled;
bool mModuleSerialDebugEnabled;
bool mPICSerialDebugEnabled;
int mCurrentCmd;
bool mIsInitializing;
int mNbMasterReconnectCount;
bool mMasterConnected;
bool mMasterSocketError;
bool mAPNConnected;
void InitLTEModule()
{
mLTEModuleSMState = LTE_MODULE_SM_INIT_STATE;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_INIT_STATE;
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_NOMINAL_SUBSTATE;
mNbCmdCharsReceived = 0;
mIsPassthroughEnabled = false;
mModuleSerialDebugEnabled = false;
mPICSerialDebugEnabled = false;
mCurrentCmd = LTE_MODULE_NO_CMD;
mIsInitializing = true;
mNbMasterReconnectCount = 0;
mMasterSocketError = false;
mMasterConnected = false;
mAPNConnected = false;
}
int LTEModuleReset()
{
InitLTEModule();
return RET_OK;
}
void LTEModuleSM(int SMEvent)
{
switch(mLTEModuleSMState)
{
case LTE_MODULE_SM_INIT_STATE:
{
LORA_MODULE_RELAY_PIN = 1;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_POWERUP_TIMEOUT);
mLTEModuleSMState = LTE_MODULE_SM_RESET_STATE;
break;
}
case LTE_MODULE_SM_RESET_STATE:
{
if(IsTimerExpired(LTE_MODULE_TIMER) == true)
{
LORA_MODULE_RELAY_PIN = 0;
LTE_MODULE_PWR_PIN = 0;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_POWERUP_TIMEOUT);
mLTEModuleSMState = LTE_MODULE_SM_POWERUP_STATE;
}
break;
}
case LTE_MODULE_SM_POWERUP_STATE:
{
if(IsTimerExpired(LTE_MODULE_TIMER) == true)
{
LTE_MODULE_PWR_PIN = 1;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_WAIT_INIT_TIMEOUT);
mLTEModuleSMState = LTE_MODULE_SM_WAIT_RDY_STATE;
TimerStart(LTE_COMM_TIMER, LTE_MODULE_MAX_COMM_TIMEOUT);
}
break;
}
case LTE_MODULE_SM_WAIT_RDY_STATE:
{
if(SMEvent == LTE_MODULE_RX_RDY_EVENT)
{
mLTEModuleSMState = LTE_MODULE_SM_SETECHOOFF_STATE;
}
else if(SMEvent == LTE_MODULE_SM_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
break;
}
case LTE_MODULE_SM_SETECHOOFF_STATE:
{
char Cmd[5] = {'A','T','E','0','\r'};
//UartTransmitData(LTE_IF_UART_PORT,Cmd,5);
SendDataToLteModule(Cmd,5);
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_POWERUP_TIMEOUT);
mLTEModuleSMState = LTE_MODULE_SM_DELAY_STATE;
break;
}
case LTE_MODULE_SM_SETAPN_STATE:
{
char Cmd[10] = {'A','T','+','C','G','N','A','P','N','\r'};
//UartTransmitData(LTE_IF_UART_PORT,Cmd,10);
SendDataToLteModule(Cmd,10);
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_POWERUP_TIMEOUT);
mLTEModuleSMState = LTE_MODULE_SM_DELAY_STATE;
break;
}
case LTE_MODULE_SM_DELAY_STATE:
{
if(IsTimerExpired(LTE_MODULE_TIMER) == true)
{
mLTEModuleSMState = LTE_MODULE_SM_RUN_STATE;
}
break;
}
case LTE_MODULE_SM_RUN_STATE:
{
if(SMEvent == LTE_MODULE_ENTER_PASSTHROUGH_EVENT)
{
mLTEModuleSMState = LTE_MODULE_SM_PASSTHROUGH_STATE;
SyslogNewString("LTE Module entering passthrough mode...");
}
if(SMEvent == LTE_MODULE_SM_TICK_EVENT)
{
LTEModuleOperationSM(LTE_MODULE_OP_TICK_EVENT);
}
break;
}
case LTE_MODULE_SM_PASSTHROUGH_STATE:
{
if(SMEvent == LTE_MODULE_EXIT_PASSTHROUGH_EVENT)
{
SyslogNewString("LTE Module exiting passthrough mode...");
mLTEModuleSMState = LTE_MODULE_SM_RUN_STATE;
}
break;
}
}
}
void TickLTEModule()
{
LTEModuleSM(LTE_MODULE_SM_TICK_EVENT);
}
void LTEModuleNewData(unsigned char Data)
{
if(mIsPassthroughEnabled == true)
{
SyslogNewByte(Data);
// SendSyslogByte(Data);
return;
}
if(mModuleSerialDebugEnabled == true)
{
SyslogNewByte(Data);
}
if(Data == '\n') //ignore line feeds
return;
if(Data != '\r')
{
if(mLTEModuleOperationSMState == LTE_MODULE_OPERATION_SENDING_DATA_STATE && Data == '>')
{
LTESendMasterBufferToModule();
}
else if(mNbCmdCharsReceived < LTE_MODULE_MAX_CMD_LENGTH)
{
mATCmd[mNbCmdCharsReceived] = Data;
mNbCmdCharsReceived++;
}
else
{
//error...
mNbCmdCharsReceived = 0;
}
}
else
{
if(mNbCmdCharsReceived != 0) //New Command received
{
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 = mNbCmdCharsReceived;
}
mNbCmdCharsReceived = 0;
}
}
}
void LTEEnterSerialPassthrough()
{
LTEModuleSM(LTE_MODULE_ENTER_PASSTHROUGH_EVENT);
mIsPassthroughEnabled = true;
SyslogSetLTEPassthrough(true);
mPICSerialDebugEnabled = false;
mModuleSerialDebugEnabled = false;
}
void LTEExitSerialPassthrough()
{
LTEModuleSM(LTE_MODULE_EXIT_PASSTHROUGH_EVENT);
mIsPassthroughEnabled = false;
SyslogSetLTEPassthrough(false);
}
void LTEFwdPassthroughData(char Data)
{
if(mIsPassthroughEnabled == true)
{
UartTransmitData(LTE_IF_UART_PORT,&Data,1);
}
}
int LTEEnableSerialDebug(bool EnModule, bool EnPic)
{
if(EnModule == true)
{
if(mIsPassthroughEnabled == true)
{
return RET_ERROR;
}
mModuleSerialDebugEnabled = true;
}
else
{
mModuleSerialDebugEnabled = false;
}
if(EnPic == true)
{
if(mIsPassthroughEnabled == true)
{
return RET_ERROR;
}
mPICSerialDebugEnabled = true;
}
else
{
mPICSerialDebugEnabled = false;
}
return RET_OK;
}
void SendDataToLteModule(char *Data, int Size)
{
if(mPICSerialDebugEnabled)
{
char *ptr = Data;
int i;
for(i = 0; i < Size; i++)
{
SyslogNewByte(*ptr++);
}
}
UartTransmitData(LTE_IF_UART_PORT,Data,Size);
}
void LTECmdResponseReceived(int Cmd, int Result)
{
switch(Cmd)
{
case LTE_MODULE_NO_CMD:
{
break;
}
case LTE_MODULE_CONNECT_APN_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
LTEModuleOperationSM(LTE_MODULE_OP_APN_CONN_OK_EVENT);
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
LTEModuleOperationSM(LTE_MODULE_OP_APN_CONN_FAILED_EVENT);
}
break;
}
case LTE_MODULE_DISCONNECT_APN_CMD:
{
break;
}
case LTE_MODULE_CHECK_APN_CONNECTION_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
if(mAPNConnected == true)
{
LTEModuleOperationSM(LTE_MODULE_OP_APN_CONNECTED_EVENT);
}
else
{
LTEModuleOperationSM(LTE_MODULE_OP_APN_DISCONNECTED_EVENT);
}
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
LTEModuleOperationSM(LTE_MODULE_OP_APN_CONN_FAILED_EVENT);
}
break;
}
case LTE_MODULE_CONNECT_TO_MASTER_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
if(mMasterConnected == true)
{
LTEModuleOperationSM(LTE_MODULE_OP_SERVER_CONNECTED_EVENT);
}
else
{
LTEModuleOperationSM(LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT);
}
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
LTEModuleOperationSM(LTE_MODULE_OP_SERVER_CONN_FAILED_EVENT);
}
break;
}
case LTE_MODULE_DISCONNECT_FROM_MASTER_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
LTEModuleOperationSM(LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT);
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
LTEModuleOperationSM(LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT);
}
break;
}
case LTE_MODULE_CHECK_MASTER_CONNECTION_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
}
break;
}
case LTE_MODULE_RX_DATA_CMD:
{
if(Result == LTE_MODULE_RESULT_OK)
{
//This case is managed by LTEModuleDataReceived()
}
else if(Result == LTE_MODULE_RESULT_ERROR)
{
LTEModuleOperationSM(LTE_MODULE_OP_MASTER_DATA_RECEIVED_EVENT);
}
break;
}
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;
}
}
}
void LTEModuleAPNConnectionStatus(int Status)
{
if(Status == LTE_MODULE_APN_CONNECTED)
{
mAPNConnected = true;
// SyslogNewString("APN connected\n");
}
else
{
mAPNConnected = false;
// SyslogNewString("APN disconnected\n");
}
}
void LTEModuleMasterConnectionStatus(int Status)
{
if(Status == LTE_MODULE_MASTER_CONNECTED)
{
mMasterConnected = true;
// SyslogNewString("Master connected\n");
}
else if(Status == LTE_MODULE_MASTER_SOCKET_ERROR)
{
mMasterConnected = false;
mMasterSocketError = true;
// SyslogNewString("Master socket error\n");
}
else
{
mMasterConnected = false;
// SyslogNewString("Master disconnected\n");
}
}
void LTEModuleOperationSM(int OperationEvent)
{
switch(mLTEModuleOperationSMState)
{
case LTE_MODULE_OPERATION_INIT_STATE:
{
mIsInitializing = true;
//Send the request to connect module APN
LTESendCommandToModule(LTE_MODULE_CONNECT_APN_CMD);
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_CONNECT_APN_STATE;
break;
}
case LTE_MODULE_OPERATION_WAIT_CONNECT_APN_STATE:
{
if(OperationEvent == LTE_MODULE_OP_APN_CONN_OK_EVENT)
{
//Send the request to confirm the state of the connection
LTESendCommandToModule(LTE_MODULE_CHECK_APN_CONNECTION_CMD);
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_CHECK_APN_STATE;
}
else if(OperationEvent == LTE_MODULE_OP_APN_CONN_FAILED_EVENT)
{
//TODO: What do we do??
LTEModuleReset(); //Something's wrong... reset the module.
}
else if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
break;
}
case LTE_MODULE_OPERATION_CHECK_APN_STATE:
{
if(OperationEvent == LTE_MODULE_OP_APN_CONNECTED_EVENT)
{
if(mIsInitializing == true) //The first time, try to connect the server immediately
{
mIsInitializing = false;
//Send the request to connect to Mastercontroller
LTESendCommandToModule(LTE_MODULE_CONNECT_TO_MASTER_CMD);
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_CONNECT_SERVER_STATE;
}
else
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
}
}
else if(OperationEvent == LTE_MODULE_OP_APN_DISCONNECTED_EVENT)
{
//Let the main loop retry later...
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
}
else if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
break;
}
case LTE_MODULE_OPERATION_WAIT_CONNECT_SERVER_STATE:
{
if(OperationEvent == LTE_MODULE_OP_SERVER_CONNECTED_EVENT)
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
}
else if(OperationEvent == LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT)
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
}
else if(OperationEvent == LTE_MODULE_OP_SERVER_CONN_FAILED_EVENT)
{
//TODO: Should we reset the module instead?
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
TimerStart(LTE_MODULE_TIMER,LTE_MODULE_CONNECTION_CHECK_TIMEOUT);
}
else if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
break;
}
case LTE_MODULE_OPERATION_WAIT_DISCONNECT_SERVER_STATE:
{
if(OperationEvent == LTE_MODULE_OP_SERVER_DISCONNECTED_EVENT)
{
//Always reconnect after a forced disconnection..
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_CONNECT_SERVER_STATE;
LTESendCommandToModule(LTE_MODULE_CONNECT_TO_MASTER_CMD);
}
else if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
break;
}
case LTE_MODULE_OPERATION_STANDBY_STATE:
{
if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerRunning(LTE_COMM_TIMER) == true)
{
TimerStop(LTE_COMM_TIMER);
}
switch(mLTEModuleOperationSMSubState)
{
case LTE_MODULE_OPERATION_NOMINAL_SUBSTATE:
{
if(IsTimerExpired(LTE_MODULE_TIMER) == true)
{
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);
}
else
{
//Master connection is lost... try to reconnect.
if(mNbMasterReconnectCount < LTE_MODULE_MAX_MASTER_CONNECT_RETRY)
{
mNbMasterReconnectCount++;
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");
}
else //We tried 10 times, check the APN
{
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_CHECK_APN_STATE;
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");
}
}
}
break;
}
case LTE_MODULE_OPERATION_RECONNECT_MASTER_SUBSTATE:
{
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_NOMINAL_SUBSTATE;
//TODO: check for SOCKET ERROR result code and reset APN directly here?
// if(mMasterSocketError == true)
// {
// mMasterSocketError = false;
// mLTEModuleOperationSMState = LTE_MODULE_OPERATION_CHECK_APN_STATE;
// mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_CHECK_APN_SUBSTATE;
// LTESendCommandToModule(LTE_MODULE_CHECK_APN_CONNECTION_CMD);
// mNbMasterReconnectCount = 0;
// }
break;
}
case LTE_MODULE_OPERATION_CHECK_APN_SUBSTATE:
{
if(mAPNConnected == true)
{
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_NOMINAL_SUBSTATE;
}
else //APN is disconnected.. try reconnecting.
{
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_WAIT_CONNECT_APN_STATE;
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_RECONNECT_APN_SUBSTATE;
LTESendCommandToModule(LTE_MODULE_CONNECT_APN_CMD);
}
break;
}
case LTE_MODULE_OPERATION_RECONNECT_APN_SUBSTATE:
{
mLTEModuleOperationSMSubState = LTE_MODULE_OPERATION_NOMINAL_SUBSTATE;
break;
}
default:
{
break;
}
}
}
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:
{
if(OperationEvent == LTE_MODULE_OP_MASTER_DATA_RECEIVED_EVENT)
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
}
else if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
break;
}
case LTE_MODULE_OPERATION_SENDING_DATA_STATE:
{
if(OperationEvent == LTE_MODULE_OP_TICK_EVENT)
{
if(IsTimerExpired(LTE_COMM_TIMER) == true)
{
LTEModuleReset();
}
}
else if(OperationEvent == LTE_MODULE_OP_MASTER_DATA_SENT_EVENT)
{
mCurrentCmd = LTE_MODULE_NO_CMD;
mLTEModuleOperationSMState = LTE_MODULE_OPERATION_STANDBY_STATE;
}
break;
}
}
}
void LTEModuleNewDataReady()
{
LTEModuleOperationSM(LTE_MODULE_OP_MASTER_DATA_READY_EVENT);
}
void LTEModuleDataReceived(char *Data, int Size)
{
LTEModuleOperationSM(LTE_MODULE_OP_MASTER_DATA_RECEIVED_EVENT);
int i;
for(i = 0; i < Size; i++)
{
ProtocolAnalyzeNewData(Data[i], NETWORK_PROTOCOL_USER_LTE);
}
}
int LTESendCommandToModule(int Cmd)
{
switch(Cmd)
{
TimerStart(LTE_COMM_TIMER,LTE_MODULE_MAX_COMM_TIMEOUT);
case LTE_MODULE_CONNECT_APN_CMD:
{
mCurrentCmd = LTE_MODULE_CONNECT_APN_CMD;
SendDataToLteModule(mActivateNetworkCmd,strlen(mActivateNetworkCmd));
break;
}
case LTE_MODULE_DISCONNECT_APN_CMD:
{
mCurrentCmd = LTE_MODULE_DISCONNECT_APN_CMD;
SendDataToLteModule(mDisconnectNetworkCmd,strlen(mDisconnectNetworkCmd));
break;
}
case LTE_MODULE_CONNECT_TO_MASTER_CMD:
{
mCurrentCmd = LTE_MODULE_CONNECT_TO_MASTER_CMD;
SendDataToLteModule(mConnectToMasterCmd,strlen(mConnectToMasterCmd));
break;
}
case LTE_MODULE_DISCONNECT_FROM_MASTER_CMD:
{
mCurrentCmd = LTE_MODULE_DISCONNECT_FROM_MASTER_CMD;
SendDataToLteModule(mDisconnectFromMasterCmd,strlen(mDisconnectFromMasterCmd));
break;
}
case LTE_MODULE_RX_DATA_CMD:
{
mCurrentCmd = LTE_MODULE_RX_DATA_CMD;
SendDataToLteModule(mReceiveDataCmd,strlen(mReceiveDataCmd));
break;
}
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:
{
mCurrentCmd = LTE_MODULE_CHECK_APN_CONNECTION_CMD;
SendDataToLteModule(mCheckAPNConnectionCmd,strlen(mCheckAPNConnectionCmd));
break;
}
case LTE_MODULE_CHECK_MASTER_CONNECTION_CMD:
{
break;
}
case LTE_MODULE_NO_CMD:
default:
{
TimerStop(LTE_COMM_TIMER);
mCurrentCmd = LTE_MODULE_NO_CMD;
return RET_ERROR;
break;
}
}
return RET_OK;
}
void LTEModuleMasterCtrlCommStatus(bool Offline)
{
if(Offline == true)
{
mMasterConnected = false;
}
// else
// mMasterConnected = true;
}
//This is the function to call from outside to send data to the server
int LTESendDataToMaster(char *Buffer, int Size)
{
LTE_MODULE_TX_LED_PIN = LED_ON;
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);
LTE_MODULE_TX_LED_PIN = LED_OFF;
return RET_OK;
}
bool LTEModuleIsMasterConnected()
{
return mMasterConnected;
}

View File

@ -1,153 +0,0 @@
/*
* 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 */

View File

@ -6,18 +6,15 @@
#include "terminal.h"
#include "WiFiCtrl.h"
#include "timer.h"
#include "SIM7080GInterface.h"
//#define SYSLOG_BUFFER_SIZE 1024
#define SYSLOG_BUFFER_SIZE 500
char mSyslogBuffer[SYSLOG_BUFFER_SIZE];
int mSyslogBufPtr;
bool mSyslogLTEPassthroughEnabled;
int InitSyslog()
{
mSyslogBufPtr = 0;
mSyslogLTEPassthroughEnabled = 0;
memset(mSyslogBuffer,0,SYSLOG_BUFFER_SIZE);
TimerStart(SYSLOG_TX_TIMER,SYSLOG_TX_TIMEOUT);
@ -92,30 +89,4 @@ int SyslogIsBufferEmpty()
return RET_ERROR;
}
void SyslogSetLTEPassthrough(bool Enable)
{
mSyslogLTEPassthroughEnabled = Enable;
if(Enable == true)
{
SendSyslogData("\nEntering LTE passthrough mode\n",strlen("\nEntering LTE passthrough mode\n"));
}
else
{
SendSyslogData("\nExiting LTE passthrough mode\n",strlen("\nExiting LTE passthrough mode\n"));
}
}
void RxSyslogBuf(unsigned char *DataBuf, int size)
{
if(mSyslogLTEPassthroughEnabled == true)
{
int i = 0;
for(i = 0; i < size; i++)
{
LTEFwdPassthroughData(*DataBuf++);
}
}
}
}

View File

@ -1,6 +1,6 @@
#ifndef SYSLOG_H
#define SYSLOG_H
#include "define.h"
#define SYSLOG_TX_TIMEOUT 200 //ms
@ -9,8 +9,6 @@ void SyslogTick();
int SyslogNewByte(char byte);
int SyslogNewString(char *string);
int SyslogIsBufferEmpty();
void SyslogSetLTEPassthrough(bool Enable);
void RxSyslogBuf(unsigned char *DataBuf, int size);
#endif

View File

@ -23,7 +23,6 @@
#include "ChaletPowerRelay.h"
#include "BatteryMonitor.h"
#include "BootloaderInterface.h"
#include "SIM7080GInterface.h"
//#include "SDCardMgr.h"
#ifdef TERMINAL_USE_TELNET
@ -43,9 +42,6 @@ int mTerminalPendingAction;
BOOL mTerminalOpened;
int mTerminalTickState;
#define BOOTLOAD_VERSION_ADDRESS 0x9D000000
const uint32_t *mBootloaderMagicWord = (uint32_t *) BOOTLOAD_VERSION_ADDRESS;
static BYTE mHelpString[] = "Here is the list of the available commands:\n\r\n\r"
"help : Shows this window\n\r"
"\npower [state] Set chalet's 12V Inverter feed power state. This command controls the main power relay\n"
@ -64,16 +60,9 @@ static BYTE mHelpString[] = "Here is the list of the available commands:\n\r\n\
"\nbootloader [command] : bootloader mode control\n"
" - Available [command] argument are: start (enable bootloader and opens port)\n"
" stop (disables bootloader if not busy)\n"
" state (prints actual state of the bootloader)\n";
static BYTE mHelpString1[] = "\nlte [command] [value] : bootloader mode control\n"
" - Available [command] argument are: passthrough (enable using syslog as a passthrough interface with lte module)\n"
" -Available passthrough [value]: on (enable passthrough)\n"
" off (disable passthrough)\n"
" debug (enable using syslog as a debug interface with lte module)\n"
" -Available debug [value]: module (debug LTE module comm only)\n"
" pic (debug PIC comm only)\n"
" both (debug both PIC and LTE module comm )\n"
" off (disable LTE debug)\n"
" state (prints actual state of the bootloader)\n"
//"\ndebug : print some real-time stuff..."
"\nHave a good day!\n";
BYTE *mHelpStringPtr;
@ -91,7 +80,7 @@ void InitTerminal(void)
void TickTerminal()
{
switch(mTerminalPendingAction)
switch(mTerminalPendingAction)
{
case TERMINAL_ACTION_NONE:
{
@ -179,9 +168,12 @@ void ParseNewBuffer(void)
if(strncmp(mCmdString,"help",strlen("help")) == 0)
{
mHelpStringPtr = mHelpString;
static BYTE* Ptr= mHelpString;
SendTerminalData(mHelpString,strlen(mHelpString));
SendTerminalData(mHelpString1,strlen(mHelpString1));
Ptr = mHelpStringPtr;
}
else if(strncmp(mCmdString,"power",strlen("power")) == 0)
@ -227,7 +219,7 @@ void ParseNewBuffer(void)
}
else
{
TerminalPrintString("WiFi already connected...\n");
TerminalPrintString("WiFi already connected...\n");
}
}
else if(strncmp(mDataString1,"off",strlen("off")) == 0)
@ -283,7 +275,7 @@ void ParseNewBuffer(void)
if(strlen(mDataString1) == 0)
{
char voltage[15];
sprintf(voltage,"%f",GetBatteryVoltage(0));
sprintf(voltage,"%f",GetBatteryVoltage());
TerminalPrintString("Battery Voltage: ");
TerminalPrintString(voltage);
TerminalPrintString("\n");
@ -294,11 +286,11 @@ void ParseNewBuffer(void)
TerminalPrintString("mA\n");
return;
}
if(strncmp(mDataString1,"voltage",strlen("voltage")) == 0)
{
char voltage[15];
sprintf(voltage,"%f",GetBatteryVoltage(0));
sprintf(voltage,"%f",GetBatteryVoltage());
TerminalPrintString("Battery Voltage: ");
TerminalPrintString(voltage);
TerminalPrintString("\n");
@ -316,27 +308,27 @@ void ParseNewBuffer(void)
char SOC[15];
sprintf(SOC,"%d",GetBatterySOC());
TerminalPrintString("Battery SOC: ");
// TerminalPrintString(SOC);
// TerminalPrintString(SOC);
TerminalPrintString("%\n");
}
TerminalPrintString("\n");
}
else if(strncmp(mCmdString,"status",strlen("status")) == 0)
{
// TerminalPrintString("General status:\nBattery: TBD \nWiFi: TBD\nOther Stuff: TBD\n");
// TerminalPrintString("General status:\nBattery: TBD \nWiFi: TBD\nOther Stuff: TBD\n");
TerminalPrintString("General status:\n");
if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_OFF_STATE)
{
TerminalPrintString("Inverter power relay: OFF\n");
TerminalPrintString("Inverter power relay: OFF\n");
}
else if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
{
TerminalPrintString("Inverter power relay: ON\n");
TerminalPrintString("Inverter power relay: ON\n");
}
else
{
TerminalPrintString("Inverter power relay: UNKNOWN\n");
TerminalPrintString("Inverter power relay: UNKNOWN\n");
}
switch(GetWiFiSate())
@ -364,14 +356,14 @@ void ParseNewBuffer(void)
case WIFI_UNKNOWN_STATE:
default:
{
TerminalPrintString("WiFi: Unknown state\n");
TerminalPrintString("WiFi: Unknown state\n");
break;
}
}
char voltage[15];
memset(voltage,0,15);
sprintf(voltage,"%.2f",GetBatteryVoltage(0));
sprintf(voltage,"%.2f",GetBatteryVoltage());
TerminalPrintString("Battery Voltage: ");
TerminalPrintString(voltage);
TerminalPrintString("V\n");
@ -383,24 +375,14 @@ void ParseNewBuffer(void)
TerminalPrintString(current);
//TerminalPrintString("mA\n");
if(*mBootloaderMagicWord == 0xBAADCAFE)
{
TerminalPrintString("Bootloader: Detected\n");
}
else
{
TerminalPrintString("Bootloader: Not Detected\n");
}
Sleep(100);
char SOC[15];
memset(SOC,0,15);
sprintf(SOC,"%d%%\n",GetBatterySOC());
TerminalPrintString("Battery SOC: ");
TerminalPrintString(SOC);
// TerminalPrintString("\n");
// TerminalPrintString("\n");
TerminalPrintString("\n");
}
@ -415,7 +397,7 @@ void ParseNewBuffer(void)
if(strncmp(mDataString1,"start",strlen("start")) == 0)
{
//start bootloader server
// OpenBootloaderServer();
// OpenBootloaderServer();
BootloaderActivateBootloader();
TerminalPrintString("Activating bootloader\n");
}
@ -423,7 +405,7 @@ void ParseNewBuffer(void)
{
//CloseBootloaderServer();
TerminalPrintString("Deactivating bootloader\n");
BootloaderDeactivateBootloader();
BootloaderDeactivateBootloader();
}
else if(strncmp(mDataString1,"status",strlen("status")) == 0)
{
@ -433,92 +415,14 @@ void ParseNewBuffer(void)
return;
}
else
if(IsBootloaderClientConnected())
{
TerminalPrintString("\nBootloader client not connected\n");
return;
}
if(IsBootloaderClientConnected())
{
TerminalPrintString("\nBootloader client not connected\n");
return;
}
}
}
else if(strncmp(mCmdString,"lte",strlen("lte")) == 0)
{
if(strlen(mDataString1) == 0)
{
TerminalPrintString("\n[command] parameter is invalid. Type 'help' for more info\n");
return;
}
if(strlen(mDataString2) == 0)
{
TerminalPrintString("\n[value] parameter is invalid. Type 'help' for more info\n");
return;
}
if(strncmp(mDataString1,"passthrough",strlen("passthrough")) == 0)
{
if(strncmp(mDataString2,"on",strlen("on")) == 0)
{
LTEEnterSerialPassthrough();
TerminalPrintString("LTE passthrough enabled in Syslog window\n");
}
else if (strncmp(mDataString2,"off",strlen("off")) == 0)
{
LTEExitSerialPassthrough();
TerminalPrintString("LTE passthrough disabled\n");
}
else
{
TerminalPrintString("\nInvalid [value] parameter (use on or off)\n");
}
}
if(strncmp(mDataString1,"debug",strlen("debug")) == 0)
{
if(strncmp(mDataString2,"module",strlen("module")) == 0)
{
if(LTEEnableSerialDebug(true,false) == RET_OK)
{
TerminalPrintString("LTE module debug enabled in Syslog window\n");
}
else
{
TerminalPrintString("Cannot put LTE module in debug mode (passthrought enabled?)\n");
}
}
else if(strncmp(mDataString2,"pic",strlen("pic")) == 0)
{
if(LTEEnableSerialDebug(false,true) == RET_OK)
{
TerminalPrintString("LTE PIC comm debug enabled in Syslog window\n");
}
else
{
TerminalPrintString("Cannot put LTE PIC comm in debug mode (passthrought enabled?)\n");
}
}
else if(strncmp(mDataString2,"both",strlen("both")) == 0)
{
if(LTEEnableSerialDebug(true,true) == RET_OK)
{
TerminalPrintString("LTE module and PIC comm debug enabled in Syslog window\n");
}
else
{
TerminalPrintString("Cannot put LTE comm in debug mode (passthrought enabled?)\n");
}
}
else if (strncmp(mDataString2,"off",strlen("off")) == 0)
{
LTEEnableSerialDebug(false,false);
TerminalPrintString("LTE debug disabled\n");
}
else
{
TerminalPrintString("\nInvalid [value] parameter (use on or off)\n");
}
}
}
else if(strncmp(mCmdString,"debug",strlen(mCmdString)) == 0)
{
// if(strlen(mDataString1) == 0)

View File

@ -39,7 +39,6 @@
#include "digitalio.h"
//#include "DriveProtocol.h"
#include "terminal.h"
#include "SIM7080GInterface.h"
@ -48,8 +47,8 @@
stUartData astUartData[MAX_UART_HANDLE];
const char *gUartStrings[MAX_UART_HANDLE] = { "LORA" //UART_1
,"LTE", //UART_5
const char *gUartStrings[MAX_UART_HANDLE] = { "PRINTF" //UART_1
//,"CU", //UART_2
// ,"CONSOLE" //UART_3
};
@ -87,8 +86,8 @@ void InitUart(void)
astUartData[UART_1].iIsInternal = 1;
astUartData[UART_1].iPhysicalUartPort = INTERNAL_UART_PORT_2; // (232)
astUartData[UART_2].iIsInternal = 1;
astUartData[UART_2].iPhysicalUartPort = INTERNAL_UART_PORT_5; // (232)
// astUartData[UART_2].iIsInternal = 1;
//astUartData[UART_2].iPhysicalUartPort = INTERNAL_UART_PORT_2; // (232)
#ifndef NO_EXTERNAL_UART
astUartData[UART_3].iIsInternal = 0;
@ -98,8 +97,7 @@ void InitUart(void)
setbuf(stdout,NULL); //to use printf without \r
fflush(stdout);
UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open LoRa module port
UartOpenComPort(LTE_IF_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open LTE module port
UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
#ifdef USE_PRINTF
//UartOpenComPort(CONSOLE_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
@ -134,13 +132,7 @@ int UartResetPort(int p_iUartHandle)
{
ResetUart2();
break;
}
case INTERNAL_UART_PORT_5:
{
ResetUart5();
break;
}
}
default:
break;
}
@ -603,19 +595,7 @@ int UartTick(void)
//RxTerminalData(aTempBuffer[i]);
}
break;
}
case LTE_IF_UART_PORT:
{
int i = 0;
for(i = 0; i< iNbPendingData; i++)
{
LTE_MODULE_RX_LED_PIN = ~LTE_MODULE_RX_LED_PIN;
LTEModuleNewData(aTempBuffer[i]);
//ProtocolAnalyzeNewData(aTempBuffer[i]);
//RxTerminalData(aTempBuffer[i]);
}
break;
}
}
}
}
}

View File

@ -38,8 +38,8 @@
//
enum eUartHandles
{
UART_1, //(232) internet Uart 2 - Lora IF
UART_2, //(232) internal Uart 5 - SIM7080G LTE IF
UART_1, //(232) Uart 1 - Drive
//UART_2, //(232) Uart 2 - CU
//UART_3, // !!!EXTERNAL!!! SPI daughter board...
MAX_UART_HANDLE,

View File

@ -77,12 +77,6 @@ static void resolve_cb(uint8 *hostName, uint32 hostIp)
{
gu32HostIp = hostIp;
gbHostIpByName = true;
char IP1,IP2,IP3,IP4;
IP1 = IPV4_BYTE(hostIp, 0);
IP2 = IPV4_BYTE(hostIp, 1);
IP3 = IPV4_BYTE(hostIp, 2);
IP4 = IPV4_BYTE(hostIp, 3);
printf("Host IP is %d.%d.%d.%d\r\n",
(int)IPV4_BYTE(hostIp, 0),
(int)IPV4_BYTE(hostIp, 1),
@ -101,178 +95,178 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
{
switch(u8Msg)
{
case SOCKET_MSG_BIND:
case SOCKET_MSG_BIND:
{
tstrSocketBindMsg *pstrBind = (tstrSocketBindMsg*)pvMsg;
if(pstrBind->status == 0)
{
tstrSocketBindMsg *pstrBind = (tstrSocketBindMsg*)pvMsg;
if(pstrBind->status == 0)
if(sock == TerminalServerSocket)
{
if(sock == TerminalServerSocket)
{
listen(TerminalServerSocket, 0);
}
else if(sock == SyslogServerSocket)
{
listen(SyslogServerSocket,0);
}
else if(sock == NetworkServerSocket)
{
listen(NetworkServerSocket,0);
}
else if(sock == BootloaderServerSocket)
{
listen(BootloaderServerSocket,0);
printf("Bootloader server started\n");
}
listen(TerminalServerSocket, 0);
}
else
else if(sock == SyslogServerSocket)
{
printf("Bind Failed\n");
listen(SyslogServerSocket,0);
}
else if(sock == NetworkServerSocket)
{
listen(NetworkServerSocket,0);
}
else if(sock == BootloaderServerSocket)
{
listen(BootloaderServerSocket,0);
printf("Bootloader server started\n");
}
}
else
{
printf("Bind Failed\n");
}
break;
}
case SOCKET_MSG_LISTEN:
{
tstrSocketListenMsg *pstrListen = (tstrSocketListenMsg*)pvMsg;
if(pstrListen->status != 0)
{
printf("socket %d listen Failed. Error: %d\n",(int)sock, pstrListen->status);
break;
}
case SOCKET_MSG_LISTEN:
if(sock == SyslogServerSocket)
{
tstrSocketListenMsg *pstrListen = (tstrSocketListenMsg*)pvMsg;
if(pstrListen->status != 0)
{
printf("socket %d listen Failed. Error: %d\n",(int)sock, pstrListen->status);
break;
}
if(sock == SyslogServerSocket)
{
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,1);
}
break;
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,1);
}
case SOCKET_MSG_ACCEPT:
break;
}
case SOCKET_MSG_ACCEPT:
{
// New Socket is accepted.
tstrSocketAcceptMsg *pstrAccept = (tstrSocketAcceptMsg *)pvMsg;
if(pstrAccept->sock >= 0)
{
// New Socket is accepted.
tstrSocketAcceptMsg *pstrAccept = (tstrSocketAcceptMsg *)pvMsg;
if(pstrAccept->sock >= 0)
if(sock == TerminalServerSocket)
{
if(sock == TerminalServerSocket)
{
memset(TerminalRxBuf,0,sizeof(TerminalRxBuf));
// Get the accepted socket.
TerminalSocket = pstrAccept->sock;
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
SendTerminalData("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n",strlen("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n"));
// SendSyslogData("Terminal client connected\n",strlen("Terminal client connected\n"));
printf("Terminal client connected\n");
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
}
else if(sock == SyslogServerSocket)
{
memset(SyslogRxBuf,0,sizeof(SyslogRxBuf));
// Get the accepted socket.
SyslogSocket = pstrAccept->sock;
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
SendSyslogData("Syslog Welcome\n",strlen("Syslog Welcome\n"));
}
else if(sock == NetworkServerSocket)
{
memset(NetworkRxBuf,0,sizeof(NetworkRxBuf));
// Get the accepted socket.
NetworkSocket = pstrAccept->sock;
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
printf("Network client connected\n");
}
else if(sock == BootloaderServerSocket)
{
memset(BootloaderRxBuf,0,sizeof(BootloaderRxBuf));
// Get the accepted socket.
BootloaderSocket = pstrAccept->sock;
recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0);
printf("Bootloader client connected\n");
}
memset(TerminalRxBuf,0,sizeof(TerminalRxBuf));
// Get the accepted socket.
TerminalSocket = pstrAccept->sock;
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
SendTerminalData("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n",strlen("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n"));
// SendSyslogData("Terminal client connected\n",strlen("Terminal client connected\n"));
printf("Terminal client connected\n");
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
}
else if(sock == SyslogServerSocket)
{
memset(SyslogRxBuf,0,sizeof(SyslogRxBuf));
// Get the accepted socket.
SyslogSocket = pstrAccept->sock;
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
SendSyslogData("Syslog Welcome\n",strlen("Syslog Welcome\n"));
}
else if(sock == NetworkServerSocket)
{
memset(NetworkRxBuf,0,sizeof(NetworkRxBuf));
// Get the accepted socket.
NetworkSocket = pstrAccept->sock;
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
printf("Network client connected\n");
}
else if(sock == BootloaderServerSocket)
{
memset(BootloaderRxBuf,0,sizeof(BootloaderRxBuf));
// Get the accepted socket.
BootloaderSocket = pstrAccept->sock;
recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0);
printf("Bootloader client connected\n");
}
}
else
{
printf("Socket %d : Accept Failed\n", sock);
}
break;
}
case SOCKET_MSG_RECV:
{
tstrSocketRecvMsg *pstrRecvMsg = (tstrSocketRecvMsg*)pvMsg;
if((pstrRecvMsg->pu8Buffer != NULL) && (pstrRecvMsg->s16BufferSize > 0))
{
// Process the received message
if(sock == TerminalSocket)
{
//Fwd data to Terminal...
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
RxTerminalBuf(TerminalRxBuf, pstrRecvMsg->s16BufferSize);
}
else
else if(sock == SyslogSocket)
{
printf("Socket %d : Accept Failed\n", sock);
//Fwd data to stdin...
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
//Syslog shall ignore data...
}
break;
}
case SOCKET_MSG_RECV:
{
tstrSocketRecvMsg *pstrRecvMsg = (tstrSocketRecvMsg*)pvMsg;
if((pstrRecvMsg->pu8Buffer != NULL) && (pstrRecvMsg->s16BufferSize > 0))
else if(sock == NetworkSocket)
{
// Process the received message
if(sock == TerminalSocket)
{
//Fwd data to Terminal...
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
RxTerminalBuf(TerminalRxBuf, pstrRecvMsg->s16BufferSize);
}
else if(sock == SyslogSocket)
{
//Fwd data to stdin...
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
RxSyslogBuf(SyslogRxBuf, pstrRecvMsg->s16BufferSize);
}
else if(sock == NetworkSocket)
{
//Fwd data to Network...
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
}
else if(sock == BootloaderSocket)
{
//Fwd data to Network...
if(recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0) != 0)
{
char toto;
toto = 1;
}
BootloaderProtocolProtocolAnalyzeNewData(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
}
//Fwd data to Network...
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
}
else //Socket must be closed.
{
if(sock == TerminalSocket)
{
close(TerminalSocket);
TerminalSocket = -1;
// SendSyslogData("Terminal client disconnected\n",strlen("Terminal client disconnected\n"));
printf("Terminal client disconnected\n");
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
}
else if(sock == SyslogSocket)
{
close(SyslogSocket);
SyslogSocket = -1;
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
}
else if(sock == NetworkSocket)
{
close(NetworkSocket);
NetworkSocket = -1;
printf("Network client disconnected\n");
}
else if(sock == BootloaderSocket)
{
close(BootloaderSocket);
BootloaderSocket = -1;
printf("Bootloader client disconnected\n");
BootloaderDeactivateBootloader();
}
}
break;
}
case SOCKET_MSG_SEND:
{
if(sock == SyslogSocket)
else if(sock == BootloaderSocket)
{
//Fwd data to Network...
}
if(recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0) != 0)
{
char toto;
toto = 1;
}
BootloaderProtocolProtocolAnalyzeNewData(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
}
}
else //Socket must be closed.
{
if(sock == TerminalSocket)
{
close(TerminalSocket);
TerminalSocket = -1;
// SendSyslogData("Terminal client disconnected\n",strlen("Terminal client disconnected\n"));
printf("Terminal client disconnected\n");
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
}
else if(sock == SyslogSocket)
{
close(SyslogSocket);
SyslogSocket = -1;
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
}
else if(sock == NetworkSocket)
{
close(NetworkSocket);
NetworkSocket = -1;
printf("Network client disconnected\n");
}
else if(sock == BootloaderSocket)
{
close(BootloaderSocket);
BootloaderSocket = -1;
printf("Bootloader client disconnected\n");
BootloaderDeactivateBootloader();
}
}
break;
}
case SOCKET_MSG_SEND:
{
if(sock == SyslogSocket)
{
}
}
}
}
@ -283,7 +277,7 @@ static void set_dev_name_to_mac(uint8 *name, uint8 *mac_addr)
/* Name must be in the format WINC1500_00:00 */
uint16 len;
// len = m2m_strlen(name);
// len = m2m_strlen(name);
if (len >= 5) {
name[len - 1] = MAIN_HEX2ASCII((mac_addr[5] >> 0) & 0x0f);
name[len - 2] = MAIN_HEX2ASCII((mac_addr[5] >> 4) & 0x0f);
@ -303,86 +297,71 @@ static void set_dev_name_to_mac(uint8 *name, uint8 *mac_addr)
static void wifi_cb(uint8 u8MsgType, void *pvMsg)
{
switch (u8MsgType) {
case M2M_WIFI_RESP_CON_STATE_CHANGED: {
tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged *)pvMsg;
if (pstrWifiState->u8CurrState == M2M_WIFI_CONNECTED)
{
printf("Wi-Fi connected\r\n");
if(mUseDHCP == true)
{
// m2m_wifi_request_dhcp_client();
}
else
{
m2m_wifi_set_static_ip(&mModuleIPConfig);
gbConnectedWifi = true;
mCurIPAddress = mModuleIPConfig.u32StaticIP;
}
//#ifndef USE_STATIC_IP
// // m2m_wifi_request_dhcp_client();
//#else
// m2m_wifi_set_static_ip(&mModuleIPConfig);
// gbConnectedWifi = true;
// mCurIPAddress = mModuleIPConfig.u32StaticIP;
//#endif
mWiFiState = WIFI_CONNECTED_STATE;
} else if (pstrWifiState->u8CurrState == M2M_WIFI_DISCONNECTED)
{
printf("Wi-Fi disconnected\r\n");
gbConnectedWifi = false;
mWiFiState = WIFI_DISCONNECTED_STATE;
CloseSockets();
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,0);
mCurIPAddress = 0xFFFFFFFF;
}
break;
}
case M2M_WIFI_REQ_DHCP_CONF:
case M2M_WIFI_RESP_CON_STATE_CHANGED: {
tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged *)pvMsg;
if (pstrWifiState->u8CurrState == M2M_WIFI_CONNECTED)
{
tstrM2MIPConfig *IPConfig;
IPConfig = (tstrM2MIPConfig*)pvMsg;
// mCurIPAddress = *(uint32*)pvMsg;
printf("Wi-Fi connected\r\n");
mCurIPAddress = IPConfig->u32StaticIP;
unsigned char ip1,ip2,ip3,ip4;
ip1 = IPV4_BYTE(mCurIPAddress,0);
ip2 = IPV4_BYTE(mCurIPAddress,1);
ip3 = IPV4_BYTE(mCurIPAddress,2);
ip4 = IPV4_BYTE(mCurIPAddress,3);
/* Turn LED0 on to declare that IP address received. */
// printf("Wi-Fi IP is %u.%u.%u.%u\r\n", pu8IPAddress[0], pu8IPAddress[1], pu8IPAddress[2], pu8IPAddress[3]);
#ifndef USE_STATIC_IP
// m2m_wifi_request_dhcp_client();
#else
m2m_wifi_set_static_ip(&mModuleIPConfig);
gbConnectedWifi = true;
/* Obtain the IP Address by network name */
gethostbyname((uint8 *)server_host_name);
break;
}
case M2M_WIFI_RESP_PROVISION_INFO:
mCurIPAddress = mModuleIPConfig.u32StaticIP;
#endif
mWiFiState = WIFI_CONNECTED_STATE;
} else if (pstrWifiState->u8CurrState == M2M_WIFI_DISCONNECTED)
{
tstrM2MProvisionInfo *pstrProvInfo = (tstrM2MProvisionInfo *)pvMsg;
printf("wifi_cb: M2M_WIFI_RESP_PROVISION_INFO.\r\n");
if (pstrProvInfo->u8Status == M2M_SUCCESS) {
m2m_wifi_connect((char *)pstrProvInfo->au8SSID,
strlen((char *)pstrProvInfo->au8SSID),
pstrProvInfo->u8SecType,
pstrProvInfo->au8Password,
M2M_WIFI_CH_ALL);
} else {
printf("wifi_cb: Provision failed.\r\n");
}
} break;
default: {
break;
printf("Wi-Fi disconnected\r\n");
gbConnectedWifi = false;
mWiFiState = WIFI_DISCONNECTED_STATE;
CloseSockets();
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,0);
mCurIPAddress = 0xFFFFFFFF;
}
break;
}
case M2M_WIFI_REQ_DHCP_CONF:
{
// mCurIPAddress = *(uin32*)pvMsg;
// unsigned char ip1,ip2,ip3,ip4;
// ip1 = IPV4_BYTE(pu8IPAddress,0);
// ip2 = IPV4_BYTE(pu8IPAddress,1);
// ip3 = IPV4_BYTE(pu8IPAddress,2);
// ip4 = IPV4_BYTE(pu8IPAddress,3);
/* Turn LED0 on to declare that IP address received. */
// printf("Wi-Fi IP is %u.%u.%u.%u\r\n", pu8IPAddress[0], pu8IPAddress[1], pu8IPAddress[2], pu8IPAddress[3]);
gbConnectedWifi = true;
/* Obtain the IP Address by network name */
gethostbyname((uint8 *)server_host_name);
break;
}
case M2M_WIFI_RESP_PROVISION_INFO:
{
tstrM2MProvisionInfo *pstrProvInfo = (tstrM2MProvisionInfo *)pvMsg;
printf("wifi_cb: M2M_WIFI_RESP_PROVISION_INFO.\r\n");
if (pstrProvInfo->u8Status == M2M_SUCCESS) {
m2m_wifi_connect((char *)pstrProvInfo->au8SSID,
strlen((char *)pstrProvInfo->au8SSID),
pstrProvInfo->u8SecType,
pstrProvInfo->au8Password,
M2M_WIFI_CH_ALL);
} else {
printf("wifi_cb: Provision failed.\r\n");
}
} break;
default: {
break;
}
}
}
@ -397,60 +376,34 @@ int InitWiFi()
mCurIPAddress = 0xFFFFFFFF;
char IP1,IP2,IP3,IP4,GW1,GW2,GW3,GW4;
//Load WiFi parameters from flash if present
if(SPIFlashIsPresent() == 1)
{
char StoredIPConfig[11];
if(SPIFlashReadBuffer(StoredIPConfig,11,FLASH_WIFI_IP_ADDRESS) != RET_ERROR)
char StoredIPConfig[8];
if(SPIFlashReadBuffer(StoredIPConfig,8,FLASH_WIFI_IP_ADDRESS) != RET_ERROR)
{
mUseDHCP = StoredIPConfig[8]; //Use DHCP
//if(mUseDHCP == 0)
{
IP1 = StoredIPConfig[0];
IP2 = StoredIPConfig[1];
IP3 = StoredIPConfig[2];
IP4 = StoredIPConfig[3];
GW1 = StoredIPConfig[4];
GW2 = StoredIPConfig[5];
GW3 = StoredIPConfig[6];
GW4 = StoredIPConfig[7];
if((IP1 == (char)0xFF) && (IP2 == (char)0xFF) && (IP3 == (char)0xFF) && (IP4 == (char)0xFF) || \
((GW1 == (char)0xFF && GW2 == (char)0xFF && GW3 == (char)0xFF && GW4 == (char)0xFF)))
{
IP1 = STATIC_IP_ADDRESS_1;
IP2 = STATIC_IP_ADDRESS_2;
IP3 = STATIC_IP_ADDRESS_3;
IP4 = STATIC_IP_ADDRESS_4;
GW1 = GATEWAY_ADDRESS_1;
GW2 = GATEWAY_ADDRESS_2;
GW3 = GATEWAY_ADDRESS_3;
GW4 = GATEWAY_ADDRESS_4;
}
}
char APNameLength, APPassLenght;
APNameLength = StoredIPConfig[9];
APPassLenght = StoredIPConfig[10];
IP1 = StoredIPConfig[0];
IP2 = StoredIPConfig[1];
IP3 = StoredIPConfig[2];
IP4 = StoredIPConfig[3];
if((APNameLength > 64) || APPassLenght > 64)
GW1 = StoredIPConfig[4];
GW2 = StoredIPConfig[5];
GW3 = StoredIPConfig[6];
GW4 = StoredIPConfig[7];
if((IP1 == (char)0xFF) && (IP2 == (char)0xFF) && (IP3 == (char)0xFF) && (IP4 == (char)0xFF) || \
((GW1 == (char)0xFF && GW2 == (char)0xFF && GW3 == (char)0xFF && GW4 == (char)0xFF)))
{
strcpy(mAPName,HOME_AP_NAME);
strcpy(mAPPassword,HOME_AP_PWD);
}
else
{
if(SPIFlashReadBuffer(mAPName,APNameLength,FLASH_WIFI_IP_ADDRESS+11) != RET_OK)
{
strcpy(mAPName,HOME_AP_NAME);
}
if(SPIFlashReadBuffer(mAPPassword,APPassLenght,FLASH_WIFI_IP_ADDRESS+11+APNameLength) != RET_OK)
{
strcpy(mAPPassword,HOME_AP_PWD);
}
IP1 = STATIC_IP_ADDRESS_1;
IP2 = STATIC_IP_ADDRESS_2;
IP3 = STATIC_IP_ADDRESS_3;
IP4 = STATIC_IP_ADDRESS_4;
GW1 = GATEWAY_ADDRESS_1;
GW2 = GATEWAY_ADDRESS_2;
GW3 = GATEWAY_ADDRESS_3;
GW4 = GATEWAY_ADDRESS_4;
}
}
@ -466,29 +419,20 @@ int InitWiFi()
GW2 = GATEWAY_ADDRESS_2;
GW3 = GATEWAY_ADDRESS_3;
GW4 = GATEWAY_ADDRESS_4;
strcpy(mAPPassword,HOME_AP_PWD);
strcpy(mAPName,HOME_AP_NAME);
#ifdef USE_STATIC_IP
mUseDHCP = 0;
#else
mUseDHCP = 1;
#endif
}
memset(&mModuleIPConfig,0,sizeof(mModuleIPConfig));
// mModuleIPConfig.u32StaticIP = IP_TO_U32(STATIC_IP_ADDRESS_1,STATIC_IP_ADDRESS_2,STATIC_IP_ADDRESS_3,STATIC_IP_ADDRESS_4);
// mModuleIPConfig.u32StaticIP = IP_TO_U32(STATIC_IP_ADDRESS_1,STATIC_IP_ADDRESS_2,STATIC_IP_ADDRESS_3,STATIC_IP_ADDRESS_4);
mModuleIPConfig.u32StaticIP = IP_TO_U32(IP1,IP2,IP3,IP4);
mModuleIPConfig.u32DNS = IP_TO_U32(DEFAULT_DNS_ADD_1,DEFAULT_DNS_ADD_2,DEFAULT_DNS_ADD_3,DEFAULT_DNS_ADD_4);
// mModuleIPConfig.u32AlternateDNS = IP_TO_U32(ALT_DNS_ADD_1,ALT_DNS_ADD_2,ALT_DNS_ADD_3,ALT_DNS_ADD_4);
// mModuleIPConfig.u32Gateway = IP_TO_U32(GATEWAY_ADDRESS_1,GATEWAY_ADDRESS_2,GATEWAY_ADDRESS_3,GATEWAY_ADDRESS_4);
// mModuleIPConfig.u32Gateway = IP_TO_U32(GATEWAY_ADDRESS_1,GATEWAY_ADDRESS_2,GATEWAY_ADDRESS_3,GATEWAY_ADDRESS_4);
mModuleIPConfig.u32Gateway = IP_TO_U32(GW1,GW2,GW3,GW4);
mModuleIPConfig.u32SubnetMask = IP_TO_U32(SUBNET_MASK_1,SUBNET_MASK_2,SUBNET_MASK_3,SUBNET_MASK_4);
/* Initialize the BSP. */
// nm_bsp_init();
// nm_bsp_init();
/* Initialize Wi-Fi parameters structure. */
memset((uint8_t *)&param, 0, sizeof(tstrWifiInitParam));
/* Initialize Wi-Fi driver with data and status callbacks. */
@ -522,32 +466,18 @@ int InitWiFi()
//Use the MAC to define the SSID of the module
set_dev_name_to_mac((uint8 *)gstrM2MAPConfig.au8SSID, gau8MacAddr);
// m2m_wifi_set_device_name((uint8 *)gacDeviceName, (uint8)m2m_strlen((uint8 *)gacDeviceName));
// m2m_wifi_set_device_name((uint8 *)gacDeviceName, (uint8)m2m_strlen((uint8 *)gacDeviceName));
//#ifdef USE_STATIC_IP
// //Use static ip --> disable dhcp client before connecting
// m2m_wifi_enable_dhcp(0);
//#endif
// if(m2m_wifi_connect(HOME_AP_NAME,sizeof(HOME_AP_NAME),HOME_AP_SEC_TYPE,HOME_AP_PWD,M2M_WIFI_CH_ALL) != M2M_SUCCESS)
// {
// //wifi connect error...
// printf("error");
// }
if(mUseDHCP == 1)
{
m2m_wifi_enable_dhcp(1);
}
else
{
m2m_wifi_enable_dhcp(0);
}
if(m2m_wifi_connect(mAPName,strlen(mAPName),HOME_AP_SEC_TYPE,mAPPassword,M2M_WIFI_CH_ALL) != M2M_SUCCESS)
#ifdef USE_STATIC_IP
//Use static ip --> disable dhcp client before connecting
m2m_wifi_enable_dhcp(0);
#endif
if(m2m_wifi_connect(HOME_AP_NAME,sizeof(HOME_AP_NAME),HOME_AP_SEC_TYPE,HOME_AP_PWD,M2M_WIFI_CH_ALL) != M2M_SUCCESS)
{
//wifi connect error...
printf("Wifi Connect error");
printf("error");
}
tstrPerphInitParam tst;
m2m_periph_init(&tst);
@ -591,7 +521,6 @@ int TurnOFFWiFi()
mWiFiInitOK = false;
gbConnectedWifi = false;
HEARTBEAT_LED_2_PIN = LED_OFF;
mCurIPAddress = 0xFFFFFFFF;
// WIFI
mWiFiState = WIFI_MODULE_OFF_STATE;
@ -634,11 +563,6 @@ char GetWiFiSate()
return mWiFiState;
}
uint32 GetCurIPAddress()
{
return mCurIPAddress;
}
void TickWiFi()
{
if(mWiFiInitOK == false)
@ -650,8 +574,7 @@ void TickWiFi()
if(IsTimerExpired(WIFI_RECONNECT_TIMER))
{
//m2m_wifi_disconnect();
//m2m_wifi_connect(HOME_AP_NAME,sizeof(HOME_AP_NAME),HOME_AP_SEC_TYPE,HOME_AP_PWD,M2M_WIFI_CH_ALL);
m2m_wifi_connect(mAPName,strlen(mAPName),HOME_AP_SEC_TYPE,mAPPassword,M2M_WIFI_CH_ALL);
m2m_wifi_connect(HOME_AP_NAME,sizeof(HOME_AP_NAME),HOME_AP_SEC_TYPE,HOME_AP_PWD,M2M_WIFI_CH_ALL);
TimerStart(WIFI_RECONNECT_TIMER,WIFI_CONNECT_TIMEOUT);
}
}
@ -668,8 +591,8 @@ void TickWiFi()
OpenTerminalServer();
//OpenNetworkServer();
// OpenBootloaderServer();
// BootloaderActivateBootloader();
// OpenBootloaderServer();
// BootloaderActivateBootloader();
#ifdef USE_SYSLOG
OpenSyslogServer();
#endif

View File

@ -78,7 +78,6 @@ void TickWiFi();
int TurnOFFWiFi();
int CloseSockets();
char GetWiFiSate();
uint32 GetCurIPAddress();
int OpenTerminalServer();
void SendTerminalData(uint8 *data, int size);
@ -99,8 +98,6 @@ void SendBootloaderData(uint8 *data, int size);
void SendBootloaderByte(uint8 data);
int IsBootloaderClientConnected();
//#define USE_STATIC_IP
@ -169,11 +166,9 @@ int IsBootloaderClientConnected();
//#define HOME_AP_PWD "12345fffff"
#define HOME_AP_NAME "ChaletVilleEmard"
//#define HOME_AP_NAME "ImprVilleEmard"
//#define HOME_AP_NAME "ElRouteurDuChalet"
//#define HOME_AP_NAME "LeChalet"
#define HOME_AP_PWD "Evinrude30"
//#define HOME_AP_PWD "12345fffff"
#define TERMINAL_SERVER_PORT 85
#define NETWORK_SERVER_PORT 86
@ -258,9 +253,6 @@ static const char gacHttpProvDomainName[] = MAIN_HTTP_PROV_SERVER_DOMAIN_NAME;
static uint8 gau8MacAddr[] = MAIN_MAC_ADDRESS;
static sint8 gacDeviceName[] = MAIN_M2M_SSID;
char mAPName[64];
char mAPPassword[64];
char mUseDHCP;
#define MAIN_WAITING_TIME 3000
#define MAIN_RETRY_COUNT 10

View File

@ -156,9 +156,9 @@ enum eWiFiState
//----------------------------
#define NETWORK_UART_PORT UART_1
#define LTE_IF_UART_PORT UART_2
#ifndef NO_WIFI
#define WIFI_MODULE_UART_PORT UART_2
#endif
//
//----------------------------

View File

@ -18,12 +18,9 @@
// include libraries
#include <stdio.h>
//#include <util/delay.h>
//#include <avr/io.h>
#include "define.h"
#include "BoardCfg.h"
#include <util/delay.h>
#include <avr/io.h>
#include "hd44780.h"
#include "timer.h"
// +---------------------------+
// | Power on |
@ -85,8 +82,8 @@
*/
void HD44780_DisplayClear (void)
{
// Diplay clear
HD44780_SendInstruction(HD44780_DISP_CLEAR);
// Diplay clear
HD44780_SendInstruction(HD44780_DISP_CLEAR);
}
/**
@ -98,8 +95,8 @@ void HD44780_DisplayClear (void)
*/
void HD44780_DisplayOn (void)
{
// send instruction - display on
HD44780_SendInstruction(HD44780_DISP_ON);
// send instruction - display on
HD44780_SendInstruction(HD44780_DISP_ON);
}
/**
@ -111,8 +108,8 @@ void HD44780_DisplayOn (void)
*/
void HD44780_CursorOn (void)
{
// send instruction - cursor on
HD44780_SendInstruction(HD44780_CURSOR_ON);
// send instruction - cursor on
HD44780_SendInstruction(HD44780_CURSOR_ON);
}
/**
@ -124,8 +121,8 @@ void HD44780_CursorOn (void)
*/
void HD44780_CursorOff (void)
{
// send instruction - cursor on
HD44780_SendInstruction(HD44780_CURSOR_OFF);
// send instruction - cursor on
HD44780_SendInstruction(HD44780_CURSOR_OFF);
}
/**
@ -137,8 +134,8 @@ void HD44780_CursorOff (void)
*/
void HD44780_CursorBlink (void)
{
// send instruction - Cursor blink
HD44780_SendInstruction(HD44780_CURSOR_BLINK);
// send instruction - Cursor blink
HD44780_SendInstruction(HD44780_CURSOR_BLINK);
}
/**
@ -150,8 +147,8 @@ void HD44780_CursorBlink (void)
*/
void HD44780_DrawChar (char character)
{
// Diplay clear
HD44780_SendData(character);
// Diplay clear
HD44780_SendData(character);
}
/**
@ -163,12 +160,12 @@ void HD44780_DrawChar (char character)
*/
void HD44780_DrawString (char *str)
{
unsigned char i = 0;
// loop through 5 bytes
while (str[i] != '\0') {
//read characters and increment index
HD44780_SendData(str[i++]);
}
unsigned char i = 0;
// loop through 5 bytes
while (str[i] != '\0') {
//read characters and increment index
HD44780_SendData(str[i++]);
}
}
/**
@ -181,20 +178,20 @@ void HD44780_DrawString (char *str)
*/
char HD44780_PositionXY (char x, char y)
{
if (x > HD44780_COLS || y > HD44780_ROWS) {
// error
return ERROR;
}
// check which row
if (y == 0) {
// send instruction 1st row
HD44780_SendInstruction(HD44780_POSITION | (HD44780_ROW1_START + x));
} else if (y == 1) {
// send instruction 2nd row
HD44780_SendInstruction(HD44780_POSITION | (HD44780_ROW2_START + x));
}
// success
return 0;
if (x > HD44780_COLS || y > HD44780_ROWS) {
// error
return ERROR;
}
// check which row
if (y == 0) {
// send instruction 1st row
HD44780_SendInstruction(HD44780_POSITION | (HD44780_ROW1_START + x));
} else if (y == 1) {
// send instruction 2nd row
HD44780_SendInstruction(HD44780_POSITION | (HD44780_ROW2_START + x));
}
// success
return 0;
}
/**
@ -207,40 +204,40 @@ char HD44780_PositionXY (char x, char y)
*/
char HD44780_Shift (char item, char direction)
{
// check if item is cursor or display or direction is left or right
if ((item != HD44780_DISPLAY) && (item != HD44780_CURSOR)) {
// error
return ERROR;
}
// check if direction is left or right
if ((direction != HD44780_RIGHT) && (direction != HD44780_LEFT)) {
// error
return ERROR;
}
// cursor shift
if (item == HD44780_CURSOR) {
// right shift
if (direction == HD44780_RIGHT) {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_CURSOR | HD44780_RIGHT);
} else {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_CURSOR | HD44780_LEFT);
}
// display shift
} else {
// right shift
if (direction == HD44780_RIGHT) {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_DISPLAY | HD44780_RIGHT);
} else {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_DISPLAY | HD44780_LEFT);
}
}
// success
return 0;
// check if item is cursor or display or direction is left or right
if ((item != HD44780_DISPLAY) && (item != HD44780_CURSOR)) {
// error
return ERROR;
}
// check if direction is left or right
if ((direction != HD44780_RIGHT) && (direction != HD44780_LEFT)) {
// error
return ERROR;
}
// cursor shift
if (item == HD44780_CURSOR) {
// right shift
if (direction == HD44780_RIGHT) {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_CURSOR | HD44780_RIGHT);
} else {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_CURSOR | HD44780_LEFT);
}
// display shift
} else {
// right shift
if (direction == HD44780_RIGHT) {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_DISPLAY | HD44780_RIGHT);
} else {
// shit cursor / display to right / left
HD44780_SendInstruction(HD44780_SHIFT | HD44780_DISPLAY | HD44780_LEFT);
}
}
// success
return 0;
}
/**
@ -252,73 +249,62 @@ char HD44780_Shift (char item, char direction)
*/
void HD44780_Init (void)
{
// set E as output
//SETBIT(HD44780_DDR_E, HD44780_E);
// set RS as output
//SETBIT(HD44780_DDR_RS, HD44780_RS);
// set RW as output
//SETBIT(HD44780_DDR_RW, HD44780_RW);
// set DB7-DB4 as output
// HD44780_SetDDR_DATA4to7();
// clear RS
// CLRBIT(HD44780_PORT_RS, HD44780_RS);
LCD_RS_PIN = 0;
// clear RW
// CLRBIT(HD44780_PORT_RW, HD44780_RW);
LCD_RW_PIN = 0;
// clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// delay > 15ms
_delay_ms(16);
// Busy Flag (BF) cannot be checked in these instructions
// ---------------------------------------------------------------------
// Initial sequence 0x30 - send 4 bits in 4 bit mode
// HD44780_SendInstruction(HD44780_INIT_SEQ);JFM
HD44780_Send4bitsIn4bitMode(HD44780_INIT_SEQ);
// delay > 4.1ms
_delay_ms(5);
// pulse E
//HD44780_PulseE();
// delay > 100us
_delay_us(110);
HD44780_Send4bitsIn4bitMode(HD44780_INIT_SEQ);
// set E as output
SETBIT(HD44780_DDR_E, HD44780_E);
// set RS as output
SETBIT(HD44780_DDR_RS, HD44780_RS);
// set RW as output
SETBIT(HD44780_DDR_RW, HD44780_RW);
// pulse E
// HD44780_PulseE();
// delay > 45us (=37+4 * 270/250)
_delay_us(50);
HD44780_Send4bitsIn4bitMode(HD44780_INIT_SEQ);
// 4 bit mode 0x20 - send 4 bits in 4 bit mode
HD44780_Send4bitsIn4bitMode(HD44780_4BIT_MODE);
// pulse E
//HD44780_PulseE();
// delay > 45us (=37+4 * 270/250)
_delay_us(50);
// ----------------------------------------------------------------------
// 4-bit & 2-lines & 5x8-dots 0x28 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_4BIT_MODE | HD44780_2_ROWS | HD44780_FONT_5x8);
// display off 0x08 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_DISP_OFF);
// display clear 0x01 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_DISP_CLEAR);
// entry mode set 0x06 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_ENTRY_MODE);
// set DB7-DB4 as output
HD44780_SetDDR_DATA4to7();
// clear RS
CLRBIT(HD44780_PORT_RS, HD44780_RS);
// clear RW
CLRBIT(HD44780_PORT_RW, HD44780_RW);
// clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// delay > 15ms
_delay_ms(16);
// Busy Flag (BF) cannot be checked in these instructions
// ---------------------------------------------------------------------
// Initial sequence 0x30 - send 4 bits in 4 bit mode
HD44780_SendInstruction(HD44780_INIT_SEQ);
// delay > 4.1ms
_delay_ms(5);
// pulse E
HD44780_PulseE();
// delay > 100us
_delay_us(110);
// pulse E
HD44780_PulseE();
// delay > 45us (=37+4 * 270/250)
_delay_us(50);
// 4 bit mode 0x20 - send 4 bits in 4 bit mode
HD44780_Send4bitsIn4bitMode(HD44780_4BIT_MODE);
// pulse E
HD44780_PulseE();
// delay > 45us (=37+4 * 270/250)
_delay_us(50);
// ----------------------------------------------------------------------
// 4-bit & 2-lines & 5x8-dots 0x28 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_4BIT_MODE | HD44780_2_ROWS | HD44780_FONT_5x8);
// display off 0x08 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_DISP_OFF);
// display clear 0x01 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_DISP_CLEAR);
// entry mode set 0x06 - send 8 bits in 4 bit mode
HD44780_SendInstruction(HD44780_ENTRY_MODE);
}
/**
@ -330,83 +316,69 @@ void HD44780_Init (void)
*/
void HD44780_CheckBFin4bitMode (void)
{
unsigned char input = 0;
Sleep(5);
return;
// clear DB7-DB4 as input
HD44780_ClearDDR_DATA4to7();
// set pull-up resistors for DB7-DB4
// HD44780_SetPORT_DATA4to7();
// clear RS
// CLRBIT(HD44780_PORT_RS, HD44780_RS);
LCD_RS_PIN = 0;
// set RW - read instruction
// SETBIT(HD44780_PORT_RW, HD44780_RW);
LCD_RW_PIN = 1;
// test HIGH level on PIN DB7
// after clear PIN DB7 should continue
// -------------------------------------
// us: 0.5|0.5|0.5
// ___ ___
// E: ___/ \___/ \__
// ___ ___
// DB7: \___/ \___/ \__
//
while (1) {
// Read upper nibble
// --------------------------------
// Set E
// SETBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 1;
// PWeh > 0.5us
_delay_us(0.5);
// read upper nibble (tDDR > 360ns)
input = HD44780_PIN_DATA;
// Clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Read lower nibble
// --------------------------------
// Set E
// SETBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 1;
// PWeh > 0.5us
_delay_us(0.5);
// read lower nibble (tDDR > 360ns)
//input |= (unsigned char)(HD44780_PIN_DATA >> 4);
char IsBusy = (HD44780_DATA7 == 1);
// Clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// // check if DB7 is cleared
// if (!(input & (1 << HD44780_DATA7)))
if (IsBusy == 0)
{
// if BF cleared -> end loop
break;
}
}
// clear RW
// CLRBIT(HD44780_PORT_RW, HD44780_RW);
LCD_RW_PIN = 0;
// set DB7-DB4 as output
HD44780_SetDDR_DATA4to7();
unsigned char input = 0;
// clear DB7-DB4 as input
HD44780_ClearDDR_DATA4to7();
// set pull-up resistors for DB7-DB4
HD44780_SetPORT_DATA4to7();
// clear RS
CLRBIT(HD44780_PORT_RS, HD44780_RS);
// set RW - read instruction
SETBIT(HD44780_PORT_RW, HD44780_RW);
// test HIGH level on PIN DB7
// after clear PIN DB7 should continue
// -------------------------------------
// us: 0.5|0.5|0.5
// ___ ___
// E: ___/ \___/ \__
// ___ ___
// DB7: \___/ \___/ \__
//
while (1) {
// Read upper nibble
// --------------------------------
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// PWeh > 0.5us
_delay_us(0.5);
// read upper nibble (tDDR > 360ns)
input = HD44780_PIN_DATA;
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Read lower nibble
// --------------------------------
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// PWeh > 0.5us
_delay_us(0.5);
// read lower nibble (tDDR > 360ns)
input |= HD44780_PIN_DATA >> 4;
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// check if DB7 is cleared
if (!(input & (1 << HD44780_DATA7))) {
// if BF cleared -> end loop
break;
}
}
// clear RW
CLRBIT(HD44780_PORT_RW, HD44780_RW);
// set DB7-DB4 as output
HD44780_SetDDR_DATA4to7();
}
/**
@ -428,25 +400,24 @@ void HD44780_CheckBFin8bitMode (void)
*/
void HD44780_SendInstruction (unsigned short int data)
{
// Clear RS
// HD44780_PORT_RS &= ~(1 << HD44780_RS);
LCD_RS_PIN = 0;
// 4bit mode
// ------------------------------------------
if (HD44780_MODE == HD44780_4BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn4bitMode(data);
// check busy flag
HD44780_CheckBFin4bitMode();
// 8 bit mode
// ------------------------------------------
} else if (HD44780_MODE == HD44780_8BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn8bitMode(data);
// check busy flag
HD44780_CheckBFin8bitMode();
}
// Clear RS
HD44780_PORT_RS &= ~(1 << HD44780_RS);
// 4bit mode
// ------------------------------------------
if (HD44780_MODE == HD44780_4BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn4bitMode(data);
// check busy flag
HD44780_CheckBFin4bitMode();
// 8 bit mode
// ------------------------------------------
} else if (HD44780_MODE == HD44780_8BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn8bitMode(data);
// check busy flag
HD44780_CheckBFin8bitMode();
}
}
/**
@ -458,29 +429,27 @@ void HD44780_SendInstruction (unsigned short int data)
*/
void HD44780_SendData (unsigned short int data)
{
// Set RS
// SETBIT(HD44780_PORT_RS, HD44780_RS);
LCD_RS_PIN = 1;
// 4bit mode
// ------------------------------------------
if (HD44780_MODE == HD44780_4BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn4bitMode(data);
// check busy flag
HD44780_CheckBFin4bitMode();
// 8 bit mode
// ------------------------------------------
} else if (HD44780_MODE == HD44780_8BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn8bitMode(data);
// check busy flag
HD44780_CheckBFin8bitMode();
}
// Clear RS
// CLRBIT(HD44780_PORT_RS, HD44780_RS);
LCD_RS_PIN = 0;
// Set RS
SETBIT(HD44780_PORT_RS, HD44780_RS);
// 4bit mode
// ------------------------------------------
if (HD44780_MODE == HD44780_4BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn4bitMode(data);
// check busy flag
HD44780_CheckBFin4bitMode();
// 8 bit mode
// ------------------------------------------
} else if (HD44780_MODE == HD44780_8BIT_MODE) {
// send required data in required mode
HD44780_Send8bitsIn8bitMode(data);
// check busy flag
HD44780_CheckBFin8bitMode();
}
// Clear RS
CLRBIT(HD44780_PORT_RS, HD44780_RS);
}
/**
@ -492,19 +461,17 @@ void HD44780_SendData (unsigned short int data)
*/
void HD44780_Send4bitsIn4bitMode (unsigned short int data)
{
// Set E
// SETBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 1;
// send data to LCD
HD44780_SetUppNibble(data);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// send data to LCD
HD44780_SetUppNibble(data);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
}
/**
@ -516,37 +483,33 @@ void HD44780_Send4bitsIn4bitMode (unsigned short int data)
*/
void HD44780_Send8bitsIn4bitMode (unsigned short int data)
{
// Send upper nibble
// ----------------------------------
// Set E
// SETBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 1;
// send data to LCD
HD44780_SetUppNibble(data);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Send lower nibble
// ----------------------------------
// Set E
// SETBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 1;
// send data to LCD
HD44780_SetUppNibble(data << 4);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Send upper nibble
// ----------------------------------
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// send data to LCD
HD44780_SetUppNibble(data);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Send lower nibble
// ----------------------------------
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// send data to LCD
HD44780_SetUppNibble(data << 4);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
}
/**
@ -558,19 +521,19 @@ void HD44780_Send8bitsIn4bitMode (unsigned short int data)
*/
void HD44780_Send8bitsIn8bitMode (unsigned short int data)
{
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// send data to LCD
HD44780_SetUppNibble(data);
// send data to LCD
HD44780_SetLowNibble(data);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// send data to LCD
HD44780_SetUppNibble(data);
// send data to LCD
HD44780_SetLowNibble(data);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
}
/**
@ -582,57 +545,16 @@ void HD44780_Send8bitsIn8bitMode (unsigned short int data)
*/
void HD44780_SetUppNibble (unsigned short int data)
{
// LCD_DB4_PIN = 0;
// LCD_DB5_PIN = 0;
// LCD_DB6_PIN = 0;
// LCD_DB7_PIN = 0;
unsigned short test = data;
if (data & 0x80)
{
LCD_DB7_PIN = 1;
}
else
{
LCD_DB7_PIN = 0;
}
if (data & 0x40)
{
LCD_DB6_PIN = 1;
}
else
{
LCD_DB6_PIN = 0;
}
if (data & 0x20)
{
LCD_DB5_PIN = 1;
}
else
{
LCD_DB5_PIN = 0;
}
if (data & 0x10)
{
LCD_DB4_PIN = 1;
}
else
{
LCD_DB4_PIN = 0;
}
// clear bits DB7-DB4
// CLRBIT(HD44780_PORT_DATA, HD44780_DATA7);
// CLRBIT(HD44780_PORT_DATA, HD44780_DATA6);
// CLRBIT(HD44780_PORT_DATA, HD44780_DATA5);
// CLRBIT(HD44780_PORT_DATA, HD44780_DATA4);
// // set DB7-DB4 if corresponding bit is set
// if (data & 0x80) { SETBIT(HD44780_PORT_DATA, HD44780_DATA7); }
// if (data & 0x40) { SETBIT(HD44780_PORT_DATA, HD44780_DATA6); }
// if (data & 0x20) { SETBIT(HD44780_PORT_DATA, HD44780_DATA5); }
// if (data & 0x10) { SETBIT(HD44780_PORT_DATA, HD44780_DATA4); }
// clear bits DB7-DB4
CLRBIT(HD44780_PORT_DATA, HD44780_DATA7);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA6);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA5);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA4);
// set DB7-DB4 if corresponding bit is set
if (data & 0x80) { SETBIT(HD44780_PORT_DATA, HD44780_DATA7); }
if (data & 0x40) { SETBIT(HD44780_PORT_DATA, HD44780_DATA6); }
if (data & 0x20) { SETBIT(HD44780_PORT_DATA, HD44780_DATA5); }
if (data & 0x10) { SETBIT(HD44780_PORT_DATA, HD44780_DATA4); }
}
/**
@ -644,16 +566,16 @@ void HD44780_SetUppNibble (unsigned short int data)
*/
void HD44780_SetLowNibble (unsigned short int data)
{
// clear bits DB7-DB4
CLRBIT(HD44780_PORT_DATA, HD44780_DATA3);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA2);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA1);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA0);
// set DB7-DB4 if corresponding bit is set
if (data & 0x08) { SETBIT(HD44780_PORT_DATA, HD44780_DATA3); }
if (data & 0x04) { SETBIT(HD44780_PORT_DATA, HD44780_DATA2); }
if (data & 0x02) { SETBIT(HD44780_PORT_DATA, HD44780_DATA1); }
if (data & 0x01) { SETBIT(HD44780_PORT_DATA, HD44780_DATA0); }
// clear bits DB7-DB4
CLRBIT(HD44780_PORT_DATA, HD44780_DATA3);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA2);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA1);
CLRBIT(HD44780_PORT_DATA, HD44780_DATA0);
// set DB7-DB4 if corresponding bit is set
if (data & 0x08) { SETBIT(HD44780_PORT_DATA, HD44780_DATA3); }
if (data & 0x04) { SETBIT(HD44780_PORT_DATA, HD44780_DATA2); }
if (data & 0x02) { SETBIT(HD44780_PORT_DATA, HD44780_DATA1); }
if (data & 0x01) { SETBIT(HD44780_PORT_DATA, HD44780_DATA0); }
}
/**
@ -665,17 +587,15 @@ void HD44780_SetLowNibble (unsigned short int data)
*/
void HD44780_PulseE (void)
{
// Set E
// SETBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 1;
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
// CLRBIT(HD44780_PORT_E, HD44780_E);
LCD_E_PIN = 0;
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
// Set E
SETBIT(HD44780_PORT_E, HD44780_E);
// PWeh delay time > 450ns
_delay_us(0.5);
// Clear E
CLRBIT(HD44780_PORT_E, HD44780_E);
// TcycE > 1000ns -> delay depends on PWeh delay time
// delay = TcycE - PWeh = 1000 - 500 = 500ns
_delay_us(0.5);
}
/**
@ -687,16 +607,11 @@ void HD44780_PulseE (void)
*/
void HD44780_SetPORT_DATA4to7 (void)
{
// set DB4-DB7
LCD_DB4_PIN = 1;
LCD_DB5_PIN = 1;
LCD_DB6_PIN = 1;
LCD_DB7_PIN = 1;
// SETBIT(HD44780_PORT_DATA, HD44780_DATA4);
// SETBIT(HD44780_PORT_DATA, HD44780_DATA5);
// SETBIT(HD44780_PORT_DATA, HD44780_DATA6);
// SETBIT(HD44780_PORT_DATA, HD44780_DATA7);
// set DB4-DB7
SETBIT(HD44780_PORT_DATA, HD44780_DATA4);
SETBIT(HD44780_PORT_DATA, HD44780_DATA5);
SETBIT(HD44780_PORT_DATA, HD44780_DATA6);
SETBIT(HD44780_PORT_DATA, HD44780_DATA7);
}
/**
@ -706,17 +621,13 @@ void HD44780_SetPORT_DATA4to7 (void)
*
* @return void
*/
void HD44780_SetDDR_DATA4to7 (void)
void HD44780_ClearDDR_DATA4to7 (void)
{
// set DB4-DB7
LCD_DB4_PIN_DIR = PIN_OUTPUT;
LCD_DB5_PIN_DIR = PIN_OUTPUT;
LCD_DB6_PIN_DIR = PIN_OUTPUT;
LCD_DB7_PIN_DIR = PIN_OUTPUT;
// CLRBIT(HD44780_DDR_DATA, HD44780_DATA4);
// CLRBIT(HD44780_DDR_DATA, HD44780_DATA5);
// CLRBIT(HD44780_DDR_DATA, HD44780_DATA6);
// CLRBIT(HD44780_DDR_DATA, HD44780_DATA7);
// set DB4-DB7
CLRBIT(HD44780_DDR_DATA, HD44780_DATA4);
CLRBIT(HD44780_DDR_DATA, HD44780_DATA5);
CLRBIT(HD44780_DDR_DATA, HD44780_DATA6);
CLRBIT(HD44780_DDR_DATA, HD44780_DATA7);
}
/**
@ -726,14 +637,11 @@ void HD44780_SetDDR_DATA4to7 (void)
*
* @return void
*/
void HD44780_ClearDDR_DATA4to7 (void)
void HD44780_SetDDR_DATA4to7 (void)
{
LCD_DB4_PIN_DIR = PIN_INPUT;
LCD_DB5_PIN_DIR = PIN_INPUT;
LCD_DB6_PIN_DIR = PIN_INPUT;
LCD_DB7_PIN_DIR = PIN_INPUT;
// SETBIT(HD44780_DDR_DATA, HD44780_DATA4);
// SETBIT(HD44780_DDR_DATA, HD44780_DATA5);
// SETBIT(HD44780_DDR_DATA, HD44780_DATA6);
// SETBIT(HD44780_DDR_DATA, HD44780_DATA7);
// set DB7-DB4 as output
SETBIT(HD44780_DDR_DATA, HD44780_DATA4);
SETBIT(HD44780_DDR_DATA, HD44780_DATA5);
SETBIT(HD44780_DDR_DATA, HD44780_DATA6);
SETBIT(HD44780_DDR_DATA, HD44780_DATA7);
}

View File

@ -36,85 +36,82 @@
#define _FCPU 16000000
#endif
//#if defined(__AVR_ATmega16__)
#if defined(__AVR_ATmega16__)
// E port
// --------------------------------------
#ifndef HD44780_DDR_E
#define HD44780_DDR_E TRISB
#define HD44780_DDR_E DDRD
#endif
#ifndef HD44780_PORT_E
#define HD44780_PORT_E PORTB
#define HD44780_PORT_E PORTD
#endif
#ifndef HD44780_E
#define HD44780_E 12
#define HD44780_E 3
#endif
// RW port
// --------------------------------------
#ifndef HD44780_DDR_RW
#define HD44780_DDR_RW TRISB
#define HD44780_DDR_RW DDRD
#endif
#ifndef HD44780_PORT_RW
#define HD44780_PORT_RW PORTB
#define HD44780_PORT_RW PORTD
#endif
#ifndef HD44780_RW
#define HD44780_RW 13
#define HD44780_RW 2
#endif
// RS port
// --------------------------------------
#ifndef HD44780_DDR_RS
#define HD44780_DDR_RS TRISD
#define HD44780_DDR_RS DDRD
#endif
#ifndef HD44780_PORT_RS
#define HD44780_PORT_RS PORTD
#endif
#ifndef HD44780_RS
#define HD44780_RS 5
#define HD44780_RS 1
#endif
// DATA port / pin
// --------------------------------------
#ifndef HD44780_DDR_DATA
#define HD44780_DDR_DATA TRISB
#define HD44780_DDR_DATA DDRD
#endif
#ifndef HD44780_PORT_DATA
#define HD44780_PORT_DATA PORTB
#define HD44780_PORT_DATA PORTD
#endif
#ifndef HD44780_PIN_DATA
#define HD44780_PIN_DATA PORTB
#define HD44780_PIN_DATA PIND
#endif
// pins
#ifndef HD44780_DATA7
#define HD44780_DATA7 PORTBbits.RB11 // LCD PORT DB7
#define HD44780_DATA7 7 // LCD PORT DB7
#endif
#ifndef HD44780_DATA6
#define HD44780_DATA6 10 // LCD PORT DB6
#define HD44780_DATA6 6 // LCD PORT DB6
#endif
#ifndef HD44780_DATA5
#define HD44780_DATA5 9 // LCD PORT DB5
#define HD44780_DATA5 5 // LCD PORT DB5
#endif
#ifndef HD44780_DATA4
#define HD44780_DATA4 3 // LCD PORT DB4
#define HD44780_DATA4 4 // LCD PORT DB4
#endif
#ifndef HD44780_DATA3
#define HD44780_DATA3 0 // LCD PORT DB3
#define HD44780_DATA3 3 // LCD PORT DB3
#endif
#ifndef HD44780_DATA2
#define HD44780_DATA2 0 // LCD PORT DB2
#define HD44780_DATA2 2 // LCD PORT DB2
#endif
#ifndef HD44780_DATA1
#define HD44780_DATA1 0 // LCD PORT DB1
#define HD44780_DATA1 1 // LCD PORT DB1
#endif
#ifndef HD44780_DATA0
#define HD44780_DATA0 0 // LCD PORT DB0
#endif
// #endif
#define _delay_ms(x) Sleep(x)
#define _delay_us(x) Sleep(1)
#endif
#define BIT7 0x80
#define BIT6 0x40

View File

@ -41,14 +41,9 @@
#include "SPI_Flash.h"
#include "TemperatureSensor.h"
#include "LoraWatchdog.h"
#include "LCDCtrl.h"
#include "SIM7080GInterface.h"
#include "LTENetworkInterface.h"
#include "BootloaderInterface.h"
#include "hd44780.h"
//#define NO_WIFI
#ifndef NO_WIFI
@ -61,7 +56,6 @@
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
#elif defined USE_SYSLOG
#include "Syslog.h"
#include "LoraNetworkInterface.h"
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
#endif
@ -104,18 +98,11 @@ int main(void)
InitUart();
LoraNetworkInterfaceInit();
ProtocolInit();
InitLoraWatchdog();
InitSPIFlash();
InitLCDCtrl();
InitLTEModule();
LTENetworkInterfaceInit();
#ifdef USE_SYSLOG
InitSyslog();
#endif
@ -194,8 +181,6 @@ int main(void)
EnableWatchdog();
KickWatchdog();
mRetCode = 1;
while(mRetCode == 1)
{
@ -213,22 +198,11 @@ int main(void)
TickTempSensor();
BootloaderInterfaceTick();
TickLoraWatchdog();
TickLCDCtrl();
TickLTEModule();
TickLTENetworkInterface();
if(IsTimerExpired(HEARTBEAT_LED_TMR))
{
HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
TimerStart(HEARTBEAT_LED_TMR,HEARTBEAT_LED_TIMEOUT);
// HD44780_DisplayClear();
// HD44780_PositionXY(0, 0);
// // send char
// HD44780_DrawString("DISPLAY ON");
// // display clear
// HD44780_DisplayOn();
}
}

View File

@ -50,10 +50,6 @@ typedef enum
TEMP_SENSOR_REFRESH_TIMER,
BOOTLOADER_FLASH_POLL_TIMER,
LORA_WATCHDOG_TIMER,
LCD_CTRL_TIMER,
LTE_MODULE_TIMER,
LTE_COMM_TIMER,
LTE_NWI_TIMER,
TIMER_MAX_ID
}eTimerID;

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,18 @@
#
#Sat Feb 08 11:00:16 EST 2025
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
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=bcd6e5453a11ce86aaffd5305e838602
ChaletDuinoV2_795F512H_.com-microchip-mplab-mdbcore-ICD3Tool-ICD3DbgToolManager.md5=b8062f7a3afd14c7a6d50c4bb4696d24
default.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=de2d3bc95a22a3f432c2e39f49efafbc
default.com-microchip-mplab-mdbcore-ICD3Tool-ICD3DbgToolManager.md5=b8062f7a3afd14c7a6d50c4bb4696d24
configurations-xml=1473259d34d997cd9f158c9d70cc6d8b
ChaletDuino_775F512H_.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=de2d3bc95a22a3f432c2e39f49efafbc
host.platform=windows
ChaletDuinoV2_795F512H_.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=de2d3bc95a22a3f432c2e39f49efafbc
ChaletDuinoV2_795F512H_.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.3.231
ChaletDuino_775F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
host.id=1ig4-46sv-sm
conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_795F512H_
default.languagetoolchain.version=1.33
ChaletDuinoV2_795F512H_.languagetoolchain.version=1.33
ChaletDuino_775F512H_.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.3.231
ChaletDuino_775F512H_.com-microchip-mplab-mdbcore-ICD3Tool-ICD3DbgToolManager.md5=b8062f7a3afd14c7a6d50c4bb4696d24
default.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.2.228
#Thu Dec 30 14:57:27 EST 2021
default.languagetoolchain.version=2.41
ChaletDuino_775F512H_.languagetoolchain.version=1.33
default.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.2.228
conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_795F512H_
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v2.41\\bin
ChaletDuino_775F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231
ChaletDuinoV2_795F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231
configurations-xml=bbb83c38cec5eb460692a21d7e609f51
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc
ChaletDuino_775F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
ChaletDuinoV2_795F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
ChaletDuinoV2_795F512H_.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282
ChaletDuino_775F512H_.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282
ChaletDuinoV2_795F512H_.languagetoolchain.version=1.33
host.platform=windows

View File

@ -15,11 +15,11 @@
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
#
SHELL=cmd.exe
PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.05/mplab_platform/platform/../mplab_ide/modules/../../bin/
PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/
# Adding MPLAB X bin directory to path.
PATH:=C:/Program Files/Microchip/MPLABX/v6.05/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
PATH:=C:/Program Files (x86)/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
# Path to java used to run MPLAB X when this makefile was created
MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.05\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX\v5.40\sys\java\zulu8.36.0.1-ca-fx-jdk8.0.202-win_x64\jre/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-gcc.exe"
MP_CPPC="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-g++.exe"
@ -27,11 +27,12 @@ MP_CPPC="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-g++.exe"
MP_AS="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-as.exe"
MP_LD="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-ld.exe"
MP_AR="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-ar.exe"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.05/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
MP_CPPC_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
# MP_BC_DIR is not defined
MP_AS_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
MP_LD_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
MP_AR_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
DFP_DIR=C:/Users/JF/.mchp_packs/Microchip/PIC32MX_DFP/1.3.231
# MP_BC_DIR is not defined
DFP_DIR=C:/Program Files (x86)/Microchip/MPLABX/v5.40/packs/Microchip/PIC32MX_DFP/1.3.231

View File

@ -15,11 +15,11 @@
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...
#
SHELL=cmd.exe
PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.05/mplab_platform/platform/../mplab_ide/modules/../../bin/
PATH_TO_IDE_BIN=C:/Program Files (x86)/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/
# Adding MPLAB X bin directory to path.
PATH:=C:/Program Files/Microchip/MPLABX/v6.05/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
PATH:=C:/Program Files (x86)/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
# Path to java used to run MPLAB X when this makefile was created
MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.05\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
MP_JAVA_PATH="C:\Program Files (x86)\Microchip\MPLABX\v5.40\sys\java\zulu8.36.0.1-ca-fx-jdk8.0.202-win_x64\jre/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-gcc.exe"
MP_CPPC="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-g++.exe"
@ -27,11 +27,12 @@ MP_CPPC="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-g++.exe"
MP_AS="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-as.exe"
MP_LD="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-ld.exe"
MP_AR="C:\Program Files\Microchip\xc32\v1.33\bin\xc32-ar.exe"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.05/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files (x86)/Microchip/MPLABX/v5.40/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
MP_CPPC_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
# MP_BC_DIR is not defined
MP_AS_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
MP_LD_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
MP_AR_DIR="C:\Program Files\Microchip\xc32\v1.33\bin"
DFP_DIR=C:/Users/JF/.mchp_packs/Microchip/PIC32MX_DFP/1.3.231
# MP_BC_DIR is not defined
DFP_DIR=C:/Program Files (x86)/Microchip/MPLABX/v5.40/packs/Microchip/PIC32MX_DFP/1.3.231

View File

@ -8,11 +8,20 @@ CND_BASEDIR=`pwd`
CND_ARTIFACT_DIR_default=dist/default/production
CND_ARTIFACT_NAME_default=ChaletLora.X.production.hex
CND_ARTIFACT_PATH_default=dist/default/production/ChaletLora.X.production.hex
CND_PACKAGE_DIR_default=${CND_DISTDIR}/default/package
CND_PACKAGE_NAME_default=chaletlora.x.tar
CND_PACKAGE_PATH_default=${CND_DISTDIR}/default/package/chaletlora.x.tar
# ChaletDuino_775F512H_ configuration
CND_ARTIFACT_DIR_ChaletDuino_775F512H_=dist/ChaletDuino_775F512H_/production
CND_ARTIFACT_NAME_ChaletDuino_775F512H_=ChaletLora.X.production.hex
CND_ARTIFACT_PATH_ChaletDuino_775F512H_=dist/ChaletDuino_775F512H_/production/ChaletLora.X.production.hex
CND_PACKAGE_DIR_ChaletDuino_775F512H_=${CND_DISTDIR}/ChaletDuino_775F512H_/package
CND_PACKAGE_NAME_ChaletDuino_775F512H_=chaletlora.x.tar
CND_PACKAGE_PATH_ChaletDuino_775F512H_=${CND_DISTDIR}/ChaletDuino_775F512H_/package/chaletlora.x.tar
# ChaletDuinoV2_795F512H_ configuration
CND_ARTIFACT_DIR_ChaletDuinoV2_795F512H_=dist/ChaletDuinoV2_795F512H_/production
CND_ARTIFACT_NAME_ChaletDuinoV2_795F512H_=ChaletLora.X.production.hex
CND_ARTIFACT_PATH_ChaletDuinoV2_795F512H_=dist/ChaletDuinoV2_795F512H_/production/ChaletLora.X.production.hex
CND_PACKAGE_DIR_ChaletDuinoV2_795F512H_=${CND_DISTDIR}/ChaletDuinoV2_795F512H_/package
CND_PACKAGE_NAME_ChaletDuinoV2_795F512H_=chaletlora.x.tar
CND_PACKAGE_PATH_ChaletDuinoV2_795F512H_=${CND_DISTDIR}/ChaletDuinoV2_795F512H_/package/chaletlora.x.tar

View File

@ -94,10 +94,6 @@
<itemPath>Source/FlashMapping.h</itemPath>
<itemPath>Source/checksum.h</itemPath>
<itemPath>Source/LoraWatchdog.h</itemPath>
<itemPath>Source/hd44780.h</itemPath>
<itemPath>Source/LCDCtrl.h</itemPath>
<itemPath>Source/LTENetworkInterface.h</itemPath>
<itemPath>Source/ATCmdInterpreter.h</itemPath>
</logicalFolder>
<logicalFolder name="LinkerScript"
displayName="Linker Files"
@ -176,6 +172,7 @@
<itemPath>Source/timer.c</itemPath>
<itemPath>Source/WiFiCtrl.c</itemPath>
<itemPath>Source/SPI.c</itemPath>
<itemPath>Source/LoraNetworkInterface.c</itemPath>
<itemPath>Source/ChaletPowerRelay.c</itemPath>
<itemPath>Source/HarakiriRelay.c</itemPath>
<itemPath>Source/BatteryMonitor.c</itemPath>
@ -190,13 +187,6 @@
<itemPath>Source/BootloaderProtocol.c</itemPath>
<itemPath>Source/crc32.c</itemPath>
<itemPath>Source/LoraWatchdog.c</itemPath>
<itemPath>Source/hd44780.c</itemPath>
<itemPath>Source/LCDCtrl.c</itemPath>
<itemPath>Source/LoraNetworkInterface.c</itemPath>
<itemPath>Source/SIM7080GInterface.c</itemPath>
<itemPath>Source/SIM7080GInterface.h</itemPath>
<itemPath>Source/LTENetworkInterface.c</itemPath>
<itemPath>Source/ATCmdInterpreter.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
@ -219,7 +209,7 @@
<targetPluginBoard></targetPluginBoard>
<platformTool>ICD3PlatformTool</platformTool>
<languageToolchain>XC32</languageToolchain>
<languageToolchainVersion>1.33</languageToolchainVersion>
<languageToolchainVersion>2.41</languageToolchainVersion>
<platform>3</platform>
</toolsSet>
<packs>
@ -244,7 +234,6 @@
</compileType>
<makeCustomizationType>
<makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
<makeUseCleanTarget>false</makeUseCleanTarget>
<makeCustomizationPreStep></makeCustomizationPreStep>
<makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
<makeCustomizationPostStep></makeCustomizationPostStep>
@ -269,10 +258,9 @@
<property key="place-data-into-section" value="false"/>
<property key="post-instruction-scheduling" value="default"/>
<property key="pre-instruction-scheduling" value="default"/>
<property key="preprocessor-macros" value=""/>
<property key="preprocessor-macros" value="CHALETDUINO_BOARD"/>
<property key="strict-ansi" value="false"/>
<property key="support-ansi" value="false"/>
<property key="tentative-definitions" value=""/>
<property key="toplevel-reordering" value=""/>
<property key="unaligned-access" value=""/>
<property key="use-cci" value="false"/>
@ -304,7 +292,6 @@
</C32-AS>
<C32-CO>
<property key="coverage-enable" value=""/>
<property key="stack-guidance" value="false"/>
</C32-CO>
<C32-LD>
<property key="additional-options-use-response-files" value="false"/>
@ -385,7 +372,6 @@
<property key="omit-pack-options" value="1"/>
<property key="relaxed-math" value="false"/>
<property key="save-temps" value="false"/>
<property key="stack-smashing" value=""/>
<property key="wpo-lto" value="false"/>
</C32Global>
<ICD3PlatformTool>
@ -434,8 +420,6 @@
<property key="UART5" value="true"/>
<property key="UART6" value="true"/>
<property key="USB" value="true"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="false"/>
<property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/>
@ -468,86 +452,6 @@
<property key="programoptions.uselvpprogramming" value="false"/>
<property key="voltagevalue" value="3.25"/>
</ICD3PlatformTool>
<Tool>
<property key="ADC 1" value="true"/>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="CAN1" value="true"/>
<property key="CAN2" value="true"/>
<property key="CHANGE NOTICE" value="true"/>
<property key="COMPARATOR" value="true"/>
<property key="DMA" value="true"/>
<property key="ETHERNET CONTROLLER" value="true"/>
<property key="Freeze All Other Peripherals" value="true"/>
<property key="I2C1" value="true"/>
<property key="I2C3" value="true"/>
<property key="I2C4" value="true"/>
<property key="I2C5" value="true"/>
<property key="INPUT CAPTURE 1" value="true"/>
<property key="INPUT CAPTURE 2" value="true"/>
<property key="INPUT CAPTURE 3" value="true"/>
<property key="INPUT CAPTURE 4" value="true"/>
<property key="INPUT CAPTURE 5" value="true"/>
<property key="INTERRUPT CONTROL" value="true"/>
<property key="OUTPUT COMPARE 1" value="true"/>
<property key="OUTPUT COMPARE 2" value="true"/>
<property key="OUTPUT COMPARE 3" value="true"/>
<property key="OUTPUT COMPARE 4" value="true"/>
<property key="OUTPUT COMPARE 5" value="true"/>
<property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
<property key="REAL TIME CLOCK" value="true"/>
<property key="SPI 2" value="true"/>
<property key="SPI 3" value="true"/>
<property key="SPI 4" value="true"/>
<property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
<property key="TIMER1" value="true"/>
<property key="TIMER2" value="true"/>
<property key="TIMER3" value="true"/>
<property key="TIMER4" value="true"/>
<property key="TIMER5" value="true"/>
<property key="ToolFirmwareFilePath"
value="Press to browse for a specific firmware version"/>
<property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
<property key="UART1" value="true"/>
<property key="UART2" value="true"/>
<property key="UART3" value="true"/>
<property key="UART4" value="true"/>
<property key="UART5" value="true"/>
<property key="UART6" value="true"/>
<property key="USB" value="true"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="false"/>
<property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="false"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="1d000000-1d07ffff"/>
<property key="poweroptions.powerenable" value="false"/>
<property key="programoptions.donoteraseauxmem" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges" value=""/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value=""/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.preserveuserid" value="false"/>
<property key="programoptions.programcalmem" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
<property key="programoptions.usehighvoltageonmclr" value="false"/>
<property key="programoptions.uselvpprogramming" value="false"/>
<property key="voltagevalue" value="3.25"/>
</Tool>
</conf>
<conf name="ChaletDuino_775F512H_" type="2">
<toolsSet>
@ -582,7 +486,6 @@
</compileType>
<makeCustomizationType>
<makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
<makeUseCleanTarget>false</makeUseCleanTarget>
<makeCustomizationPreStep></makeCustomizationPreStep>
<makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
<makeCustomizationPostStep></makeCustomizationPostStep>
@ -611,7 +514,6 @@
value="CHALETDUINO_BRD;_SUPPRESS_PLIB_WARNING"/>
<property key="strict-ansi" value="false"/>
<property key="support-ansi" value="false"/>
<property key="tentative-definitions" value=""/>
<property key="toplevel-reordering" value=""/>
<property key="unaligned-access" value=""/>
<property key="use-cci" value="false"/>
@ -643,7 +545,6 @@
</C32-AS>
<C32-CO>
<property key="coverage-enable" value=""/>
<property key="stack-guidance" value="false"/>
</C32-CO>
<C32-LD>
<property key="additional-options-use-response-files" value="false"/>
@ -665,7 +566,7 @@
<property key="generate-16-bit-code" value="false"/>
<property key="generate-cross-reference-file" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="heap-size" value=""/>
<property key="heap-size" value="512"/>
<property key="input-libraries" value=""/>
<property key="kseg-length" value=""/>
<property key="kseg-origin" value=""/>
@ -724,7 +625,6 @@
<property key="omit-pack-options" value="1"/>
<property key="relaxed-math" value="false"/>
<property key="save-temps" value="false"/>
<property key="stack-smashing" value=""/>
<property key="wpo-lto" value="false"/>
</C32Global>
<ICD3PlatformTool>
@ -773,8 +673,6 @@
<property key="UART5" value="true"/>
<property key="UART6" value="true"/>
<property key="USB" value="true"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="true"/>
<property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/>
@ -999,86 +897,6 @@
<C32Global>
</C32Global>
</item>
<Tool>
<property key="ADC 1" value="true"/>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="CAN1" value="true"/>
<property key="CAN2" value="true"/>
<property key="CHANGE NOTICE" value="true"/>
<property key="COMPARATOR" value="true"/>
<property key="DMA" value="true"/>
<property key="ETHERNET CONTROLLER" value="true"/>
<property key="Freeze All Other Peripherals" value="true"/>
<property key="I2C1" value="true"/>
<property key="I2C3" value="true"/>
<property key="I2C4" value="true"/>
<property key="I2C5" value="true"/>
<property key="INPUT CAPTURE 1" value="true"/>
<property key="INPUT CAPTURE 2" value="true"/>
<property key="INPUT CAPTURE 3" value="true"/>
<property key="INPUT CAPTURE 4" value="true"/>
<property key="INPUT CAPTURE 5" value="true"/>
<property key="INTERRUPT CONTROL" value="true"/>
<property key="OUTPUT COMPARE 1" value="true"/>
<property key="OUTPUT COMPARE 2" value="true"/>
<property key="OUTPUT COMPARE 3" value="true"/>
<property key="OUTPUT COMPARE 4" value="true"/>
<property key="OUTPUT COMPARE 5" value="true"/>
<property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
<property key="REAL TIME CLOCK" value="true"/>
<property key="SPI 2" value="true"/>
<property key="SPI 3" value="true"/>
<property key="SPI 4" value="true"/>
<property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
<property key="TIMER1" value="true"/>
<property key="TIMER2" value="true"/>
<property key="TIMER3" value="true"/>
<property key="TIMER4" value="true"/>
<property key="TIMER5" value="true"/>
<property key="ToolFirmwareFilePath"
value="Press to browse for a specific firmware version"/>
<property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
<property key="UART1" value="true"/>
<property key="UART2" value="true"/>
<property key="UART3" value="true"/>
<property key="UART4" value="true"/>
<property key="UART5" value="true"/>
<property key="UART6" value="true"/>
<property key="USB" value="true"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="true"/>
<property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="false"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="1d000000-1d07ffff"/>
<property key="poweroptions.powerenable" value="false"/>
<property key="programoptions.donoteraseauxmem" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges" value=""/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value=""/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.preserveuserid" value="false"/>
<property key="programoptions.programcalmem" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
<property key="programoptions.usehighvoltageonmclr" value="false"/>
<property key="programoptions.uselvpprogramming" value="false"/>
<property key="voltagevalue" value="3.25"/>
</Tool>
</conf>
<conf name="ChaletDuinoV2_795F512H_" type="2">
<toolsSet>
@ -1113,7 +931,6 @@
</compileType>
<makeCustomizationType>
<makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
<makeUseCleanTarget>false</makeUseCleanTarget>
<makeCustomizationPreStep></makeCustomizationPreStep>
<makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
<makeCustomizationPostStep></makeCustomizationPostStep>
@ -1142,7 +959,6 @@
value="CHALETDUINO_V2_BRD;_SUPPRESS_PLIB_WARNING"/>
<property key="strict-ansi" value="false"/>
<property key="support-ansi" value="false"/>
<property key="tentative-definitions" value=""/>
<property key="toplevel-reordering" value=""/>
<property key="unaligned-access" value=""/>
<property key="use-cci" value="false"/>
@ -1174,7 +990,6 @@
</C32-AS>
<C32-CO>
<property key="coverage-enable" value=""/>
<property key="stack-guidance" value="false"/>
</C32-CO>
<C32-LD>
<property key="additional-options-use-response-files" value="false"/>
@ -1196,7 +1011,7 @@
<property key="generate-16-bit-code" value="false"/>
<property key="generate-cross-reference-file" value="false"/>
<property key="generate-micro-compressed-code" value="false"/>
<property key="heap-size" value="128"/>
<property key="heap-size" value="512"/>
<property key="input-libraries" value=""/>
<property key="kseg-length" value=""/>
<property key="kseg-origin" value=""/>
@ -1256,7 +1071,6 @@
<property key="omit-pack-options" value="1"/>
<property key="relaxed-math" value="false"/>
<property key="save-temps" value="false"/>
<property key="stack-smashing" value=""/>
<property key="wpo-lto" value="false"/>
</C32Global>
<ICD3PlatformTool>
@ -1305,8 +1119,6 @@
<property key="UART5" value="true"/>
<property key="UART6" value="true"/>
<property key="USB" value="true"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="true"/>
<property key="firmware.download.all" value="false"/>
<property key="hwtoolclock.frcindebug" value="false"/>
@ -1516,38 +1328,6 @@
<C32Global>
</C32Global>
</item>
<item path="Source/hd44780.c" ex="false" overriding="false">
<C32>
</C32>
<C32-AR>
</C32-AR>
<C32-AS>
</C32-AS>
<C32-CO>
</C32-CO>
<C32-LD>
</C32-LD>
<C32CPP>
</C32CPP>
<C32Global>
</C32Global>
</item>
<item path="Source/hd44780.h" ex="false" overriding="false">
<C32>
</C32>
<C32-AR>
</C32-AR>
<C32-AS>
</C32-AS>
<C32-CO>
</C32-CO>
<C32-LD>
</C32-LD>
<C32CPP>
</C32CPP>
<C32Global>
</C32Global>
</item>
<item path="Source/winc1500_config.h" ex="true" overriding="false">
<C32>
</C32>
@ -1580,87 +1360,6 @@
<C32Global>
</C32Global>
</item>
<Tool>
<property key="ADC 1" value="true"/>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="CAN1" value="true"/>
<property key="CAN2" value="true"/>
<property key="CHANGE NOTICE" value="true"/>
<property key="COMPARATOR" value="true"/>
<property key="DMA" value="true"/>
<property key="ETHERNET CONTROLLER" value="true"/>
<property key="Freeze All Other Peripherals" value="true"/>
<property key="I2C1" value="true"/>
<property key="I2C3" value="true"/>
<property key="I2C4" value="true"/>
<property key="I2C5" value="true"/>
<property key="INPUT CAPTURE 1" value="true"/>
<property key="INPUT CAPTURE 2" value="true"/>
<property key="INPUT CAPTURE 3" value="true"/>
<property key="INPUT CAPTURE 4" value="true"/>
<property key="INPUT CAPTURE 5" value="true"/>
<property key="INTERRUPT CONTROL" value="true"/>
<property key="OUTPUT COMPARE 1" value="true"/>
<property key="OUTPUT COMPARE 2" value="true"/>
<property key="OUTPUT COMPARE 3" value="true"/>
<property key="OUTPUT COMPARE 4" value="true"/>
<property key="OUTPUT COMPARE 5" value="true"/>
<property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
<property key="REAL TIME CLOCK" value="true"/>
<property key="SPI 2" value="true"/>
<property key="SPI 3" value="true"/>
<property key="SPI 4" value="true"/>
<property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
<property key="TIMER1" value="true"/>
<property key="TIMER2" value="true"/>
<property key="TIMER3" value="true"/>
<property key="TIMER4" value="true"/>
<property key="TIMER5" value="true"/>
<property key="ToolFirmwareFilePath"
value="Press to browse for a specific firmware version"/>
<property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
<property key="UART1" value="true"/>
<property key="UART2" value="true"/>
<property key="UART3" value="true"/>
<property key="UART4" value="true"/>
<property key="UART5" value="true"/>
<property key="UART6" value="true"/>
<property key="USB" value="true"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.useswbreakpoints" value="true"/>
<property key="firmware.download.all" value="false"/>
<property key="hwtoolclock.frcindebug" value="false"/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="false"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="1d000000-1d07ffff"/>
<property key="poweroptions.powerenable" value="false"/>
<property key="programoptions.donoteraseauxmem" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges" value=""/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value=""/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.preserveuserid" value="false"/>
<property key="programoptions.programcalmem" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
<property key="programoptions.usehighvoltageonmclr" value="false"/>
<property key="programoptions.uselvpprogramming" value="false"/>
<property key="voltagevalue" value="3.25"/>
</Tool>
<item path="procdefs.ld" ex="true" overriding="false">
<C32>
</C32>

View File

@ -5,7 +5,7 @@
<confs>
<conf name="default" type="2">
<platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>9009:=&lt;rev>0100:=&lt;man>Microchip Technology, Inc. (www.microchip.com):=&lt;prod>MPLAB ICD3 tm (www.microchip.com):=&lt;sn>JIT100737989:=&lt;drv>x:=&lt;xpt>b:=end</platformToolSN>
<languageToolchainDir>C:\Program Files\Microchip\xc32\v1.33\bin</languageToolchainDir>
<languageToolchainDir>C:\Program Files\Microchip\xc32\v2.41\bin</languageToolchainDir>
<mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1>
<placeholder2>place holder 2</placeholder2>

View File

@ -1,6 +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="11">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="5">
<file>
<url>Source/BootloaderInterface.c</url>
<bookmark id="5">
@ -14,41 +14,8 @@
<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="11">
<name/>
<line>119</line>
<key/>
</bookmark>
<bookmark id="10">
<name/>
<line>201</line>
<key/>
</bookmark>
<bookmark id="8">
<name/>
<line>443</line>
<key/>
</bookmark>
<bookmark id="9">
<name/>
<line>560</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>
</group>
<group/>
</open-files>
</project-private>