PASII/CandeII_1.4/Include/ota.h

134 lines
2.4 KiB
C

#ifndef _OTA_H_
#define _OTA_H_
#include "ARMCM0.h"
#include "config.h"
#ifdef _OTA_
#pragma pack(1)
#define CMD_4KSETTING_ERASE 0x11
#define CMD_4KSETTING_WRITE 0x12
#define CMD_4KSETTING_UPGRADE 0x13
#define CMD_FW_WRITE_START 0x14
#define CMD_FW_UPGRADEV20 0x15
#define CMD_FW_ERASE 0x16
#define CMD_FW_WRITE 0x17
#define CMD_FW_UPGRADE 0x18
#define CMD_FLASHDATA_ERASE 0x20
#define CMD_FLASHDATA_WRITE 0x21
#define CMD_FLASHDATA_UPGRADE 0x22
#define CMD_FLASHDATA_START 0x23
#define CMD_FLASHDATA_UPGRADEV30 0x24
#define ERR_COMMAND_SUCCESS 0x00
#define ERR_COMMAND_FAILED 0x01
#define EVT_COMMAND_COMPLETE (0x0E)
#define CMD_COMPLETE_HDR_SZ 1
#define MAX_FW_WRITE_SZ 15
struct ret_fw_erase_cmd {
uint8_t status;
};
struct cmd_fw_write {
uint16_t offset;
uint8_t sz;
uint8_t data[MAX_FW_WRITE_SZ];
};
struct cmd_fw_write_start {
uint32_t offset;
uint16_t sz;
uint16_t checksum;
};
struct ret_fw_write_cmd {
uint8_t status;
};
struct ret_fw_write_start_cmd {
uint8_t status;
uint16_t sz;
uint16_t checksum;
};
struct cmd_fw_upgrade {
uint16_t sz;
uint16_t checksum;
};
struct cmd_4ksetting_upgrade {
uint8_t Xor;
uint32_t checksum;
};
struct cmd_fw_upgrade_V20 {
uint32_t sz;
uint16_t checksum;
};
struct ret_fw_upgrade_cmd {
uint8_t status;
};
union cmd_parm {
struct cmd_fw_write CmdFwWrite;
struct cmd_fw_upgrade CmdFwUpgrade;
struct cmd_fw_write_start CmdFwWriteStart;
struct cmd_fw_upgrade_V20 CmdFwUpgradeV20;
struct cmd_4ksetting_upgrade Cmd4ksettingUpgrade;
};
struct hci_cmd {
uint8_t opcode;
uint8_t len;
union cmd_parm cmdparm;
};
union ret_parm {
struct ret_fw_erase_cmd RetFwEraseCmd;
struct ret_fw_write_cmd RetFwWriteCmd;
struct ret_fw_upgrade_cmd RetFwUpgradeCmd;
struct ret_fw_write_start_cmd RetFwWriteStartCmd;
};
struct evt_command_complete {
uint8_t opcode;
union ret_parm RetParm;
};
union evt_parm {
struct evt_command_complete EvtCommandComplete;
};
struct hci_evt {
uint8_t evtcode;
uint8_t evtlen;
union evt_parm evtparm;
};
extern uint8_t ota_state,ota_writecnt;
#pragma pack()
#pragma pack(4)
struct ota_write_info{
uint8_t buf[32];
uint32_t cnt;
uint8_t idx;
};
#pragma pack()
extern void ota_cmd(uint8_t *p_cmd, uint8_t sz);
extern void ota_rsp(uint8_t *p_rsp, uint8_t *p_sz);
extern void CmdFwErase(void);
extern void ota_variable_clear(uint8_t all);
#endif
#endif