97 lines
2.3 KiB
C
97 lines
2.3 KiB
C
|
|
|
|
#ifndef BOOTLOADER_PROTOCOL_H
|
|
#define BOOTLOADER_PROTOCOL_H
|
|
|
|
#define PROTOCOL_HEADER 0xBA
|
|
//#define MAX_SECTOR_SIZE 0x01000
|
|
#define MAX_RX_BUFF_SIZE 0x100
|
|
#define MAX_TX_BUFF_SIZE 0x100
|
|
|
|
//typedef struct
|
|
//{
|
|
// unsigned int SectorStartAddress;
|
|
// unsigned short SectorSize;
|
|
// unsigned int SectorData[MAX_SECTOR_SIZE];
|
|
//
|
|
//}stDataSector_t;
|
|
|
|
enum eBootloaderProtocolStates
|
|
{
|
|
PROTOCOL_RX_HEADER,
|
|
PROTOCOL_RX_CMD,
|
|
PROTOCOL_RX_DATA_SIZE_1,
|
|
PROTOCOL_RX_DATA_SIZE_2,
|
|
PROTOCOL_RX_DATA_BYTE1,
|
|
PROTOCOL_RX_DATA_BYTE2,
|
|
PROTOCOL_RX_DATA_BYTE3,
|
|
PROTOCOL_RX_DATA_BYTE4,
|
|
PROTOCOL_RX_CHECKSUM
|
|
};
|
|
|
|
enum eBootloaderProtocolCmds
|
|
{
|
|
ACKNOWLEDGE_CMD,
|
|
BOOTLOADER_READY_CMD, //Sent by the bootoloader at boot. If no answer... jump in app, else stay in update mode
|
|
CONNECT_REQUEST_CMD, //Sent by the PTE in answer to BOOTLOADER_READY_CMD to enter boot mode
|
|
BOOTLOADER_UNLOCK_REQUEST_CMD,
|
|
HEARTBEAT_CMD,
|
|
HEARTBEAT_REQUEST_CMD,
|
|
START_UPDATE_REQUEST_CMD,
|
|
SEND_RECORD_REQUEST_CMD,
|
|
END_UPDATE_REQUEST_CMD,
|
|
FLASH_API_VER_CMD,
|
|
FLASH_API_VER_REQUEST_CMD,
|
|
SCRUB_FLASH_REQUEST_CMD,
|
|
DOWNLOAD_FLASH_REQUEST_CMD,
|
|
FLASH_DATA_CMD,
|
|
FIRMWARE_RESET_REQUEST = 0xFA
|
|
};
|
|
|
|
enum eBootloaderProtocolRet
|
|
{
|
|
RET_PROTOCOL_OK,
|
|
RET_PROTOCOL_READY,
|
|
RET_PROTOCOL_FLASH_ERASE,
|
|
RET_PROTOCOL_FLASH_WRITE,
|
|
RET_PROTOCOL_ERR_BAD_CHECKSUM,
|
|
RET_PROTOCOL_ERR_DATA_OVERSIZE,
|
|
RET_PROTOCOL_ERR_DATA_BYTES_MISALIGNED,
|
|
RET_PROTOCOL_ERR_UNKNOWN_COMMAND,
|
|
RET_PROTOCOL_ERR_COMMAND_PENDING,
|
|
RET_PROTOCOL_ERR_ILLEGAL_ADDRESS,
|
|
RET_PROTOCOL_ERR_INVALID_UNLOCK_CODE,
|
|
RET_PROTOCOL_ERR_UNLOCK_EXPECTED,
|
|
RET_PROTOCOL_ERR_ERASE_FLASH_FAILED,
|
|
RET_PROTOCOL_ERR_WRITE_FLASH_FAILED,
|
|
RET_PROTOCOL_ERR_INVALID_ADDRESS
|
|
};
|
|
|
|
enum eBootloaderAcknowledgement
|
|
{
|
|
PROTOCOL_NACK,
|
|
PROTOCOL_ACK
|
|
};
|
|
|
|
|
|
extern Bool e_CommandPending;
|
|
extern Bool e_FlashUpdateMode;
|
|
extern unsigned char RxDataBuffer[MAX_RX_BUFF_SIZE];
|
|
//extern stDataSector_t CurrentDataSector;
|
|
|
|
|
|
|
|
void ProtocolInit(void);
|
|
void ProtocolRxData( char data );
|
|
void ProtocolResetSM(void);
|
|
void ProtocolExecCmd();
|
|
unsigned int ProtocolSendCmd(enum eBootloaderProtocolCmds Cmd, char *Data, unsigned int DataSize);
|
|
void ProtocolSendAck(enum eBootloaderAcknowledgement Ack, enum eBootloaderProtocolRet err);
|
|
|
|
|
|
#endif
|
|
|
|
//===========================================================================
|
|
// End of file.
|
|
//===========================================================================
|