Début bootloader, Temperature sensor et autre gossage
This commit is contained in:
parent
3efc0d7692
commit
e28b725a8b
@ -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 */
|
||||||
|
|||||||
373
ChaletLora.X/Source/BootloaderInterface.c
Normal file
373
ChaletLora.X/Source/BootloaderInterface.c
Normal file
@ -0,0 +1,373 @@
|
|||||||
|
//#include <proc/p32mx440f256h.h>
|
||||||
|
|
||||||
|
#include "BootloaderInterface.h"
|
||||||
|
#include "BootloaderProtocol.h"
|
||||||
|
#include "ProtocolDefs.h"
|
||||||
|
#include "BoardCfg.h"
|
||||||
|
#include "timer.h"
|
||||||
|
#include "WiFiCtrl.h"
|
||||||
|
|
||||||
|
char BootloaderBuffer[200];
|
||||||
|
int BootloaderInterfaceState;
|
||||||
|
|
||||||
|
int BootloaderFlashErased;
|
||||||
|
int ReadyToReceiveData;
|
||||||
|
int DataChunkWritten;
|
||||||
|
int CurDataChunkIndex;
|
||||||
|
int FirmwareUploaded;
|
||||||
|
|
||||||
|
int BootloaderInterfaceInit()
|
||||||
|
{
|
||||||
|
BootloaderProtocolInit();
|
||||||
|
BootloaderResetStateMachine();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderInterfaceTick()
|
||||||
|
{
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_TICK_EVENT,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderExecuteCmd(char Cmd)
|
||||||
|
{
|
||||||
|
unsigned char *DataBufPtr = BootloaderProtocolGetDataBufferPtr();
|
||||||
|
switch(Cmd)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_HEARTBEAT_REQUEST:
|
||||||
|
{
|
||||||
|
printf("Bootloader Heartbeat Request\n");
|
||||||
|
*DataBufPtr = 1;
|
||||||
|
BootloaderProtocolSendFrame(BOOTLOADER_HEARTBEAT_RESPONSE,1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST\n");
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ERASE_FLASH_CMD);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_INIT_UPLOAD_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_INIT_UPLOAD_REQUEST\n");
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INIT_UPLOAD_CMD);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_GET_STATE_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_GET_STATE_REQUEST\n");
|
||||||
|
*DataBufPtr = (char)BootloaderInterfaceState;
|
||||||
|
BootloaderProtocolSendFrame(BOOTLOADER_GET_STATE_RESPONSE,1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SEND_DATA_CHUNK_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_SEND_DATA_CHUNK_REQUEST\n");
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_NEW_DATA_CHUNK_CMD);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_UPLOAD_FINISHED_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_UPLOAD_FINISHED_REQUEST\n");
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_UPLOAD_FINISHED_CMD);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_EXECUTE_UPGRAGE_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_EXECUTE_UPGRAGE_REQUEST\n");
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_ABORT_OPERATION_REQUEST:
|
||||||
|
{
|
||||||
|
printf("BOOTLOADER_ABORT_OPERATION_REQUEST\n");
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ABORT_CMD);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC)
|
||||||
|
{
|
||||||
|
printf("BootloaderProtocol detected a CRC error. Cmd: %d, RxCRC:0x%x, Expected:[0x%x]\n",Cmd,RxCRC,ExpectedCRC);
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_INVALID_CRC_CMD);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderIterfaceStateMachine(int Event, int Param)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch(BootloaderInterfaceState)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_STANDBY_STATE:
|
||||||
|
{
|
||||||
|
switch(Event)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_TICK_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_NEW_CMD_EVENT:
|
||||||
|
{
|
||||||
|
if(Param == BOOTLOADER_SM_ACTIVATE_CMD)
|
||||||
|
{
|
||||||
|
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
||||||
|
printf("Bootloader Interface going into active state\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_TIMEOUT_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_ACTIVE_STATE:
|
||||||
|
{
|
||||||
|
switch(Event)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_TICK_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_NEW_CMD_EVENT:
|
||||||
|
{
|
||||||
|
switch(Param)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_SM_ERASE_FLASH_CMD:
|
||||||
|
{
|
||||||
|
//TODO: Start flash erase process
|
||||||
|
BootloaderProtocolSendACK(BOOTLOADER_ERASE_BOOTLOADER_FLASH_REQUEST);
|
||||||
|
BootloaderInterfaceState = BOOTLOADER_ERASE_FLASH_STATE;
|
||||||
|
printf("Bootloader Interface going into Erase Flash state\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SM_INIT_UPLOAD_CMD:
|
||||||
|
{
|
||||||
|
BootloaderProtocolSendInitUploadResponse();
|
||||||
|
BootloaderInterfaceState = BOOTLOADER_RECEIVING_FIRMWARE_STATE;
|
||||||
|
printf("Bootloader Interface going into Firmware RX state\n");
|
||||||
|
ReadyToReceiveData = 1; //TODO: Manage this flag in flash SM
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SM_ABORT_CMD:
|
||||||
|
{
|
||||||
|
//TODO invalidate data in Flash
|
||||||
|
printf("Aborting upload, going into STANDBY mode\n");
|
||||||
|
BootloaderResetStateMachine();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
//SEND NACK
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_TIMEOUT_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_ERASE_FLASH_STATE:
|
||||||
|
{
|
||||||
|
switch(Event)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_TICK_EVENT:
|
||||||
|
{
|
||||||
|
//TODO: Check flash erase operation.
|
||||||
|
BootloaderFlashErased = 1;
|
||||||
|
printf("Flash erase finished. Bootloader Interface going into Active state\n");
|
||||||
|
BootloaderProtocolSendACK(BOOTLOADER_ERASE_BOOTLOADER_FLASH_RESULT_RESPONSE); //TODO: send result instead
|
||||||
|
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_NEW_CMD_EVENT:
|
||||||
|
{
|
||||||
|
switch(Param)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_SM_ABORT_CMD:
|
||||||
|
{
|
||||||
|
//TODO: stop erasing and reset SM.
|
||||||
|
//TODO invalidate data in Flash
|
||||||
|
printf("Aborting upload, going into STANDBY mode\n");
|
||||||
|
BootloaderResetStateMachine();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_TIMEOUT_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_RECEIVING_FIRMWARE_STATE:
|
||||||
|
{
|
||||||
|
switch(Event)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_TICK_EVENT:
|
||||||
|
{
|
||||||
|
//TODO: Manage flash writing process
|
||||||
|
if(ReadyToReceiveData == 1) //TODO: replace this with flash SM result
|
||||||
|
{
|
||||||
|
ReadyToReceiveData = 0;
|
||||||
|
printf("Bootloader Interface ready to receive data\n");
|
||||||
|
BootloaderProtocolSendACK(BOOTLOADER_READY_FOR_DATA_RESPONSE);
|
||||||
|
}
|
||||||
|
if(DataChunkWritten == 1)
|
||||||
|
{
|
||||||
|
DataChunkWritten = 0;
|
||||||
|
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_SUCCESS,CurDataChunkIndex);
|
||||||
|
CurDataChunkIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_NEW_CMD_EVENT:
|
||||||
|
{
|
||||||
|
switch(Param)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_SM_NEW_DATA_CHUNK_CMD:
|
||||||
|
{
|
||||||
|
|
||||||
|
//TODO:Check data validity
|
||||||
|
//TODO: Write data to flash
|
||||||
|
|
||||||
|
//Extract index from buffer
|
||||||
|
int DataChunkIndex = 0;
|
||||||
|
int DataChunkSize = 0;
|
||||||
|
DataChunkIndex = BootloaderBuffer[0];
|
||||||
|
DataChunkIndex <<= 8;
|
||||||
|
DataChunkIndex += BootloaderBuffer[1];
|
||||||
|
DataChunkIndex <<= 8;
|
||||||
|
DataChunkIndex += BootloaderBuffer[2];
|
||||||
|
DataChunkIndex <<= 8;
|
||||||
|
DataChunkIndex += BootloaderBuffer[3];
|
||||||
|
|
||||||
|
DataChunkSize = BootloaderBuffer[4];
|
||||||
|
DataChunkSize <<= 8;
|
||||||
|
DataChunkSize += BootloaderBuffer[5];
|
||||||
|
DataChunkSize <<= 8;
|
||||||
|
DataChunkSize += BootloaderBuffer[6];
|
||||||
|
DataChunkSize <<= 8;
|
||||||
|
DataChunkSize += BootloaderBuffer[7];
|
||||||
|
|
||||||
|
//Check CRC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//if(CurDataChunkIndex != DataChunkIndex)
|
||||||
|
if(0)
|
||||||
|
{
|
||||||
|
//Error... abort.
|
||||||
|
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_INVALID_CHUNK_INDEX,CurDataChunkIndex);
|
||||||
|
printf("Bootloader Interface ABORTING UPLOAD. Received invalid chunk index. Rx: [%d] - Expected: [%d]\n", DataChunkIndex,CurDataChunkIndex);
|
||||||
|
BootloaderResetStateMachine();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DataChunkWritten = 1; //For debug only.
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SM_INVALID_CRC_CMD:
|
||||||
|
{
|
||||||
|
//BootloaderProtocol determined the CRC of the chunk was invalid.
|
||||||
|
BootloaderProtocolSendDataChunkResult(BOOTLOADER_CHUNK_TRANSFER_ERROR_RESEND,CurDataChunkIndex);
|
||||||
|
printf("Bootloader Interface invalid chunk CRC. Requesting resend chunk index [%d]\n", CurDataChunkIndex);
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SM_UPLOAD_FINISHED_CMD:
|
||||||
|
{
|
||||||
|
printf("Bootloader Interface firmware upload finished. Going into active state.\n");
|
||||||
|
BootloaderInterfaceState = BOOTLOADER_ACTIVE_STATE;
|
||||||
|
FirmwareUploaded = 1;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SM_ABORT_CMD:
|
||||||
|
{
|
||||||
|
//TODO invalidate data in Flash
|
||||||
|
printf("Aborting upload, going into STANDBY mode\n");
|
||||||
|
BootloaderResetStateMachine();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
//WHAT TO DO???
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_TIMEOUT_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_SENDING_FIRMWARE_COPY_STATE:
|
||||||
|
{
|
||||||
|
switch(Event)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_TICK_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_NEW_CMD_EVENT:
|
||||||
|
{
|
||||||
|
switch(Param)
|
||||||
|
{
|
||||||
|
case BOOTLOADER_SM_ABORT_CMD:
|
||||||
|
{
|
||||||
|
//TODO invalidate data in Flash
|
||||||
|
printf("Aborting upload, going into STANDBY mode\n");
|
||||||
|
BootloaderResetStateMachine();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case BOOTLOADER_TIMEOUT_EVENT:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderResetStateMachine()
|
||||||
|
{
|
||||||
|
BootloaderInterfaceState = BOOTLOADER_STANDBY_STATE;
|
||||||
|
BootloaderFlashErased = 0;
|
||||||
|
ReadyToReceiveData = 0;
|
||||||
|
DataChunkWritten = 0;
|
||||||
|
CurDataChunkIndex = 0;
|
||||||
|
FirmwareUploaded = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderActivateBootloader()
|
||||||
|
{
|
||||||
|
OpenBootloaderServer();
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_NEW_CMD_EVENT,BOOTLOADER_SM_ACTIVATE_CMD);
|
||||||
|
}
|
||||||
|
void BootloaderDeactivateBootloader()
|
||||||
|
{
|
||||||
|
CloseBootloaderServer();
|
||||||
|
BootloaderIterfaceStateMachine(BOOTLOADER_SM_ABORT_CMD,0);
|
||||||
|
}
|
||||||
63
ChaletLora.X/Source/BootloaderInterface.h
Normal file
63
ChaletLora.X/Source/BootloaderInterface.h
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* File: ChaletPowerRelay.h
|
||||||
|
* Author: JF
|
||||||
|
*
|
||||||
|
* Created on November 30, 2018, 7:33 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOTLOADERINTERFACE_H
|
||||||
|
#define BOOTLOADERINTERFACE_H
|
||||||
|
#include "define.h"
|
||||||
|
|
||||||
|
enum eBootloaderStates
|
||||||
|
{
|
||||||
|
BOOTLOADER_STANDBY_STATE,
|
||||||
|
BOOTLOADER_ACTIVE_STATE,
|
||||||
|
BOOTLOADER_ERASE_FLASH_STATE,
|
||||||
|
BOOTLOADER_RECEIVING_FIRMWARE_STATE,
|
||||||
|
BOOTLOADER_SENDING_FIRMWARE_COPY_STATE,
|
||||||
|
|
||||||
|
BOOTLOADER_MAX_STATE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum eBootloaderStateMachineEvents
|
||||||
|
{
|
||||||
|
BOOTLOADER_TICK_EVENT,
|
||||||
|
BOOTLOADER_NEW_CMD_EVENT,
|
||||||
|
BOOTLOADER_TIMEOUT_EVENT,
|
||||||
|
|
||||||
|
BOOTLOADER_MAX_EVENT
|
||||||
|
};
|
||||||
|
|
||||||
|
enum eBootloaderStateMachineCmds
|
||||||
|
{
|
||||||
|
BOOTLOADER_SM_ACTIVATE_CMD,
|
||||||
|
BOOTLOADER_SM_ABORT_CMD,
|
||||||
|
BOOTLOADER_SM_ERASE_FLASH_CMD,
|
||||||
|
BOOTLOADER_SM_INIT_UPLOAD_CMD,
|
||||||
|
BOOTLOADER_SM_NEW_DATA_CHUNK_CMD,
|
||||||
|
BOOTLOADER_SM_UPLOAD_FINISHED_CMD,
|
||||||
|
BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD,
|
||||||
|
BOOTLOADER_SM_INVALID_CRC_CMD
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
extern char BootloaderBuffer[200];
|
||||||
|
|
||||||
|
int BootloaderInterfaceInit();
|
||||||
|
void BootloaderExecuteCmd(char Cmd);
|
||||||
|
void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC);
|
||||||
|
|
||||||
|
void BootloaderInterfaceStateMachine();
|
||||||
|
|
||||||
|
void BootloaderInterfaceTick();
|
||||||
|
void BootloaderIterfaceStateMachine(int Event, int Param);
|
||||||
|
void BootloaderResetStateMachine();
|
||||||
|
void BootloaderActivateBootloader();
|
||||||
|
void BootloaderDeactivateBootloader();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* BOOTLOADERINTERFACE_H */
|
||||||
|
|
||||||
@ -1,319 +1,344 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
Project: Automatic cat feeder
|
Project: Automatic cat feeder
|
||||||
Date: march 19 2006
|
Date: march 19 2006
|
||||||
Author: Jean-Fran<EFBFBD>ois Martel
|
Author: Jean-Fran<EFBFBD>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 RxHeader1: //Wait for data header...
|
||||||
case RxHeader: //Wait for data header...
|
{
|
||||||
{
|
BootloaderHeader <<= 8;
|
||||||
if(Data == FRAME_HEADER)
|
BootloaderHeader += Data; //0xDE
|
||||||
{
|
|
||||||
mRxData[BufPtr++] = Data;
|
|
||||||
State = RxAdd;
|
|
||||||
CRC ^= Data;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DataSize = 0;
|
|
||||||
ResetStateMachine();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
if(Data == BOOTLOADER_FRAME_HEADER_1)
|
||||||
}
|
|
||||||
case RxAdd: //Sender Address.
|
|
||||||
{
|
{
|
||||||
SenderAddress = Data;
|
BootloaderState = RxHeader2;
|
||||||
mRxData[BufPtr++] = Data;
|
|
||||||
State = RxID;
|
|
||||||
CRC ^= Data;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case RxID: //Sender ID
|
else
|
||||||
{
|
{
|
||||||
mRxData[BufPtr++] = Data;
|
BootloaderProtocolResetStateMachine();
|
||||||
State = RxMyID;
|
|
||||||
SenderID = Data;
|
|
||||||
CRC ^= Data;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case RxMyID:
|
break;
|
||||||
{
|
}
|
||||||
// if(Data != MyDeviceID && Data != BROADCAST_VALUE) //Message is not for this type of device and it's not a broadcast
|
case RxHeader2: //Wait for data header...
|
||||||
// {
|
{
|
||||||
// ResetStateMachine();
|
BootloaderHeader <<= 8;
|
||||||
// break;
|
BootloaderHeader += Data; //0xAD
|
||||||
// }
|
|
||||||
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;
|
|
||||||
|
|
||||||
|
if(Data == BOOTLOADER_FRAME_HEADER_2)
|
||||||
|
{
|
||||||
|
BootloaderState = RxHeader3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BootloaderProtocolResetStateMachine();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxHeader3: //Wait for data header...
|
||||||
|
{
|
||||||
|
BootloaderHeader <<= 8;
|
||||||
|
BootloaderHeader += Data; //0xBE
|
||||||
|
|
||||||
State = RxSize2;
|
if(Data == BOOTLOADER_FRAME_HEADER_3)
|
||||||
CRC ^= Data;
|
{
|
||||||
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case RxSize2: //Data size
|
else
|
||||||
{
|
{
|
||||||
DataSize |= (unsigned int)Data;
|
BootloaderState = RxCmd;
|
||||||
DataSize <<= 8;
|
|
||||||
mRxData[BufPtr++] = Data;
|
|
||||||
|
|
||||||
|
|
||||||
State = RxSize3;
|
|
||||||
CRC ^= Data;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case RxSize3: //Data size
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxCmd:
|
||||||
|
{
|
||||||
|
BootloaderCommand = Data;
|
||||||
|
BootloaderState = RxPayloadSize1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxPayloadSize1:
|
||||||
|
{
|
||||||
|
BootloaderDataSize = Data;
|
||||||
|
BootloaderState = RxPayloadSize2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxPayloadSize2:
|
||||||
|
{
|
||||||
|
BootloaderDataSize <<= 8;
|
||||||
|
BootloaderDataSize += Data;
|
||||||
|
|
||||||
|
BootloaderState = RxPayloadSize3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxPayloadSize3:
|
||||||
|
{
|
||||||
|
BootloaderDataSize <<= 8;
|
||||||
|
BootloaderDataSize += Data;
|
||||||
|
|
||||||
|
BootloaderState = RxPayloadSize4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxPayloadSize4:
|
||||||
|
{
|
||||||
|
BootloaderDataSize <<= 8;
|
||||||
|
BootloaderDataSize += Data;
|
||||||
|
|
||||||
|
if(BootloaderDataSize > MAX_BOOTLOADER_PAYLOAD_SIZE)
|
||||||
{
|
{
|
||||||
DataSize |= (unsigned int)Data;
|
//TODO, send NACK?
|
||||||
DataSize <<= 8;
|
BootloaderProtocolResetStateMachine();
|
||||||
mRxData[BufPtr++] = Data;
|
|
||||||
|
|
||||||
|
|
||||||
State = RxSize4;
|
|
||||||
CRC ^= Data;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RxSize4: //Data size LSB
|
if(BootloaderDataSize == 0)
|
||||||
{
|
{
|
||||||
DataSize |= (unsigned int)Data;
|
BootloaderState = RxCRC1;
|
||||||
mRxData[BufPtr++] = Data;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BootloaderState = RxPayload;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxPayload: //Data size
|
||||||
|
{
|
||||||
|
*BootloaderRxPtr = Data;
|
||||||
|
BootloaderRxPtr++;
|
||||||
|
|
||||||
if(DataSize > MAX_MESSAGE_SIZE)
|
BootloaderDataCtr++;
|
||||||
ResetStateMachine();
|
|
||||||
|
|
||||||
if(DataSize == 0)
|
if(BootloaderDataCtr == BootloaderDataSize)
|
||||||
State = RxCRC;
|
{
|
||||||
else
|
BootloaderState = RxCRC1;
|
||||||
State = RxData;
|
|
||||||
|
|
||||||
CRC ^= Data;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RxData:
|
|
||||||
{
|
|
||||||
CRC ^= Data;
|
|
||||||
|
|
||||||
mRxData[BufPtr++] = Data;
|
break;
|
||||||
DataCtr++;
|
}
|
||||||
|
case RxCRC1: //Data size
|
||||||
|
{
|
||||||
|
BootloaderCRC = Data;
|
||||||
|
BootloaderState = RxCRC2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxCRC2: //Data size
|
||||||
|
{
|
||||||
|
BootloaderCRC <<= 8;
|
||||||
|
BootloaderCRC += Data;
|
||||||
|
BootloaderState = RxCRC3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxCRC3: //Data size
|
||||||
|
{
|
||||||
|
BootloaderCRC <<= 8;
|
||||||
|
BootloaderCRC += Data;
|
||||||
|
BootloaderState = RxCRC4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case RxCRC4: //Data size
|
||||||
|
{
|
||||||
|
BootloaderCRC <<= 8;
|
||||||
|
BootloaderCRC += Data;
|
||||||
|
BootloaderState = RxCRC3;
|
||||||
|
|
||||||
if(DataCtr == DataSize)
|
//TODO: Compute and Compare CRC.
|
||||||
{
|
if(BootloaderCRC != 0xBAADCAFE)
|
||||||
State = RxCRC;
|
{
|
||||||
}
|
BootloaderProtocolResetStateMachine();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
BootloaderExecuteCmd(BootloaderCommand);
|
||||||
}
|
BootloaderProtocolResetStateMachine();
|
||||||
case RxCRC:
|
break;
|
||||||
{
|
}
|
||||||
if(Data != CRC)
|
default:
|
||||||
{
|
{
|
||||||
ResetStateMachine();
|
BootloaderProtocolResetStateMachine();
|
||||||
// ProtocolAcknowledge(0,Command,0);
|
break;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
// NewMasterMessageReceived(mRxData);
|
|
||||||
ExecuteMasterCommand(Command,ProtocolMsgDataPtr());
|
|
||||||
ResetStateMachine();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
ResetStateMachine();
|
|
||||||
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];
|
{
|
||||||
|
BootloaderProtocolStateMachine(*DataBuf++);
|
||||||
return CRC;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char ProtocolIsReceiving(void)
|
void BootloaderProtocolResetStateMachine()
|
||||||
{
|
{
|
||||||
if(State == RxHeader)
|
BootloaderDataSize = 0;
|
||||||
return 0; // Idle...
|
BootloaderHeader = 0;
|
||||||
else
|
BootloaderBufPtr = 0;
|
||||||
return 1; //receiving from serial port
|
BootloaderCommand = 0;
|
||||||
|
BootloaderCRC = 0;
|
||||||
|
BootloaderState = RxHeader1;
|
||||||
|
BootloaderDataCtr = 0;
|
||||||
|
|
||||||
|
BootloaderRxPtr = &BootloaderBuffer[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendFrame(unsigned char Cmd, int Size)
|
||||||
|
|
||||||
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)
|
//Header
|
||||||
{
|
BootloaderBuffer[0] = BOOTLOADER_FRAME_HEADER_1; //Header
|
||||||
*FrameSize = 0;
|
BootloaderBuffer[1] = BOOTLOADER_FRAME_HEADER_2;
|
||||||
return &mTxData[FRAME_HEADER_INDEX];
|
BootloaderBuffer[2] = BOOTLOADER_FRAME_HEADER_3;
|
||||||
}
|
BootloaderBuffer[3] = BOOTLOADER_FRAME_HEADER_4;
|
||||||
|
|
||||||
mTxData[FRAME_HEADER_INDEX] = FRAME_HEADER; //header
|
BootloaderBuffer[4] = Cmd;
|
||||||
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;
|
char nibble = (char)((Size >> 24) &0x000000FF);
|
||||||
|
BootloaderBuffer[5] = nibble;
|
||||||
|
|
||||||
return &mTxData[FRAME_HEADER_INDEX];
|
nibble = (char)((Size >> 16) &0x000000FF);
|
||||||
|
BootloaderBuffer[6] = nibble;
|
||||||
|
|
||||||
|
nibble = (char)((Size >> 8) &0x000000FF);
|
||||||
|
BootloaderBuffer[7] = nibble;
|
||||||
|
|
||||||
|
nibble = (char)(Size &0x000000FF);
|
||||||
|
BootloaderBuffer[8] = nibble;
|
||||||
|
|
||||||
|
unsigned char* CRCPtr = (unsigned char*)BootloaderDataStartPtr + Size;
|
||||||
|
*CRCPtr++ = 0xBA;
|
||||||
|
*CRCPtr++ = 0xAD;
|
||||||
|
*CRCPtr++ = 0xCA;
|
||||||
|
*CRCPtr++ = 0xFE;
|
||||||
|
|
||||||
|
SendBootloaderData(&BootloaderBuffer[0],Size + PROTOCOL_INFO_DATA_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *ProtocolMsgDataPtr()
|
unsigned char *BootloaderProtocolGetDataBufferPtr()
|
||||||
{
|
{
|
||||||
return &mRxData[FRAME_DATA_INDEX];
|
return (unsigned char*)BootloaderDataStartPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendHeartbeat()
|
||||||
|
{
|
||||||
|
*BootloaderProtocolGetDataBufferPtr() = BOOTLOADER_ACK;
|
||||||
|
BootloaderProtocolSendFrame(BOOTLOADER_HEARTBEAT_RESPONSE,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendACK(unsigned char Cmd)
|
||||||
|
{
|
||||||
|
*BootloaderProtocolGetDataBufferPtr() = BOOTLOADER_ACK;
|
||||||
|
BootloaderProtocolSendFrame(Cmd,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendNACK(unsigned char Cmd)
|
||||||
|
{
|
||||||
|
*BootloaderProtocolGetDataBufferPtr() = 0;
|
||||||
|
BootloaderProtocolSendFrame(Cmd,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendInitUploadResponse()
|
||||||
|
{
|
||||||
|
int MaxSize = MAX_BOOTLOADER_PAYLOAD_SIZE;
|
||||||
|
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
|
||||||
|
|
||||||
|
*DataPtr++ = (char)BOOTLOADER_ACK;
|
||||||
|
|
||||||
|
char nibble = (char)((MaxSize >> 24) &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
nibble = (char)((MaxSize >> 16) &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
nibble = (char)((MaxSize >> 8) &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
nibble = (char)(MaxSize &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
BootloaderProtocolSendFrame(BOOTLOADER_INIT_UPLOAD_RESPONSE,5);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BootloaderProtocolSendDataChunkResult(char ErrorCode, int ChunkValue)
|
||||||
|
{
|
||||||
|
char* DataPtr = BootloaderProtocolGetDataBufferPtr();
|
||||||
|
|
||||||
|
*DataPtr++ = ErrorCode;
|
||||||
|
|
||||||
|
char nibble = (char)((ChunkValue >> 24) &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
nibble = (char)((ChunkValue >> 16) &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
nibble = (char)((ChunkValue >> 8) &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
nibble = (char)(ChunkValue &0x000000FF);
|
||||||
|
*DataPtr++ = nibble;
|
||||||
|
|
||||||
|
BootloaderProtocolSendFrame(BOOTLOADER_SEND_DATA_CHUNK_RESPONSE,5);
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
26
ChaletLora.X/Source/FlashMapping.h
Normal file
26
ChaletLora.X/Source/FlashMapping.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* File: ChaletPowerRelay.h
|
||||||
|
* Author: JF
|
||||||
|
*
|
||||||
|
* Created on November 30, 2018, 7:33 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLASHMAPPING_H
|
||||||
|
#define FLASHMAPPING_H
|
||||||
|
#include "define.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
0x180000 Firmware flags
|
||||||
|
0x180004 Nb Records
|
||||||
|
0x180008 Firmware Size
|
||||||
|
0x18000C Version code
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FLASH_END_ADDRESS 180000
|
||||||
|
|
||||||
|
#define FLASH_BTLDR_FIRMWARE_START_ADDRESS 0x180000
|
||||||
|
#define FLASH_BTLDR_FIRMWARE_LAST_SECTOR_ADD 0x180000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* HARAKIRIRELAY_H */
|
||||||
@ -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,167 +27,177 @@ 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)
|
||||||
{
|
{
|
||||||
case CHALET_INTERFACE_ACK:
|
case CHALET_INTERFACE_ACK:
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CHALET_GENERAL_STATUS_REQUEST:
|
case CHALET_GENERAL_STATUS_REQUEST:
|
||||||
{
|
{
|
||||||
float FloatVoltage = GetBatteryVoltage();
|
float FloatVoltage = GetBatteryVoltage();
|
||||||
unsigned int BattVoltage = *((int*)&FloatVoltage);
|
float FloatTemperature = TempSensorGetTemp();
|
||||||
int SolarPanelCurrent = GetSolarPanelCurrent();
|
unsigned int BattVoltage = *((int*)&FloatVoltage);
|
||||||
int SOC = GetBatterySOC();
|
unsigned int Temperature = *((int*)&FloatTemperature);
|
||||||
|
int SolarPanelCurrent = GetSolarPanelCurrent();
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
GeneralStatus |= LORA_CHALET_STATUS_POWER_RELAY_MASK;
|
GeneralStatus |= LORA_CHALET_STATUS_POWER_RELAY_MASK;
|
||||||
}
|
}
|
||||||
if(GetCurrentModuleOK() == true)
|
if(GetCurrentModuleOK() == true)
|
||||||
{
|
{
|
||||||
GeneralStatus |= LORA_CHALET_STATUS_CUR_SENSOR_MASK;
|
GeneralStatus |= LORA_CHALET_STATUS_CUR_SENSOR_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChaletStatus[0] = GeneralStatus; //General Status
|
ChaletStatus[0] = GeneralStatus; //General Status
|
||||||
ChaletStatus[1] = GetWiFiSate(); //Wifi Module state
|
ChaletStatus[1] = GetWiFiSate(); //Wifi Module state
|
||||||
ChaletStatus[2] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 1
|
ChaletStatus[2] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 1
|
||||||
BattVoltage >>= 8;
|
BattVoltage >>= 8;
|
||||||
ChaletStatus[3] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 2
|
ChaletStatus[3] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 2
|
||||||
BattVoltage >>= 8;
|
BattVoltage >>= 8;
|
||||||
ChaletStatus[4] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 3
|
ChaletStatus[4] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 3
|
||||||
BattVoltage >>= 8;
|
BattVoltage >>= 8;
|
||||||
ChaletStatus[5] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 4
|
ChaletStatus[5] = (char)(BattVoltage & 0x000000FF); //Battery Voltage 4
|
||||||
ChaletStatus[6] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 1
|
ChaletStatus[6] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 1
|
||||||
SolarPanelCurrent >>= 8;
|
SolarPanelCurrent >>= 8;
|
||||||
ChaletStatus[7] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 2
|
ChaletStatus[7] = (char)(SolarPanelCurrent & 0x000000FF); //Solar panel Current 2
|
||||||
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);
|
|
||||||
|
|
||||||
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
|
SendLoraNetworkCommand(CHALET_GENERAL_STATUS_RESPONSE,ChaletStatus,14);
|
||||||
|
|
||||||
break;
|
HEARTBEAT_LED_1_PIN = ~HEARTBEAT_LED_1_PIN;
|
||||||
}
|
|
||||||
case CHALET_AC_POWER_STATE_STATUS_REQUEST:
|
|
||||||
{
|
|
||||||
char PowerStatus = GetChaletPowerRelayState();
|
|
||||||
SendLoraNetworkCommand(CHALET_AC_POWER_STATE_STATUS_RESPONSE,&PowerStatus,1);
|
|
||||||
HEARTBEAT_LED_2_PIN = ~HEARTBEAT_LED_2_PIN;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CHALET_AC_POWER_SET_STATE_REQUEST:
|
|
||||||
{
|
|
||||||
char response = CHALET_POWER_RELAY_UNKNOWN_STATE;
|
|
||||||
if(Data[0] == CHALET_POWER_RELAY_OFF_STATE)
|
|
||||||
{
|
|
||||||
ChaletPowerRelayTurnOff();
|
|
||||||
response = CHALET_POWER_RELAY_OFF_STATE;
|
|
||||||
}
|
|
||||||
else if(Data[0] == CHALET_POWER_RELAY_ON_STATE)
|
|
||||||
{
|
|
||||||
ChaletPowerRelayTurnOn();
|
|
||||||
response = CHALET_POWER_RELAY_ON_STATE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//invalid state requested.... don't do anything
|
|
||||||
response = CHALET_POWER_RELAY_UNKNOWN_STATE;
|
|
||||||
}
|
|
||||||
|
|
||||||
SendLoraNetworkCommand(CHALET_AC_POWER_SET_STATE_RESPONSE,&response,1);
|
break;
|
||||||
|
}
|
||||||
|
case CHALET_AC_POWER_STATE_STATUS_REQUEST:
|
||||||
|
{
|
||||||
|
char PowerStatus = GetChaletPowerRelayState();
|
||||||
|
SendLoraNetworkCommand(CHALET_AC_POWER_STATE_STATUS_RESPONSE,&PowerStatus,1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CHALET_AC_POWER_SET_STATE_REQUEST:
|
||||||
|
{
|
||||||
|
char response = CHALET_POWER_RELAY_UNKNOWN_STATE;
|
||||||
|
if(Data[0] == CHALET_POWER_RELAY_OFF_STATE)
|
||||||
|
{
|
||||||
|
ChaletPowerRelayTurnOff();
|
||||||
|
response = CHALET_POWER_RELAY_OFF_STATE;
|
||||||
|
}
|
||||||
|
else if(Data[0] == CHALET_POWER_RELAY_ON_STATE)
|
||||||
|
{
|
||||||
|
ChaletPowerRelayTurnOn();
|
||||||
|
response = CHALET_POWER_RELAY_ON_STATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//invalid state requested.... don't do anything
|
||||||
|
response = CHALET_POWER_RELAY_UNKNOWN_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
SendLoraNetworkCommand(CHALET_AC_POWER_SET_STATE_RESPONSE,&response,1);
|
||||||
}
|
|
||||||
case CHALET_BATTERY_VOLTAGE_REQUEST:
|
break;
|
||||||
{
|
}
|
||||||
break;
|
case CHALET_BATTERY_VOLTAGE_REQUEST:
|
||||||
}
|
{
|
||||||
case CHALET_WIFI_STATUS_REQUEST:
|
break;
|
||||||
{
|
}
|
||||||
break;
|
case CHALET_WIFI_STATUS_REQUEST:
|
||||||
}
|
{
|
||||||
case CHALET_WIFI_SET_STATE_REQUEST:
|
break;
|
||||||
{
|
}
|
||||||
char response = WIFI_UNKNOWN_STATE;
|
case CHALET_WIFI_SET_STATE_REQUEST:
|
||||||
if(Data[0] == 0)
|
{
|
||||||
{
|
char response = WIFI_UNKNOWN_STATE;
|
||||||
TurnOFFWiFi();
|
if(Data[0] == 0)
|
||||||
response = 0;
|
{
|
||||||
}
|
TurnOFFWiFi();
|
||||||
else if(Data[0] == 1)
|
response = 0;
|
||||||
{
|
}
|
||||||
if(GetWiFiSate() != WIFI_CONNECTED_STATE)
|
else if(Data[0] == 1)
|
||||||
{
|
{
|
||||||
InitWiFi();
|
if(GetWiFiSate() != WIFI_CONNECTED_STATE)
|
||||||
response = GetWiFiSate();
|
{
|
||||||
}
|
InitWiFi();
|
||||||
else
|
response = GetWiFiSate();
|
||||||
{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
response = 1;
|
response = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//invalid state requested.... don't do anything
|
//invalid state requested.... don't do anything
|
||||||
response = WIFI_UNKNOWN_STATE;
|
response = WIFI_UNKNOWN_STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendLoraNetworkCommand(CHALET_WIFI_SET_STATE_RESPONSE,&response,1);
|
SendLoraNetworkCommand(CHALET_WIFI_SET_STATE_RESPONSE,&response,1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CHALET_DO_HARAKIRI_REQUEST:
|
case CHALET_DO_HARAKIRI_REQUEST:
|
||||||
{
|
{
|
||||||
char response;
|
char response;
|
||||||
if(Data[0] == 0xBA &&
|
if(Data[0] == 0xBA &&
|
||||||
Data[1] == 0xAD &&
|
Data[1] == 0xAD &&
|
||||||
Data[2] == 0xBE &&
|
Data[2] == 0xBE &&
|
||||||
Data[3] == 0xEF)
|
Data[3] == 0xEF)
|
||||||
{
|
{
|
||||||
//Magic word is OK... let's suicide...
|
//Magic word is OK... let's suicide...
|
||||||
response = 0x01;
|
response = 0x01;
|
||||||
//First, send an ACK to master (this is blocking so it's OK)
|
//First, send an ACK to master (this is blocking so it's OK)
|
||||||
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
|
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
|
||||||
HarakiriRelayTurnOff();
|
HarakiriRelayTurnOff();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
response = 0x00;
|
response = 0x00;
|
||||||
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
|
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CHALET_REBOOT_CPU_REQUEST:
|
case CHALET_REBOOT_CPU_REQUEST:
|
||||||
{
|
{
|
||||||
char response;
|
char response;
|
||||||
if(Data[0] == 0xBA &&
|
if(Data[0] == 0xBA &&
|
||||||
Data[1] == 0xAD &&
|
Data[1] == 0xAD &&
|
||||||
Data[2] == 0xCA &&
|
Data[2] == 0xCA &&
|
||||||
Data[3] == 0xFE)
|
Data[3] == 0xFE)
|
||||||
{
|
{
|
||||||
//Magic word is OK... let's reboot...
|
//Magic word is OK... let's reboot...
|
||||||
response = 0x01;
|
response = 0x01;
|
||||||
//First, send an ACK to master (this is blocking so it's OK)
|
//First, send an ACK to master (this is blocking so it's OK)
|
||||||
SendLoraNetworkCommand(CHALET_REBOOT_CPU_RESPONSE,&response,1);
|
SendLoraNetworkCommand(CHALET_REBOOT_CPU_RESPONSE,&response,1);
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
TurnOFFWiFi();
|
TurnOFFWiFi();
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
SoftReset();
|
SoftReset();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
response = 0x00;
|
response = 0x00;
|
||||||
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
|
SendLoraNetworkCommand(CHALET_DO_HARAKIRI_CONFIRMATION,&response,1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
94
ChaletLora.X/Source/TC77.c
Normal file
94
ChaletLora.X/Source/TC77.c
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
//#include <proc/p32mx440f256h.h>
|
||||||
|
|
||||||
|
#include "TC77.h"
|
||||||
|
#include "BoardCfg.h"
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
short mDeviceID;
|
||||||
|
|
||||||
|
int TC77Configure()
|
||||||
|
{
|
||||||
|
|
||||||
|
TEMP_SENSOR_CS_PIN = 0;
|
||||||
|
|
||||||
|
//Execute a 16 bits read first.
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
|
||||||
|
//Now, write 0xFFFF to config register.
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
|
||||||
|
//Read Device ID
|
||||||
|
SPI3BUF = 0x00;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
mDeviceID = SPI3BUF;
|
||||||
|
mDeviceID <<= 8;
|
||||||
|
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
mDeviceID += SPI3BUF;
|
||||||
|
TEMP_SENSOR_CS_PIN = 1;
|
||||||
|
|
||||||
|
mDeviceID &= 0xFFFC;
|
||||||
|
if(mDeviceID != 0x5400)
|
||||||
|
{
|
||||||
|
return RET_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
Sleep(100);
|
||||||
|
|
||||||
|
//Device detected. Now, put the device in continuous read mode.
|
||||||
|
TEMP_SENSOR_CS_PIN = 0;
|
||||||
|
|
||||||
|
//Execute a 16 bits read first.
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
|
||||||
|
//Now, write 0x0000 to config register.
|
||||||
|
SPI3BUF = 0x00;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
SPI3BUF = 0x00;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
|
||||||
|
TEMP_SENSOR_CS_PIN = 1;
|
||||||
|
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
float TC77GetActualTemp()
|
||||||
|
{
|
||||||
|
short RawTemp = 0;
|
||||||
|
float Temp;
|
||||||
|
TEMP_SENSOR_CS_PIN = 0;
|
||||||
|
|
||||||
|
//Read 16 bits.
|
||||||
|
SPI3BUF = 0x00;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
RawTemp = SPI3BUF;
|
||||||
|
RawTemp <<= 8;
|
||||||
|
|
||||||
|
SPI3BUF = 0xFF;
|
||||||
|
while(!SPI3STATbits.SPIRBF);
|
||||||
|
RawTemp += SPI3BUF;
|
||||||
|
|
||||||
|
TEMP_SENSOR_CS_PIN = 1;
|
||||||
|
|
||||||
|
//RawTemp &= 0xFFF8; //Get rid of useless 3 LSB
|
||||||
|
RawTemp >>= 3;
|
||||||
|
|
||||||
|
Temp = ((float)0.0625 * (float)RawTemp);
|
||||||
|
|
||||||
|
return Temp;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
short TC77GetDeviceID()
|
||||||
|
{
|
||||||
|
return mDeviceID;
|
||||||
|
}
|
||||||
18
ChaletLora.X/Source/TC77.h
Normal file
18
ChaletLora.X/Source/TC77.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* File:
|
||||||
|
* Author: JF
|
||||||
|
*
|
||||||
|
* Created on November 30, 2018, 7:33 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TC77_H
|
||||||
|
#define TC77_H
|
||||||
|
#include "define.h"
|
||||||
|
|
||||||
|
int TC77Configure();
|
||||||
|
float TC77GetActualTemp();
|
||||||
|
short TC77GetDeviceID();
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* TC77_H */
|
||||||
|
|
||||||
38
ChaletLora.X/Source/TemperatureSensor.c
Normal file
38
ChaletLora.X/Source/TemperatureSensor.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
//#include <proc/p32mx440f256h.h>
|
||||||
|
|
||||||
|
#include "TemperatureSensor.h"
|
||||||
|
#include "BoardCfg.h"
|
||||||
|
#include "TC77.h"
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
void InitTempSensor()
|
||||||
|
{
|
||||||
|
ActualTemp = 0xBAADBEEF;
|
||||||
|
TimerStart(TEMP_SENSOR_REFRESH_TIMER,1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TempSensorCheckAndConfigure()
|
||||||
|
{
|
||||||
|
if(TC77Configure() == RET_OK)
|
||||||
|
{
|
||||||
|
ActualTemp = TC77GetActualTemp();
|
||||||
|
return RET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RET_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
float TempSensorGetTemp()
|
||||||
|
{
|
||||||
|
return ActualTemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TickTempSensor()
|
||||||
|
{
|
||||||
|
if(IsTimerExpired(TEMP_SENSOR_REFRESH_TIMER))
|
||||||
|
{
|
||||||
|
ActualTemp = TC77GetActualTemp();
|
||||||
|
TimerStart(TEMP_SENSOR_REFRESH_TIMER,1000);
|
||||||
|
// printf("Temperature: %f\n",ActualTemp);
|
||||||
|
}
|
||||||
|
}
|
||||||
24
ChaletLora.X/Source/TemperatureSensor.h
Normal file
24
ChaletLora.X/Source/TemperatureSensor.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* File: ChaletPowerRelay.h
|
||||||
|
* Author: JF
|
||||||
|
*
|
||||||
|
* Created on November 30, 2018, 7:33 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TEMPERATURESENSOR_H
|
||||||
|
#define TEMPERATURESENSOR_H
|
||||||
|
#include "define.h"
|
||||||
|
|
||||||
|
float ActualTemp;
|
||||||
|
|
||||||
|
void InitTempSensor();
|
||||||
|
int TempSensorCheckAndConfigure();
|
||||||
|
float TempSensorGetTemp();
|
||||||
|
|
||||||
|
void TickTempSensor();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* TEMPERATURESENSOR_H */
|
||||||
|
|
||||||
@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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};
|
||||||
|
|
||||||
@ -71,10 +76,10 @@ static void resolve_cb(uint8 *hostName, uint32 hostIp)
|
|||||||
gu32HostIp = hostIp;
|
gu32HostIp = hostIp;
|
||||||
gbHostIpByName = true;
|
gbHostIpByName = true;
|
||||||
printf("Host IP is %d.%d.%d.%d\r\n",
|
printf("Host IP is %d.%d.%d.%d\r\n",
|
||||||
(int)IPV4_BYTE(hostIp, 0),
|
(int)IPV4_BYTE(hostIp, 0),
|
||||||
(int)IPV4_BYTE(hostIp, 1),
|
(int)IPV4_BYTE(hostIp, 1),
|
||||||
(int)IPV4_BYTE(hostIp, 2),
|
(int)IPV4_BYTE(hostIp, 2),
|
||||||
(int)IPV4_BYTE(hostIp, 3));
|
(int)IPV4_BYTE(hostIp, 3));
|
||||||
printf("Host Name is %s\r\n", hostName);
|
printf("Host Name is %s\r\n", hostName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,145 +93,174 @@ static void socket_cb(SOCKET sock, uint8 u8Msg, void *pvMsg)
|
|||||||
{
|
{
|
||||||
switch(u8Msg)
|
switch(u8Msg)
|
||||||
{
|
{
|
||||||
case SOCKET_MSG_BIND:
|
case SOCKET_MSG_BIND:
|
||||||
{
|
{
|
||||||
tstrSocketBindMsg *pstrBind = (tstrSocketBindMsg*)pvMsg;
|
tstrSocketBindMsg *pstrBind = (tstrSocketBindMsg*)pvMsg;
|
||||||
if(pstrBind->status == 0)
|
if(pstrBind->status == 0)
|
||||||
{
|
{
|
||||||
if(sock == TerminalServerSocket)
|
if(sock == TerminalServerSocket)
|
||||||
{
|
{
|
||||||
listen(TerminalServerSocket, 0);
|
listen(TerminalServerSocket, 0);
|
||||||
}
|
}
|
||||||
else if(sock == SyslogServerSocket)
|
else if(sock == SyslogServerSocket)
|
||||||
{
|
{
|
||||||
listen(SyslogServerSocket,0);
|
listen(SyslogServerSocket,0);
|
||||||
}
|
}
|
||||||
else if(sock == NetworkServerSocket)
|
else if(sock == NetworkServerSocket)
|
||||||
{
|
{
|
||||||
listen(NetworkServerSocket,0);
|
listen(NetworkServerSocket,0);
|
||||||
}
|
}
|
||||||
}
|
else if(sock == BootloaderServerSocket)
|
||||||
else
|
{
|
||||||
{
|
listen(BootloaderServerSocket,0);
|
||||||
printf("Bind Failed\n");
|
printf("Bootloader server started\n");
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
}
|
else
|
||||||
case SOCKET_MSG_LISTEN:
|
{
|
||||||
{
|
printf("Bind Failed\n");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SOCKET_MSG_LISTEN:
|
||||||
|
{
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,1);
|
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SOCKET_MSG_ACCEPT:
|
case SOCKET_MSG_ACCEPT:
|
||||||
{
|
{
|
||||||
// New Socket is accepted.
|
// New Socket is accepted.
|
||||||
tstrSocketAcceptMsg *pstrAccept = (tstrSocketAcceptMsg *)pvMsg;
|
tstrSocketAcceptMsg *pstrAccept = (tstrSocketAcceptMsg *)pvMsg;
|
||||||
if(pstrAccept->sock >= 0)
|
if(pstrAccept->sock >= 0)
|
||||||
{
|
{
|
||||||
if(sock == TerminalServerSocket)
|
if(sock == TerminalServerSocket)
|
||||||
{
|
{
|
||||||
memset(TerminalRxBuf,0,sizeof(TerminalRxBuf));
|
memset(TerminalRxBuf,0,sizeof(TerminalRxBuf));
|
||||||
// Get the accepted socket.
|
// Get the accepted socket.
|
||||||
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)
|
||||||
{
|
{
|
||||||
memset(SyslogRxBuf,0,sizeof(SyslogRxBuf));
|
memset(SyslogRxBuf,0,sizeof(SyslogRxBuf));
|
||||||
// Get the accepted socket.
|
// Get the accepted socket.
|
||||||
SyslogSocket = pstrAccept->sock;
|
SyslogSocket = pstrAccept->sock;
|
||||||
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
|
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
|
||||||
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
|
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,1);
|
||||||
SendSyslogData("Syslog Welcome\n",strlen("Syslog Welcome\n"));
|
SendSyslogData("Syslog Welcome\n",strlen("Syslog Welcome\n"));
|
||||||
}
|
}
|
||||||
else if(sock == NetworkServerSocket)
|
else if(sock == NetworkServerSocket)
|
||||||
{
|
{
|
||||||
memset(NetworkRxBuf,0,sizeof(NetworkRxBuf));
|
memset(NetworkRxBuf,0,sizeof(NetworkRxBuf));
|
||||||
// Get the accepted socket.
|
// Get the accepted socket.
|
||||||
NetworkSocket = pstrAccept->sock;
|
NetworkSocket = pstrAccept->sock;
|
||||||
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
|
||||||
{
|
{
|
||||||
printf("Socket %d : Accept Failed\n", sock);
|
printf("Socket %d : Accept Failed\n", sock);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
case SOCKET_MSG_RECV:
|
case SOCKET_MSG_RECV:
|
||||||
{
|
{
|
||||||
tstrSocketRecvMsg *pstrRecvMsg = (tstrSocketRecvMsg*)pvMsg;
|
tstrSocketRecvMsg *pstrRecvMsg = (tstrSocketRecvMsg*)pvMsg;
|
||||||
if((pstrRecvMsg->pu8Buffer != NULL) && (pstrRecvMsg->s16BufferSize > 0))
|
if((pstrRecvMsg->pu8Buffer != NULL) && (pstrRecvMsg->s16BufferSize > 0))
|
||||||
{
|
{
|
||||||
// Process the received message
|
// Process the received message
|
||||||
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)
|
|
||||||
{
|
|
||||||
//Fwd data to stdin...
|
|
||||||
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
|
|
||||||
//Syslog shall ignore data...
|
|
||||||
}
|
|
||||||
else if(sock == NetworkSocket)
|
|
||||||
{
|
|
||||||
//Fwd data to Network...
|
|
||||||
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else //Socket must be closed.
|
|
||||||
{
|
|
||||||
if(sock == TerminalSocket)
|
|
||||||
{
|
|
||||||
close(TerminalSocket);
|
|
||||||
TerminalSocket = -1;
|
|
||||||
// SendSyslogData("Terminal client disconnected\n",strlen("Terminal client disconnected\n"));
|
|
||||||
printf("Terminal client disconnected\n");
|
|
||||||
// m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
|
|
||||||
}
|
|
||||||
else if(sock == SyslogSocket)
|
|
||||||
{
|
|
||||||
close(SyslogSocket);
|
|
||||||
SyslogSocket = -1;
|
|
||||||
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
|
|
||||||
}
|
|
||||||
else if(sock == NetworkSocket)
|
|
||||||
{
|
|
||||||
close(NetworkSocket);
|
|
||||||
NetworkSocket = -1;
|
|
||||||
printf("Network client disconnected\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case SOCKET_MSG_SEND:
|
|
||||||
{
|
|
||||||
if(sock == SyslogSocket)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
else if(sock == SyslogSocket)
|
||||||
|
{
|
||||||
|
//Fwd data to stdin...
|
||||||
|
recv(SyslogSocket, SyslogRxBuf, sizeof(SyslogRxBuf), 0);
|
||||||
|
//Syslog shall ignore data...
|
||||||
|
}
|
||||||
|
else if(sock == NetworkSocket)
|
||||||
|
{
|
||||||
|
//Fwd data to Network...
|
||||||
|
recv(NetworkSocket, NetworkRxBuf, sizeof(NetworkRxBuf), 0);
|
||||||
|
}
|
||||||
|
else if(sock == BootloaderSocket)
|
||||||
|
{
|
||||||
|
//Fwd data to Network...
|
||||||
|
|
||||||
|
recv(BootloaderSocket, BootloaderRxBuf, sizeof(BootloaderRxBuf), 0);
|
||||||
|
BootloaderProtocolProtocolAnalyzeNewData(pstrRecvMsg->pu8Buffer, pstrRecvMsg->s16BufferSize);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //Socket must be closed.
|
||||||
|
{
|
||||||
|
if(sock == TerminalSocket)
|
||||||
|
{
|
||||||
|
close(TerminalSocket);
|
||||||
|
TerminalSocket = -1;
|
||||||
|
// SendSyslogData("Terminal client disconnected\n",strlen("Terminal client disconnected\n"));
|
||||||
|
printf("Terminal client disconnected\n");
|
||||||
|
// m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
|
||||||
|
}
|
||||||
|
else if(sock == SyslogSocket)
|
||||||
|
{
|
||||||
|
close(SyslogSocket);
|
||||||
|
SyslogSocket = -1;
|
||||||
|
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO4,0);
|
||||||
|
}
|
||||||
|
else if(sock == NetworkSocket)
|
||||||
|
{
|
||||||
|
close(NetworkSocket);
|
||||||
|
NetworkSocket = -1;
|
||||||
|
printf("Network client disconnected\n");
|
||||||
|
}
|
||||||
|
else if(sock == BootloaderSocket)
|
||||||
|
{
|
||||||
|
close(BootloaderSocket);
|
||||||
|
BootloaderSocket = -1;
|
||||||
|
printf("Bootloader client disconnected\n");
|
||||||
|
BootloaderDeactivateBootloader();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SOCKET_MSG_SEND:
|
||||||
|
{
|
||||||
|
if(sock == SyslogSocket)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,61 +291,61 @@ static void set_dev_name_to_mac(uint8 *name, uint8 *mac_addr)
|
|||||||
static void wifi_cb(uint8 u8MsgType, void *pvMsg)
|
static void wifi_cb(uint8 u8MsgType, void *pvMsg)
|
||||||
{
|
{
|
||||||
switch (u8MsgType) {
|
switch (u8MsgType) {
|
||||||
case M2M_WIFI_RESP_CON_STATE_CHANGED: {
|
case M2M_WIFI_RESP_CON_STATE_CHANGED: {
|
||||||
tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged *)pvMsg;
|
tstrM2mWifiStateChanged *pstrWifiState = (tstrM2mWifiStateChanged *)pvMsg;
|
||||||
if (pstrWifiState->u8CurrState == M2M_WIFI_CONNECTED)
|
if (pstrWifiState->u8CurrState == M2M_WIFI_CONNECTED)
|
||||||
{
|
{
|
||||||
printf("Wi-Fi connected\r\n");
|
printf("Wi-Fi connected\r\n");
|
||||||
|
|
||||||
#ifndef USE_STATIC_IP
|
#ifndef USE_STATIC_IP
|
||||||
m2m_wifi_request_dhcp_client();
|
m2m_wifi_request_dhcp_client();
|
||||||
#else
|
#else
|
||||||
m2m_wifi_set_static_ip(&mModuleIPConfig);
|
m2m_wifi_set_static_ip(&mModuleIPConfig);
|
||||||
gbConnectedWifi = true;
|
gbConnectedWifi = true;
|
||||||
#endif
|
#endif
|
||||||
mWiFiState = WIFI_CONNECTED_STATE;
|
mWiFiState = WIFI_CONNECTED_STATE;
|
||||||
} else if (pstrWifiState->u8CurrState == M2M_WIFI_DISCONNECTED)
|
} else if (pstrWifiState->u8CurrState == M2M_WIFI_DISCONNECTED)
|
||||||
{
|
{
|
||||||
printf("Wi-Fi disconnected\r\n");
|
printf("Wi-Fi disconnected\r\n");
|
||||||
gbConnectedWifi = false;
|
gbConnectedWifi = false;
|
||||||
mWiFiState = WIFI_DISCONNECTED_STATE;
|
mWiFiState = WIFI_DISCONNECTED_STATE;
|
||||||
CloseSockets();
|
CloseSockets();
|
||||||
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,0);
|
m2m_periph_gpio_set_val(M2M_PERIPH_GPIO3,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case M2M_WIFI_REQ_DHCP_CONF:
|
case M2M_WIFI_REQ_DHCP_CONF:
|
||||||
{
|
{
|
||||||
uint8 *pu8IPAddress = (uint8 *)pvMsg;
|
uint8 *pu8IPAddress = (uint8 *)pvMsg;
|
||||||
/* Turn LED0 on to declare that IP address received. */
|
/* Turn LED0 on to declare that IP address received. */
|
||||||
printf("Wi-Fi IP is %u.%u.%u.%u\r\n", pu8IPAddress[0], pu8IPAddress[1], pu8IPAddress[2], pu8IPAddress[3]);
|
printf("Wi-Fi IP is %u.%u.%u.%u\r\n", pu8IPAddress[0], pu8IPAddress[1], pu8IPAddress[2], pu8IPAddress[3]);
|
||||||
gbConnectedWifi = true;
|
gbConnectedWifi = true;
|
||||||
/* Obtain the IP Address by network name */
|
/* Obtain the IP Address by network name */
|
||||||
gethostbyname((uint8 *)server_host_name);
|
gethostbyname((uint8 *)server_host_name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case M2M_WIFI_RESP_PROVISION_INFO:
|
case M2M_WIFI_RESP_PROVISION_INFO:
|
||||||
{
|
{
|
||||||
tstrM2MProvisionInfo *pstrProvInfo = (tstrM2MProvisionInfo *)pvMsg;
|
tstrM2MProvisionInfo *pstrProvInfo = (tstrM2MProvisionInfo *)pvMsg;
|
||||||
printf("wifi_cb: M2M_WIFI_RESP_PROVISION_INFO.\r\n");
|
printf("wifi_cb: M2M_WIFI_RESP_PROVISION_INFO.\r\n");
|
||||||
|
|
||||||
if (pstrProvInfo->u8Status == M2M_SUCCESS) {
|
if (pstrProvInfo->u8Status == M2M_SUCCESS) {
|
||||||
m2m_wifi_connect((char *)pstrProvInfo->au8SSID,
|
m2m_wifi_connect((char *)pstrProvInfo->au8SSID,
|
||||||
strlen((char *)pstrProvInfo->au8SSID),
|
strlen((char *)pstrProvInfo->au8SSID),
|
||||||
pstrProvInfo->u8SecType,
|
pstrProvInfo->u8SecType,
|
||||||
pstrProvInfo->au8Password,
|
pstrProvInfo->au8Password,
|
||||||
M2M_WIFI_CH_ALL);
|
M2M_WIFI_CH_ALL);
|
||||||
} else {
|
} else {
|
||||||
printf("wifi_cb: Provision failed.\r\n");
|
printf("wifi_cb: Provision failed.\r\n");
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
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 }
|
||||||
|
|
||||||
|
|||||||
647
ChaletLora.X/Source/hd44780.c
Normal file
647
ChaletLora.X/Source/hd44780.c
Normal file
@ -0,0 +1,647 @@
|
|||||||
|
/**
|
||||||
|
* ---------------------------------------------------------------+
|
||||||
|
* @desc HD44780 LCD Driver
|
||||||
|
* ---------------------------------------------------------------+
|
||||||
|
* Copyright (C) 2020 Marian Hrinko.
|
||||||
|
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||||
|
*
|
||||||
|
* @author Marian Hrinko
|
||||||
|
* @datum 18.11.2020
|
||||||
|
* @file hd44780.c
|
||||||
|
* @tested AVR Atmega16a
|
||||||
|
*
|
||||||
|
* @depend hd44780.h
|
||||||
|
* ---------------------------------------------------------------+
|
||||||
|
* @usage default set 16x2 LCD
|
||||||
|
* 4-bit with 3 control wires (RW, RS, E)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// include libraries
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include "hd44780.h"
|
||||||
|
|
||||||
|
// +---------------------------+
|
||||||
|
// | Power on |
|
||||||
|
// | Wait for more than 15 ms | // 15 ms wait
|
||||||
|
// | after VCC rises to 4.5 V |
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 |
|
||||||
|
// | 0 0 0 0 1 1 | // Initial sequence 0x30
|
||||||
|
// | Wait for more than 4.1 ms | // 4.1 ms us writing DATA into DDRAM or CGRAM
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 |
|
||||||
|
// | 0 0 0 0 1 1 | // Initial sequence 0x30
|
||||||
|
// | Wait for more than 0.1 ms | // 100 us writing DATA into DDRAM or CGRAM
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 | // Initial sequence 0x30
|
||||||
|
// | 0 0 0 0 1 1 | // 37 us writing DATA into DDRAM or CGRAM 4 us tadd - time after busy flag disapeared
|
||||||
|
// | Wait for more than 45 us | // 37 us + 4 us = 41 us * (270/250) = 45us
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+ // 4bit mode 0x20 !!! MUST BE SET TIME, BF CHECK DOESN'T WORK CORRECTLY !!!
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 | //
|
||||||
|
// | 0 0 0 0 1 0 | // 37 us writing DATA into DDRAM or CGRAM 4 us tadd - time after busy flag disapeared
|
||||||
|
// | Wait for more than 45 us | // !!! MUST BE SET DELAY TIME, BUSY FLAG CHECK DOESN'T WORK CORRECTLY !!!
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 | // Display off 0x08
|
||||||
|
// | 0 0 0 0 1 0 | //
|
||||||
|
// | 0 0 1 0 0 0 | //
|
||||||
|
// | Wait for BF Cleared | // Wait for BF Cleared
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 | // Display clear 0x01
|
||||||
|
// | 0 0 0 0 0 0 | //
|
||||||
|
// | 0 0 0 0 0 1 | //
|
||||||
|
// | Wait for BF Cleared | // Wait for BF Cleared
|
||||||
|
// +---------------------------+
|
||||||
|
// |
|
||||||
|
// +---------------------------+
|
||||||
|
// | RS R/W DB7 DB6 DB5 DB4 | // Entry mode set 0x06
|
||||||
|
// | 0 0 0 0 0 0 | //
|
||||||
|
// | 0 0 0 1 1 0 | // shift cursor to the left, without text shifting
|
||||||
|
// | Wait for BF Cleared | // Wait for BF Cleared
|
||||||
|
// +---------------------------+
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD display clear
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DisplayClear (void)
|
||||||
|
{
|
||||||
|
// Diplay clear
|
||||||
|
HD44780_SendInstruction(HD44780_DISP_CLEAR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD display on
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DisplayOn (void)
|
||||||
|
{
|
||||||
|
// send instruction - display on
|
||||||
|
HD44780_SendInstruction(HD44780_DISP_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD cursor on, display on
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CursorOn (void)
|
||||||
|
{
|
||||||
|
// send instruction - cursor on
|
||||||
|
HD44780_SendInstruction(HD44780_CURSOR_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD cursor off
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CursorOff (void)
|
||||||
|
{
|
||||||
|
// send instruction - cursor on
|
||||||
|
HD44780_SendInstruction(HD44780_CURSOR_OFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD cursor blink, cursor on, display on
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CursorBlink (void)
|
||||||
|
{
|
||||||
|
// send instruction - Cursor blink
|
||||||
|
HD44780_SendInstruction(HD44780_CURSOR_BLINK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD draw char
|
||||||
|
*
|
||||||
|
* @param char
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DrawChar (char character)
|
||||||
|
{
|
||||||
|
// Diplay clear
|
||||||
|
HD44780_SendData(character);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD draw string
|
||||||
|
*
|
||||||
|
* @param char *
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DrawString (char *str)
|
||||||
|
{
|
||||||
|
unsigned char i = 0;
|
||||||
|
// loop through 5 bytes
|
||||||
|
while (str[i] != '\0') {
|
||||||
|
//read characters and increment index
|
||||||
|
HD44780_SendData(str[i++]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Got to position x,y
|
||||||
|
*
|
||||||
|
* @param char
|
||||||
|
* @param char
|
||||||
|
*
|
||||||
|
* @return char
|
||||||
|
*/
|
||||||
|
char HD44780_PositionXY (char x, char y)
|
||||||
|
{
|
||||||
|
if (x > HD44780_COLS || y > HD44780_ROWS) {
|
||||||
|
// error
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
// check which row
|
||||||
|
if (y == 0) {
|
||||||
|
// send instruction 1st row
|
||||||
|
HD44780_SendInstruction(HD44780_POSITION | (HD44780_ROW1_START + x));
|
||||||
|
} else if (y == 1) {
|
||||||
|
// send instruction 2nd row
|
||||||
|
HD44780_SendInstruction(HD44780_POSITION | (HD44780_ROW2_START + x));
|
||||||
|
}
|
||||||
|
// success
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Shift cursor / display to left / right
|
||||||
|
*
|
||||||
|
* @param char item {HD44780_CURSOR; HD44780_DISPLAY}
|
||||||
|
* @param char direction {HD44780_RIGHT; HD44780_LEFT}
|
||||||
|
*
|
||||||
|
* @return char
|
||||||
|
*/
|
||||||
|
char HD44780_Shift (char item, char direction)
|
||||||
|
{
|
||||||
|
// check if item is cursor or display or direction is left or right
|
||||||
|
if ((item != HD44780_DISPLAY) && (item != HD44780_CURSOR)) {
|
||||||
|
// error
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
// check if direction is left or right
|
||||||
|
if ((direction != HD44780_RIGHT) && (direction != HD44780_LEFT)) {
|
||||||
|
// error
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cursor shift
|
||||||
|
if (item == HD44780_CURSOR) {
|
||||||
|
// right shift
|
||||||
|
if (direction == HD44780_RIGHT) {
|
||||||
|
// shit cursor / display to right / left
|
||||||
|
HD44780_SendInstruction(HD44780_SHIFT | HD44780_CURSOR | HD44780_RIGHT);
|
||||||
|
} else {
|
||||||
|
// shit cursor / display to right / left
|
||||||
|
HD44780_SendInstruction(HD44780_SHIFT | HD44780_CURSOR | HD44780_LEFT);
|
||||||
|
}
|
||||||
|
// display shift
|
||||||
|
} else {
|
||||||
|
// right shift
|
||||||
|
if (direction == HD44780_RIGHT) {
|
||||||
|
// shit cursor / display to right / left
|
||||||
|
HD44780_SendInstruction(HD44780_SHIFT | HD44780_DISPLAY | HD44780_RIGHT);
|
||||||
|
} else {
|
||||||
|
// shit cursor / display to right / left
|
||||||
|
HD44780_SendInstruction(HD44780_SHIFT | HD44780_DISPLAY | HD44780_LEFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// success
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD init - initialisation routine
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Init (void)
|
||||||
|
{
|
||||||
|
// set E as output
|
||||||
|
SETBIT(HD44780_DDR_E, HD44780_E);
|
||||||
|
// set RS as output
|
||||||
|
SETBIT(HD44780_DDR_RS, HD44780_RS);
|
||||||
|
// set RW as output
|
||||||
|
SETBIT(HD44780_DDR_RW, HD44780_RW);
|
||||||
|
|
||||||
|
// set DB7-DB4 as output
|
||||||
|
HD44780_SetDDR_DATA4to7();
|
||||||
|
|
||||||
|
// clear RS
|
||||||
|
CLRBIT(HD44780_PORT_RS, HD44780_RS);
|
||||||
|
// clear RW
|
||||||
|
CLRBIT(HD44780_PORT_RW, HD44780_RW);
|
||||||
|
// clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
|
||||||
|
// delay > 15ms
|
||||||
|
_delay_ms(16);
|
||||||
|
|
||||||
|
// Busy Flag (BF) cannot be checked in these instructions
|
||||||
|
// ---------------------------------------------------------------------
|
||||||
|
// Initial sequence 0x30 - send 4 bits in 4 bit mode
|
||||||
|
HD44780_SendInstruction(HD44780_INIT_SEQ);
|
||||||
|
// delay > 4.1ms
|
||||||
|
_delay_ms(5);
|
||||||
|
|
||||||
|
// pulse E
|
||||||
|
HD44780_PulseE();
|
||||||
|
// delay > 100us
|
||||||
|
_delay_us(110);
|
||||||
|
|
||||||
|
// pulse E
|
||||||
|
HD44780_PulseE();
|
||||||
|
// delay > 45us (=37+4 * 270/250)
|
||||||
|
_delay_us(50);
|
||||||
|
|
||||||
|
// 4 bit mode 0x20 - send 4 bits in 4 bit mode
|
||||||
|
HD44780_Send4bitsIn4bitMode(HD44780_4BIT_MODE);
|
||||||
|
// pulse E
|
||||||
|
HD44780_PulseE();
|
||||||
|
// delay > 45us (=37+4 * 270/250)
|
||||||
|
_delay_us(50);
|
||||||
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
// 4-bit & 2-lines & 5x8-dots 0x28 - send 8 bits in 4 bit mode
|
||||||
|
HD44780_SendInstruction(HD44780_4BIT_MODE | HD44780_2_ROWS | HD44780_FONT_5x8);
|
||||||
|
|
||||||
|
// display off 0x08 - send 8 bits in 4 bit mode
|
||||||
|
HD44780_SendInstruction(HD44780_DISP_OFF);
|
||||||
|
|
||||||
|
// display clear 0x01 - send 8 bits in 4 bit mode
|
||||||
|
HD44780_SendInstruction(HD44780_DISP_CLEAR);
|
||||||
|
|
||||||
|
// entry mode set 0x06 - send 8 bits in 4 bit mode
|
||||||
|
HD44780_SendInstruction(HD44780_ENTRY_MODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Check Busy Flag (BF) in 4 bit mode
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CheckBFin4bitMode (void)
|
||||||
|
{
|
||||||
|
unsigned char input = 0;
|
||||||
|
|
||||||
|
// clear DB7-DB4 as input
|
||||||
|
HD44780_ClearDDR_DATA4to7();
|
||||||
|
// set pull-up resistors for DB7-DB4
|
||||||
|
HD44780_SetPORT_DATA4to7();
|
||||||
|
|
||||||
|
// clear RS
|
||||||
|
CLRBIT(HD44780_PORT_RS, HD44780_RS);
|
||||||
|
// set RW - read instruction
|
||||||
|
SETBIT(HD44780_PORT_RW, HD44780_RW);
|
||||||
|
|
||||||
|
// test HIGH level on PIN DB7
|
||||||
|
// after clear PIN DB7 should continue
|
||||||
|
// -------------------------------------
|
||||||
|
// us: 0.5|0.5|0.5
|
||||||
|
// ___ ___
|
||||||
|
// E: ___/ \___/ \__
|
||||||
|
// ___ ___
|
||||||
|
// DB7: \___/ \___/ \__
|
||||||
|
//
|
||||||
|
while (1) {
|
||||||
|
|
||||||
|
// Read upper nibble
|
||||||
|
// --------------------------------
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// PWeh > 0.5us
|
||||||
|
_delay_us(0.5);
|
||||||
|
// read upper nibble (tDDR > 360ns)
|
||||||
|
input = HD44780_PIN_DATA;
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
|
||||||
|
// Read lower nibble
|
||||||
|
// --------------------------------
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// PWeh > 0.5us
|
||||||
|
_delay_us(0.5);
|
||||||
|
// read lower nibble (tDDR > 360ns)
|
||||||
|
input |= HD44780_PIN_DATA >> 4;
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
|
||||||
|
// check if DB7 is cleared
|
||||||
|
if (!(input & (1 << HD44780_DATA7))) {
|
||||||
|
// if BF cleared -> end loop
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// clear RW
|
||||||
|
CLRBIT(HD44780_PORT_RW, HD44780_RW);
|
||||||
|
|
||||||
|
// set DB7-DB4 as output
|
||||||
|
HD44780_SetDDR_DATA4to7();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Check Busy Flag (BF) in 8 bit mode
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CheckBFin8bitMode (void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send instruction
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SendInstruction (unsigned short int data)
|
||||||
|
{
|
||||||
|
// Clear RS
|
||||||
|
HD44780_PORT_RS &= ~(1 << HD44780_RS);
|
||||||
|
|
||||||
|
// 4bit mode
|
||||||
|
// ------------------------------------------
|
||||||
|
if (HD44780_MODE == HD44780_4BIT_MODE) {
|
||||||
|
// send required data in required mode
|
||||||
|
HD44780_Send8bitsIn4bitMode(data);
|
||||||
|
// check busy flag
|
||||||
|
HD44780_CheckBFin4bitMode();
|
||||||
|
// 8 bit mode
|
||||||
|
// ------------------------------------------
|
||||||
|
} else if (HD44780_MODE == HD44780_8BIT_MODE) {
|
||||||
|
// send required data in required mode
|
||||||
|
HD44780_Send8bitsIn8bitMode(data);
|
||||||
|
// check busy flag
|
||||||
|
HD44780_CheckBFin8bitMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send data
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SendData (unsigned short int data)
|
||||||
|
{
|
||||||
|
// Set RS
|
||||||
|
SETBIT(HD44780_PORT_RS, HD44780_RS);
|
||||||
|
|
||||||
|
// 4bit mode
|
||||||
|
// ------------------------------------------
|
||||||
|
if (HD44780_MODE == HD44780_4BIT_MODE) {
|
||||||
|
// send required data in required mode
|
||||||
|
HD44780_Send8bitsIn4bitMode(data);
|
||||||
|
// check busy flag
|
||||||
|
HD44780_CheckBFin4bitMode();
|
||||||
|
// 8 bit mode
|
||||||
|
// ------------------------------------------
|
||||||
|
} else if (HD44780_MODE == HD44780_8BIT_MODE) {
|
||||||
|
// send required data in required mode
|
||||||
|
HD44780_Send8bitsIn8bitMode(data);
|
||||||
|
// check busy flag
|
||||||
|
HD44780_CheckBFin8bitMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear RS
|
||||||
|
CLRBIT(HD44780_PORT_RS, HD44780_RS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send 4bits instruction in 4 bit mode
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Send4bitsIn4bitMode (unsigned short int data)
|
||||||
|
{
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// send data to LCD
|
||||||
|
HD44780_SetUppNibble(data);
|
||||||
|
// PWeh delay time > 450ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send 8bits instruction in 4 bit mode
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Send8bitsIn4bitMode (unsigned short int data)
|
||||||
|
{
|
||||||
|
// Send upper nibble
|
||||||
|
// ----------------------------------
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// send data to LCD
|
||||||
|
HD44780_SetUppNibble(data);
|
||||||
|
// PWeh delay time > 450ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
|
||||||
|
// Send lower nibble
|
||||||
|
// ----------------------------------
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// send data to LCD
|
||||||
|
HD44780_SetUppNibble(data << 4);
|
||||||
|
// PWeh delay time > 450ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send 8bits instruction in 8 bit mode
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Send8bitsIn8bitMode (unsigned short int data)
|
||||||
|
{
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// send data to LCD
|
||||||
|
HD44780_SetUppNibble(data);
|
||||||
|
// send data to LCD
|
||||||
|
HD44780_SetLowNibble(data);
|
||||||
|
// PWeh delay time > 450ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send upper nibble
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetUppNibble (unsigned short int data)
|
||||||
|
{
|
||||||
|
// clear bits DB7-DB4
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA7);
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA6);
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA5);
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA4);
|
||||||
|
// set DB7-DB4 if corresponding bit is set
|
||||||
|
if (data & 0x80) { SETBIT(HD44780_PORT_DATA, HD44780_DATA7); }
|
||||||
|
if (data & 0x40) { SETBIT(HD44780_PORT_DATA, HD44780_DATA6); }
|
||||||
|
if (data & 0x20) { SETBIT(HD44780_PORT_DATA, HD44780_DATA5); }
|
||||||
|
if (data & 0x10) { SETBIT(HD44780_PORT_DATA, HD44780_DATA4); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send lower nibble
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetLowNibble (unsigned short int data)
|
||||||
|
{
|
||||||
|
// clear bits DB7-DB4
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA3);
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA2);
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA1);
|
||||||
|
CLRBIT(HD44780_PORT_DATA, HD44780_DATA0);
|
||||||
|
// set DB7-DB4 if corresponding bit is set
|
||||||
|
if (data & 0x08) { SETBIT(HD44780_PORT_DATA, HD44780_DATA3); }
|
||||||
|
if (data & 0x04) { SETBIT(HD44780_PORT_DATA, HD44780_DATA2); }
|
||||||
|
if (data & 0x02) { SETBIT(HD44780_PORT_DATA, HD44780_DATA1); }
|
||||||
|
if (data & 0x01) { SETBIT(HD44780_PORT_DATA, HD44780_DATA0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD pulse E
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_PulseE (void)
|
||||||
|
{
|
||||||
|
// Set E
|
||||||
|
SETBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// PWeh delay time > 450ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
// Clear E
|
||||||
|
CLRBIT(HD44780_PORT_E, HD44780_E);
|
||||||
|
// TcycE > 1000ns -> delay depends on PWeh delay time
|
||||||
|
// delay = TcycE - PWeh = 1000 - 500 = 500ns
|
||||||
|
_delay_us(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Set PORT DB4 to DB7
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetPORT_DATA4to7 (void)
|
||||||
|
{
|
||||||
|
// set DB4-DB7
|
||||||
|
SETBIT(HD44780_PORT_DATA, HD44780_DATA4);
|
||||||
|
SETBIT(HD44780_PORT_DATA, HD44780_DATA5);
|
||||||
|
SETBIT(HD44780_PORT_DATA, HD44780_DATA6);
|
||||||
|
SETBIT(HD44780_PORT_DATA, HD44780_DATA7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Clear DDR DB4 to DB7
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_ClearDDR_DATA4to7 (void)
|
||||||
|
{
|
||||||
|
// set DB4-DB7
|
||||||
|
CLRBIT(HD44780_DDR_DATA, HD44780_DATA4);
|
||||||
|
CLRBIT(HD44780_DDR_DATA, HD44780_DATA5);
|
||||||
|
CLRBIT(HD44780_DDR_DATA, HD44780_DATA6);
|
||||||
|
CLRBIT(HD44780_DDR_DATA, HD44780_DATA7);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Set DDR DB4 to DB7
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetDDR_DATA4to7 (void)
|
||||||
|
{
|
||||||
|
// set DB7-DB4 as output
|
||||||
|
SETBIT(HD44780_DDR_DATA, HD44780_DATA4);
|
||||||
|
SETBIT(HD44780_DDR_DATA, HD44780_DATA5);
|
||||||
|
SETBIT(HD44780_DDR_DATA, HD44780_DATA6);
|
||||||
|
SETBIT(HD44780_DDR_DATA, HD44780_DATA7);
|
||||||
|
}
|
||||||
383
ChaletLora.X/Source/hd44780.h
Normal file
383
ChaletLora.X/Source/hd44780.h
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
/**
|
||||||
|
* ---------------------------------------------------------------+
|
||||||
|
* @desc HD44780 LCD Driver
|
||||||
|
* ---------------------------------------------------------------+
|
||||||
|
* Copyright (C) 2020 Marian Hrinko.
|
||||||
|
* Written by Marian Hrinko (mato.hrinko@gmail.com)
|
||||||
|
*
|
||||||
|
* @author Marian Hrinko
|
||||||
|
* @datum 18.11.2020
|
||||||
|
* @file hd44780.c
|
||||||
|
* @tested AVR Atmega16a
|
||||||
|
*
|
||||||
|
* @depend
|
||||||
|
* ---------------------------------------------------------------+
|
||||||
|
* @usage default set 16x2 LCD
|
||||||
|
* 4-bit with 3 control wires (RW, RS, E)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef __HD44780_H__
|
||||||
|
#define __HD44780_H__
|
||||||
|
|
||||||
|
// Success
|
||||||
|
#ifndef SUCCESS
|
||||||
|
#define SUCCESS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Error
|
||||||
|
#ifndef ERROR
|
||||||
|
#define ERROR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// define clock
|
||||||
|
#if defined(__AVR_ATmega8__)
|
||||||
|
#define _FCPU 8000000
|
||||||
|
#elif defined(__AVR_ATmega16__)
|
||||||
|
#define _FCPU 16000000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__AVR_ATmega16__)
|
||||||
|
|
||||||
|
// E port
|
||||||
|
// --------------------------------------
|
||||||
|
#ifndef HD44780_DDR_E
|
||||||
|
#define HD44780_DDR_E DDRD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_PORT_E
|
||||||
|
#define HD44780_PORT_E PORTD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_E
|
||||||
|
#define HD44780_E 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// RW port
|
||||||
|
// --------------------------------------
|
||||||
|
#ifndef HD44780_DDR_RW
|
||||||
|
#define HD44780_DDR_RW DDRD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_PORT_RW
|
||||||
|
#define HD44780_PORT_RW PORTD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_RW
|
||||||
|
#define HD44780_RW 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// RS port
|
||||||
|
// --------------------------------------
|
||||||
|
#ifndef HD44780_DDR_RS
|
||||||
|
#define HD44780_DDR_RS DDRD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_PORT_RS
|
||||||
|
#define HD44780_PORT_RS PORTD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_RS
|
||||||
|
#define HD44780_RS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// DATA port / pin
|
||||||
|
// --------------------------------------
|
||||||
|
#ifndef HD44780_DDR_DATA
|
||||||
|
#define HD44780_DDR_DATA DDRD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_PORT_DATA
|
||||||
|
#define HD44780_PORT_DATA PORTD
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_PIN_DATA
|
||||||
|
#define HD44780_PIN_DATA PIND
|
||||||
|
#endif
|
||||||
|
// pins
|
||||||
|
#ifndef HD44780_DATA7
|
||||||
|
#define HD44780_DATA7 7 // LCD PORT DB7
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA6
|
||||||
|
#define HD44780_DATA6 6 // LCD PORT DB6
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA5
|
||||||
|
#define HD44780_DATA5 5 // LCD PORT DB5
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA4
|
||||||
|
#define HD44780_DATA4 4 // LCD PORT DB4
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA3
|
||||||
|
#define HD44780_DATA3 3 // LCD PORT DB3
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA2
|
||||||
|
#define HD44780_DATA2 2 // LCD PORT DB2
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA1
|
||||||
|
#define HD44780_DATA1 1 // LCD PORT DB1
|
||||||
|
#endif
|
||||||
|
#ifndef HD44780_DATA0
|
||||||
|
#define HD44780_DATA0 0 // LCD PORT DB0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BIT7 0x80
|
||||||
|
#define BIT6 0x40
|
||||||
|
#define BIT5 0x20
|
||||||
|
#define BIT4 0x10
|
||||||
|
#define BIT3 0x08
|
||||||
|
#define BIT2 0x04
|
||||||
|
#define BIT1 0x02
|
||||||
|
#define BIT0 0x01
|
||||||
|
|
||||||
|
#define HD44780_BUSY_FLAG HD44780_DATA7
|
||||||
|
#define HD44780_INIT_SEQ 0x30
|
||||||
|
#define HD44780_DISP_CLEAR 0x01
|
||||||
|
#define HD44780_DISP_OFF 0x08
|
||||||
|
#define HD44780_DISP_ON 0x0C
|
||||||
|
#define HD44780_CURSOR_ON 0x0E
|
||||||
|
#define HD44780_CURSOR_OFF 0x0C
|
||||||
|
#define HD44780_CURSOR_BLINK 0x0F
|
||||||
|
#define HD44780_RETURN_HOME 0x02
|
||||||
|
#define HD44780_ENTRY_MODE 0x06
|
||||||
|
#define HD44780_4BIT_MODE 0x20
|
||||||
|
#define HD44780_8BIT_MODE 0x30
|
||||||
|
#define HD44780_2_ROWS 0x08
|
||||||
|
#define HD44780_FONT_5x8 0x00
|
||||||
|
#define HD44780_FONT_5x10 0x04
|
||||||
|
#define HD44780_POSITION 0x80
|
||||||
|
|
||||||
|
#define HD44780_SHIFT 0x10
|
||||||
|
#define HD44780_CURSOR 0x00
|
||||||
|
#define HD44780_DISPLAY 0x08
|
||||||
|
#define HD44780_LEFT 0x00
|
||||||
|
#define HD44780_RIGHT 0x04
|
||||||
|
|
||||||
|
#define HD44780_ROWS 2
|
||||||
|
#define HD44780_COLS 16
|
||||||
|
|
||||||
|
#define HD44780_ROW1_START 0x00
|
||||||
|
#define HD44780_ROW1_END HD44780_COLS
|
||||||
|
#define HD44780_ROW2_START 0x40
|
||||||
|
#define HD44780_ROW2_END HD44780_COLS
|
||||||
|
|
||||||
|
// **********************************************
|
||||||
|
// !!!
|
||||||
|
// MODE DEFINITION - CORRECTLY DEFINED
|
||||||
|
//
|
||||||
|
// ----------------------------------------------
|
||||||
|
//
|
||||||
|
// HD44780_4BIT_MODE - 4 bit mode / 4 data wires
|
||||||
|
// HD44780_8BIT_MODE - 8 bit mode / 8 data wires
|
||||||
|
//
|
||||||
|
// **********************************************
|
||||||
|
#define HD44780_MODE HD44780_4BIT_MODE
|
||||||
|
|
||||||
|
// set bit
|
||||||
|
#define SETBIT(REG, BIT) { REG |= (1 << BIT); }
|
||||||
|
// clear bit
|
||||||
|
#define CLRBIT(REG, BIT) { REG &= ~(1 << BIT); }
|
||||||
|
// set port / pin if bit is set
|
||||||
|
#define SET_IF_BIT_IS_SET(REG, PORT, DATA, BIT) { if((DATA & BIT) > 0) { SETBIT(REG, PORT); } }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD init - initialisation routine
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Init (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD display clear
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DisplayClear (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD display on
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DisplayOn (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD cursor on, display on
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CursorOn (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD cursor off
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CursorOff (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD cursor blink, cursor on, display on
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CursorBlink (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD draw char
|
||||||
|
*
|
||||||
|
* @param char
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DrawChar (char character);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD draw string
|
||||||
|
*
|
||||||
|
* @param char *
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_DrawString (char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Got to position x,y
|
||||||
|
*
|
||||||
|
* @param char
|
||||||
|
* @param char
|
||||||
|
*
|
||||||
|
* @return char
|
||||||
|
*/
|
||||||
|
char HD44780_PositionXY (char x, char y);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Shift cursor / display to left / right
|
||||||
|
*
|
||||||
|
* @param char item {HD44780_CURSOR; HD44780_DISPLAY}
|
||||||
|
* @param char direction {HD44780_RIGHT; HD44780_LEFT}
|
||||||
|
*
|
||||||
|
* @return char
|
||||||
|
*/
|
||||||
|
char HD44780_Shift (char item, char direction);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Check Busy Flag (BF) in 8 bit mode
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CheckBFin8bitMode (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Check Busy Flag (BF) in 4 bit mode
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_CheckBFin4bitMode (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send instruction
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SendInstruction (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send data
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SendData (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send 4bits instruction in 4 bit mode
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Send4bitsIn4bitMode (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send 8bits instruction in 4 bit mode
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Send8bitsIn4bitMode (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send 8bits instruction in 8 bit mode
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_Send8bitsIn8bitMode (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send upper nibble
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetUppNibble (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD send lower nibble
|
||||||
|
*
|
||||||
|
* @param unsigned short int
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetLowNibble (unsigned short int);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc LCD pulse E
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_PulseE (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Set PORT DB4 to DB7
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetPORT_DATA4to7 (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Set DDR DB4 to DB7
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_SetDDR_DATA4to7 (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @desc Clear DDR DB4 to DB7
|
||||||
|
*
|
||||||
|
* @param void
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
void HD44780_ClearDDR_DATA4to7 (void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -1,17 +1,17 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
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.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "define.h"
|
#include "define.h"
|
||||||
@ -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,9 +75,10 @@ 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
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
InitBoard();
|
InitBoard();
|
||||||
@ -80,10 +86,12 @@ int main(void)
|
|||||||
|
|
||||||
TimerInit();
|
TimerInit();
|
||||||
InitWatchdog();
|
InitWatchdog();
|
||||||
// I2CInit();
|
// I2CInit();
|
||||||
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();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -104,42 +115,43 @@ int main(void)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 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();
|
||||||
|
|
||||||
TimerStart(HEARTBEAT_LED_TMR,HEARTBEAT_LED_TIMEOUT);
|
TimerStart(HEARTBEAT_LED_TMR,HEARTBEAT_LED_TIMEOUT);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 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;
|
||||||
|
|
||||||
|
|||||||
BIN
ChaletLora.X/dist/ChaletDuinoV2_775F512H_/debug/ChaletLora.X.debug.elf
vendored
Normal file
BIN
ChaletLora.X/dist/ChaletDuinoV2_775F512H_/debug/ChaletLora.X.debug.elf
vendored
Normal file
Binary file not shown.
5265
ChaletLora.X/dist/ChaletDuinoV2_775F512H_/debug/ChaletLora.X.debug.map
vendored
Normal file
5265
ChaletLora.X/dist/ChaletDuinoV2_775F512H_/debug/ChaletLora.X.debug.map
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user