#ifndef _UPDATE_H_ #define _UPDATE_H_ #include "Basedefine.h" #define FLASH_API_ADDRESS 0x08000000 #define FLASH_MAINTAINTIME_ADDRESS 0x08003000 #define FLASH_KEY_ADDRESS 0x08003800 #define FLASH_UPDATE_PARAMS_ADDRESS 0x08004000 #define FLASH_LOCAL_ADDR_ADDRESS 0x08004c00 // 在APP的前面一个1K位置 #define FLASH_APP_ADDRESS 0x08005000 #define FLASH_APP_BACK_ADDRESS 0x08022800 #define FLASH_SLAVE_NODE_COUNT_ADDRESS 0x0803F800 #define FLASH_API_PAGES 8 #define FLASH_PARAMS_PAGES 2 #define FLASH_APP_PAGES 59 #define FLASH_APPL_BACK_PAGES 59 #define UPDATE_DEFAULT_PACKET_SIZE 128 #define FLASH_PAGE_SIZE 2048 typedef enum { UPDATE_END = 0, UPDATE_RUNNING, UPDATE_FINISH, UPDATE_SUCCESS, UPDATE_FAILED, UPDATE_SALVE, }EM_UPDATE_STATUS; enum { UPDATE_NONE, UPDATE_PLC, UPDATE_485, UPDATE_MAX, }; #pragma pack(push) #pragma pack(1) typedef struct { u32 totalBytes; u16 version; u16 total_packets; u16 current_packets; u16 received_packets; u8 status; u8 packetsState[127]; u16 crc; }st_update_params; typedef struct { u8 file_indication; u8 file_property; u8 file_instr; u16 total_packets; u32 current_packet_No; u16 packet_length; u8 * data; }st_update_packet; typedef struct { u8 start; u16 len; u8 ctrl; u8 info_route:1; u8 info_slave:1; u8 info_com_module:1; u8 info_conflict:1; u8 info_relay:4; u8 info[4]; u8 number; }st_13762_head; typedef struct { st_13762_head head; u8 afn; u8 dt1; u8 dt2; u32 current_packet_No; u8 cs; u8 end; }st_AFN15_ack; typedef struct { u8 start; u8 lenL; u8 lenH; u8 ctrl; u8 info_route:1; u8 info_slave:1; u8 info_com_module:1; u8 info_conflict:1; u8 info_relay:4; u8 info[4]; u8 number; u8 *source_addr; u8 *relay_addr; u8 *desc_addr; u8 AFN; u8 DT1; u8 DT2; u8 *data; u8 cs; u8 end; }st_13762; typedef struct { st_13762_head head; u8 AFN; u8 DT1; u8 DT2; u8 Manu_code[2]; u8 chip_code[2]; u8 day; u8 month; u8 year; u8 version; u8 cs; u8 end; }st_13762_03F1_ack; #pragma pack(pop) void transparent_Proc(void); void write_update_contrlner(u8 ctrlner); void apl_process_1372(u8 * ptr1372, u8 ctrlner); bool check_13762_packet(u8 *buf); void create_update_task(void); #endif