123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #ifndef DRV_IAP_H
- #define DRV_IAP_H
- #include "stm32f1xx.h"
- #include "stdint.h"
- #include "stdbool.h"
- #define COMP_ID "RTK_G_IAP"
- #define COMP_VER "0.0.1"
- //MSG : | MSG_T 6 | PACK 1k | CRC 2 |
- #define IAP_PACK_SIZE 256 + 8 + 2
- typedef struct _mavlink_system {
- uint8_t stx; //起始标志
- uint8_t headbytes; //头部字节数
- uint8_t checkbytes; //校验字节数
- uint8_t sysid; //系统ID
- uint8_t compid; //组件ID
- uint8_t tx_seq; //发送序号
- uint8_t rx_seq; //接收序号
- } mavlink_system_t;
- extern mavlink_system_t mavlink_system;
- typedef struct _mavlink_msg {
- uint8_t stx;
- uint8_t payload;
- uint8_t seq;
- uint8_t sysid;
- uint8_t compid;
- uint8_t msgid;
- } mavlink_msg_t;
- extern mavlink_msg_t mavlink_msg;
- extern bool recv_aid_flag, //急救模式标志,收到特殊恢复指令时置位
- recv_init_flag, //初始化标志,收到升级初始化指令时置位
- recv_erasure_flag, //FLASH擦除完成标志
- recv_finish_flag, //固件传输完成标志
- recv_onepack_flag; //数据包接收完成标志
- typedef enum {
- DEFAULT = 0, //默认状态
- INIT, //初始化状态
- TRANSMIT, //传输状态
- FINISH, //升级完成状态
- FAIL //升级失败状态
- } IAP_STATUS; //升级状态
- extern IAP_STATUS recv_iap_flag;
- extern int iap_bin_Size; //固件文件大小
- extern short iap_bin_num, pre_iap_bin_num;
- extern unsigned char one_pack_size; //数据包大小
- extern bool pack_send_flag;
- #define MAVLINK_ACK_ID 21
- #define MAVLINK_BOOTLOADER_STATUS 199
- #define MAVLINK_IAP_HEART 200
- #define BOOTLOADER_STATUS_OK 0 // 正常
- #define BOOTLOADER_STATUS_NEEDTRANSMIT 1 // 没有程序,需要升级
- #define BOOTLOADER_STATUS_FLASH_ERASOR_ERROR 2 // Flash 擦除失败
- #define BOOTLOADER_STATUS_FLASH_WRITE_ERROR 3 // Flash 写入失败
- extern unsigned char send_what;
- extern uint8_t ack_id;
- extern short id_cont;
- extern uint32_t usb_tx_index;
- extern uint8_t usb_tx_buf[IAP_PACK_SIZE];
- extern uint32_t usb_rx_index;
- extern uint8_t usb_rx_buf[IAP_PACK_SIZE + 2];
- extern bool IAP_STATUS_FLAG;
- void send_mavlink_ack(void);
- void send_mavlink_bootloader_status(uint8_t bootloader_status);
- void recv_iap_station_data_hookfunction(unsigned char rec_data);
- #endif
|