Début bootloader, Temperature sensor et autre gossage
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 */
|
||||
|
||||
@@ -14,306 +14,331 @@ 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;
|
||||
BootloaderDataSize = 0;
|
||||
BootloaderBufPtr = 0;
|
||||
BootloaderCommand = 0;
|
||||
BootloaderCRC = 0;
|
||||
BootloaderState = RxHeader1;
|
||||
break;
|
||||
}
|
||||
case RxHeader: //Wait for data header...
|
||||
case RxHeader1: //Wait for data header...
|
||||
{
|
||||
if(Data == FRAME_HEADER)
|
||||
BootloaderHeader <<= 8;
|
||||
BootloaderHeader += Data; //0xDE
|
||||
|
||||
if(Data == BOOTLOADER_FRAME_HEADER_1)
|
||||
{
|
||||
mRxData[BufPtr++] = Data;
|
||||
State = RxAdd;
|
||||
CRC ^= Data;
|
||||
BootloaderState = RxHeader2;
|
||||
}
|
||||
else
|
||||
{
|
||||
DataSize = 0;
|
||||
ResetStateMachine();
|
||||
BootloaderProtocolResetStateMachine();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RxHeader2: //Wait for data header...
|
||||
{
|
||||
BootloaderHeader <<= 8;
|
||||
BootloaderHeader += Data; //0xAD
|
||||
|
||||
break;
|
||||
}
|
||||
case RxAdd: //Sender Address.
|
||||
if(Data == BOOTLOADER_FRAME_HEADER_2)
|
||||
{
|
||||
SenderAddress = Data;
|
||||
mRxData[BufPtr++] = Data;
|
||||
State = RxID;
|
||||
CRC ^= Data;
|
||||
break;
|
||||
BootloaderState = RxHeader3;
|
||||
}
|
||||
case RxID: //Sender ID
|
||||
{
|
||||
mRxData[BufPtr++] = Data;
|
||||
State = RxMyID;
|
||||
SenderID = Data;
|
||||
CRC ^= Data;
|
||||
break;
|
||||
}
|
||||
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;
|
||||
|
||||
|
||||
State = RxSize2;
|
||||
CRC ^= Data;
|
||||
break;
|
||||
}
|
||||
case RxSize2: //Data size
|
||||
{
|
||||
DataSize |= (unsigned int)Data;
|
||||
DataSize <<= 8;
|
||||
mRxData[BufPtr++] = Data;
|
||||
|
||||
|
||||
State = RxSize3;
|
||||
CRC ^= Data;
|
||||
break;
|
||||
}
|
||||
case RxSize3: //Data size
|
||||
{
|
||||
DataSize |= (unsigned int)Data;
|
||||
DataSize <<= 8;
|
||||
mRxData[BufPtr++] = Data;
|
||||
|
||||
|
||||
State = RxSize4;
|
||||
CRC ^= Data;
|
||||
break;
|
||||
}
|
||||
|
||||
case RxSize4: //Data size LSB
|
||||
{
|
||||
DataSize |= (unsigned int)Data;
|
||||
mRxData[BufPtr++] = Data;
|
||||
|
||||
if(DataSize > MAX_MESSAGE_SIZE)
|
||||
ResetStateMachine();
|
||||
|
||||
if(DataSize == 0)
|
||||
State = RxCRC;
|
||||
else
|
||||
State = RxData;
|
||||
|
||||
CRC ^= Data;
|
||||
{
|
||||
BootloaderProtocolResetStateMachine();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RxData:
|
||||
case RxHeader3: //Wait for data header...
|
||||
{
|
||||
CRC ^= Data;
|
||||
BootloaderHeader <<= 8;
|
||||
BootloaderHeader += Data; //0xBE
|
||||
|
||||
mRxData[BufPtr++] = Data;
|
||||
DataCtr++;
|
||||
|
||||
if(DataCtr == DataSize)
|
||||
if(Data == BOOTLOADER_FRAME_HEADER_3)
|
||||
{
|
||||
State = RxCRC;
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
BootloaderState = RxCmd;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case RxCRC:
|
||||
case RxCmd:
|
||||
{
|
||||
if(Data != CRC)
|
||||
{
|
||||
ResetStateMachine();
|
||||
// ProtocolAcknowledge(0,Command,0);
|
||||
BootloaderCommand = Data;
|
||||
BootloaderState = RxPayloadSize1;
|
||||
break;
|
||||
}
|
||||
// NewMasterMessageReceived(mRxData);
|
||||
ExecuteMasterCommand(Command,ProtocolMsgDataPtr());
|
||||
ResetStateMachine();
|
||||
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)
|
||||
{
|
||||
//TODO, send NACK?
|
||||
BootloaderProtocolResetStateMachine();
|
||||
break;
|
||||
}
|
||||
|
||||
if(BootloaderDataSize == 0)
|
||||
{
|
||||
BootloaderState = RxCRC1;
|
||||
}
|
||||
else
|
||||
{
|
||||
BootloaderState = RxPayload;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RxPayload: //Data size
|
||||
{
|
||||
*BootloaderRxPtr = Data;
|
||||
BootloaderRxPtr++;
|
||||
|
||||
BootloaderDataCtr++;
|
||||
|
||||
if(BootloaderDataCtr == BootloaderDataSize)
|
||||
{
|
||||
BootloaderState = RxCRC1;
|
||||
break;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
//TODO: Compute and Compare CRC.
|
||||
if(BootloaderCRC != 0xBAADCAFE)
|
||||
{
|
||||
BootloaderProtocolResetStateMachine();
|
||||
}
|
||||
|
||||
BootloaderExecuteCmd(BootloaderCommand);
|
||||
BootloaderProtocolResetStateMachine();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
ResetStateMachine();
|
||||
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;
|
||||
}
|
||||
|
||||
unsigned char ProtocolIsReceiving(void)
|
||||
{
|
||||
if(State == RxHeader)
|
||||
return 0; // Idle...
|
||||
else
|
||||
return 1; //receiving from serial port
|
||||
|
||||
BootloaderProtocolStateMachine(*DataBuf++);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
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 BootloaderProtocolResetStateMachine()
|
||||
{
|
||||
if(Size > MAX_MESSAGE_SIZE)
|
||||
BootloaderDataSize = 0;
|
||||
BootloaderHeader = 0;
|
||||
BootloaderBufPtr = 0;
|
||||
BootloaderCommand = 0;
|
||||
BootloaderCRC = 0;
|
||||
BootloaderState = RxHeader1;
|
||||
BootloaderDataCtr = 0;
|
||||
|
||||
BootloaderRxPtr = &BootloaderBuffer[0];
|
||||
}
|
||||
|
||||
void BootloaderProtocolSendFrame(unsigned char Cmd, int 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;
|
||||
|
||||
BootloaderBuffer[4] = Cmd;
|
||||
|
||||
char nibble = (char)((Size >> 24) &0x000000FF);
|
||||
BootloaderBuffer[5] = nibble;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
mTxData[FRAME_HEADER_INDEX] = FRAME_HEADER; //header
|
||||
mTxData[FRAME_SENDER_ADDRESS_INDEX] = MY_DEVICE_ADDRESS; //My Address
|
||||
mTxData[FRAME_SENDER_DEVICE_ID_INDEX] = SenderDevice; //My ID
|
||||
mTxData[FRAME_DEST_DEVICE_ID_INDEX] = DestDevice; //Destination ID
|
||||
mTxData[FRAME_DEST_ADDRESS_INDEX] = DestAddress ;//Address; //Destination Address
|
||||
mTxData[FRAME_FLAGS_INDEX] = Flags; //Flags
|
||||
mTxData[FRAME_COMMAND_INDEX] = Cmd; //Command to send
|
||||
mTxData[FRAME_SIZE1_INDEX] = (unsigned char)((Size >> 24) & 0xFF);
|
||||
mTxData[FRAME_SIZE2_INDEX] = (unsigned char)((Size >> 16) & 0xFF);
|
||||
mTxData[FRAME_SIZE3_INDEX] = (unsigned char)((Size >> 8) & 0xFF);
|
||||
mTxData[FRAME_SIZE4_INDEX] = (unsigned char)(Size & 0xFF);
|
||||
memcpy((void*)&mTxData[FRAME_DATA_INDEX],(void*)Data,Size); //Cmd data
|
||||
mTxData[Size+FRAME_DATA_INDEX] = ProtocolCalcCrc(mTxData,Size + FRAME_DATA_INDEX); // CRC
|
||||
|
||||
*FrameSize = Size + FRAME_INDEX_NBR;
|
||||
|
||||
return &mTxData[FRAME_HEADER_INDEX];
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 */
|
||||
@@ -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;
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "ChaletPowerRelay.h"
|
||||
#include "HarakiriRelay.h"
|
||||
#include "BatteryMonitor.h"
|
||||
#include "LedLightCtrl.h"
|
||||
#include "TemperatureSensor.h"
|
||||
//#include "WiFiCtrl.h"
|
||||
//
|
||||
|
||||
@@ -25,6 +27,7 @@ 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)
|
||||
{
|
||||
@@ -35,12 +38,14 @@ void ExecuteMasterCommand(int Command, unsigned char *Data)
|
||||
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 ChaletStatus[14];
|
||||
|
||||
if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
|
||||
{
|
||||
@@ -66,9 +71,17 @@ void ExecuteMasterCommand(int Command, unsigned char *Data)
|
||||
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);
|
||||
|
||||
SendLoraNetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,14);
|
||||
|
||||
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
|
||||
|
||||
@@ -78,7 +91,6 @@ void ExecuteMasterCommand(int Command, unsigned char *Data)
|
||||
{
|
||||
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:
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 */
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
#include "define.h"
|
||||
#include "MasterCtrlInterface.h"
|
||||
#ifdef USE_WINC1500
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 */
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
}
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -105,6 +110,11 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
{
|
||||
listen(NetworkServerSocket,0);
|
||||
}
|
||||
else if(sock == BootloaderServerSocket)
|
||||
{
|
||||
listen(BootloaderServerSocket,0);
|
||||
printf("Bootloader server started\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -118,7 +128,7 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
tstrSocketListenMsg *pstrListen = (tstrSocketListenMsg*)pvMsg;
|
||||
if(pstrListen->status != 0)
|
||||
{
|
||||
printf("socket %d listen Failed\n",socket);;
|
||||
printf("socket %d listen Failed. Error: %d\n",(int)sock, pstrListen->status);
|
||||
break;
|
||||
}
|
||||
if(sock == SyslogServerSocket)
|
||||
@@ -162,6 +172,14 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
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
|
||||
@@ -180,8 +198,9 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
if(sock == TerminalSocket)
|
||||
{
|
||||
//Fwd data to Terminal...
|
||||
RxTerminalBuf(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
|
||||
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
|
||||
RxTerminalBuf(TerminalRxBuf, pstrRecvMsg->s16BufferSize);
|
||||
|
||||
}
|
||||
else if(sock == SyslogSocket)
|
||||
{
|
||||
@@ -194,6 +213,14 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
//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.
|
||||
{
|
||||
@@ -217,6 +244,13 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
||||
NetworkSocket = -1;
|
||||
printf("Network client disconnected\n");
|
||||
}
|
||||
else if(sock == BootloaderSocket)
|
||||
{
|
||||
close(BootloaderSocket);
|
||||
BootloaderSocket = -1;
|
||||
printf("Bootloader client disconnected\n");
|
||||
BootloaderDeactivateBootloader();
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -486,7 +525,8 @@ void TickWiFi()
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
@@ -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 }
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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,6 +75,7 @@ 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
|
||||
@@ -84,6 +90,8 @@ int main(void)
|
||||
InitChaletPowerRelay();
|
||||
InitBatteryMonitor();
|
||||
InitHarakiriRelay();
|
||||
InitTempSensor();
|
||||
|
||||
|
||||
InitUart();
|
||||
ProtocolInit();
|
||||
@@ -93,6 +101,9 @@ int main(void)
|
||||
printf("ChaletDuino V2 Initialized\n");
|
||||
|
||||
SPIFlashCheckAndConfigure();
|
||||
TempSensorCheckAndConfigure();
|
||||
|
||||
BootloaderInterfaceInit();
|
||||
|
||||
|
||||
|
||||
@@ -140,6 +151,7 @@ int main(void)
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ typedef enum
|
||||
WIFI_RECONNECT_TIMER,
|
||||
WIFI_TICK_TIMER,
|
||||
SYSLOG_TX_TIMER,
|
||||
TEMP_SENSOR_REFRESH_TIMER,
|
||||
TIMER_MAX_ID
|
||||
}eTimerID;
|
||||
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+7191
-6625
File diff suppressed because it is too large
Load Diff
+2314
-2118
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user