Début bootloader, Temperature sensor et autre gossage
This commit is contained in:
@@ -84,11 +84,11 @@ void BatteryMonitorTick()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(NetworkSendCounter++ == 10)
|
// if(NetworkSendCounter++ == 10)
|
||||||
{
|
// {
|
||||||
NetworkSendCounter = 0;
|
// NetworkSendCounter = 0;
|
||||||
SendNetworkBatteryData();
|
// SendNetworkBatteryData();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -115,19 +115,20 @@ int GetBatterySOC()
|
|||||||
|
|
||||||
int SendNetworkBatteryData()
|
int SendNetworkBatteryData()
|
||||||
{
|
{
|
||||||
int VoltageMilliVolts = (int)(mBatteryVoltage * 1000);
|
// int VoltageMilliVolts = (int)(mBatteryVoltage * 1000);
|
||||||
int BattCurrent = mBatteryCurrent;
|
// int BattCurrent = mBatteryCurrent;
|
||||||
|
//
|
||||||
char BatData[10];
|
// char BatData[10];
|
||||||
BatData[0] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 1
|
// BatData[0] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 1
|
||||||
VoltageMilliVolts >>= 8;
|
// VoltageMilliVolts >>= 8;
|
||||||
BatData[1] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 2
|
// BatData[1] = (char)(VoltageMilliVolts & 0x000000FF); //Battery Voltage 2
|
||||||
BatData[2] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 1
|
// BatData[2] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 1
|
||||||
BattCurrent >>= 8;
|
// BattCurrent >>= 8;
|
||||||
BatData[3] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 2
|
// BatData[3] = (char)(BattCurrent & 0x000000FF); //Solar panel Current 2
|
||||||
|
//
|
||||||
SendNetworkData(BatData,4);
|
// SendNetworkData(BatData,4);
|
||||||
|
|
||||||
|
printf("Battery voltage: %f\n",mBatteryVoltage);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ extern "C" {
|
|||||||
//LoRa
|
//LoRa
|
||||||
#define LORA_MODULE_RELAY_PIN_DIR TRISDbits.TRISD11
|
#define LORA_MODULE_RELAY_PIN_DIR TRISDbits.TRISD11
|
||||||
#define LORA_MODULE_RELAY_PIN LATDbits.LATD11
|
#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_M0_PIN LATEbits.LATE7
|
||||||
#define LORA_MODULE_M1_PIN_DIR TRISDbits.TRISD9
|
#define LORA_MODULE_M1_PIN_DIR TRISDbits.TRISD9
|
||||||
#define LORA_MODULE_M1_PIN LATDbits.LATD9
|
#define LORA_MODULE_M1_PIN LATDbits.LATD9
|
||||||
@@ -150,8 +150,8 @@ extern "C" {
|
|||||||
#define LCD_DB7_PIN_DIR TRISBbits.TRISB11
|
#define LCD_DB7_PIN_DIR TRISBbits.TRISB11
|
||||||
#define LCD_DB7_PIN LATBbits.LATB11
|
#define LCD_DB7_PIN LATBbits.LATB11
|
||||||
|
|
||||||
#define LCD_SCROLL_BTN_PIN_DIR TRISCbits.TRISC13
|
//#define LCD_SCROLL_BTN_PIN_DIR TRISCbits.TRISC13
|
||||||
#define LCD_SCROLL_BTN_PIN PORTCbits.PORTC13
|
//#define LCD_SCROLL_BTN_PIN PORTCbits.PORTC13
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* Prototypes */
|
/* 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 */
|
||||||
|
|
||||||
@@ -1,319 +1,344 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
Project: Automatic cat feeder
|
Project: Automatic cat feeder
|
||||||
Date: march 19 2006
|
Date: march 19 2006
|
||||||
Author: Jean-Fran�ois Martel
|
Author: Jean-Fran�ois Martel
|
||||||
Target: PIC 18F252
|
Target: PIC 18F252
|
||||||
Compiler: Microchip mcc18
|
Compiler: Microchip mcc18
|
||||||
Filename: Protocol.c
|
Filename: Protocol.c
|
||||||
|
|
||||||
File description: Communication protocol implementation.
|
File description: Communication protocol implementation.
|
||||||
|
|
||||||
|
|
||||||
jean-francois.martel@polymtl.ca
|
jean-francois.martel@polymtl.ca
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
#include "define.h"
|
#include "define.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "ProtocolDefs.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;
|
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...
|
case Initialization: //Reset all pointers and data...
|
||||||
{
|
{
|
||||||
DataSize = 0;
|
BootloaderDataSize = 0;
|
||||||
BufPtr = 0;
|
BootloaderBufPtr = 0;
|
||||||
RxPtr = 0;
|
BootloaderCommand = 0;
|
||||||
Command = 0;
|
BootloaderCRC = 0;
|
||||||
CRC = 0;
|
BootloaderState = RxHeader1;
|
||||||
State = RxHeader;
|
|
||||||
break;
|
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;
|
BootloaderState = RxHeader2;
|
||||||
State = RxAdd;
|
|
||||||
CRC ^= Data;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DataSize = 0;
|
BootloaderProtocolResetStateMachine();
|
||||||
ResetStateMachine();
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxHeader2: //Wait for data header...
|
||||||
|
{
|
||||||
|
BootloaderHeader <<= 8;
|
||||||
|
BootloaderHeader += Data; //0xAD
|
||||||
|
|
||||||
break;
|
if(Data == BOOTLOADER_FRAME_HEADER_2)
|
||||||
}
|
|
||||||
case RxAdd: //Sender Address.
|
|
||||||
{
|
{
|
||||||
SenderAddress = Data;
|
BootloaderState = RxHeader3;
|
||||||
mRxData[BufPtr++] = Data;
|
|
||||||
State = RxID;
|
|
||||||
CRC ^= Data;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
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
|
else
|
||||||
State = RxData;
|
{
|
||||||
|
BootloaderProtocolResetStateMachine();
|
||||||
CRC ^= Data;
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RxData:
|
case RxHeader3: //Wait for data header...
|
||||||
{
|
{
|
||||||
CRC ^= Data;
|
BootloaderHeader <<= 8;
|
||||||
|
BootloaderHeader += Data; //0xBE
|
||||||
|
|
||||||
mRxData[BufPtr++] = Data;
|
if(Data == BOOTLOADER_FRAME_HEADER_3)
|
||||||
DataCtr++;
|
|
||||||
|
|
||||||
if(DataCtr == DataSize)
|
|
||||||
{
|
{
|
||||||
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;
|
break;
|
||||||
}
|
}
|
||||||
case RxCRC:
|
case RxCmd:
|
||||||
{
|
{
|
||||||
if(Data != CRC)
|
BootloaderCommand = Data;
|
||||||
{
|
BootloaderState = RxPayloadSize1;
|
||||||
ResetStateMachine();
|
|
||||||
// ProtocolAcknowledge(0,Command,0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// NewMasterMessageReceived(mRxData);
|
case RxPayloadSize1:
|
||||||
ExecuteMasterCommand(Command,ProtocolMsgDataPtr());
|
{
|
||||||
ResetStateMachine();
|
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;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
ResetStateMachine();
|
BootloaderProtocolResetStateMachine();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProtocolAnalyzeNewData(unsigned char Data)
|
void BootloaderProtocolProtocolAnalyzeNewData(unsigned char *DataBuf, int size)
|
||||||
{
|
{
|
||||||
// mRxData[RxPtr] = Data;
|
int i;
|
||||||
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;
|
|
||||||
for(i = 0; i < size; 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
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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)
|
|
||||||
{
|
|
||||||
if(Size > MAX_MESSAGE_SIZE)
|
|
||||||
{
|
{
|
||||||
*FrameSize = 0;
|
BootloaderProtocolStateMachine(*DataBuf++);
|
||||||
return &mTxData[FRAME_HEADER_INDEX];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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()
|
void BootloaderProtocolResetStateMachine()
|
||||||
{
|
{
|
||||||
return &mRxData[FRAME_DATA_INDEX];
|
BootloaderDataSize = 0;
|
||||||
|
BootloaderHeader = 0;
|
||||||
|
BootloaderBufPtr = 0;
|
||||||
|
BootloaderCommand = 0;
|
||||||
|
BootloaderCRC = 0;
|
||||||
|
BootloaderState = RxHeader1;
|
||||||
|
BootloaderDataCtr = 0;
|
||||||
|
|
||||||
|
BootloaderRxPtr = &BootloaderBuffer[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendFrame(unsigned char Cmd, int Size)
|
||||||
|
{
|
||||||
|
//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);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char *BootloaderProtocolGetDataBufferPtr()
|
||||||
|
{
|
||||||
|
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
|
jean-francois.martel@polymtl.ca
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef BOOTLOADERPROTOCOL_H
|
||||||
|
#define BOOTLOADERPROTOCOL_H
|
||||||
|
|
||||||
//Protocol buffer specific definitions
|
//Protocol buffer specific definitions
|
||||||
|
|
||||||
|
#define MAX_BOOTLOADER_PAYLOAD_SIZE 256
|
||||||
#define MASTER_ADDRESS 0x01
|
#define BOOTLOADER_FRAME_HEADER 0xDEADBEEF
|
||||||
#define MY_DEVICE_ADDRESS 0x01
|
#define BOOTLOADER_FRAME_HEADER_1 0xDE
|
||||||
|
#define BOOTLOADER_FRAME_HEADER_2 0xAD
|
||||||
#define ADDRESS 0x01
|
#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
|
//State Machine states
|
||||||
enum States
|
enum States
|
||||||
{
|
{
|
||||||
Initialization,
|
Initialization,
|
||||||
RxHeader,
|
RxHeader1,
|
||||||
RxAdd,
|
RxHeader2,
|
||||||
RxID,
|
RxHeader3,
|
||||||
RxMyID,
|
RxHeader4,
|
||||||
RxMyAddress,
|
RxCmd,
|
||||||
RxFlags,
|
RxPayloadSize1,
|
||||||
RxCMD,
|
RxPayloadSize2,
|
||||||
RxSize1,
|
RxPayloadSize3,
|
||||||
RxSize2,
|
RxPayloadSize4,
|
||||||
RxSize3,
|
RxPayload,
|
||||||
RxSize4,
|
RxCRC1,
|
||||||
RxData,
|
RxCRC2,
|
||||||
RxCRC
|
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
|
//enum DEVICES_IDS
|
||||||
@@ -60,13 +76,18 @@ enum States
|
|||||||
|
|
||||||
//State machine states definition
|
//State machine states definition
|
||||||
|
|
||||||
void ProtocolInit(void);
|
void BootloaderProtocolInit(void);
|
||||||
void StateMachine(unsigned char STATE);
|
void BootloaderProtocolStateMachine(unsigned char STATE);
|
||||||
void ProtocolAnalyzeNewData(unsigned char RxByte);
|
void BootloaderProtocolResetStateMachine(void);
|
||||||
void ResetStateMachine(void);
|
void BootloaderProtocolProtocolAnalyzeNewData(unsigned char *DataBuf, int size);
|
||||||
void ProtocolExecCmd(void);
|
void BootloaderProtocolSendFrame(unsigned char Cmd, int size);
|
||||||
void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char Data);
|
unsigned char *BootloaderProtocolGetDataBufferPtr();
|
||||||
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);
|
void BootloaderProtocolSendHeartbeat();
|
||||||
unsigned char ProtocolIsReceiving(void);
|
void BootloaderProtocolSendACK(unsigned char Cmd);
|
||||||
unsigned char *ProtocolMsgDataPtr();
|
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(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;
|
PowerRelayState = CHALET_POWER_RELAY_ON_STATE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if(PowerRelayState == CHALET_POWER_RELAY_ON_STATE)
|
||||||
|
{
|
||||||
|
printf("Inverter turned OFF\n");
|
||||||
|
}
|
||||||
PowerRelayState = CHALET_POWER_RELAY_OFF_STATE;
|
PowerRelayState = CHALET_POWER_RELAY_OFF_STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ enum eChaletPowerRelayState
|
|||||||
#define CHALET_12V_POWER_STATE_ON 0
|
#define CHALET_12V_POWER_STATE_ON 0
|
||||||
#define CHALET_12V_POWER_STATE_OFF 1
|
#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();
|
void InitChaletPowerRelay();
|
||||||
|
|
||||||
|
|||||||
@@ -111,8 +111,7 @@ int InitBoard()
|
|||||||
SPI3CONbits.SMP = 0;
|
SPI3CONbits.SMP = 0;
|
||||||
SPI3CONbits.CKP = 0;
|
SPI3CONbits.CKP = 0;
|
||||||
SPI3BRG = SPICalculateBRG(PERIPHERAL_FREQ, 1000000);
|
SPI3BRG = SPICalculateBRG(PERIPHERAL_FREQ, 1000000);
|
||||||
// SPI2BRG = SPICalculateBRG(PERIPHERAL_FREQ, 50000);
|
SPI3CONbits.ON = 1;
|
||||||
//SPI3CONbits.ON = 1;
|
|
||||||
|
|
||||||
//////////////// CURRENT SENSOR //////////////////
|
//////////////// CURRENT SENSOR //////////////////
|
||||||
//Analog (Hall effect) current sensor
|
//Analog (Hall effect) current sensor
|
||||||
@@ -131,10 +130,10 @@ int InitBoard()
|
|||||||
//////////////// LORA //////////////////
|
//////////////// LORA //////////////////
|
||||||
LORA_MODULE_RELAY_PIN_DIR = PIN_OUTPUT;
|
LORA_MODULE_RELAY_PIN_DIR = PIN_OUTPUT;
|
||||||
LORA_MODULE_RELAY_PIN = 0;
|
LORA_MODULE_RELAY_PIN = 0;
|
||||||
LORA_MODULE_M0_PIN_DIR = PIN_INPUT;
|
// LORA_MODULE_M0_PIN_DIR = PIN_INPUT;
|
||||||
LORA_MODULE_M0_PIN = 0;
|
// LORA_MODULE_M0_PIN = 0;
|
||||||
LORA_MODULE_M1_PIN_DIR = PIN_INPUT;
|
// LORA_MODULE_M1_PIN_DIR = PIN_INPUT;
|
||||||
LORA_MODULE_M1_PIN = 0;
|
// LORA_MODULE_M1_PIN = 0;
|
||||||
LORA_MODULE_INT_PIN_DIR = PIN_INPUT;
|
LORA_MODULE_INT_PIN_DIR = PIN_INPUT;
|
||||||
LORA_MODULE_RX_LED_PIN_DIR = PIN_OUTPUT;
|
LORA_MODULE_RX_LED_PIN_DIR = PIN_OUTPUT;
|
||||||
LORA_MODULE_RX_LED_PIN = LED_OFF;
|
LORA_MODULE_RX_LED_PIN = LED_OFF;
|
||||||
@@ -158,7 +157,7 @@ int InitBoard()
|
|||||||
LCD_DB7_PIN_DIR = PIN_OUTPUT;
|
LCD_DB7_PIN_DIR = PIN_OUTPUT;
|
||||||
LCD_DB7_PIN = 0;
|
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
|
//Setup port 1
|
||||||
//
|
//
|
||||||
U1MODEbits.ON = 0; //disable module
|
// U1MODEbits.ON = 0; //disable module
|
||||||
U1STA = 0;
|
// U1STA = 0;
|
||||||
U1STAbits.UTXEN = 0; //disable transmitter
|
// U1STAbits.UTXEN = 0; //disable transmitter
|
||||||
IPC6bits.U1IP = 7; //priority 7
|
// IPC6bits.U1IP = 7; //priority 7
|
||||||
IPC6bits.U1IS = 3; //sub-priority 3
|
// IPC6bits.U1IS = 3; //sub-priority 3
|
||||||
U1STAbits.UTXSEL = 0b01; //interrupt when all characters are transmitted
|
// U1STAbits.UTXSEL = 0b01; //interrupt when all characters are transmitted
|
||||||
// U1STAbits.UTXSEL = 0b01; // //JFM 2012-08-27
|
//// U1STAbits.UTXSEL = 0b01; // //JFM 2012-08-27
|
||||||
IFS0bits.U1TXIF = 0; //clear interrupt flag
|
// IFS0bits.U1TXIF = 0; //clear interrupt flag
|
||||||
IEC0bits.U1TXIE = 1; //enable tx interrupt
|
// IEC0bits.U1TXIE = 1; //enable tx interrupt
|
||||||
U1STAbits.URXISEL = 0b00; //interrupt for each character received
|
// U1STAbits.URXISEL = 0b00; //interrupt for each character received
|
||||||
IFS0bits.U1RXIF = 0;
|
// IFS0bits.U1RXIF = 0;
|
||||||
#ifdef POLL_UART1_RX
|
//#ifdef POLL_UART1_RX
|
||||||
IEC0bits.U1RXIE = 0; //disable rx interrupts
|
// IEC0bits.U1RXIE = 0; //disable rx interrupts
|
||||||
#else
|
//#else
|
||||||
IEC0bits.U1RXIE = 1; //enable rx interrupts
|
// IEC0bits.U1RXIE = 1; //enable rx interrupts
|
||||||
#endif
|
//#endif
|
||||||
U1STAbits.URXEN = 1; //enable receiver
|
// U1STAbits.URXEN = 1; //enable receiver
|
||||||
U1MODEbits.ON = 0; //disable module
|
// U1MODEbits.ON = 0; //disable module
|
||||||
|
|
||||||
//Setup port 2
|
//Setup port 2
|
||||||
//
|
//
|
||||||
@@ -335,9 +335,11 @@ int SendInternalUartDataBlocking(char *p_pcDataBuf, int p_iDataSize, int p_iUart
|
|||||||
int i;
|
int i;
|
||||||
for(i = 0; i < p_iDataSize; i++)
|
for(i = 0; i < p_iDataSize; i++)
|
||||||
{
|
{
|
||||||
|
LORA_MODULE_TX_LED_PIN = ~ LORA_MODULE_TX_LED_PIN;
|
||||||
U2TXREG = *p_pcDataBuf++;
|
U2TXREG = *p_pcDataBuf++;
|
||||||
while(U2STAbits.TRMT == 0);
|
while(U2STAbits.TRMT == 0);
|
||||||
}
|
}
|
||||||
|
LORA_MODULE_TX_LED_PIN = LED_OFF;
|
||||||
return UART_OK;
|
return UART_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -377,6 +379,7 @@ void TickInternalUart(void)
|
|||||||
{
|
{
|
||||||
char NewByte = U2RXREG;
|
char NewByte = U2RXREG;
|
||||||
//acIntUartRxBuff[INTERNAL_UART_PORT_2][i++] = NewByte;
|
//acIntUartRxBuff[INTERNAL_UART_PORT_2][i++] = NewByte;
|
||||||
|
LORA_MODULE_RX_LED_PIN = ~LORA_MODULE_RX_LED_PIN;
|
||||||
ProtocolAnalyzeNewData(NewByte);
|
ProtocolAnalyzeNewData(NewByte);
|
||||||
|
|
||||||
// LoraData <<= 8;
|
// LoraData <<= 8;
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
#include "ChaletPowerRelay.h"
|
#include "ChaletPowerRelay.h"
|
||||||
#include "HarakiriRelay.h"
|
#include "HarakiriRelay.h"
|
||||||
#include "BatteryMonitor.h"
|
#include "BatteryMonitor.h"
|
||||||
|
#include "LedLightCtrl.h"
|
||||||
|
#include "TemperatureSensor.h"
|
||||||
//#include "WiFiCtrl.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)
|
void ExecuteMasterCommand(int Command, unsigned char *Data)
|
||||||
{
|
{
|
||||||
//Whatever was the command, we are online...
|
//Whatever was the command, we are online...
|
||||||
|
LORA_MODULE_RX_LED_PIN = LED_OFF;
|
||||||
ChaletPowerRelayKickTimer();
|
ChaletPowerRelayKickTimer();
|
||||||
switch(Command)
|
switch(Command)
|
||||||
{
|
{
|
||||||
@@ -35,12 +38,14 @@ void ExecuteMasterCommand(int Command, unsigned char *Data)
|
|||||||
case CHALET_GENERAL_STATUS_REQUEST:
|
case CHALET_GENERAL_STATUS_REQUEST:
|
||||||
{
|
{
|
||||||
float FloatVoltage = GetBatteryVoltage();
|
float FloatVoltage = GetBatteryVoltage();
|
||||||
|
float FloatTemperature = TempSensorGetTemp();
|
||||||
unsigned int BattVoltage = *((int*)&FloatVoltage);
|
unsigned int BattVoltage = *((int*)&FloatVoltage);
|
||||||
|
unsigned int Temperature = *((int*)&FloatTemperature);
|
||||||
int SolarPanelCurrent = GetSolarPanelCurrent();
|
int SolarPanelCurrent = GetSolarPanelCurrent();
|
||||||
int SOC = GetBatterySOC();
|
int SOC = GetBatterySOC();
|
||||||
|
|
||||||
char GeneralStatus = 0;
|
char GeneralStatus = 0;
|
||||||
char ChaletStatus[10];
|
char ChaletStatus[14];
|
||||||
|
|
||||||
if(GetChaletPowerRelayState() == CHALET_POWER_RELAY_ON_STATE)
|
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
|
ChaletStatus[8] = (char)(SOC & 0x000000FF); //Battery SOC 1
|
||||||
SolarPanelCurrent >>= 8;
|
SolarPanelCurrent >>= 8;
|
||||||
ChaletStatus[9] = (char)(SolarPanelCurrent & 0x000000FF); //Battery SOC 2
|
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;
|
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
|
||||||
|
|
||||||
@@ -78,7 +91,6 @@ void ExecuteMasterCommand(int Command, unsigned char *Data)
|
|||||||
{
|
{
|
||||||
char PowerStatus = GetChaletPowerRelayState();
|
char PowerStatus = GetChaletPowerRelayState();
|
||||||
SendLoraNetworkCommand(CHALET_AC_POWER_STATE_STATUS_RESPONSE,&PowerStatus,1);
|
SendLoraNetworkCommand(CHALET_AC_POWER_STATE_STATUS_RESPONSE,&PowerStatus,1);
|
||||||
HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CHALET_AC_POWER_SET_STATE_REQUEST:
|
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);
|
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 ExecuteMasterCommand(int Command, unsigned char *Data);
|
||||||
void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
|
void SendLoraNetworkCommand(int Command, unsigned char *Data, unsigned int DataSize);
|
||||||
|
|
||||||
|
void TestTx();
|
||||||
|
|
||||||
#endif /* LORANEETWORKINTERFACE_H */
|
#endif /* LORANEETWORKINTERFACE_H */
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
#include "define.h"
|
#include "define.h"
|
||||||
#include "MasterCtrlInterface.h"
|
#include "MasterCtrlInterface.h"
|
||||||
#ifdef USE_WINC1500
|
#ifdef USE_WINC1500
|
||||||
|
|||||||
@@ -255,11 +255,11 @@ void ProtocolAcknowledge(unsigned char Answer,unsigned char Cmd, unsigned char D
|
|||||||
unsigned char data[2];
|
unsigned char data[2];
|
||||||
if(Answer == 1)
|
if(Answer == 1)
|
||||||
{
|
{
|
||||||
data[0] = ACK; //CMD
|
data[0] = PROTOCOL_ACK; //CMD
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data[0] = NAK; //CMD
|
data[0] = PROTOCOL_NAK; //CMD
|
||||||
}
|
}
|
||||||
data[1] = Cmd;
|
data[1] = Cmd;
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ File description: Communication protocol implementation.
|
|||||||
jean-francois.martel@polymtl.ca
|
jean-francois.martel@polymtl.ca
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef BOOTLOADERINTERFACE_H
|
||||||
|
#define BOOTLOADERINTERFACE_H
|
||||||
|
|
||||||
//Protocol buffer specific definitions
|
//Protocol buffer specific definitions
|
||||||
|
|
||||||
#define MASTER_ADDRESS 0x01
|
#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 ProtocolCalcCrc(unsigned char* Buffer,unsigned char size);
|
||||||
unsigned char ProtocolIsReceiving(void);
|
unsigned char ProtocolIsReceiving(void);
|
||||||
unsigned char *ProtocolMsgDataPtr();
|
unsigned char *ProtocolMsgDataPtr();
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -25,8 +25,8 @@
|
|||||||
#define FRAME_HEADER 0x8A
|
#define FRAME_HEADER 0x8A
|
||||||
#define BOOTLOADER_HEADER 0xA8
|
#define BOOTLOADER_HEADER 0xA8
|
||||||
#define DATA_START 11
|
#define DATA_START 11
|
||||||
#define ACK 0xA3
|
#define PROTOCOL_ACK 0xA3
|
||||||
#define NAK 0x90
|
#define PROTOCOL_NAK 0x90
|
||||||
#define BROADCAST_VALUE 0xFF
|
#define BROADCAST_VALUE 0xFF
|
||||||
|
|
||||||
#define MASTER_RECONNECTION_TIMEOUT 25000 //Try to reconnect every 5s
|
#define MASTER_RECONNECTION_TIMEOUT 25000 //Try to reconnect every 5s
|
||||||
@@ -299,6 +299,8 @@ enum CHALET_CMDS
|
|||||||
enum BOOTLOADER_CMDS
|
enum BOOTLOADER_CMDS
|
||||||
{
|
{
|
||||||
BOOTLOADER_ACK = 1,
|
BOOTLOADER_ACK = 1,
|
||||||
|
BOOTLOADER_HEARTBEAT_REQUEST,
|
||||||
|
BOOTLOADER_HEARTBEAT_RESPONSE,
|
||||||
BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST,
|
BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST,
|
||||||
BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESPONSE,
|
BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESPONSE,
|
||||||
BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE,
|
BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE,
|
||||||
@@ -313,6 +315,8 @@ enum BOOTLOADER_CMDS
|
|||||||
BOOTLOADER_UPLOAD_FINISHED_RESPONSE,
|
BOOTLOADER_UPLOAD_FINISHED_RESPONSE,
|
||||||
BOOTLOADER_EXECUTE_UPGRAGE_REQUEST,
|
BOOTLOADER_EXECUTE_UPGRAGE_REQUEST,
|
||||||
BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
|
BOOTLOADER_EXECUTE_UPGRADE_RESPONSE,
|
||||||
|
BOOTLOADER_ABORT_OPERATION_REQUEST,
|
||||||
|
BOOTLOADER_ABORT_OPERATION_RESPONSE,
|
||||||
|
|
||||||
MAX_BOOTLOADER_CMD
|
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 "LedLightCtrl.h"
|
||||||
#include "ChaletPowerRelay.h"
|
#include "ChaletPowerRelay.h"
|
||||||
#include "BatteryMonitor.h"
|
#include "BatteryMonitor.h"
|
||||||
|
#include "BootloaderInterface.h"
|
||||||
|
|
||||||
//#include "SDCardMgr.h"
|
//#include "SDCardMgr.h"
|
||||||
#ifdef TERMINAL_USE_TELNET
|
#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"
|
" - Available [sensor] argument are: voltage\n"
|
||||||
" current\n"
|
" current\n"
|
||||||
" soc (state of charge)\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"
|
"\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..."
|
//"\ndebug : print some real-time stuff..."
|
||||||
"\nHave a good day!\n";
|
"\nHave a good day!\n";
|
||||||
|
|
||||||
@@ -379,6 +385,41 @@ void ParseNewBuffer(void)
|
|||||||
|
|
||||||
|
|
||||||
TerminalPrintString("\n");
|
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)
|
else if(strncmp(mCmdString,"debug",strlen(mCmdString)) == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -97,9 +97,10 @@ void InitUart(void)
|
|||||||
setbuf(stdout,NULL); //to use printf without \r
|
setbuf(stdout,NULL); //to use printf without \r
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
|
||||||
#ifdef USE_PRINTF
|
#ifdef USE_PRINTF
|
||||||
//UartOpenComPort(CONSOLE_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
|
//UartOpenComPort(CONSOLE_UART_PORT,115200,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
|
||||||
UartOpenComPort(NETWORK_UART_PORT,9600,UART_ONE_STOP_BIT,UART_NO_PARITY); //Open console port
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+107
-12
@@ -9,6 +9,7 @@
|
|||||||
#include "ProtocolDefs.h"
|
#include "ProtocolDefs.h"
|
||||||
#include "BoardCfg.h"
|
#include "BoardCfg.h"
|
||||||
#include "timer.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
|
uint8 SyslogRxBuf[200]; //Syslog shall not receive much data
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
SOCKET NetworkSocket = -1, NetworkServerSocket = -1;
|
SOCKET NetworkSocket = -1, NetworkServerSocket = -1;
|
||||||
uint8 NetworkRxBuf[1024];
|
uint8 NetworkRxBuf[1024];
|
||||||
|
|
||||||
|
SOCKET BootloaderSocket = -1, BootloaderServerSocket = -1;
|
||||||
|
uint8 BootloaderRxBuf[1024];
|
||||||
|
|
||||||
/** Receive buffer definition. */
|
/** Receive buffer definition. */
|
||||||
static uint8 gau8ReceivedBuffer[MAIN_WIFI_M2M_BUFFER_SIZE] = {0};
|
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);
|
listen(NetworkServerSocket,0);
|
||||||
}
|
}
|
||||||
|
else if(sock == BootloaderServerSocket)
|
||||||
|
{
|
||||||
|
listen(BootloaderServerSocket,0);
|
||||||
|
printf("Bootloader server started\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -118,7 +128,7 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
tstrSocketListenMsg *pstrListen = (tstrSocketListenMsg*)pvMsg;
|
tstrSocketListenMsg *pstrListen = (tstrSocketListenMsg*)pvMsg;
|
||||||
if(pstrListen->status != 0)
|
if(pstrListen->status != 0)
|
||||||
{
|
{
|
||||||
printf("socket %d listen Failed\n",socket);;
|
printf("socket %d listen Failed. Error: %d\n",(int)sock, pstrListen->status);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(sock == SyslogServerSocket)
|
if(sock == SyslogServerSocket)
|
||||||
@@ -141,9 +151,9 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
TerminalSocket = pstrAccept->sock;
|
TerminalSocket = pstrAccept->sock;
|
||||||
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
|
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
|
||||||
SendTerminalData("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n",strlen("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n"));
|
SendTerminalData("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n",strlen("Bienvenue au chalet!\nLe chalet parle en anglais comme Mr. Pepin\nIf you need help... type help\n\n"));
|
||||||
// SendSyslogData("Terminal client connected\n",strlen("Terminal client connected\n"));
|
// SendSyslogData("Terminal client connected\n",strlen("Terminal client connected\n"));
|
||||||
printf("Terminal client connected\n");
|
printf("Terminal client connected\n");
|
||||||
// m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
|
// m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
|
||||||
}
|
}
|
||||||
else if(sock == SyslogServerSocket)
|
else if(sock == SyslogServerSocket)
|
||||||
{
|
{
|
||||||
@@ -162,6 +172,14 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
|
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
|
||||||
printf("Network client connected\n");
|
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
|
else
|
||||||
@@ -180,8 +198,9 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
if(sock == TerminalSocket)
|
if(sock == TerminalSocket)
|
||||||
{
|
{
|
||||||
//Fwd data to Terminal...
|
//Fwd data to Terminal...
|
||||||
RxTerminalBuf(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
|
|
||||||
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
|
recv(TerminalSocket, TerminalRxBuf, sizeof(TerminalRxBuf), 0);
|
||||||
|
RxTerminalBuf(TerminalRxBuf, pstrRecvMsg->s16BufferSize);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(sock == SyslogSocket)
|
else if(sock == SyslogSocket)
|
||||||
{
|
{
|
||||||
@@ -194,6 +213,14 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
//Fwd data to Network...
|
//Fwd data to Network...
|
||||||
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
|
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.
|
else //Socket must be closed.
|
||||||
{
|
{
|
||||||
@@ -201,9 +228,9 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
{
|
{
|
||||||
close(TerminalSocket);
|
close(TerminalSocket);
|
||||||
TerminalSocket = -1;
|
TerminalSocket = -1;
|
||||||
// SendSyslogData("Terminal client disconnected\n",strlen("Terminal client disconnected\n"));
|
// SendSyslogData("Terminal client disconnected\n",strlen("Terminal client disconnected\n"));
|
||||||
printf("Terminal client disconnected\n");
|
printf("Terminal client disconnected\n");
|
||||||
// m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
|
// m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
|
||||||
}
|
}
|
||||||
else if(sock == SyslogSocket)
|
else if(sock == SyslogSocket)
|
||||||
{
|
{
|
||||||
@@ -217,6 +244,13 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
NetworkSocket = -1;
|
NetworkSocket = -1;
|
||||||
printf("Network client disconnected\n");
|
printf("Network client disconnected\n");
|
||||||
}
|
}
|
||||||
|
else if(sock == BootloaderSocket)
|
||||||
|
{
|
||||||
|
close(BootloaderSocket);
|
||||||
|
BootloaderSocket = -1;
|
||||||
|
printf("Bootloader client disconnected\n");
|
||||||
|
BootloaderDeactivateBootloader();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -346,7 +380,6 @@ int InitWiFi()
|
|||||||
return RET_ERROR;
|
return RET_ERROR;
|
||||||
}
|
}
|
||||||
mWiFiInitOK = true;
|
mWiFiInitOK = true;
|
||||||
HEARTBEAT_LED_2_PIN = LED_ON;
|
|
||||||
|
|
||||||
mWiFiState = WIFI_DISCONNECTED_STATE;
|
mWiFiState = WIFI_DISCONNECTED_STATE;
|
||||||
|
|
||||||
@@ -451,6 +484,12 @@ int CloseSockets()
|
|||||||
close(SyslogSocket);
|
close(SyslogSocket);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
close(BootloaderServerSocket);
|
||||||
|
if(BootloaderSocket != -1)
|
||||||
|
{
|
||||||
|
close(BootloaderSocket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -475,18 +514,19 @@ void TickWiFi()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(IsTimerExpired(WIFI_TICK_TIMER))
|
// if(IsTimerExpired(WIFI_TICK_TIMER))
|
||||||
// {
|
// {
|
||||||
m2m_wifi_handle_events(NULL);
|
m2m_wifi_handle_events(NULL);
|
||||||
// TimerStart(WIFI_TICK_TIMER,1);
|
// TimerStart(WIFI_TICK_TIMER,1);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if (gbConnectedWifi && !gbTcpConnection)
|
if (gbConnectedWifi && !gbTcpConnection)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
OpenTerminalServer();
|
OpenTerminalServer();
|
||||||
OpenNetworkServer();
|
//OpenNetworkServer();
|
||||||
|
// OpenBootloaderServer();
|
||||||
#ifdef USE_SYSLOG
|
#ifdef USE_SYSLOG
|
||||||
OpenSyslogServer();
|
OpenSyslogServer();
|
||||||
#endif
|
#endif
|
||||||
@@ -620,3 +660,58 @@ int IsSyslogClientConnected()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
#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);
|
void SendSyslogByte(uint8 data);
|
||||||
int IsSyslogClientConnected();
|
int IsSyslogClientConnected();
|
||||||
|
|
||||||
|
int OpenBootloaderServer();
|
||||||
|
int CloseBootloaderServer();
|
||||||
|
void SendBootloaderData(uint8 *data, int size);
|
||||||
|
void SendBootloaderByte(uint8 data);
|
||||||
|
int IsBootloaderClientConnected();
|
||||||
|
|
||||||
#define USE_STATIC_IP
|
#define USE_STATIC_IP
|
||||||
|
|
||||||
|
|
||||||
@@ -104,6 +110,7 @@ int IsSyslogClientConnected();
|
|||||||
#define TERMINAL_SERVER_PORT 85
|
#define TERMINAL_SERVER_PORT 85
|
||||||
#define NETWORK_SERVER_PORT 86
|
#define NETWORK_SERVER_PORT 86
|
||||||
#define SYSLOG_SERVER_PORT 87
|
#define SYSLOG_SERVER_PORT 87
|
||||||
|
#define BOOTLOADER_SERVER_PORT 99
|
||||||
|
|
||||||
#define AUTH_CREDENTIALS {M2M_802_1X_USR_NAME, M2M_802_1X_PWD }
|
#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
|
||||||
+43
-27
@@ -3,14 +3,14 @@
|
|||||||
Description:
|
Description:
|
||||||
This is a template file for standard C header file.
|
This is a template file for standard C header file.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* Revision:
|
/* Revision:
|
||||||
### 20120515 JFM
|
### 20120515 JFM
|
||||||
Original version.
|
Original version.
|
||||||
|
|
||||||
### YYYYMMDD Initial, Bug Identification
|
### YYYYMMDD Initial, Bug Identification
|
||||||
Change description.
|
Change description.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -36,6 +36,10 @@
|
|||||||
#include "CurrentSensor.h"
|
#include "CurrentSensor.h"
|
||||||
#include "I2C.h"
|
#include "I2C.h"
|
||||||
#include "SPI_Flash.h"
|
#include "SPI_Flash.h"
|
||||||
|
#include "TemperatureSensor.h"
|
||||||
|
|
||||||
|
#include "BootloaderInterface.h"
|
||||||
|
|
||||||
|
|
||||||
//#define NO_WIFI
|
//#define NO_WIFI
|
||||||
#ifndef NO_WIFI
|
#ifndef NO_WIFI
|
||||||
@@ -45,10 +49,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_PRINTF
|
#ifdef USE_PRINTF
|
||||||
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
|
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
|
||||||
#elif defined USE_SYSLOG
|
#elif defined USE_SYSLOG
|
||||||
#include "Syslog.h"
|
#include "Syslog.h"
|
||||||
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
|
void _mon_putc(char c); //override from stdio to redirect stdout on uart 3B
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define HEARTBEAT_LED_TIMEOUT 400
|
#define HEARTBEAT_LED_TIMEOUT 400
|
||||||
@@ -60,6 +64,7 @@ static void InitializeBoard(void);
|
|||||||
#pragma config POSCMOD = EC, FNOSC = PRIPLL, FPBDIV = DIV_1
|
#pragma config POSCMOD = EC, FNOSC = PRIPLL, FPBDIV = DIV_1
|
||||||
//#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_1
|
//#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_1
|
||||||
#pragma config ICESEL = ICS_PGx2, BWP = OFF
|
#pragma config ICESEL = ICS_PGx2, BWP = OFF
|
||||||
|
#pragma config FSOSCEN = OFF
|
||||||
|
|
||||||
int main(void)
|
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
|
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
|
INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);// configure for multi-vectored mode interrupts
|
||||||
|
OSCCONbits.SOSCEN = 0;
|
||||||
|
|
||||||
#ifndef __32MX330F064H__
|
#ifndef __32MX330F064H__
|
||||||
AD1PCFG = 0xFFFF; //Sart with I/O pins configured as digital I/O
|
AD1PCFG = 0xFFFF; //Sart with I/O pins configured as digital I/O
|
||||||
@@ -84,6 +90,8 @@ int main(void)
|
|||||||
InitChaletPowerRelay();
|
InitChaletPowerRelay();
|
||||||
InitBatteryMonitor();
|
InitBatteryMonitor();
|
||||||
InitHarakiriRelay();
|
InitHarakiriRelay();
|
||||||
|
InitTempSensor();
|
||||||
|
|
||||||
|
|
||||||
InitUart();
|
InitUart();
|
||||||
ProtocolInit();
|
ProtocolInit();
|
||||||
@@ -93,6 +101,9 @@ int main(void)
|
|||||||
printf("ChaletDuino V2 Initialized\n");
|
printf("ChaletDuino V2 Initialized\n");
|
||||||
|
|
||||||
SPIFlashCheckAndConfigure();
|
SPIFlashCheckAndConfigure();
|
||||||
|
TempSensorCheckAndConfigure();
|
||||||
|
|
||||||
|
BootloaderInterfaceInit();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -106,25 +117,25 @@ int main(void)
|
|||||||
|
|
||||||
// unsigned int bw;
|
// unsigned int bw;
|
||||||
|
|
||||||
// FRESULT res;
|
// FRESULT res;
|
||||||
// res = f_mount(&FatFs, "", 0); /* Give a work area to the default drive */
|
// res = f_mount(&FatFs, "", 0); /* Give a work area to the default drive */
|
||||||
// if(!res)
|
// if(!res)
|
||||||
// {
|
// {
|
||||||
// printf("Could not mount SD card\n");
|
// printf("Could not mount SD card\n");
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// printf("SD Card mounted successfuly");
|
// printf("SD Card mounted successfuly");
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// if (f_open(&File[0], "newfile.txt", FA_WRITE | FA_CREATE_ALWAYS) == FR_OK) /* Create a file */
|
// if (f_open(&File[0], "newfile.txt", FA_WRITE | FA_CREATE_ALWAYS) == FR_OK) /* Create a file */
|
||||||
//// {
|
//// {
|
||||||
//
|
//
|
||||||
// res = f_write(&File[0], "It works!\r\n", 11, &bw); /* Write data to the file */
|
// res = f_write(&File[0], "It works!\r\n", 11, &bw); /* Write data to the file */
|
||||||
//
|
//
|
||||||
// res = f_close(&File[0]); /* Close the file */
|
// res = f_close(&File[0]); /* Close the file */
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// int res = OpenPrintfServer();
|
// int res = OpenPrintfServer();
|
||||||
|
|
||||||
@@ -133,13 +144,14 @@ int main(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// printf("Lora Monitor Started\n");
|
// printf("Lora Monitor Started\n");
|
||||||
printf("test %d\n", 1);
|
printf("test %d\n", 1);
|
||||||
|
|
||||||
EnableWatchdog();
|
EnableWatchdog();
|
||||||
KickWatchdog();
|
KickWatchdog();
|
||||||
mRetCode = 1;
|
mRetCode = 1;
|
||||||
|
|
||||||
|
|
||||||
while(mRetCode == 1)
|
while(mRetCode == 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -153,10 +165,14 @@ int main(void)
|
|||||||
ChaletPowerRelayTick();
|
ChaletPowerRelayTick();
|
||||||
BatteryMonitorTick();
|
BatteryMonitorTick();
|
||||||
SyslogTick();
|
SyslogTick();
|
||||||
|
TickTempSensor();
|
||||||
|
BootloaderInterfaceTick();
|
||||||
|
|
||||||
if(IsTimerExpired(HEARTBEAT_LED_TMR))
|
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);
|
TimerStart(HEARTBEAT_LED_TMR,HEARTBEAT_LED_TIMEOUT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ typedef enum
|
|||||||
WIFI_RECONNECT_TIMER,
|
WIFI_RECONNECT_TIMER,
|
||||||
WIFI_TICK_TIMER,
|
WIFI_TICK_TIMER,
|
||||||
SYSLOG_TX_TIMER,
|
SYSLOG_TX_TIMER,
|
||||||
|
TEMP_SENSOR_REFRESH_TIMER,
|
||||||
TIMER_MAX_ID
|
TIMER_MAX_ID
|
||||||
}eTimerID;
|
}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}
|
DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
|
||||||
|
|
||||||
# Source Files Quoted if spaced
|
# 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
|
# 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
|
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/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
|
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
|
# 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
|
# 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
|
# Rules for buildStep: compile
|
||||||
ifeq ($(TYPE_IMAGE), DEBUG_RUN)
|
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
|
${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"
|
@${MKDIR} "${OBJECTDIR}/Source/winc3400/bsp/source"
|
||||||
@${RM} ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d
|
@${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)
|
${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}../
|
@${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
|
${OBJECTDIR}/Source/Syslog.o: Source/Syslog.c nbproject/Makefile-${CND_CONF}.mk
|
||||||
@${MKDIR} "${OBJECTDIR}/Source"
|
@${MKDIR} "${OBJECTDIR}/Source"
|
||||||
@${RM} ${OBJECTDIR}/Source/Syslog.o.d
|
@${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)
|
${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}../
|
@${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
|
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
|
${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"
|
@${MKDIR} "${OBJECTDIR}/Source/winc3400/bsp/source"
|
||||||
@${RM} ${OBJECTDIR}/Source/winc3400/bsp/source/nm_bsp.o.d
|
@${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)
|
${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}../
|
@${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
|
${OBJECTDIR}/Source/Syslog.o: Source/Syslog.c nbproject/Makefile-${CND_CONF}.mk
|
||||||
@${MKDIR} "${OBJECTDIR}/Source"
|
@${MKDIR} "${OBJECTDIR}/Source"
|
||||||
@${RM} ${OBJECTDIR}/Source/Syslog.o.d
|
@${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)
|
${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}../
|
@${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
|
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
|
default.languagetoolchain.version=2.41
|
||||||
ChaletDuino_775F512H_.languagetoolchain.version=1.33
|
ChaletDuino_775F512H_.languagetoolchain.version=1.33
|
||||||
default.Pack.dfplocation=C\:\\Users\\JF\\.mchp_packs\\Microchip\\PIC32MX_DFP\\1.2.228
|
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_
|
conf.ids=default,ChaletDuino_775F512H_,ChaletDuinoV2_775F512H_
|
||||||
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v2.41\\bin
|
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
|
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
|
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
|
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
|
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=9db8f8a224aa17d0023ea7f468f871dc
|
||||||
|
|||||||
@@ -104,6 +104,11 @@
|
|||||||
<itemPath>Source/SPI_Flash.h</itemPath>
|
<itemPath>Source/SPI_Flash.h</itemPath>
|
||||||
<itemPath>Source/Syslog.h</itemPath>
|
<itemPath>Source/Syslog.h</itemPath>
|
||||||
<itemPath>Source/Watchdog.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>
|
||||||
<logicalFolder name="LinkerScript"
|
<logicalFolder name="LinkerScript"
|
||||||
displayName="Linker Files"
|
displayName="Linker Files"
|
||||||
@@ -205,6 +210,10 @@
|
|||||||
<itemPath>Source/SPI_Flash.c</itemPath>
|
<itemPath>Source/SPI_Flash.c</itemPath>
|
||||||
<itemPath>Source/Syslog.c</itemPath>
|
<itemPath>Source/Syslog.c</itemPath>
|
||||||
<itemPath>Source/Watchdog.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>
|
||||||
<logicalFolder name="ExternalFiles"
|
<logicalFolder name="ExternalFiles"
|
||||||
displayName="Important Files"
|
displayName="Important Files"
|
||||||
@@ -212,8 +221,6 @@
|
|||||||
<itemPath>Makefile</itemPath>
|
<itemPath>Makefile</itemPath>
|
||||||
<itemPath>dist/ChaletDuino_775F512H_/production/LoraMonitor.X.production.map</itemPath>
|
<itemPath>dist/ChaletDuino_775F512H_/production/LoraMonitor.X.production.map</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<itemPath>Source/BootloaderProtocol.c</itemPath>
|
|
||||||
<itemPath>Source/BootloaderProtocol.h</itemPath>
|
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<sourceRootList>
|
<sourceRootList>
|
||||||
<Elem>.</Elem>
|
<Elem>.</Elem>
|
||||||
@@ -726,6 +733,20 @@
|
|||||||
<property key="voltagevalue" value="3.25"/>
|
<property key="voltagevalue" value="3.25"/>
|
||||||
</ICD3PlatformTool>
|
</ICD3PlatformTool>
|
||||||
<item path="Source/BoardCfg_ChaletduinoV2.h" ex="true" overriding="false">
|
<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>
|
||||||
<item path="Source/BoardCfg_Fubarino.h" ex="true" overriding="false">
|
<item path="Source/BoardCfg_Fubarino.h" ex="true" overriding="false">
|
||||||
<C32>
|
<C32>
|
||||||
@@ -760,10 +781,52 @@
|
|||||||
</C32Global>
|
</C32Global>
|
||||||
</item>
|
</item>
|
||||||
<item path="Source/BootloaderProtocol.c" ex="true" overriding="false">
|
<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>
|
||||||
<item path="Source/BootloaderProtocol.h" ex="true" overriding="false">
|
<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>
|
||||||
<item path="Source/ChaletduinoV2Board.c" ex="true" overriding="false">
|
<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>
|
||||||
<item path="Source/FubarinoBoard.c" ex="true" overriding="false">
|
<item path="Source/FubarinoBoard.c" ex="true" overriding="false">
|
||||||
<C32>
|
<C32>
|
||||||
@@ -1184,6 +1247,20 @@
|
|||||||
<property key="voltagevalue" value="3.25"/>
|
<property key="voltagevalue" value="3.25"/>
|
||||||
</ICD3PlatformTool>
|
</ICD3PlatformTool>
|
||||||
<item path="Source/BoardCfg_Chaletduino.h" ex="true" overriding="false">
|
<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>
|
||||||
<item path="Source/BoardCfg_Fubarino.h" ex="true" overriding="false">
|
<item path="Source/BoardCfg_Fubarino.h" ex="true" overriding="false">
|
||||||
<C32>
|
<C32>
|
||||||
@@ -1217,11 +1294,53 @@
|
|||||||
<C32Global>
|
<C32Global>
|
||||||
</C32Global>
|
</C32Global>
|
||||||
</item>
|
</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>
|
||||||
<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>
|
||||||
<item path="Source/ChaletduinoBoard.c" ex="true" overriding="false">
|
<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>
|
||||||
<item path="Source/FubarinoBoard.c" ex="true" overriding="false">
|
<item path="Source/FubarinoBoard.c" ex="true" overriding="false">
|
||||||
<C32>
|
<C32>
|
||||||
|
|||||||
Reference in New Issue
Block a user