Début bootloader, Temperature sensor et autre gossage

This commit is contained in:
jfmartel 2021-06-29 10:09:04 -04:00
parent 3efc0d7692
commit e28b725a8b
37 changed files with 17652 additions and 9537 deletions

View File

@ -84,11 +84,11 @@ void BatteryMonitorTick()
}
}
if(NetworkSendCounter++ == 10)
{
NetworkSendCounter = 0;
SendNetworkBatteryData();
}
// if(NetworkSendCounter++ == 10)
// {
// NetworkSendCounter = 0;
// SendNetworkBatteryData();
// }
}
}
@ -115,19 +115,20 @@ int GetBatterySOC()
int SendNetworkBatteryData()
{
int VoltageMilliVolts = (int)(mBatteryVoltage * 1000);
int BattCurrent = mBatteryCurrent;
char BatData[10];
BatData[0] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 1
VoltageMilliVolts >>= 8;
BatData[1] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 2
BatData[2] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 1
BattCurrent >>= 8;
BatData[3] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 2
SendNetworkData(BatData,4);
// int VoltageMilliVolts = (int)(mBatteryVoltage * 1000);
// int BattCurrent = mBatteryCurrent;
//
// char BatData[10];
// BatData[0] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 1
// VoltageMilliVolts >>= 8;
// BatData[1] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 2
// BatData[2] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 1
// BattCurrent >>= 8;
// BatData[3] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 2
//
// SendNetworkData(BatData,4);
printf("Battery voltage: %f\n",mBatteryVoltage);
}

View File

@ -123,7 +123,7 @@ extern "C" {
//LoRa
#define LORA_MODULE_RELAY_PIN_DIR TRISDbits.TRISD11
#define LORA_MODULE_RELAY_PIN LATDbits.LATD11
#define LORA_MODULE_M0_PIN_DIR TRISEbits.TRISE7
#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
@ -150,8 +150,8 @@ extern "C" {
#define LCD_DB7_PIN_DIR TRISBbits.TRISB11
#define LCD_DB7_PIN LATBbits.LATB11
#define LCD_SCROLL_BTN_PIN_DIR TRISCbits.TRISC13
#define LCD_SCROLL_BTN_PIN PORTCbits.PORTC13
//#define LCD_SCROLL_BTN_PIN_DIR TRISCbits.TRISC13
//#define LCD_SCROLL_BTN_PIN PORTCbits.PORTC13
/* ************************************************************************** */
/* Prototypes */

View File

@ -0,0 +1,373 @@
//#include <proc/p32mx440f256h.h>
#include "BootloaderInterface.h"
#include "BootloaderProtocol.h"
#include "ProtocolDefs.h"
#include "BoardCfg.h"
#include "timer.h"
#include "WiFiCtrl.h"
char BootloaderBuffer[200];
int BootloaderInterfaceState;
int BootloaderFlashErased;
int ReadyToReceiveData;
int DataChunkWritten;
int CurDataChunkIndex;
int FirmwareUploaded;
int BootloaderInterfaceInit()
{
BootloaderProtocolInit();
BootloaderResetStateMachine();
return 1;
}
void BootloaderInterfaceTick()
{
BootloaderIterfaceStateMachine(BOOTLOADER_TICK_EVENT,0);
}
void BootloaderExecuteCmd(char Cmd)
{
unsigned char *DataBufPtr = BootloaderProtocolGetDataBufferPtr();
switch(Cmd)
{
case BOOTLOADER_HEARTBEAT_REQUEST:
{
printf("Bootloader Heartbeat Request\n");
*DataBufPtr = 1;
BootloaderProtocolSendFrame(BOOTLOADER_HEARTBEAT_RESPONSE,1);
break;
}
case BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST:
{
printf("BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST\n");
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ERASE_FLASH_CMD);
break;
}
case BOOTLOADER_INIT_UPLOAD_REQUEST:
{
printf("BOOTLOADER_INIT_UPLOAD_REQUEST\n");
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INIT_UPLOAD_CMD);
break;
}
case BOOTLOADER_GET_STATE_REQUEST:
{
printf("BOOTLOADER_GET_STATE_REQUEST\n");
*DataBufPtr = (char)BootloaderInterfaceState;
BootloaderProtocolSendFrame(BOOTLOADER_GET_STATE_RESPONSE,1);
break;
}
case BOOTLOADER_SEND_DATA_CHUNK_REQUEST:
{
printf("BOOTLOADER_SEND_DATA_CHUNK_REQUEST\n");
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
break;
}
case BOOTLOADER_UPLOAD_FINISHED_REQUEST:
{
printf("BOOTLOADER_UPLOAD_FINISHED_REQUEST\n");
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_UPLOAD_FINISHED_CMD);
break;
}
case BOOTLOADER_EXECUTE_UPGRAGE_REQUEST:
{
printf("BOOTLOADER_EXECUTE_UPGRAGE_REQUEST\n");
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD);
break;
}
case BOOTLOADER_ABORT_OPERATION_REQUEST:
{
printf("BOOTLOADER_ABORT_OPERATION_REQUEST\n");
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ABORT_CMD);
}
default:
{
break;
}
}
}
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC)
{
printf("BootloaderProtocol detected a CRC error. Cmd: %d, RxCRC:0x%x, Expected:[0x%x]\n",Cmd,RxCRC,ExpectedCRC);
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INVALID_CRC_CMD);
}
void BootloaderIterfaceStateMachine(int Event, int Param)
{
switch(BootloaderInterfaceState)
{
case BOOTLOADER_STANDBY_STATE:
{
switch(Event)
{
case BOOTLOADER_TICK_EVENT:
{
break;
}
case BOOTLOADER_NEW_CMD_EVENT:
{
if(Param == BOOTLOADER_SM_ACTIVATE_CMD)
{
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
printf("Bootloader Interface going into active state\n");
}
break;
}
case BOOTLOADER_TIMEOUT_EVENT:
{
break;
}
}
break;
}
case BOOTLOADER_ACTIVE_STATE:
{
switch(Event)
{
case BOOTLOADER_TICK_EVENT:
{
break;
}
case BOOTLOADER_NEW_CMD_EVENT:
{
switch(Param)
{
case BOOTLOADER_SM_ERASE_FLASH_CMD:
{
//TODO: Start flash erase process
BootloaderProtocolSendACK(BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST);
BootloaderInterfaceState = BOOTLOADER_ERASE_FLASH_STATE;
printf("Bootloader Interface going into Erase Flash state\n");
break;
}
case BOOTLOADER_SM_INIT_UPLOAD_CMD:
{
BootloaderProtocolSendInitUploadResponse();
BootloaderInterfaceState = BOOTLOADER_RECEIVING_FIRMWARE_STATE;
printf("Bootloader Interface going into Firmware RX state\n");
ReadyToReceiveData = 1; //TODO: Manage this flag in flash SM
break;
}
case BOOTLOADER_SM_ABORT_CMD:
{
//TODO invalidate data in Flash
printf("Aborting upload, going into STANDBY mode\n");
BootloaderResetStateMachine();
break;
}
}
default:
{
//SEND NACK
}
break;
}
case BOOTLOADER_TIMEOUT_EVENT:
{
break;
}
}
break;
}
case BOOTLOADER_ERASE_FLASH_STATE:
{
switch(Event)
{
case BOOTLOADER_TICK_EVENT:
{
//TODO: Check flash erase operation.
BootloaderFlashErased = 1;
printf("Flash erase finished. Bootloader Interface going into Active state\n");
BootloaderProtocolSendACK(BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE); //TODO: send result instead
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
break;
}
case BOOTLOADER_NEW_CMD_EVENT:
{
switch(Param)
{
case BOOTLOADER_SM_ABORT_CMD:
{
//TODO: stop erasing and reset SM.
//TODO invalidate data in Flash
printf("Aborting upload, going into STANDBY mode\n");
BootloaderResetStateMachine();
break;
}
}
break;
}
case BOOTLOADER_TIMEOUT_EVENT:
{
break;
}
}
break;
}
case BOOTLOADER_RECEIVING_FIRMWARE_STATE:
{
switch(Event)
{
case BOOTLOADER_TICK_EVENT:
{
//TODO: Manage flash writing process
if(ReadyToReceiveData == 1) //TODO: replace this with flash SM result
{
ReadyToReceiveData = 0;
printf("Bootloader Interface ready to receive data\n");
BootloaderProtocolSendACK(BOOTLOADER_READY_FOR_DATA_RESPONSE);
}
if(DataChunkWritten == 1)
{
DataChunkWritten = 0;
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_SUCCESS,CurDataChunkIndex);
CurDataChunkIndex++;
}
break;
}
case BOOTLOADER_NEW_CMD_EVENT:
{
switch(Param)
{
case BOOTLOADER_SM_NEW_DATA_CHUNK_CMD:
{
//TODO:Check data validity
//TODO: Write data to flash
//Extract index from buffer
int DataChunkIndex = 0;
int DataChunkSize = 0;
DataChunkIndex = BootloaderBuffer[0];
DataChunkIndex <<= 8;
DataChunkIndex += BootloaderBuffer[1];
DataChunkIndex <<= 8;
DataChunkIndex += BootloaderBuffer[2];
DataChunkIndex <<= 8;
DataChunkIndex += BootloaderBuffer[3];
DataChunkSize = BootloaderBuffer[4];
DataChunkSize <<= 8;
DataChunkSize += BootloaderBuffer[5];
DataChunkSize <<= 8;
DataChunkSize += BootloaderBuffer[6];
DataChunkSize <<= 8;
DataChunkSize += BootloaderBuffer[7];
//Check CRC
//if(CurDataChunkIndex != DataChunkIndex)
if(0)
{
//Error... abort.
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_INVALID_CHUNK_INDEX,CurDataChunkIndex);
printf("Bootloader Interface ABORTING UPLOAD. Received invalid chunk index. Rx: [%d] - Expected: [%d]\n", DataChunkIndex,CurDataChunkIndex);
BootloaderResetStateMachine();
}
DataChunkWritten = 1; //For debug only.
break;
}
case BOOTLOADER_SM_INVALID_CRC_CMD:
{
//BootloaderProtocol determined the CRC of the chunk was invalid.
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND,CurDataChunkIndex);
printf("Bootloader Interface invalid chunk CRC. Requesting resend chunk index [%d]\n", CurDataChunkIndex);
}
case BOOTLOADER_SM_UPLOAD_FINISHED_CMD:
{
printf("Bootloader Interface firmware upload finished. Going into active state.\n");
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
FirmwareUploaded = 1;
}
case BOOTLOADER_SM_ABORT_CMD:
{
//TODO invalidate data in Flash
printf("Aborting upload, going into STANDBY mode\n");
BootloaderResetStateMachine();
break;
}
default:
{
//WHAT TO DO???
break;
}
}
break;
}
case BOOTLOADER_TIMEOUT_EVENT:
{
break;
}
}
break;
}
case BOOTLOADER_SENDING_FIRMWARE_COPY_STATE:
{
switch(Event)
{
case BOOTLOADER_TICK_EVENT:
{
break;
}
case BOOTLOADER_NEW_CMD_EVENT:
{
switch(Param)
{
case BOOTLOADER_SM_ABORT_CMD:
{
//TODO invalidate data in Flash
printf("Aborting upload, going into STANDBY mode\n");
BootloaderResetStateMachine();
break;
}
}
break;
}
case BOOTLOADER_TIMEOUT_EVENT:
{
break;
}
}
break;
}
}
}
void BootloaderResetStateMachine()
{
BootloaderInterfaceState = BOOTLOADER_STANDBY_STATE;
BootloaderFlashErased = 0;
ReadyToReceiveData = 0;
DataChunkWritten = 0;
CurDataChunkIndex = 0;
FirmwareUploaded = 0;
}
void BootloaderActivateBootloader()
{
OpenBootloaderServer();
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ACTIVATE_CMD);
}
void BootloaderDeactivateBootloader()
{
CloseBootloaderServer();
BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
}

View File

@ -0,0 +1,63 @@
/*
* File: ChaletPowerRelay.h
* Author: JF
*
* Created on November 30, 2018, 7:33 PM
*/
#ifndef BOOTLOADERINTERFACE_H
#define BOOTLOADERINTERFACE_H
#include "define.h"
enum eBootloaderStates
{
BOOTLOADER_STANDBY_STATE,
BOOTLOADER_ACTIVE_STATE,
BOOTLOADER_ERASE_FLASH_STATE,
BOOTLOADER_RECEIVING_FIRMWARE_STATE,
BOOTLOADER_SENDING_FIRMWARE_COPY_STATE,
BOOTLOADER_MAX_STATE
};
enum eBootloaderStateMachineEvents
{
BOOTLOADER_TICK_EVENT,
BOOTLOADER_NEW_CMD_EVENT,
BOOTLOADER_TIMEOUT_EVENT,
BOOTLOADER_MAX_EVENT
};
enum eBootloaderStateMachineCmds
{
BOOTLOADER_SM_ACTIVATE_CMD,
BOOTLOADER_SM_ABORT_CMD,
BOOTLOADER_SM_ERASE_FLASH_CMD,
BOOTLOADER_SM_INIT_UPLOAD_CMD,
BOOTLOADER_SM_NEW_DATA_CHUNK_CMD,
BOOTLOADER_SM_UPLOAD_FINISHED_CMD,
BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD,
BOOTLOADER_SM_INVALID_CRC_CMD
};
extern char BootloaderBuffer[200];
int BootloaderInterfaceInit();
void BootloaderExecuteCmd(char Cmd);
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC);
void BootloaderInterfaceStateMachine();
void BootloaderInterfaceTick();
void BootloaderIterfaceStateMachine(int Event, int Param);
void BootloaderResetStateMachine();
void BootloaderActivateBootloader();
void BootloaderDeactivateBootloader();
#endif /* BOOTLOADERINTERFACE_H */

View File

@ -1,319 +1,344 @@
/**********************************************************************
Project: Automatic cat feeder
Date: march 19 2006
Author: Jean-Fran<EFBFBD>ois Martel
Target: PIC 18F252
Compiler: Microchip mcc18
Filename: Protocol.c
Project: Automatic cat feeder
Date: march 19 2006
Author: Jean-Fran<EFBFBD>ois Martel
Target: PIC 18F252
Compiler: Microchip mcc18
Filename: Protocol.c
File description: Communication protocol implementation.
File description: Communication protocol implementation.
jean-francois.martel@polymtl.ca
**********************************************************************/
jean-francois.martel@polymtl.ca
**********************************************************************/
#include "define.h"
#include <string.h>
#include "ProtocolDefs.h"
#include "BootloaderProtocol.h"
#include "BootloaderInterface.h"
#include "WiFiCtrl.h"
unsigned int BootloaderHeader = 0;
unsigned int BootloaderDataSize = 0;
unsigned int BootloaderDataCtr = 0;
unsigned int BootloaderBufPtr = 0;
unsigned int BootloaderCRC = 0;
unsigned char *BootloaderRxPtr;
unsigned char BootloaderCommand = 0;
unsigned char BootloaderState = RxHeader1;
const unsigned char *BootloaderDataStartPtr = &BootloaderBuffer[9];
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;
void ProtocolInit(void)
void BootloaderProtocolInit(void)
{
ResetStateMachine();
BootloaderProtocolResetStateMachine();
}
void StateMachine(unsigned char Data)
void BootloaderProtocolStateMachine(unsigned char Data)
{
switch(State)
switch(BootloaderState)
{
case Initialization: //Reset all pointers and data...
{
DataSize = 0;
BufPtr = 0;
RxPtr = 0;
Command = 0;
CRC = 0;
State = RxHeader;
break;
}
case RxHeader: //Wait for data header...
{
if(Data == FRAME_HEADER)
{
mRxData[BufPtr++] = Data;
State = RxAdd;
CRC ^= Data;
}
else
{
DataSize = 0;
ResetStateMachine();
}
case Initialization: //Reset all pointers and data...
{
BootloaderDataSize = 0;
BootloaderBufPtr = 0;
BootloaderCommand = 0;
BootloaderCRC = 0;
BootloaderState = RxHeader1;
break;
}
case RxHeader1: //Wait for data header...
{
BootloaderHeader <<= 8;
BootloaderHeader += Data; //0xDE
break;
}
case RxAdd: //Sender Address.
if(Data == BOOTLOADER_FRAME_HEADER_1)
{
SenderAddress = Data;
mRxData[BufPtr++] = Data;
State = RxID;
CRC ^= Data;
break;
BootloaderState = RxHeader2;
}
case RxID: //Sender ID
else
{
mRxData[BufPtr++] = Data;
State = RxMyID;
SenderID = Data;
CRC ^= Data;
break;
BootloaderProtocolResetStateMachine();
}
case RxMyID:
{
// if(Data != MyDeviceID && Data != BROADCAST_VALUE) //Message is not for this type of device and it's not a broadcast
// {
// ResetStateMachine();
// break;
// }
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();
break;
}
mRxData[BufPtr++] = Data;
State = RxFlags;
CRC ^= Data;
break;
}
case RxFlags:
{
Flags = Data;
mRxData[BufPtr++] = Data;
State = RxCMD;
CRC ^= Data;
break;
}
case RxCMD:
{
Command = Data;
mRxData[BufPtr++] = Data;
State = RxSize1;
CRC ^= Data;
break;
}
case RxSize1: //Data size MSB
{
DataSize = 0;
DataSize = (unsigned int)Data;
DataSize <<= 8;
mRxData[BufPtr++] = Data;
break;
}
case RxHeader2: //Wait for data header...
{
BootloaderHeader <<= 8;
BootloaderHeader += Data; //0xAD
if(Data == BOOTLOADER_FRAME_HEADER_2)
{
BootloaderState = RxHeader3;
}
else
{
BootloaderProtocolResetStateMachine();
}
break;
}
case RxHeader3: //Wait for data header...
{
BootloaderHeader <<= 8;
BootloaderHeader += Data; //0xBE
State = RxSize2;
CRC ^= Data;
if(Data == BOOTLOADER_FRAME_HEADER_3)
{
BootloaderState = RxHeader4;
}
else
{
BootloaderProtocolResetStateMachine();
}
break;
}
case RxHeader4: //Wait for data header...
{
BootloaderHeader <<= 8;
BootloaderHeader += Data; //0xEF
if(BootloaderHeader != BOOTLOADER_FRAME_HEADER)
{
//TODO, send NACK?
BootloaderProtocolResetStateMachine();
break;
}
case RxSize2: //Data size
else
{
DataSize |= (unsigned int)Data;
DataSize <<= 8;
mRxData[BufPtr++] = Data;
State = RxSize3;
CRC ^= Data;
break;
BootloaderState = RxCmd;
}
case RxSize3: //Data size
break;
}
case RxCmd:
{
BootloaderCommand = Data;
BootloaderState = RxPayloadSize1;
break;
}
case RxPayloadSize1:
{
BootloaderDataSize = Data;
BootloaderState = RxPayloadSize2;
break;
}
case RxPayloadSize2:
{
BootloaderDataSize <<= 8;
BootloaderDataSize += Data;
BootloaderState = RxPayloadSize3;
break;
}
case RxPayloadSize3:
{
BootloaderDataSize <<= 8;
BootloaderDataSize += Data;
BootloaderState = RxPayloadSize4;
break;
}
case RxPayloadSize4:
{
BootloaderDataSize <<= 8;
BootloaderDataSize += Data;
if(BootloaderDataSize > MAX_BOOTLOADER_PAYLOAD_SIZE)
{
DataSize |= (unsigned int)Data;
DataSize <<= 8;
mRxData[BufPtr++] = Data;
State = RxSize4;
CRC ^= Data;
//TODO, send NACK?
BootloaderProtocolResetStateMachine();
break;
}
case RxSize4: //Data size LSB
if(BootloaderDataSize == 0)
{
DataSize |= (unsigned int)Data;
mRxData[BufPtr++] = Data;
BootloaderState = RxCRC1;
}
else
{
BootloaderState = RxPayload;
}
break;
}
case RxPayload: //Data size
{
*BootloaderRxPtr = Data;
BootloaderRxPtr++;
if(DataSize > MAX_MESSAGE_SIZE)
ResetStateMachine();
BootloaderDataCtr++;
if(DataSize == 0)
State = RxCRC;
else
State = RxData;
CRC ^= Data;
if(BootloaderDataCtr == BootloaderDataSize)
{
BootloaderState = RxCRC1;
break;
}
case RxData:
{
CRC ^= Data;
mRxData[BufPtr++] = Data;
DataCtr++;
break;
}
case RxCRC1: //Data size
{
BootloaderCRC = Data;
BootloaderState = RxCRC2;
break;
}
case RxCRC2: //Data size
{
BootloaderCRC <<= 8;
BootloaderCRC += Data;
BootloaderState = RxCRC3;
break;
}
case RxCRC3: //Data size
{
BootloaderCRC <<= 8;
BootloaderCRC += Data;
BootloaderState = RxCRC4;
break;
}
case RxCRC4: //Data size
{
BootloaderCRC <<= 8;
BootloaderCRC += Data;
BootloaderState = RxCRC3;
if(DataCtr == DataSize)
{
State = RxCRC;
}
//TODO: Compute and Compare CRC.
if(BootloaderCRC != 0xBAADCAFE)
{
BootloaderProtocolResetStateMachine();
}
break;
}
case RxCRC:
{
if(Data != CRC)
{
ResetStateMachine();
// ProtocolAcknowledge(0,Command,0);
break;
}
// NewMasterMessageReceived(mRxData);
ExecuteMasterCommand(Command,ProtocolMsgDataPtr());
ResetStateMachine();
break;
}
default:
{
ResetStateMachine();
break;
}
BootloaderExecuteCmd(BootloaderCommand);
BootloaderProtocolResetStateMachine();
break;
}
default:
{
BootloaderProtocolResetStateMachine();
break;
}
}
}
void ProtocolAnalyzeNewData(unsigned char Data)
void BootloaderProtocolProtocolAnalyzeNewData(unsigned char *DataBuf, int size)
{
// mRxData[RxPtr] = Data;
StateMachine(Data);
}
void ResetStateMachine(void)
{
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;
}
}
}
void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char Data)
{
unsigned char data[2];
if(Answer == 1)
{
data[0] = ACK; //CMD
}
else
{
data[0] = NAK; //CMD
}
data[1] = Cmd;
// ProtocolSendCmd(TX_NETWORK_ACK,&data[0],2,1,0);
}
unsigned char ProtocolCalcCrc(unsigned char* Buffer,unsigned char size)
{
unsigned char CRC = 0;
unsigned char i;
int i;
for(i = 0; i < size; i++)
CRC ^= Buffer[i];
return CRC;
{
BootloaderProtocolStateMachine(*DataBuf++);
}
}
unsigned char ProtocolIsReceiving(void)
void BootloaderProtocolResetStateMachine()
{
if(State == RxHeader)
return 0; // Idle...
else
return 1; //receiving from serial port
BootloaderDataSize = 0;
BootloaderHeader = 0;
BootloaderBufPtr = 0;
BootloaderCommand = 0;
BootloaderCRC = 0;
BootloaderState = RxHeader1;
BootloaderDataCtr = 0;
BootloaderRxPtr = &BootloaderBuffer[0];
}
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)
void BootloaderProtocolSendFrame(unsigned char Cmd, int Size)
{
if(Size > MAX_MESSAGE_SIZE)
{
*FrameSize = 0;
return &mTxData[FRAME_HEADER_INDEX];
}
//Header
BootloaderBuffer[0] = BOOTLOADER_FRAME_HEADER_1; //Header
BootloaderBuffer[1] = BOOTLOADER_FRAME_HEADER_2;
BootloaderBuffer[2] = BOOTLOADER_FRAME_HEADER_3;
BootloaderBuffer[3] = BOOTLOADER_FRAME_HEADER_4;
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
BootloaderBuffer[4] = Cmd;
*FrameSize = Size + FRAME_INDEX_NBR;
char nibble = (char)((Size >> 24) &0x000000FF);
BootloaderBuffer[5] = nibble;
return &mTxData[FRAME_HEADER_INDEX];
nibble = (char)((Size >> 16) &0x000000FF);
BootloaderBuffer[6] = nibble;
nibble = (char)((Size >> 8) &0x000000FF);
BootloaderBuffer[7] = nibble;
nibble = (char)(Size &0x000000FF);
BootloaderBuffer[8] = nibble;
unsigned char* CRCPtr = (unsigned char*)BootloaderDataStartPtr + Size;
*CRCPtr++ = 0xBA;
*CRCPtr++ = 0xAD;
*CRCPtr++ = 0xCA;
*CRCPtr++ = 0xFE;
SendBootloaderData(&BootloaderBuffer[0],Size + PROTOCOL_INFO_DATA_SIZE);
}
unsigned char *ProtocolMsgDataPtr()
unsigned char *BootloaderProtocolGetDataBufferPtr()
{
return &mRxData[FRAME_DATA_INDEX];
return (unsigned char*)BootloaderDataStartPtr;
}
void BootloaderProtocolSendHeartbeat()
{
*BootloaderProtocolGetDataBufferPtr() = BOOTLOADER_ACK;
BootloaderProtocolSendFrame(BOOTLOADER_HEARTBEAT_RESPONSE,1);
}
void BootloaderProtocolSendACK(unsigned char Cmd)
{
*BootloaderProtocolGetDataBufferPtr() = BOOTLOADER_ACK;
BootloaderProtocolSendFrame(Cmd,1);
}
void BootloaderProtocolSendNACK(unsigned char Cmd)
{
*BootloaderProtocolGetDataBufferPtr() = 0;
BootloaderProtocolSendFrame(Cmd,1);
}
void BootloaderProtocolSendInitUploadResponse()
{
int MaxSize = MAX_BOOTLOADER_PAYLOAD_SIZE;
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
*DataPtr++ = (char)BOOTLOADER_ACK;
char nibble = (char)((MaxSize >> 24) &0x000000FF);
*DataPtr++ = nibble;
nibble = (char)((MaxSize >> 16) &0x000000FF);
*DataPtr++ = nibble;
nibble = (char)((MaxSize >> 8) &0x000000FF);
*DataPtr++ = nibble;
nibble = (char)(MaxSize &0x000000FF);
*DataPtr++ = nibble;
BootloaderProtocolSendFrame(BOOTLOADER_INIT_UPLOAD_RESPONSE,5);
}
void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue)
{
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
*DataPtr++ = ErrorCode;
char nibble = (char)((ChunkValue >> 24) &0x000000FF);
*DataPtr++ = nibble;
nibble = (char)((ChunkValue >> 16) &0x000000FF);
*DataPtr++ = nibble;
nibble = (char)((ChunkValue >> 8) &0x000000FF);
*DataPtr++ = nibble;
nibble = (char)(ChunkValue &0x000000FF);
*DataPtr++ = nibble;
BootloaderProtocolSendFrame(BOOTLOADER_SEND_DATA_CHUNK_RESPONSE,5);
}

View File

@ -12,31 +12,47 @@ File description: Communication protocol implementation.
jean-francois.martel@polymtl.ca
**********************************************************************/
#ifndef BOOTLOADERPROTOCOL_H
#define BOOTLOADERPROTOCOL_H
//Protocol buffer specific definitions
#define MASTER_ADDRESS 0x01
#define MY_DEVICE_ADDRESS 0x01
#define ADDRESS 0x01
#define MAX_BOOTLOADER_PAYLOAD_SIZE 256
#define BOOTLOADER_FRAME_HEADER 0xDEADBEEF
#define BOOTLOADER_FRAME_HEADER_1 0xDE
#define BOOTLOADER_FRAME_HEADER_2 0xAD
#define BOOTLOADER_FRAME_HEADER_3 0xBE
#define BOOTLOADER_FRAME_HEADER_4 0xEF
#define PROTOCOL_INFO_DATA_SIZE 13 //Header + Cmd + Size + CRC = 13 bytes
//State Machine states
enum States
{
Initialization,
RxHeader,
RxAdd,
RxID,
RxMyID,
RxMyAddress,
RxFlags,
RxCMD,
RxSize1,
RxSize2,
RxSize3,
RxSize4,
RxData,
RxCRC
RxHeader1,
RxHeader2,
RxHeader3,
RxHeader4,
RxCmd,
RxPayloadSize1,
RxPayloadSize2,
RxPayloadSize3,
RxPayloadSize4,
RxPayload,
RxCRC1,
RxCRC2,
RxCRC3,
RxCRC4
};
enum eBootloaderProtocolDataTransferError
{
BOOTLOADER_CHUNK_TRANSFER_SUCCESS = 1,
BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND = 2,
BOOTLOADER_CHUNK_TRANSFER_ERROR_FLASH_FAILURE = 3,
BOOTLOADER_CHUNK_TRANSFER_ERROR_INVALID_CHUNK_INDEX = 4,
BOOTLOADER_CHUNK_TRANSFER_MAX_ERROR
};
//enum DEVICES_IDS
@ -60,13 +76,18 @@ enum States
//State machine states definition
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();
void BootloaderProtocolInit(void);
void BootloaderProtocolStateMachine(unsigned char STATE);
void BootloaderProtocolResetStateMachine(void);
void BootloaderProtocolProtocolAnalyzeNewData(unsigned char *DataBuf, int size);
void BootloaderProtocolSendFrame(unsigned char Cmd, int size);
unsigned char *BootloaderProtocolGetDataBufferPtr();
void BootloaderProtocolSendHeartbeat();
void BootloaderProtocolSendACK(unsigned char Cmd);
void BootloaderProtocolSendNACK(unsigned char Cmd);
void BootloaderProtocolSendInitUploadResponse();
void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue);
#endif

View File

@ -21,10 +21,18 @@ void ChaletPowerRelayTick()
{
if(CHALET_12V_PRESENCE_PIN == CHALET_12V_POWER_STATE_ON)
{
if(PowerRelayState == CHALET_POWER_RELAY_OFF_STATE)
{
printf("Inverter turned ON\n");
}
PowerRelayState = CHALET_POWER_RELAY_ON_STATE;
}
else
{
if(PowerRelayState == CHALET_POWER_RELAY_ON_STATE)
{
printf("Inverter turned OFF\n");
}
PowerRelayState = CHALET_POWER_RELAY_OFF_STATE;
}

View File

@ -21,7 +21,7 @@ enum eChaletPowerRelayState
#define CHALET_12V_POWER_STATE_ON 0
#define CHALET_12V_POWER_STATE_OFF 1
#define CHALET_POWER_RELAY_COIL_TIMEOUT 100 //ms
#define CHALET_POWER_RELAY_COIL_TIMEOUT 200 //ms
void InitChaletPowerRelay();

View File

@ -111,8 +111,7 @@ int InitBoard()
SPI3CONbits.SMP = 0;
SPI3CONbits.CKP = 0;
SPI3BRG = SPICalculateBRG(PERIPHERAL_FREQ, 1000000);
// SPI2BRG = SPICalculateBRG(PERIPHERAL_FREQ, 50000);
//SPI3CONbits.ON = 1;
SPI3CONbits.ON = 1;
//////////////// CURRENT SENSOR //////////////////
//Analog (Hall effect) current sensor
@ -131,10 +130,10 @@ 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_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;
@ -158,7 +157,7 @@ int InitBoard()
LCD_DB7_PIN_DIR = PIN_OUTPUT;
LCD_DB7_PIN = 0;
LCD_SCROLL_BTN_PIN_DIR = PIN_INPUT;
// LCD_SCROLL_BTN_PIN_DIR = PIN_INPUT;

View File

@ -0,0 +1,26 @@
/*
* File: ChaletPowerRelay.h
* Author: JF
*
* Created on November 30, 2018, 7:33 PM
*/
#ifndef FLASHMAPPING_H
#define FLASHMAPPING_H
#include "define.h"
/*
0x180000 Firmware flags
0x180004 Nb Records
0x180008 Firmware Size
0x18000C Version code
*/
#define FLASH_END_ADDRESS 180000
#define FLASH_BTLDR_FIRMWARE_START_ADDRESS 0x180000
#define FLASH_BTLDR_FIRMWARE_LAST_SECTOR_ADD 0x180000
#endif /* HARAKIRIRELAY_H */

View File

@ -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
//
@ -335,9 +335,11 @@ int SendInternalUartDataBlocking(char *p_pcDataBuf, int p_iDataSize, int p_iUart
int i;
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;
return UART_OK;
}
@ -377,6 +379,7 @@ void TickInternalUart(void)
{
char NewByte = U2RXREG;
//acIntUartRxBuff[INTERNAL_UART_PORT_2][i++] = NewByte;
LORA_MODULE_RX_LED_PIN = ~LORA_MODULE_RX_LED_PIN;
ProtocolAnalyzeNewData(NewByte);
// LoraData <<= 8;

View File

@ -8,6 +8,8 @@
#include "ChaletPowerRelay.h"
#include "HarakiriRelay.h"
#include "BatteryMonitor.h"
#include "LedLightCtrl.h"
#include "TemperatureSensor.h"
//#include "WiFiCtrl.h"
//
@ -25,167 +27,177 @@ unsigned char mLoraPreamble[3]={0x00,LORA_MASTER_ADDRESS,LORA_CHANNEL};
void ExecuteMasterCommand(int Command, unsigned char *Data)
{
//Whatever was the command, we are online...
LORA_MODULE_RX_LED_PIN = LED_OFF;
ChaletPowerRelayKickTimer();
switch(Command)
{
case CHALET_INTERFACE_ACK:
{
break;
}
case CHALET_GENERAL_STATUS_REQUEST:
{
float FloatVoltage = GetBatteryVoltage();
unsigned int BattVoltage = *((int*)&FloatVoltage);
int SolarPanelCurrent = GetSolarPanelCurrent();
int SOC = GetBatterySOC();
case CHALET_INTERFACE_ACK:
{
break;
}
case CHALET_GENERAL_STATUS_REQUEST:
{
float FloatVoltage = GetBatteryVoltage();
float FloatTemperature = TempSensorGetTemp();
unsigned int BattVoltage = *((int*)&FloatVoltage);
unsigned int Temperature = *((int*)&FloatTemperature);
int SolarPanelCurrent = GetSolarPanelCurrent();
int SOC = GetBatterySOC();
char GeneralStatus = 0;
char ChaletStatus[10];
char GeneralStatus = 0;
char ChaletStatus[14];
if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
{
GeneralStatus |= LORA_CHALET_STATUS_POWER_RELAY_MASK;
}
if(GetCurrentModuleOK() == true)
{
GeneralStatus |= LORA_CHALET_STATUS_CUR_SENSOR_MASK;
}
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[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); //Battery Voltage 1
Temperature >>= 8;
ChaletStatus[11] = (char)(Temperature & 0x000000FF); //Battery Voltage 2
Temperature >>= 8;
ChaletStatus[12] = (char)(Temperature & 0x000000FF); //Battery Voltage 3
Temperature >>= 8;
ChaletStatus[13] = (char)(Temperature & 0x000000FF); //Battery Voltage 4
SendLoraNetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,10);
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
SendLoraNetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,14);
break;
}
case CHALET_AC_POWER_STATE_STATUS_REQUEST:
{
char PowerStatus = GetChaletPowerRelayState();
SendLoraNetworkCommand(CHALET_AC_POWER_STATE_STATUS_RESPONSE,&PowerStatus,1);
HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
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;
}
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
SendLoraNetworkCommand(CHALET_AC_POWER_SET_STATE_RESPONSE,&response,1);
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;
}
break;
}
case CHALET_BATTERY_VOLTAGE_REQUEST:
{
break;
}
case CHALET_WIFI_STATUS_REQUEST:
{
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
{
SendLoraNetworkCommand(CHALET_AC_POWER_SET_STATE_RESPONSE,&response,1);
break;
}
case CHALET_BATTERY_VOLTAGE_REQUEST:
{
break;
}
case CHALET_WIFI_STATUS_REQUEST:
{
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;
}
}
}
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)
SendLoraNetworkCommand(CHALET_REBOOT_CPU_RESPONSE,&response,1);
Sleep(100);
TurnOFFWiFi();
Sleep(100);
SoftReset();
}
else
{
response = 0x00;
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
}
break;
}
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)
SendLoraNetworkCommand(CHALET_REBOOT_CPU_RESPONSE,&response,1);
Sleep(100);
TurnOFFWiFi();
Sleep(100);
SoftReset();
}
else
{
response = 0x00;
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
}
break;
}
}
}
@ -202,3 +214,9 @@ void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataS
SendInternalUartDataBlocking(Payload,PayloadSize,NETWORK_UART_PORT);
}
void TestTx()
{
char toto = 0x03;
SendInternalUartDataBlocking(mLoraPreamble,3,NETWORK_UART_PORT);
}

View File

@ -11,6 +11,6 @@
void ExecuteMasterCommand(int Command, unsigned char *Data);
void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
void TestTx();
#endif /* LORANEETWORKINTERFACE_H */

View File

@ -1,3 +1,4 @@
#include "define.h"
#include "MasterCtrlInterface.h"
#ifdef USE_WINC1500

View File

@ -255,11 +255,11 @@ void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char D
unsigned char data[2];
if(Answer == 1)
{
data[0] = ACK; //CMD
data[0] = PROTOCOL_ACK; //CMD
}
else
{
data[0] = NAK; //CMD
data[0] = PROTOCOL_NAK; //CMD
}
data[1] = Cmd;

View File

@ -12,6 +12,10 @@ File description: Communication protocol implementation.
jean-francois.martel@polymtl.ca
**********************************************************************/
#ifndef BOOTLOADERINTERFACE_H
#define BOOTLOADERINTERFACE_H
//Protocol buffer specific definitions
#define MASTER_ADDRESS 0x01
@ -69,3 +73,5 @@ unsigned char* ProtocolGetFrame(unsigned char DestDevice,unsigned char DestAddre
unsigned char ProtocolCalcCrc(unsigned char* Buffer,unsigned char size);
unsigned char ProtocolIsReceiving(void);
unsigned char *ProtocolMsgDataPtr();
#endif

View File

@ -25,8 +25,8 @@
#define FRAME_HEADER 0x8A
#define BOOTLOADER_HEADER 0xA8
#define DATA_START 11
#define ACK 0xA3
#define NAK 0x90
#define PROTOCOL_ACK 0xA3
#define PROTOCOL_NAK 0x90
#define BROADCAST_VALUE 0xFF
#define MASTER_RECONNECTION_TIMEOUT 25000 //Try to reconnect every 5s
@ -299,6 +299,8 @@ enum CHALET_CMDS
enum BOOTLOADER_CMDS
{
BOOTLOADER_ACK = 1,
BOOTLOADER_HEARTBEAT_REQUEST,
BOOTLOADER_HEARTBEAT_RESPONSE,
BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST,
BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESPONSE,
BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE,
@ -313,6 +315,8 @@ enum BOOTLOADER_CMDS
BOOTLOADER_UPLOAD_FINISHED_RESPONSE,
BOOTLOADER_EXECUTE_UPGRAGE_REQUEST,
BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
BOOTLOADER_ABORT_OPERATION_REQUEST,
BOOTLOADER_ABORT_OPERATION_RESPONSE,
MAX_BOOTLOADER_CMD
};

View File

@ -0,0 +1,94 @@
//#include <proc/p32mx440f256h.h>
#include "TC77.h"
#include "BoardCfg.h"
#include "timer.h"
short mDeviceID;
int TC77Configure()
{
TEMP_SENSOR_CS_PIN = 0;
//Execute a 16 bits read first.
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
//Now, write 0xFFFF to config register.
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
//Read Device ID
SPI3BUF = 0x00;
while(!SPI3STATbits.SPIRBF);
mDeviceID = SPI3BUF;
mDeviceID <<= 8;
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
mDeviceID += SPI3BUF;
TEMP_SENSOR_CS_PIN = 1;
mDeviceID &= 0xFFFC;
if(mDeviceID != 0x5400)
{
return RET_ERROR;
}
Sleep(100);
//Device detected. Now, put the device in continuous read mode.
TEMP_SENSOR_CS_PIN = 0;
//Execute a 16 bits read first.
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
//Now, write 0x0000 to config register.
SPI3BUF = 0x00;
while(!SPI3STATbits.SPIRBF);
SPI3BUF = 0x00;
while(!SPI3STATbits.SPIRBF);
TEMP_SENSOR_CS_PIN = 1;
return RET_OK;
}
float TC77GetActualTemp()
{
short RawTemp = 0;
float Temp;
TEMP_SENSOR_CS_PIN = 0;
//Read 16 bits.
SPI3BUF = 0x00;
while(!SPI3STATbits.SPIRBF);
RawTemp = SPI3BUF;
RawTemp <<= 8;
SPI3BUF = 0xFF;
while(!SPI3STATbits.SPIRBF);
RawTemp += SPI3BUF;
TEMP_SENSOR_CS_PIN = 1;
//RawTemp &= 0xFFF8; //Get rid of useless 3 LSB
RawTemp >>= 3;
Temp = ((float)0.0625 * (float)RawTemp);
return Temp;
}
short TC77GetDeviceID()
{
return mDeviceID;
}

View File

@ -0,0 +1,18 @@
/*
* File:
* Author: JF
*
* Created on November 30, 2018, 7:33 PM
*/
#ifndef TC77_H
#define TC77_H
#include "define.h"
int TC77Configure();
float TC77GetActualTemp();
short TC77GetDeviceID();
#endif /* TC77_H */

View File

@ -0,0 +1,38 @@
//#include <proc/p32mx440f256h.h>
#include "TemperatureSensor.h"
#include "BoardCfg.h"
#include "TC77.h"
#include "timer.h"
void InitTempSensor()
{
ActualTemp = 0xBAADBEEF;
TimerStart(TEMP_SENSOR_REFRESH_TIMER,1000);
}
int TempSensorCheckAndConfigure()
{
if(TC77Configure() == RET_OK)
{
ActualTemp = TC77GetActualTemp();
return RET_OK;
}
return RET_ERROR;
}
float TempSensorGetTemp()
{
return ActualTemp;
}
void TickTempSensor()
{
if(IsTimerExpired(TEMP_SENSOR_REFRESH_TIMER))
{
ActualTemp = TC77GetActualTemp();
TimerStart(TEMP_SENSOR_REFRESH_TIMER,1000);
// printf("Temperature: %f\n",ActualTemp);
}
}

View File

@ -0,0 +1,24 @@
/*
* File: ChaletPowerRelay.h
* Author: JF
*
* Created on November 30, 2018, 7:33 PM
*/
#ifndef TEMPERATURESENSOR_H
#define TEMPERATURESENSOR_H
#include "define.h"
float ActualTemp;
void InitTempSensor();
int TempSensorCheckAndConfigure();
float TempSensorGetTemp();
void TickTempSensor();
#endif /* TEMPERATURESENSOR_H */

View File

@ -22,6 +22,7 @@
#include "LedLightCtrl.h"
#include "ChaletPowerRelay.h"
#include "BatteryMonitor.h"
#include "BootloaderInterface.h"
//#include "SDCardMgr.h"
#ifdef TERMINAL_USE_TELNET
@ -54,8 +55,13 @@ static BYTE mHelpString[] = "Here is the list of the available commands:\n\r\n\
" - Available [sensor] argument are: voltage\n"
" current\n"
" soc (state of charge)\n"
" Empty [sensor] argument prints all values"
" Empty [sensor] argument prints all values\n"
"\nstatus : get general system status\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"
//"\ndebug : print some real-time stuff..."
"\nHave a good day!\n";
@ -379,6 +385,41 @@ void ParseNewBuffer(void)
TerminalPrintString("\n");
}
else if(strncmp(mCmdString,"bootloader",strlen("bootloader")) == 0)
{
if(strlen(mDataString1) == 0)
{
TerminalPrintString("\n[command] parameter is invalid. Type 'help' for more info\n");
return;
}
if(strncmp(mDataString1,"start",strlen("start")) == 0)
{
//start bootloader server
// OpenBootloaderServer();
BootloaderActivateBootloader();
}
else if(strncmp(mDataString1,"stop",strlen("stop")) == 0)
{
//CloseBootloaderServer();
BootloaderDeactivateBootloader();
}
else if(strncmp(mDataString1,"status",strlen("status")) == 0)
{
if(IsBootloaderClientConnected())
{
TerminalPrintString("\nBootloader client connected\n");
return;
}
else
if(IsBootloaderClientConnected())
{
TerminalPrintString("\nBootloader client not connected\n");
return;
}
}
}
else if(strncmp(mCmdString,"debug",strlen(mCmdString)) == 0)
{

View File

@ -97,9 +97,10 @@ 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 console port
#ifdef USE_PRINTF
//UartOpenComPort(CONSOLE_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
#endif
}

View File

@ -9,6 +9,7 @@
#include "ProtocolDefs.h"
#include "BoardCfg.h"
#include "timer.h"
#include "BootloaderProtocol.h"
@ -28,9 +29,13 @@ SOCKET SyslogSocket = -1, SyslogServerSocket = -1;
uint8 SyslogRxBuf[200]; //Syslog shall not receive much data
#endif
SOCKET NetworkSocket = -1, NetworkServerSocket = -1;
uint8 NetworkRxBuf[1024];
SOCKET BootloaderSocket = -1, BootloaderServerSocket = -1;
uint8 BootloaderRxBuf[1024];
/** Receive buffer definition. */
static uint8 gau8ReceivedBuffer[MAIN_WIFI_M2M_BUFFER_SIZE] = {0};
@ -71,10 +76,10 @@ static void resolve_cb(uint8 *hostName, uint32 hostIp)
gu32HostIp = hostIp;
gbHostIpByName = true;
printf("Host IP is %d.%d.%d.%d\r\n",
(int)IPV4_BYTE(hostIp, 0),
(int)IPV4_BYTE(hostIp, 1),
(int)IPV4_BYTE(hostIp, 2),
(int)IPV4_BYTE(hostIp, 3));
(int)IPV4_BYTE(hostIp, 0),
(int)IPV4_BYTE(hostIp, 1),
(int)IPV4_BYTE(hostIp, 2),
(int)IPV4_BYTE(hostIp, 3));
printf("Host Name is %s\r\n", hostName);
}
@ -88,145 +93,174 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
{
switch(u8Msg)
{
case SOCKET_MSG_BIND:
{
tstrSocketBindMsg *pstrBind = (tstrSocketBindMsg*)pvMsg;
if(pstrBind->status == 0)
{
if(sock == TerminalServerSocket)
{
listen(TerminalServerSocket, 0);
}
else if(sock == SyslogServerSocket)
{
listen(SyslogServerSocket,0);
}
else if(sock == NetworkServerSocket)
{
listen(NetworkServerSocket,0);
}
}
else
{
printf("Bind Failed\n");
}
break;
}
case SOCKET_MSG_LISTEN:
{
case SOCKET_MSG_BIND:
{
tstrSocketBindMsg *pstrBind = (tstrSocketBindMsg*)pvMsg;
if(pstrBind->status == 0)
{
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");
}
}
else
{
printf("Bind Failed\n");
}
break;
}
case SOCKET_MSG_LISTEN:
{
tstrSocketListenMsg *pstrListen = (tstrSocketListenMsg*)pvMsg;
if(pstrListen->status != 0)
{
printf("socket %d listen Failed\n",socket);;
break;
}
if(sock == SyslogServerSocket)
{
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,1);
}
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;
}
case SOCKET_MSG_ACCEPT:
{
// New Socket is accepted.
tstrSocketAcceptMsg *pstrAccept = (tstrSocketAcceptMsg *)pvMsg;
if(pstrAccept->sock >= 0)
{
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");
}
break;
}
case SOCKET_MSG_ACCEPT:
{
// New Socket is accepted.
tstrSocketAcceptMsg *pstrAccept = (tstrSocketAcceptMsg *)pvMsg;
if(pstrAccept->sock >= 0)
{
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");
}
}
else
{
printf("Socket %d : Accept Failed\n", sock);
}
break;
}
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...
RxTerminalBuf(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
}
else if(sock == SyslogSocket)
{
//Fwd data to stdin...
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
//Syslog shall ignore data...
}
else if(sock == NetworkSocket)
{
//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");
}
}
break;
}
case SOCKET_MSG_SEND:
{
if(sock == SyslogSocket)
{
}
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 if(sock == SyslogSocket)
{
//Fwd data to stdin...
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
//Syslog shall ignore data...
}
else if(sock == NetworkSocket)
{
//Fwd data to Network...
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
}
else if(sock == BootloaderSocket)
{
//Fwd data to Network...
recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0);
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)
{
}
}
}
}
@ -257,61 +291,61 @@ 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");
case M2M_WIFI_RESP_CON_STATE_CHANGED: {
tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged *)pvMsg;
if (pstrWifiState->u8CurrState == M2M_WIFI_CONNECTED)
{
printf("Wi-Fi connected\r\n");
#ifndef USE_STATIC_IP
m2m_wifi_request_dhcp_client();
m2m_wifi_request_dhcp_client();
#else
m2m_wifi_set_static_ip(&mModuleIPConfig);
gbConnectedWifi = true;
m2m_wifi_set_static_ip(&mModuleIPConfig);
gbConnectedWifi = true;
#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);
}
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);
}
break;
}
break;
}
case M2M_WIFI_REQ_DHCP_CONF:
{
uint8 *pu8IPAddress = (uint8 *)pvMsg;
/* 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_REQ_DHCP_CONF:
{
uint8 *pu8IPAddress = (uint8 *)pvMsg;
/* 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");
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;
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;
}
default: {
break;
}
}
}
@ -346,7 +380,6 @@ int InitWiFi()
return RET_ERROR;
}
mWiFiInitOK = true;
HEARTBEAT_LED_2_PIN = LED_ON;
mWiFiState = WIFI_DISCONNECTED_STATE;
@ -451,6 +484,12 @@ int CloseSockets()
close(SyslogSocket);
}
#endif
close(BootloaderServerSocket);
if(BootloaderSocket != -1)
{
close(BootloaderSocket);
}
}
@ -475,18 +514,19 @@ void TickWiFi()
}
}
// if(IsTimerExpired(WIFI_TICK_TIMER))
// {
m2m_wifi_handle_events(NULL);
// TimerStart(WIFI_TICK_TIMER,1);
// }
// if(IsTimerExpired(WIFI_TICK_TIMER))
// {
m2m_wifi_handle_events(NULL);
// TimerStart(WIFI_TICK_TIMER,1);
// }
if (gbConnectedWifi && !gbTcpConnection)
{
OpenTerminalServer();
OpenNetworkServer();
//OpenNetworkServer();
// OpenBootloaderServer();
#ifdef USE_SYSLOG
OpenSyslogServer();
#endif
@ -620,3 +660,58 @@ int IsSyslogClientConnected()
return 1;
}
#endif
int OpenBootloaderServer()
{
struct sockaddr_in strAddr;
BootloaderServerSocket = socket(AF_INET, SOCK_STREAM,0);
uint16 ServerPort = BOOTLOADER_SERVER_PORT;
if(BootloaderServerSocket >= 0)
{
strAddr.sin_family = AF_INET;
strAddr.sin_port = _htons(ServerPort);
strAddr.sin_addr.s_addr = 0;
bind(BootloaderServerSocket, (struct sockaddr*)&strAddr, sizeof(struct sockaddr_in));
return RET_OK;
}
else
{
return RET_ERROR;
}
}
int CloseBootloaderServer()
{
close(BootloaderServerSocket);
if(BootloaderSocket != -1)
{
close(BootloaderSocket);
}
}
void SendBootloaderData(uint8 *data, int size)
{
if(BootloaderSocket != -1);
{
send(BootloaderSocket,data,size,0);
recv(BootloaderSocket,SyslogRxBuf,sizeof(SyslogRxBuf),0);
}
}
void SendSBootloaderByte(uint8 data)
{
if(BootloaderSocket != -1)
{
send(BootloaderSocket,&data,1,0);
recv(BootloaderSocket,SyslogRxBuf,sizeof(SyslogRxBuf),0);
}
}
int IsBootloaderClientConnected()
{
if(BootloaderSocket == -1)
{
return 0;
}
return 1;
}

View File

@ -31,6 +31,12 @@ void SendSyslogData(uint8 *data, int size);
void SendSyslogByte(uint8 data);
int IsSyslogClientConnected();
int OpenBootloaderServer();
int CloseBootloaderServer();
void SendBootloaderData(uint8 *data, int size);
void SendBootloaderByte(uint8 data);
int IsBootloaderClientConnected();
#define USE_STATIC_IP
@ -104,6 +110,7 @@ int IsSyslogClientConnected();
#define TERMINAL_SERVER_PORT 85
#define NETWORK_SERVER_PORT 86
#define SYSLOG_SERVER_PORT 87
#define BOOTLOADER_SERVER_PORT 99
#define AUTH_CREDENTIALS {M2M_802_1X_USR_NAME, M2M_802_1X_PWD }

View File

@ -0,0 +1,647 @@
/**
* ---------------------------------------------------------------+
* @desc HD44780 LCD Driver
* ---------------------------------------------------------------+
* Copyright (C) 2020 Marian Hrinko.
* Written by Marian Hrinko (mato.hrinko@gmail.com)
*
* @author Marian Hrinko
* @datum 18.11.2020
* @file hd44780.c
* @tested AVR Atmega16a
*
* @depend hd44780.h
* ---------------------------------------------------------------+
* @usage default set 16x2 LCD
* 4-bit with 3 control wires (RW, RS, E)
*/
// include libraries
#include <stdio.h>
#include <util/delay.h>
#include <avr/io.h>
#include "hd44780.h"
// +---------------------------+
// | Power on |
// | Wait for more than 15 ms | // 15 ms wait
// | after VCC rises to 4.5 V |
// +---------------------------+
// |
// +---------------------------+
// | RS R/W DB7 DB6 DB5 DB4 |
// | 0 0 0 0 1 1 | // Initial sequence 0x30
// | Wait for more than 4.1 ms | // 4.1 ms us writing DATA into DDRAM or CGRAM
// +---------------------------+
// |
// +---------------------------+
// | RS R/W DB7 DB6 DB5 DB4 |
// | 0 0 0 0 1 1 | // Initial sequence 0x30
// | Wait for more than 0.1 ms | // 100 us writing DATA into DDRAM or CGRAM
// +---------------------------+
// |
// +---------------------------+
// | RS R/W DB7 DB6 DB5 DB4 | // Initial sequence 0x30
// | 0 0 0 0 1 1 | // 37 us writing DATA into DDRAM or CGRAM 4 us tadd - time after busy flag disapeared
// | Wait for more than 45 us | // 37 us + 4 us = 41 us * (270/250) = 45us
// +---------------------------+
// |
// +---------------------------+ // 4bit mode 0x20 !!! MUST BE SET TIME, BF CHECK DOESN'T WORK CORRECTLY !!!
// | RS R/W DB7 DB6 DB5 DB4 | //
// | 0 0 0 0 1 0 | // 37 us writing DATA into DDRAM or CGRAM 4 us tadd - time after busy flag disapeared
// | Wait for more than 45 us | // !!! MUST BE SET DELAY TIME, BUSY FLAG CHECK DOESN'T WORK CORRECTLY !!!
// +---------------------------+
// |
// +---------------------------+
// | RS R/W DB7 DB6 DB5 DB4 | // Display off 0x08
// | 0 0 0 0 1 0 | //
// | 0 0 1 0 0 0 | //
// | Wait for BF Cleared | // Wait for BF Cleared
// +---------------------------+
// |
// +---------------------------+
// | RS R/W DB7 DB6 DB5 DB4 | // Display clear 0x01
// | 0 0 0 0 0 0 | //
// | 0 0 0 0 0 1 | //
// | Wait for BF Cleared | // Wait for BF Cleared
// +---------------------------+
// |
// +---------------------------+
// | RS R/W DB7 DB6 DB5 DB4 | // Entry mode set 0x06
// | 0 0 0 0 0 0 | //
// | 0 0 0 1 1 0 | // shift cursor to the left, without text shifting
// | Wait for BF Cleared | // Wait for BF Cleared
// +---------------------------+
/**
* @desc LCD display clear
*
* @param void
*
* @return void
*/
void HD44780_DisplayClear (void)
{
// Diplay clear
HD44780_SendInstruction(HD44780_DISP_CLEAR);
}
/**
* @desc LCD display on
*
* @param void
*
* @return void
*/
void HD44780_DisplayOn (void)
{
// send instruction - display on
HD44780_SendInstruction(HD44780_DISP_ON);
}
/**
* @desc LCD cursor on, display on
*
* @param void
*
* @return void
*/
void HD44780_CursorOn (void)
{
// send instruction - cursor on
HD44780_SendInstruction(HD44780_CURSOR_ON);
}
/**
* @desc LCD cursor off
*
* @param void
*
* @return void
*/
void HD44780_CursorOff (void)
{
// send instruction - cursor on
HD44780_SendInstruction(HD44780_CURSOR_OFF);
}
/**
* @desc LCD cursor blink, cursor on, display on
*
* @param void
*
* @return void
*/
void HD44780_CursorBlink (void)
{
// send instruction - Cursor blink
HD44780_SendInstruction(HD44780_CURSOR_BLINK);
}
/**
* @desc LCD draw char
*
* @param char
*
* @return void
*/
void HD44780_DrawChar (char character)
{
// Diplay clear
HD44780_SendData(character);
}
/**
* @desc LCD draw string
*
* @param char *
*
* @return void
*/
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++]);
}
}
/**
* @desc Got to position x,y
*
* @param char
* @param char
*
* @return char
*/
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;
}
/**
* @desc Shift cursor / display to left / right
*
* @param char item {HD44780_CURSOR; HD44780_DISPLAY}
* @param char direction {HD44780_RIGHT; HD44780_LEFT}
*
* @return char
*/
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;
}
/**
* @desc LCD init - initialisation routine
*
* @param void
*
* @return void
*/
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);
// 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);
}
/**
* @desc Check Busy Flag (BF) in 4 bit mode
*
* @param void
*
* @return void
*/
void HD44780_CheckBFin4bitMode (void)
{
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();
}
/**
* @desc Check Busy Flag (BF) in 8 bit mode
*
* @param void
* @return void
*/
void HD44780_CheckBFin8bitMode (void)
{
}
/**
* @desc LCD send instruction
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SendInstruction (unsigned short int data)
{
// 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();
}
}
/**
* @desc LCD send data
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SendData (unsigned short int data)
{
// 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);
}
/**
* @desc LCD send 4bits instruction in 4 bit mode
*
* @param unsigned short int
*
* @return void
*/
void HD44780_Send4bitsIn4bitMode (unsigned short int data)
{
// 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);
}
/**
* @desc LCD send 8bits instruction in 4 bit mode
*
* @param unsigned short int
*
* @return void
*/
void HD44780_Send8bitsIn4bitMode (unsigned short int data)
{
// 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);
}
/**
* @desc LCD send 8bits instruction in 8 bit mode
*
* @param unsigned short int
*
* @return void
*/
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);
}
/**
* @desc LCD send upper nibble
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SetUppNibble (unsigned short int data)
{
// 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); }
}
/**
* @desc LCD send lower nibble
*
* @param unsigned short int
*
* @return void
*/
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); }
}
/**
* @desc LCD pulse E
*
* @param void
*
* @return void
*/
void HD44780_PulseE (void)
{
// 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);
}
/**
* @desc Set PORT DB4 to DB7
*
* @param void
*
* @return void
*/
void HD44780_SetPORT_DATA4to7 (void)
{
// 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);
}
/**
* @desc Clear DDR DB4 to DB7
*
* @param void
*
* @return void
*/
void HD44780_ClearDDR_DATA4to7 (void)
{
// 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);
}
/**
* @desc Set DDR DB4 to DB7
*
* @param void
*
* @return void
*/
void HD44780_SetDDR_DATA4to7 (void)
{
// 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

@ -0,0 +1,383 @@
/**
* ---------------------------------------------------------------+
* @desc HD44780 LCD Driver
* ---------------------------------------------------------------+
* Copyright (C) 2020 Marian Hrinko.
* Written by Marian Hrinko (mato.hrinko@gmail.com)
*
* @author Marian Hrinko
* @datum 18.11.2020
* @file hd44780.c
* @tested AVR Atmega16a
*
* @depend
* ---------------------------------------------------------------+
* @usage default set 16x2 LCD
* 4-bit with 3 control wires (RW, RS, E)
*
*/
#ifndef __HD44780_H__
#define __HD44780_H__
// Success
#ifndef SUCCESS
#define SUCCESS 0
#endif
// Error
#ifndef ERROR
#define ERROR 1
#endif
// define clock
#if defined(__AVR_ATmega8__)
#define _FCPU 8000000
#elif defined(__AVR_ATmega16__)
#define _FCPU 16000000
#endif
#if defined(__AVR_ATmega16__)
// E port
// --------------------------------------
#ifndef HD44780_DDR_E
#define HD44780_DDR_E DDRD
#endif
#ifndef HD44780_PORT_E
#define HD44780_PORT_E PORTD
#endif
#ifndef HD44780_E
#define HD44780_E 3
#endif
// RW port
// --------------------------------------
#ifndef HD44780_DDR_RW
#define HD44780_DDR_RW DDRD
#endif
#ifndef HD44780_PORT_RW
#define HD44780_PORT_RW PORTD
#endif
#ifndef HD44780_RW
#define HD44780_RW 2
#endif
// RS port
// --------------------------------------
#ifndef HD44780_DDR_RS
#define HD44780_DDR_RS DDRD
#endif
#ifndef HD44780_PORT_RS
#define HD44780_PORT_RS PORTD
#endif
#ifndef HD44780_RS
#define HD44780_RS 1
#endif
// DATA port / pin
// --------------------------------------
#ifndef HD44780_DDR_DATA
#define HD44780_DDR_DATA DDRD
#endif
#ifndef HD44780_PORT_DATA
#define HD44780_PORT_DATA PORTD
#endif
#ifndef HD44780_PIN_DATA
#define HD44780_PIN_DATA PIND
#endif
// pins
#ifndef HD44780_DATA7
#define HD44780_DATA7 7 // LCD PORT DB7
#endif
#ifndef HD44780_DATA6
#define HD44780_DATA6 6 // LCD PORT DB6
#endif
#ifndef HD44780_DATA5
#define HD44780_DATA5 5 // LCD PORT DB5
#endif
#ifndef HD44780_DATA4
#define HD44780_DATA4 4 // LCD PORT DB4
#endif
#ifndef HD44780_DATA3
#define HD44780_DATA3 3 // LCD PORT DB3
#endif
#ifndef HD44780_DATA2
#define HD44780_DATA2 2 // LCD PORT DB2
#endif
#ifndef HD44780_DATA1
#define HD44780_DATA1 1 // LCD PORT DB1
#endif
#ifndef HD44780_DATA0
#define HD44780_DATA0 0 // LCD PORT DB0
#endif
#endif
#define BIT7 0x80
#define BIT6 0x40
#define BIT5 0x20
#define BIT4 0x10
#define BIT3 0x08
#define BIT2 0x04
#define BIT1 0x02
#define BIT0 0x01
#define HD44780_BUSY_FLAG HD44780_DATA7
#define HD44780_INIT_SEQ 0x30
#define HD44780_DISP_CLEAR 0x01
#define HD44780_DISP_OFF 0x08
#define HD44780_DISP_ON 0x0C
#define HD44780_CURSOR_ON 0x0E
#define HD44780_CURSOR_OFF 0x0C
#define HD44780_CURSOR_BLINK 0x0F
#define HD44780_RETURN_HOME 0x02
#define HD44780_ENTRY_MODE 0x06
#define HD44780_4BIT_MODE 0x20
#define HD44780_8BIT_MODE 0x30
#define HD44780_2_ROWS 0x08
#define HD44780_FONT_5x8 0x00
#define HD44780_FONT_5x10 0x04
#define HD44780_POSITION 0x80
#define HD44780_SHIFT 0x10
#define HD44780_CURSOR 0x00
#define HD44780_DISPLAY 0x08
#define HD44780_LEFT 0x00
#define HD44780_RIGHT 0x04
#define HD44780_ROWS 2
#define HD44780_COLS 16
#define HD44780_ROW1_START 0x00
#define HD44780_ROW1_END HD44780_COLS
#define HD44780_ROW2_START 0x40
#define HD44780_ROW2_END HD44780_COLS
// **********************************************
// !!!
// MODE DEFINITION - CORRECTLY DEFINED
//
// ----------------------------------------------
//
// HD44780_4BIT_MODE - 4 bit mode / 4 data wires
// HD44780_8BIT_MODE - 8 bit mode / 8 data wires
//
// **********************************************
#define HD44780_MODE HD44780_4BIT_MODE
// set bit
#define SETBIT(REG, BIT) { REG |= (1 << BIT); }
// clear bit
#define CLRBIT(REG, BIT) { REG &= ~(1 << BIT); }
// set port / pin if bit is set
#define SET_IF_BIT_IS_SET(REG, PORT, DATA, BIT) { if((DATA & BIT) > 0) { SETBIT(REG, PORT); } }
/**
* @desc LCD init - initialisation routine
*
* @param void
*
* @return void
*/
void HD44780_Init (void);
/**
* @desc LCD display clear
*
* @param void
*
* @return void
*/
void HD44780_DisplayClear (void);
/**
* @desc LCD display on
*
* @param void
*
* @return void
*/
void HD44780_DisplayOn (void);
/**
* @desc LCD cursor on, display on
*
* @param void
*
* @return void
*/
void HD44780_CursorOn (void);
/**
* @desc LCD cursor off
*
* @param void
*
* @return void
*/
void HD44780_CursorOff (void);
/**
* @desc LCD cursor blink, cursor on, display on
*
* @param void
*
* @return void
*/
void HD44780_CursorBlink (void);
/**
* @desc LCD draw char
*
* @param char
* @return void
*/
void HD44780_DrawChar (char character);
/**
* @desc LCD draw string
*
* @param char *
*
* @return void
*/
void HD44780_DrawString (char *str);
/**
* @desc Got to position x,y
*
* @param char
* @param char
*
* @return char
*/
char HD44780_PositionXY (char x, char y);
/**
* @desc Shift cursor / display to left / right
*
* @param char item {HD44780_CURSOR; HD44780_DISPLAY}
* @param char direction {HD44780_RIGHT; HD44780_LEFT}
*
* @return char
*/
char HD44780_Shift (char item, char direction);
/**
* @desc Check Busy Flag (BF) in 8 bit mode
*
* @param void
*
* @return void
*/
void HD44780_CheckBFin8bitMode (void);
/**
* @desc Check Busy Flag (BF) in 4 bit mode
*
* @param void
*
* @return void
*/
void HD44780_CheckBFin4bitMode (void);
/**
* @desc LCD send instruction
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SendInstruction (unsigned short int);
/**
* @desc LCD send data
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SendData (unsigned short int);
/**
* @desc LCD send 4bits instruction in 4 bit mode
*
* @param unsigned short int
*
* @return void
*/
void HD44780_Send4bitsIn4bitMode (unsigned short int);
/**
* @desc LCD send 8bits instruction in 4 bit mode
*
* @param unsigned short int
*
* @return void
*/
void HD44780_Send8bitsIn4bitMode (unsigned short int);
/**
* @desc LCD send 8bits instruction in 8 bit mode
*
* @param unsigned short int
*
* @return void
*/
void HD44780_Send8bitsIn8bitMode (unsigned short int);
/**
* @desc LCD send upper nibble
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SetUppNibble (unsigned short int);
/**
* @desc LCD send lower nibble
*
* @param unsigned short int
*
* @return void
*/
void HD44780_SetLowNibble (unsigned short int);
/**
* @desc LCD pulse E
*
* @param void
*
* @return void
*/
void HD44780_PulseE (void);
/**
* @desc Set PORT DB4 to DB7
*
* @param void
*
* @return void
*/
void HD44780_SetPORT_DATA4to7 (void);
/**
* @desc Set DDR DB4 to DB7
*
* @param void
*
* @return void
*/
void HD44780_SetDDR_DATA4to7 (void);
/**
* @desc Clear DDR DB4 to DB7
*
* @param void
*
* @return void
*/
void HD44780_ClearDDR_DATA4to7 (void);
#endif

View File

@ -1,17 +1,17 @@
/*
Description:
This is a template file for standard C header file.
Description:
This is a template file for standard C header file.
*/
*/
/* ************************************************************************** */
/* Revision:
### 20120515 JFM
Original version.
### 20120515 JFM
Original version.
### YYYYMMDD Initial, Bug Identification
Change description.
### YYYYMMDD Initial, Bug Identification
Change description.
*/
#include "define.h"
@ -36,6 +36,10 @@
#include "CurrentSensor.h"
#include "I2C.h"
#include "SPI_Flash.h"
#include "TemperatureSensor.h"
#include "BootloaderInterface.h"
//#define NO_WIFI
#ifndef NO_WIFI
@ -45,10 +49,10 @@
#endif
#ifdef USE_PRINTF
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
#elif defined USE_SYSLOG
#include "Syslog.h"
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
#include "Syslog.h"
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
#endif
#define HEARTBEAT_LED_TIMEOUT 400
@ -60,6 +64,7 @@ static void InitializeBoard(void);
#pragma config POSCMOD = EC, FNOSC = PRIPLL, FPBDIV = DIV_1
//#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_1
#pragma config ICESEL = ICS_PGx2, BWP = OFF
#pragma config FSOSCEN = OFF
int main(void)
{
@ -70,9 +75,10 @@ int main(void)
SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE); //Use peripheral library to optimize configuration
INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);// configure for multi-vectored mode interrupts
OSCCONbits.SOSCEN = 0;
#ifndef __32MX330F064H__
AD1PCFG = 0xFFFF; //Sart with I/O pins configured as digital I/O
AD1PCFG = 0xFFFF; //Sart with I/O pins configured as digital I/O
#endif
InitBoard();
@ -80,10 +86,12 @@ int main(void)
TimerInit();
InitWatchdog();
// I2CInit();
// I2CInit();
InitChaletPowerRelay();
InitBatteryMonitor();
InitHarakiriRelay();
InitTempSensor();
InitUart();
ProtocolInit();
@ -93,6 +101,9 @@ int main(void)
printf("ChaletDuino V2 Initialized\n");
SPIFlashCheckAndConfigure();
TempSensorCheckAndConfigure();
BootloaderInterfaceInit();
@ -104,42 +115,43 @@ int main(void)
#endif
// unsigned int bw;
// unsigned int bw;
// FRESULT res;
// res = f_mount(&FatFs, "", 0); /* Give a work area to the default drive */
// if(!res)
// {
// printf("Could not mount SD card\n");
// }
// else
// {
// printf("SD Card mounted successfuly");
// }
//
// if (f_open(&File[0], "newfile.txt", FA_WRITE | FA_CREATE_ALWAYS) == FR_OK) /* Create a file */
//// {
//
// res = f_write(&File[0], "It works!\r\n", 11, &bw); /* Write data to the file */
//
// res = f_close(&File[0]); /* Close the file */
//
// }
// FRESULT res;
// res = f_mount(&FatFs, "", 0); /* Give a work area to the default drive */
// if(!res)
// {
// printf("Could not mount SD card\n");
// }
// else
// {
// printf("SD Card mounted successfuly");
// }
//
// if (f_open(&File[0], "newfile.txt", FA_WRITE | FA_CREATE_ALWAYS) == FR_OK) /* Create a file */
//// {
//
// res = f_write(&File[0], "It works!\r\n", 11, &bw); /* Write data to the file */
//
// res = f_close(&File[0]); /* Close the file */
//
// }
// int res = OpenPrintfServer();
// int res = OpenPrintfServer();
TimerStart(HEARTBEAT_LED_TMR,HEARTBEAT_LED_TIMEOUT);
// printf("Lora Monitor Started\n");
// printf("Lora Monitor Started\n");
printf("test %d\n", 1);
EnableWatchdog();
KickWatchdog();
mRetCode = 1;
while(mRetCode == 1)
{
@ -153,10 +165,14 @@ int main(void)
ChaletPowerRelayTick();
BatteryMonitorTick();
SyslogTick();
TickTempSensor();
BootloaderInterfaceTick();
if(IsTimerExpired(HEARTBEAT_LED_TMR))
{
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
// HarakiriRelayTurnOff();
TimerStart(HEARTBEAT_LED_TMR,HEARTBEAT_LED_TIMEOUT);
}
}

View File

@ -47,6 +47,7 @@ typedef enum
WIFI_RECONNECT_TIMER,
WIFI_TICK_TIMER,
SYSLOG_TX_TIMER,
TEMP_SENSOR_REFRESH_TIMER,
TIMER_MAX_ID
}eTimerID;

File diff suppressed because it is too large Load Diff

View File

@ -57,17 +57,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
# Source Files Quoted if spaced
SOURCEFILES_QUOTED_IF_SPACED=Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/ChaletduinoV2Board.c Source/Syslog.c Source/Watchdog.c
SOURCEFILES_QUOTED_IF_SPACED=Source/ChaletduinoV2Board.c Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/Syslog.c Source/Watchdog.c Source/BootloaderInterface.c Source/TemperatureSensor.c Source/TC77.c Source/BootloaderProtocol.c
# Object Files Quoted if spaced
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o
POSSIBLE_DEPFILES=${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o.d ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o.d ${OBJECTDIR}/Source/winc3400/socket/source/socket.o.d ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o.d ${OBJECTDIR}/Source/winc3400/winc_init.o.d ${OBJECTDIR}/Source/DigitalIO.o.d ${OBJECTDIR}/Source/InternalUart.o.d ${OBJECTDIR}/Source/NetworkProtocol.o.d ${OBJECTDIR}/Source/Terminal.o.d ${OBJECTDIR}/Source/Uart.o.d ${OBJECTDIR}/Source/Util.o.d ${OBJECTDIR}/Source/exceptions.o.d ${OBJECTDIR}/Source/interrupts.o.d ${OBJECTDIR}/Source/main.o.d ${OBJECTDIR}/Source/system.o.d ${OBJECTDIR}/Source/template.o.d ${OBJECTDIR}/Source/timer.o.d ${OBJECTDIR}/Source/WiFiCtrl.o.d ${OBJECTDIR}/Source/SPI.o.d ${OBJECTDIR}/Source/LoraNetworkInterface.o.d ${OBJECTDIR}/Source/ChaletPowerRelay.o.d ${OBJECTDIR}/Source/HarakiriRelay.o.d ${OBJECTDIR}/Source/BatteryMonitor.o.d ${OBJECTDIR}/Source/ina219.o.d ${OBJECTDIR}/Source/I2C.o.d ${OBJECTDIR}/Source/SPI_Flash.o.d ${OBJECTDIR}/Source/ChaletduinoV2Board.o.d ${OBJECTDIR}/Source/Syslog.o.d ${OBJECTDIR}/Source/Watchdog.o.d
OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o ${OBJECTDIR}/Source/BootloaderInterface.o ${OBJECTDIR}/Source/TemperatureSensor.o ${OBJECTDIR}/Source/TC77.o ${OBJECTDIR}/Source/BootloaderProtocol.o
POSSIBLE_DEPFILES=${OBJECTDIR}/Source/ChaletduinoV2Board.o.d ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o.d ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o.d ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o.d ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o.d ${OBJECTDIR}/Source/winc3400/socket/source/socket.o.d ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o.d ${OBJECTDIR}/Source/winc3400/winc_init.o.d ${OBJECTDIR}/Source/DigitalIO.o.d ${OBJECTDIR}/Source/InternalUart.o.d ${OBJECTDIR}/Source/NetworkProtocol.o.d ${OBJECTDIR}/Source/Terminal.o.d ${OBJECTDIR}/Source/Uart.o.d ${OBJECTDIR}/Source/Util.o.d ${OBJECTDIR}/Source/exceptions.o.d ${OBJECTDIR}/Source/interrupts.o.d ${OBJECTDIR}/Source/main.o.d ${OBJECTDIR}/Source/system.o.d ${OBJECTDIR}/Source/template.o.d ${OBJECTDIR}/Source/timer.o.d ${OBJECTDIR}/Source/WiFiCtrl.o.d ${OBJECTDIR}/Source/SPI.o.d ${OBJECTDIR}/Source/LoraNetworkInterface.o.d ${OBJECTDIR}/Source/ChaletPowerRelay.o.d ${OBJECTDIR}/Source/HarakiriRelay.o.d ${OBJECTDIR}/Source/BatteryMonitor.o.d ${OBJECTDIR}/Source/ina219.o.d ${OBJECTDIR}/Source/I2C.o.d ${OBJECTDIR}/Source/SPI_Flash.o.d ${OBJECTDIR}/Source/Syslog.o.d ${OBJECTDIR}/Source/Watchdog.o.d ${OBJECTDIR}/Source/BootloaderInterface.o.d ${OBJECTDIR}/Source/TemperatureSensor.o.d ${OBJECTDIR}/Source/TC77.o.d ${OBJECTDIR}/Source/BootloaderProtocol.o.d
# Object Files
OBJECTFILES=${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o
OBJECTFILES=${OBJECTDIR}/Source/ChaletduinoV2Board.o ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o ${OBJECTDIR}/Source/winc3400/bus_wrapper/source/nm_bus_wrapper.o ${OBJECTDIR}/Source/winc3400/common/source/nm_common.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ate_mode.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_crypto.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_hif.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ota.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_periph.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_ssl.o ${OBJECTDIR}/Source/winc3400/driver/source/m2m_wifi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmasic.o ${OBJECTDIR}/Source/winc3400/driver/source/nmbus.o ${OBJECTDIR}/Source/winc3400/driver/source/nmdrv.o ${OBJECTDIR}/Source/winc3400/driver/source/nmi2c.o ${OBJECTDIR}/Source/winc3400/driver/source/nmspi.o ${OBJECTDIR}/Source/winc3400/driver/source/nmuart.o ${OBJECTDIR}/Source/winc3400/socket/source/socket.o ${OBJECTDIR}/Source/winc3400/spi_flash/source/spi_flash.o ${OBJECTDIR}/Source/winc3400/winc_init.o ${OBJECTDIR}/Source/DigitalIO.o ${OBJECTDIR}/Source/InternalUart.o ${OBJECTDIR}/Source/NetworkProtocol.o ${OBJECTDIR}/Source/Terminal.o ${OBJECTDIR}/Source/Uart.o ${OBJECTDIR}/Source/Util.o ${OBJECTDIR}/Source/exceptions.o ${OBJECTDIR}/Source/interrupts.o ${OBJECTDIR}/Source/main.o ${OBJECTDIR}/Source/system.o ${OBJECTDIR}/Source/template.o ${OBJECTDIR}/Source/timer.o ${OBJECTDIR}/Source/WiFiCtrl.o ${OBJECTDIR}/Source/SPI.o ${OBJECTDIR}/Source/LoraNetworkInterface.o ${OBJECTDIR}/Source/ChaletPowerRelay.o ${OBJECTDIR}/Source/HarakiriRelay.o ${OBJECTDIR}/Source/BatteryMonitor.o ${OBJECTDIR}/Source/ina219.o ${OBJECTDIR}/Source/I2C.o ${OBJECTDIR}/Source/SPI_Flash.o ${OBJECTDIR}/Source/Syslog.o ${OBJECTDIR}/Source/Watchdog.o ${OBJECTDIR}/Source/BootloaderInterface.o ${OBJECTDIR}/Source/TemperatureSensor.o ${OBJECTDIR}/Source/TC77.o ${OBJECTDIR}/Source/BootloaderProtocol.o
# Source Files
SOURCEFILES=Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/ChaletduinoV2Board.c Source/Syslog.c Source/Watchdog.c
SOURCEFILES=Source/ChaletduinoV2Board.c Source/winc3400/bsp/source/nm_bsp.c Source/winc3400/bus_wrapper/source/nm_bus_wrapper.c Source/winc3400/common/source/nm_common.c Source/winc3400/driver/source/m2m_ate_mode.c Source/winc3400/driver/source/m2m_crypto.c Source/winc3400/driver/source/m2m_hif.c Source/winc3400/driver/source/m2m_ota.c Source/winc3400/driver/source/m2m_periph.c Source/winc3400/driver/source/m2m_ssl.c Source/winc3400/driver/source/m2m_wifi.c Source/winc3400/driver/source/nmasic.c Source/winc3400/driver/source/nmbus.c Source/winc3400/driver/source/nmdrv.c Source/winc3400/driver/source/nmi2c.c Source/winc3400/driver/source/nmspi.c Source/winc3400/driver/source/nmuart.c Source/winc3400/socket/source/socket.c Source/winc3400/spi_flash/source/spi_flash.c Source/winc3400/winc_init.c Source/DigitalIO.c Source/InternalUart.c Source/NetworkProtocol.c Source/Terminal.c Source/Uart.c Source/Util.c Source/exceptions.c Source/interrupts.c Source/main.c Source/system.c Source/template.c Source/timer.c Source/WiFiCtrl.c Source/SPI.c Source/LoraNetworkInterface.c Source/ChaletPowerRelay.c Source/HarakiriRelay.c Source/BatteryMonitor.c Source/ina219.c Source/I2C.c Source/SPI_Flash.c Source/Syslog.c Source/Watchdog.c Source/BootloaderInterface.c Source/TemperatureSensor.c Source/TC77.c Source/BootloaderProtocol.c
@ -107,6 +107,13 @@ endif
# ------------------------------------------------------------------------------------
# Rules for buildStep: compile
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o.d
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" -o ${OBJECTDIR}/Source/ChaletduinoV2Board.o Source/ChaletduinoV2Board.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o: Source/winc3400/bsp/source/nm_bsp.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source/winc3400/bsp/source"
@${RM} ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d
@ -387,13 +394,6 @@ ${OBJECTDIR}/Source/SPI_Flash.o: Source/SPI_Flash.c nbproject/Makefile-${CND_CO
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/SPI_Flash.o.d" -o ${OBJECTDIR}/Source/SPI_Flash.o Source/SPI_Flash.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/SPI_Flash.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o.d
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" -o ${OBJECTDIR}/Source/ChaletduinoV2Board.o Source/ChaletduinoV2Board.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/Syslog.o: Source/Syslog.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/Syslog.o.d
@ -408,7 +408,42 @@ ${OBJECTDIR}/Source/Watchdog.o: Source/Watchdog.c nbproject/Makefile-${CND_CONF
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/Watchdog.o.d" -o ${OBJECTDIR}/Source/Watchdog.o Source/Watchdog.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/Watchdog.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/BootloaderInterface.o: Source/BootloaderInterface.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/BootloaderInterface.o.d
@${RM} ${OBJECTDIR}/Source/BootloaderInterface.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/BootloaderInterface.o.d" -o ${OBJECTDIR}/Source/BootloaderInterface.o Source/BootloaderInterface.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/BootloaderInterface.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/TemperatureSensor.o: Source/TemperatureSensor.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/TemperatureSensor.o.d
@${RM} ${OBJECTDIR}/Source/TemperatureSensor.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/TemperatureSensor.o.d" -o ${OBJECTDIR}/Source/TemperatureSensor.o Source/TemperatureSensor.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/TemperatureSensor.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/TC77.o: Source/TC77.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/TC77.o.d
@${RM} ${OBJECTDIR}/Source/TC77.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/TC77.o.d" -o ${OBJECTDIR}/Source/TC77.o Source/TC77.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/TC77.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/BootloaderProtocol.o: Source/BootloaderProtocol.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/BootloaderProtocol.o.d
@${RM} ${OBJECTDIR}/Source/BootloaderProtocol.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -D__DEBUG -D__MPLAB_DEBUGGER_ICD3=1 -fframe-base-loclist -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/BootloaderProtocol.o.d" -o ${OBJECTDIR}/Source/BootloaderProtocol.o Source/BootloaderProtocol.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/BootloaderProtocol.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
else
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o.d
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" -o ${OBJECTDIR}/Source/ChaletduinoV2Board.o Source/ChaletduinoV2Board.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o: Source/winc3400/bsp/source/nm_bsp.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source/winc3400/bsp/source"
@${RM} ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d
@ -689,13 +724,6 @@ ${OBJECTDIR}/Source/SPI_Flash.o: Source/SPI_Flash.c nbproject/Makefile-${CND_CO
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/SPI_Flash.o.d" -o ${OBJECTDIR}/Source/SPI_Flash.o Source/SPI_Flash.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/SPI_Flash.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/ChaletduinoV2Board.o: Source/ChaletduinoV2Board.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o.d
@${RM} ${OBJECTDIR}/Source/ChaletduinoV2Board.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" -o ${OBJECTDIR}/Source/ChaletduinoV2Board.o Source/ChaletduinoV2Board.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/ChaletduinoV2Board.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/Syslog.o: Source/Syslog.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/Syslog.o.d
@ -710,6 +738,34 @@ ${OBJECTDIR}/Source/Watchdog.o: Source/Watchdog.c nbproject/Makefile-${CND_CONF
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/Watchdog.o.d" -o ${OBJECTDIR}/Source/Watchdog.o Source/Watchdog.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/Watchdog.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/BootloaderInterface.o: Source/BootloaderInterface.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/BootloaderInterface.o.d
@${RM} ${OBJECTDIR}/Source/BootloaderInterface.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/BootloaderInterface.o.d" -o ${OBJECTDIR}/Source/BootloaderInterface.o Source/BootloaderInterface.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/BootloaderInterface.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/TemperatureSensor.o: Source/TemperatureSensor.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/TemperatureSensor.o.d
@${RM} ${OBJECTDIR}/Source/TemperatureSensor.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/TemperatureSensor.o.d" -o ${OBJECTDIR}/Source/TemperatureSensor.o Source/TemperatureSensor.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/TemperatureSensor.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/TC77.o: Source/TC77.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/TC77.o.d
@${RM} ${OBJECTDIR}/Source/TC77.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/TC77.o.d" -o ${OBJECTDIR}/Source/TC77.o Source/TC77.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/TC77.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
${OBJECTDIR}/Source/BootloaderProtocol.o: Source/BootloaderProtocol.c nbproject/Makefile-${CND_CONF}.mk
@${MKDIR} "${OBJECTDIR}/Source"
@${RM} ${OBJECTDIR}/Source/BootloaderProtocol.o.d
@${RM} ${OBJECTDIR}/Source/BootloaderProtocol.o
${MP_CC} $(MP_EXTRA_CC_PRE) -g -x c -c -mprocessor=$(MP_PROCESSOR_OPTION) -I"Source/winc3400" -I"Source" -DCHALETDUINO_V2_BRD -D_SUPPRESS_PLIB_WARNING -MMD -MF "${OBJECTDIR}/Source/BootloaderProtocol.o.d" -o ${OBJECTDIR}/Source/BootloaderProtocol.o Source/BootloaderProtocol.c -DXPRJ_ChaletDuinoV2_775F512H_=$(CND_CONF) $(COMPARISON_BUILD)
@${FIXDEPS} "${OBJECTDIR}/Source/BootloaderProtocol.o.d" $(SILENT) -rsi ${MP_CC_DIR}../
endif
# ------------------------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
#
#Sun May 23 13:54:36 EDT 2021
#Mon Jun 28 17:59:50 EDT 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
@ -7,7 +7,7 @@ ChaletDuinoV2_775F512H_.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageTool
conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_775F512H_
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
configurations-xml=2a01bf653fdb7018185d7d8721dab7b8
configurations-xml=eff83ea92f05b99cc93fc2b768289ae4
default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=a5745c99cb5a5032f17cfaf0ff720282
ChaletDuinoV2_775F512H_.Pack.dfplocation=C\:\\Program Files (x86)\\Microchip\\MPLABX\\v5.40\\packs\\Microchip\\PIC32MX_DFP\\1.3.231
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc

View File

@ -104,6 +104,11 @@
<itemPath>Source/SPI_Flash.h</itemPath>
<itemPath>Source/Syslog.h</itemPath>
<itemPath>Source/Watchdog.h</itemPath>
<itemPath>Source/BootloaderInterface.h</itemPath>
<itemPath>Source/TemperatureSensor.h</itemPath>
<itemPath>Source/TC77.h</itemPath>
<itemPath>Source/BootloaderProtocol.h</itemPath>
<itemPath>Source/FlashMapping.h</itemPath>
</logicalFolder>
<logicalFolder name="LinkerScript"
displayName="Linker Files"
@ -205,6 +210,10 @@
<itemPath>Source/SPI_Flash.c</itemPath>
<itemPath>Source/Syslog.c</itemPath>
<itemPath>Source/Watchdog.c</itemPath>
<itemPath>Source/BootloaderInterface.c</itemPath>
<itemPath>Source/TemperatureSensor.c</itemPath>
<itemPath>Source/TC77.c</itemPath>
<itemPath>Source/BootloaderProtocol.c</itemPath>
</logicalFolder>
<logicalFolder name="ExternalFiles"
displayName="Important Files"
@ -212,8 +221,6 @@
<itemPath>Makefile</itemPath>
<itemPath>dist/ChaletDuino_775F512H_/production/LoraMonitor.X.production.map</itemPath>
</logicalFolder>
<itemPath>Source/BootloaderProtocol.c</itemPath>
<itemPath>Source/BootloaderProtocol.h</itemPath>
</logicalFolder>
<sourceRootList>
<Elem>.</Elem>
@ -726,6 +733,20 @@
<property key="voltagevalue" value="3.25"/>
</ICD3PlatformTool>
<item path="Source/BoardCfg_ChaletduinoV2.h" 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/BoardCfg_Fubarino.h" ex="true" overriding="false">
<C32>
@ -760,10 +781,52 @@
</C32Global>
</item>
<item path="Source/BootloaderProtocol.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/BootloaderProtocol.h" 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/ChaletduinoV2Board.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/FubarinoBoard.c" ex="true" overriding="false">
<C32>
@ -1184,6 +1247,20 @@
<property key="voltagevalue" value="3.25"/>
</ICD3PlatformTool>
<item path="Source/BoardCfg_Chaletduino.h" 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/BoardCfg_Fubarino.h" ex="true" overriding="false">
<C32>
@ -1217,11 +1294,53 @@
<C32Global>
</C32Global>
</item>
<item path="Source/BootloaderProtocol.c" ex="true" overriding="false">
<item path="Source/BootloaderProtocol.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/BootloaderProtocol.h" ex="true" overriding="false">
<item path="Source/BootloaderProtocol.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/ChaletduinoBoard.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/FubarinoBoard.c" ex="true" overriding="false">
<C32>