This commit is contained in:
jfmartel 2022-12-20 13:05:34 -05:00
parent 97cda8657d
commit 4ed2dbbca4
19 changed files with 9799 additions and 9771 deletions

View File

@ -64,24 +64,24 @@ int InitBoard()
//////////////// INVERTER RELAY //////////////////
//Chalet inverter power relay
POWER_RELAY_ON_PIN_DIR = PIN_OUTPUT;
POWER_RELAY_OFF_PIN_DIR = PIN_OUTPUT;
POWER_RELAY_ON_PIN = 0;
POWER_RELAY_OFF_PIN = 0;
// POWER_RELAY_ON_PIN_DIR = PIN_OUTPUT;
// POWER_RELAY_OFF_PIN_DIR = PIN_OUTPUT;
// POWER_RELAY_ON_PIN = 0;
// POWER_RELAY_OFF_PIN = 0;
//////////////// HARAKIRI RELAY //////////////////
//Harakiri relay
HARAKIRI_RELAY_ON_PIN_DIR = PIN_OUTPUT;
HARAKIRI_RELAY_ON_PIN= 0;
//12V presence detection input
CHALET_12V_PRESENCE_PIN_DIR = PIN_INPUT;
//////////////// BATTERY MONITOR //////////////////
//Battery voltage measurement (analog input)
BATTERY_VOLTAGE_ANALOG_PIN_DIR = PIN_INPUT;
// //Harakiri relay
// HARAKIRI_RELAY_ON_PIN_DIR = PIN_OUTPUT;
// HARAKIRI_RELAY_ON_PIN= 0;
//
// //12V presence detection input
// CHALET_12V_PRESENCE_PIN_DIR = PIN_INPUT;
//
//
// //////////////// BATTERY MONITOR //////////////////
// //Battery voltage measurement (analog input)
// BATTERY_VOLTAGE_ANALOG_PIN_DIR = PIN_INPUT;
//ADC Config
@ -105,23 +105,23 @@ int InitBoard()
//////////////// TEMPERATURE SENSOR //////////////////
//Onboard temperature sensor (SPI)
TEMP_SENSOR_CS_PIN_DIR = PIN_OUTPUT;
TEMP_SENSOR_CS_PIN = 1;
TEMP_SENSOR_SPI_SDO_PIN_DIR = PIN_OUTPUT;
TEMP_SENSOR_SPI_SDI_PIN_DIR = PIN_INPUT;
TEMP_SENSOR_SPI_SCK_PIN_DIR = PIN_OUTPUT;
SPI3CON = 0;
SPI3CONbits.MSTEN = 1;
SPI3CONbits.CKE = 1;
SPI3CONbits.SMP = 0;
SPI3CONbits.CKP = 0;
SPI3BRG = SPICalculateBRG(PERIPHERAL_FREQ, 1000000);
SPI3CONbits.ON = 1;
// TEMP_SENSOR_CS_PIN_DIR = PIN_OUTPUT;
// TEMP_SENSOR_CS_PIN = 1;
// TEMP_SENSOR_SPI_SDO_PIN_DIR = PIN_OUTPUT;
// TEMP_SENSOR_SPI_SDI_PIN_DIR = PIN_INPUT;
// TEMP_SENSOR_SPI_SCK_PIN_DIR = PIN_OUTPUT;
// SPI3CON = 0;
// SPI3CONbits.MSTEN = 1;
// SPI3CONbits.CKE = 1;
// SPI3CONbits.SMP = 0;
// SPI3CONbits.CKP = 0;
// SPI3BRG = SPICalculateBRG(PERIPHERAL_FREQ, 1000000);
// SPI3CONbits.ON = 1;
//////////////// CURRENT SENSOR //////////////////
//Analog (Hall effect) current sensor
CURRENT_SENSOR_IN1_PIN_DIR = PIN_INPUT; //AN2
CURRENT_SENSOR_IN2_PIN_DIR = PIN_INPUT; //AN0
// CURRENT_SENSOR_IN1_PIN_DIR = PIN_INPUT; //AN2
// CURRENT_SENSOR_IN2_PIN_DIR = PIN_INPUT; //AN0
//TODO
// AD1CHS = 0;
@ -133,36 +133,36 @@ int InitBoard()
//////////////// LORA //////////////////
LORA_MODULE_RELAY_PIN_DIR = PIN_OUTPUT;
LORA_MODULE_RELAY_PIN = 0;
// LORA_MODULE_M0_PIN_DIR = PIN_INPUT;
// LORA_MODULE_M0_PIN = 0;
// LORA_MODULE_M1_PIN_DIR = PIN_INPUT;
// LORA_MODULE_M1_PIN = 0;
LORA_MODULE_INT_PIN_DIR = PIN_INPUT;
LORA_MODULE_RX_LED_PIN_DIR = PIN_OUTPUT;
LORA_MODULE_RX_LED_PIN = LED_OFF;
LORA_MODULE_TX_LED_PIN_DIR = PIN_OUTPUT;
LORA_MODULE_TX_LED_PIN = LED_OFF;
// LORA_MODULE_RELAY_PIN_DIR = PIN_OUTPUT;
// LORA_MODULE_RELAY_PIN = 0;
//// LORA_MODULE_M0_PIN_DIR = PIN_INPUT;
//// LORA_MODULE_M0_PIN = 0;
//// LORA_MODULE_M1_PIN_DIR = PIN_INPUT;
//// LORA_MODULE_M1_PIN = 0;
// LORA_MODULE_INT_PIN_DIR = PIN_INPUT;
// LORA_MODULE_RX_LED_PIN_DIR = PIN_OUTPUT;
// LORA_MODULE_RX_LED_PIN = LED_OFF;
// LORA_MODULE_TX_LED_PIN_DIR = PIN_OUTPUT;
// LORA_MODULE_TX_LED_PIN = LED_OFF;
//////////////// LCD SCREEN //////////////////
//LCD Screen
LCD_RS_PIN_DIR = PIN_OUTPUT;
LCD_RS_PIN = 0;
LCD_RW_PIN_DIR = PIN_OUTPUT;
LCD_RW_PIN = 0;
LCD_E_PIN_DIR = PIN_OUTPUT;
LCD_E_PIN = 0;
LCD_DB4_PIN_DIR = PIN_OUTPUT;
LCD_DB4_PIN = 0;
LCD_DB5_PIN_DIR = PIN_OUTPUT;
LCD_DB5_PIN = 0;
LCD_DB6_PIN_DIR = PIN_OUTPUT;
LCD_DB6_PIN = 0;
LCD_DB7_PIN_DIR = PIN_OUTPUT;
LCD_DB7_PIN = 0;
LCD_SCROLL_BTN_PIN_DIR = PIN_INPUT;
// LCD_RS_PIN_DIR = PIN_OUTPUT;
// LCD_RS_PIN = 0;
// LCD_RW_PIN_DIR = PIN_OUTPUT;
// LCD_RW_PIN = 0;
// LCD_E_PIN_DIR = PIN_OUTPUT;
// LCD_E_PIN = 0;
// LCD_DB4_PIN_DIR = PIN_OUTPUT;
// LCD_DB4_PIN = 0;
// LCD_DB5_PIN_DIR = PIN_OUTPUT;
// LCD_DB5_PIN = 0;
// LCD_DB6_PIN_DIR = PIN_OUTPUT;
// LCD_DB6_PIN = 0;
// LCD_DB7_PIN_DIR = PIN_OUTPUT;
// LCD_DB7_PIN = 0;
//
// LCD_SCROLL_BTN_PIN_DIR = PIN_INPUT;
@ -203,7 +203,7 @@ int InitBoard()
// OC3CONbits.ON = 1;
RTCCONbits.ON = 1;
// RTCCONbits.ON = 1;
return RET_OK;
}

View File

@ -46,25 +46,26 @@ void process(void);
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 = 0; //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 = 0; //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
U1STAbits.UTXEN = 1; //enable receiver
U1MODEbits.ON = 0; //disable module
//Setup port 2
//
@ -335,16 +336,39 @@ int SendInternalUartDataBlocking(char *p_pcDataBuf, int p_iDataSize, int p_iUart
{
int i;
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;
switch(p_iUartPort)
{
case INTERNAL_UART_PORT_1:
{
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:
{
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;
}
}
return UART_OK;
}
@ -409,6 +433,8 @@ void TickInternalUart(void)
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void __ISR(_UART_1_VECTOR, ipl7) InternalUart1AInterrupt(void)
{
@ -539,10 +565,10 @@ void ResetUart1(void)
IEC0bits.U1TXIE = 0; //disable tx interrupt
IFS0bits.U1TXIF = 0; //clear interrupt flag
IEC0bits.U1TXIE = 1; //enable tx interrupt
IEC0bits.U1TXIE = 0; //enable tx interrupt
IEC0bits.U1RXIE = 0; //disable rx interrupts
IEC0bits.U1RXIE = 0; //disable rx interrupts
IFS0bits.U1RXIF = 0;
IFS0bits.U1RXIF = 1;
#ifdef POLL_UART1_RX
IEC0bits.U1RXIE = 0; //disable rx interrupts
#else

View File

@ -34,8 +34,8 @@
#define INTERNAL_UART_BUFFER_DEPTH 1//4//16 //JFM 2012-08-27
#define USE_TX_INTERNAL_BUFFER
#define INTERNAL_UART1_TX_PIN_DIR TRISFbits.TRISF3
#define INTERNAL_UART1_TX_PIN LATFbits.LATF3
#define INTERNAL_UART1_TX_PIN_DIR TRISDbits.TRISD3
#define INTERNAL_UART1_TX_PIN LATDbits.LATD3
#define INTERNAL_UART2_TX_PIN_DIR TRISFbits.TRISF5
#define INTERNAL_UART2_TX_PIN LATFbits.LATF5

View File

@ -0,0 +1,14 @@
//#include <proc/p32mx440f256h.h>
#include "LoraInterface.h"
#include "BoardCfg.h"
#include "timer.h"
short mModuleModel;
int InitLoraInterface()
{
mModuleModel = LORA_MODULE_MODEL;
return RET_OK;
}

View File

@ -0,0 +1,27 @@
/*
* File:
* Author: JF
*
* Created on November 30, 2018, 7:33 PM
*/
#ifndef LORA_INTERFACE_H
#define LORA_INTERFACE_H
#include "define.h"
enum eLoraModuleModel
{
LORA_MODULE_E32_MODEL = 32,
LORA_MODULE_E220_MODEL = 220,
LORA_MODULE_MAX_MODEL
};
#define LORA_MODULE_MODEL LORA_MODULE_E220_MODEL
int InitLoraInterface();
#endif /* LORA_MODULE_H */

View File

@ -1,300 +0,0 @@
#include "LoraNetworkInterface.h"
#include "ProtocolDefs.h"
#include "NetworkProtocol.h"
#include "InternalUart.h"
#include "define.h"
#include "BoardCfg.h"
#include "Uart.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 "WiFiCtrl.h"
//
//enum eWiFiState
//{
// WIFI_MODULE_OFF_STATE = 0,
// WIFI_CONNECTED_STATE,
// WIFI_DISCONNECTED_STATE,
// WIFI_INIT_ERROR_STATE,
// WIFI_UNKNOWN_STATE
//};
unsigned char mLoraPreamble[3]={0x00,LORA_MASTER_ADDRESS,LORA_CHANNEL};
static const char mFirmwareVersion[15] = VERSIONNUMBER;
unsigned int mTotalMasterNbRequests = 0;
void ExecuteMasterCommand(int Command, unsigned char *Data, int DataSize)
{
//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:
{
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 = 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);
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
break;
}
case CHALET_AC_POWER_STATE_STATUS_REQUEST:
{
char PowerStatus = GetChaletPowerRelayState();
SendLoraNetworkCommand(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;
}
SendLoraNetworkCommand(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);
SendLoraNetworkCommand(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;
}
SendLoraNetworkCommand(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)
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
HarakiriRelayTurnOff();
}
else
{
response = 0x00;
SendLoraNetworkCommand(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)
SendLoraNetworkCommandBlocking(CHALET_REBOOT_CPU_RESPONSE,&response,1);
Sleep(100);
TurnOFFWiFi();
Sleep(100);
SoftReset();
}
else
{
response = 0x00;
SendLoraNetworkCommand(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);
SendLoraNetworkCommand(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;
}
SendLoraNetworkCommand(CHALET_SET_STORED_WIFI_SETTINGS_RESPONSE,&response,1);
break;
}
case CHALET_GET_FIRMWARE_VERSION_REQUEST:
{
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;
}
}
}
void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize)
{
unsigned char *Payload;
unsigned int PayloadSize;
//unsigned char DestDevice,unsigned char DestAddress, unsigned char SenderDevice, unsigned char Cmd, unsigned char *Data,unsigned int Size,unsigned char Flags, int *FrameSize)
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_CHALET_DEVICE,Command,Data,DataSize,0,&PayloadSize);
UartTransmitData(NETWORK_UART_PORT,mLoraPreamble,3);
UartTransmitData(NETWORK_UART_PORT,Payload,PayloadSize);
}
void SendLoraNetworkCommandBlocking(int Command, unsigned char *Data, unsigned int DataSize)
{
unsigned char *Payload;
unsigned int PayloadSize;
//unsigned char DestDevice,unsigned char DestAddress, unsigned char SenderDevice, unsigned char Cmd, unsigned char *Data,unsigned int Size,unsigned char Flags, int *FrameSize)
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_CHALET_DEVICE,Command,Data,DataSize,0,&PayloadSize);
SendInternalUartDataBlocking(mLoraPreamble,3,NETWORK_UART_PORT);
SendInternalUartDataBlocking(Payload,PayloadSize,NETWORK_UART_PORT);
}
void TestTx()
{
char toto = 0x03;
SendInternalUartDataBlocking(mLoraPreamble,3,NETWORK_UART_PORT);
}

View File

@ -0,0 +1,93 @@
#include "NetworkInterface.h"
#include "ProtocolDefs.h"
#include "NetworkProtocol.h"
#include "InternalUart.h"
#include "define.h"
#include "BoardCfg.h"
#include "Uart.h"
#include "SPI_Flash.h"
#include "FlashMapping.h"
#include "versionbuild.h"
#include "WiFiCtrl.h"
#include "LoraInterface.h"
//
//enum eWiFiState
//{
// WIFI_MODULE_OFF_STATE = 0,
// WIFI_CONNECTED_STATE,
// WIFI_DISCONNECTED_STATE,
// WIFI_INIT_ERROR_STATE,
// WIFI_UNKNOWN_STATE
//};
unsigned char mLoraPreamble[3]={0x00,LORA_MASTER_ADDRESS,LORA_CHANNEL};
static const char mFirmwareVersion[15] = VERSIONNUMBER;
unsigned int mTotalMasterNbRequests = 0;
void ExecuteMasterCommand(int Command, unsigned char *Data, int DataSize)
{
//Whatever was the command, we are online...
LORA_MODULE_RX_LED_PIN = LED_OFF;
// KickLoraWatchdog();
// printf("EXEC\n\n");
// ChaletPowerRelayKickTimer();
mTotalMasterNbRequests++;
switch(Command)
{
case LORA_IF_GET_STATUS_REQUEST:
{
char ModuleModel = LORA_MODULE_MODEL;
SendNetworkCommand(LORA_IF_GET_STATUS_RESPONSE,&ModuleModel,1);
break;
}
case LORA_IF_SEND_FRAME_REQUEST:
{
break;
}
case LORA_IF_GET_MODULE_CONFIG_REQUEST:
{
break;
}
case LORA_IF_GET_RSSI_REQUEST:
{
break;
}
case LORA_IF_SET_MODULE_CONFIG_REQUEST:
{
break;
}
case LORA_IF_SET_MODULE_CONFIG_RESPONSE:
case LORA_IF_GET_RSSI_RESPONSE:
case LORA_IF_GET_MODULE_CONFIG_RESPONSE:
case LORA_IF_NEW_FRAME_RESPONSE:
case LORA_IF_SEND_FRAME_RESPONSE:
case LORA_IF_GET_STATUS_RESPONSE:
{
break;
}
}
}
void SendNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize)
{
unsigned char *Payload;
unsigned int PayloadSize;
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_LORA_INTERFACE,Command,Data,DataSize,0,&PayloadSize);
UartTransmitData(NETWORK_UART_PORT,Payload,PayloadSize);
}
void SendNetworkCommandBlocking(int Command, unsigned char *Data, unsigned int DataSize)
{
unsigned char *Payload;
unsigned int PayloadSize;
//unsigned char DestDevice,unsigned char DestAddress, unsigned char SenderDevice, unsigned char Cmd, unsigned char *Data,unsigned int Size,unsigned char Flags, int *FrameSize)
Payload = ProtocolGetFrame(ID_MASTER,MASTER_ADDRESS,ID_LORA_INTERFACE,Command,Data,DataSize,0,&PayloadSize);
SendInternalUartDataBlocking(Payload,PayloadSize,NETWORK_UART_PORT);
}

View File

@ -9,9 +9,8 @@
#define LORA_CHALET_STATUS_CUR_SENSOR_MASK 0x02
void ExecuteMasterCommand(int Command, unsigned char *Data, int DataSize);
void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
void SendLoraNetworkCommandBlocking(int Command, unsigned char *Data, unsigned int DataSize); //USE WITH CARE
void SendNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
void SendNetworkCommandBlocking(int Command, unsigned char *Data, unsigned int DataSize); //USE WITH CARE
void TestTx();
#endif /* LORANEETWORKINTERFACE_H */

View File

@ -17,7 +17,7 @@ jean-francois.martel@polymtl.ca
#include <string.h>
#include "ProtocolDefs.h"
#include "MasterCtrlInterface.h"
#include "LoraNetworkInterface.h"
#include "NetworkInterface.h"
@ -36,7 +36,7 @@ unsigned char Flags = 0;
unsigned char IsUpdating = 0;
unsigned char *BmpDataPtr = 0;
static char MyDeviceID = ID_SPRINKLER_DEVICE;
static char MyDeviceID = ID_LORA_INTERFACE;
void ProtocolInit(void)
{
@ -204,7 +204,7 @@ void StateMachine(unsigned char Data)
break;
}
// NewMasterMessageReceived(mRxData);
// ExecuteMasterCommand(Command,ProtocolMsgDataPtr(),DataSize); //JFM TODO map to lora interface protocol
ExecuteMasterCommand(Command,ProtocolMsgDataPtr(),DataSize); //JFM TODO map to lora interface protocol
ResetStateMachine();
break;
}

View File

@ -68,6 +68,7 @@ enum DEVICES_IDS
ID_CHALET_INTERFACE,
ID_CHALET_DEVICE,
ID_BOOTLOADER_VIRTUAL,
ID_LORA_INTERFACE,
ID_NB_DEVICE_ID
};
@ -341,4 +342,37 @@ enum BOOTLOADER_CMDS
MAX_BOOTLOADER_CMD
};
enum ISPINDLE_CMDS
{
ISPINDLE_ACK = 1,
ISPINDLE_LATEST_DATA_REQUEST,
ISPINDLE_LATEST_DATA_RESPONSE,
ISPINDEL_GET_FULL_DATA_BUFFER_REQUEST,
ISPINDEL_GET_FULL_DATA_BUFFER_RESPONSE,
ISPINDEL_DELETE_SAMPLE_REQUEST,
ISPINDEL_DELETE_SAMPLE_RESPONSE,
MAX_ISPINDLE_CMDS
};
enum LORA_INTERFACE_CMDS
{
LORA_IF_ACK = 1,
LORA_IF_GET_STATUS_REQUEST,
LORA_IF_GET_STATUS_RESPONSE,
LORA_IF_SEND_FRAME_REQUEST,
LORA_IF_SEND_FRAME_RESPONSE,
LORA_IF_NEW_FRAME_RESPONSE,
LORA_IF_GET_MODULE_CONFIG_REQUEST,
LORA_IF_GET_MODULE_CONFIG_RESPONSE,
LORA_IF_GET_RSSI_REQUEST,
LORA_IF_GET_RSSI_RESPONSE,
LORA_IF_SET_MODULE_CONFIG_REQUEST,
LORA_IF_SET_MODULE_CONFIG_RESPONSE,
MAX_LORA_IF_CMD
};
#endif

View File

@ -84,10 +84,10 @@ void InitUart(void)
//DO NOT CHANGE assignments unless hardware changed !
//
astUartData[UART_1].iIsInternal = 1;
astUartData[UART_1].iPhysicalUartPort = INTERNAL_UART_PORT_2; // (232)
astUartData[UART_1].iPhysicalUartPort = INTERNAL_UART_PORT_1; // (232)
// astUartData[UART_2].iIsInternal = 1;
//astUartData[UART_2].iPhysicalUartPort = INTERNAL_UART_PORT_2; // (232)
astUartData[UART_2].iIsInternal = 1;
astUartData[UART_2].iPhysicalUartPort = INTERNAL_UART_PORT_2; // (232)
#ifndef NO_EXTERNAL_UART
astUartData[UART_3].iIsInternal = 0;

View File

@ -39,7 +39,7 @@
enum eUartHandles
{
UART_1, //(232) Uart 1 - Drive
//UART_2, //(232) Uart 2 - CU
UART_2, //(232) Uart 2 - CU
//UART_3, // !!!EXTERNAL!!! SPI daughter board...
MAX_UART_HANDLE,

View File

@ -102,7 +102,7 @@ int main(void)
InitUart();
ProtocolInit();
InitLoraWatchdog();
// InitLoraWatchdog();
InitSPIFlash();
// InitLCDCtrl();
@ -206,7 +206,7 @@ int main(void)
SyslogTick();
// TickTempSensor();
BootloaderInterfaceTick();
TickLoraWatchdog();
// TickLoraWatchdog();
// TickLCDCtrl();
if(IsTimerExpired(HEARTBEAT_LED_TMR))

View File

@ -1,5 +1,5 @@
#
#Mon Nov 14 20:13:56 EST 2022
#Sat Dec 10 13:17:03 EST 2022
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
@ -7,7 +7,7 @@ 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=c50db0e3814d46f502a1f0c04bef1888
configurations-xml=7fe326836e087d7e7a43d49678835784
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

View File

@ -78,7 +78,6 @@
<itemPath>Source/versionbuild.h</itemPath>
<itemPath>Source/winc1500_config.h</itemPath>
<itemPath>Source/WiFiCtrl.h</itemPath>
<itemPath>Source/LoraNetworkInterface.h</itemPath>
<itemPath>Source/ChaletPowerRelay.h</itemPath>
<itemPath>Source/HarakiriRelay.h</itemPath>
<itemPath>Source/BatteryMonitor.h</itemPath>
@ -96,6 +95,8 @@
<itemPath>Source/LoraWatchdog.h</itemPath>
<itemPath>Source/hd44780.h</itemPath>
<itemPath>Source/LCDCtrl.h</itemPath>
<itemPath>Source/LoraInterface.h</itemPath>
<itemPath>Source/NetworkInterface.h</itemPath>
</logicalFolder>
<logicalFolder name="LinkerScript"
displayName="Linker Files"
@ -174,7 +175,6 @@
<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>
@ -191,6 +191,8 @@
<itemPath>Source/LoraWatchdog.c</itemPath>
<itemPath>Source/hd44780.c</itemPath>
<itemPath>Source/LCDCtrl.c</itemPath>
<itemPath>Source/LoraInterface.c</itemPath>
<itemPath>Source/NetworkInterface.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
@ -1237,6 +1239,20 @@
</C32Global>
</item>
<item path="Source/ChaletPowerRelay.c" ex="true" 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/ChaletduinoBoard.c" ex="true" overriding="false">
<C32>
@ -1271,10 +1287,52 @@
</C32Global>
</item>
<item path="Source/HarakiriRelay.c" ex="true" 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/LCDCtrl.c" ex="true" 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/LoraNetworkInterface.c" ex="true" overriding="false">
<item path="Source/LoraWatchdog.c" ex="true" 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/MasterCtrlInterface.c" ex="true" overriding="false">
<C32>
@ -1292,6 +1350,22 @@
<C32Global>
</C32Global>
</item>
<item path="Source/NetworkInterface.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/NetworkProtocol.c" ex="false" overriding="false">
<C32>
</C32>
@ -1325,8 +1399,36 @@
</C32Global>
</item>
<item path="Source/TC77.c" ex="true" 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/TemperatureSensor.c" ex="true" 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/Terminal.c" ex="false" overriding="false">
<C32>
@ -1377,6 +1479,20 @@
</C32Global>
</item>
<item path="Source/ina219.c" ex="true" 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>

View File

@ -25,15 +25,13 @@
</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/BootloaderInterface.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/ProtocolDefs.h</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/SPI_Flash.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BootloaderInterface.h</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BootloaderProtocol.h</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/LCDCtrl.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/BatteryMonitor.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/WiFiCtrl.h</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/versionbuild.h</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/LoraInterface.h</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/ProtocolDefs.h</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/NetworkProtocol.c</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/NetworkInterface.h</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/LoraInterface.c</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/NetworkProtocol.h</file>
<file>file:/D:/Main/PicDev/Projets/LoraInterface/LoraInterface.X/Source/NetworkInterface.c</file>
</group>
</open-files>
</project-private>