drv_IAP.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #ifndef DRV_IAP_H
  2. #define DRV_IAP_H
  3. #include "stm32l4xx.h"
  4. #include "stdint.h"
  5. #include "stdbool.h"
  6. #define COMP_ID "RTK_G_IAP"
  7. #define COMP_VER "0.0.1"
  8. //MSG : | MSG_T 6 | PACK 1k | CRC 2 |
  9. #define IAP_PACK_SIZE 256 + 8 + 2
  10. typedef struct _mavlink_system {
  11. uint8_t stx; //起始标志
  12. uint8_t headbytes; //头部字节数
  13. uint8_t checkbytes; //校验字节数
  14. uint8_t sysid; //系统ID
  15. uint8_t compid; //组件ID
  16. uint8_t tx_seq; //发送序号
  17. uint8_t rx_seq; //接收序号
  18. } mavlink_system_t;
  19. extern mavlink_system_t mavlink_system;
  20. typedef struct _mavlink_msg {
  21. uint8_t stx;
  22. uint8_t payload;
  23. uint8_t seq;
  24. uint8_t sysid;
  25. uint8_t compid;
  26. uint8_t msgid;
  27. } mavlink_msg_t;
  28. extern mavlink_msg_t mavlink_msg;
  29. extern bool recv_aid_flag, //急救模式标志,收到特殊恢复指令时置位
  30. recv_init_flag, //初始化标志,收到升级初始化指令时置位
  31. recv_erasure_flag, //FLASH擦除完成标志
  32. recv_finish_flag, //固件传输完成标志
  33. recv_onepack_flag; //数据包接收完成标志
  34. typedef enum {
  35. DEFAULT = 0, //默认状态
  36. INIT, //初始化状态
  37. TRANSMIT, //传输状态
  38. FINISH, //升级完成状态
  39. FAIL //升级失败状态
  40. } IAP_STATUS; //升级状态
  41. extern IAP_STATUS recv_iap_flag;
  42. extern int iap_bin_Size; //固件文件大小
  43. extern short iap_bin_num, pre_iap_bin_num;
  44. extern unsigned char one_pack_size; //数据包大小
  45. extern bool pack_send_flag;
  46. #define MAVLINK_ACK_ID 21
  47. #define MAVLINK_BOOTLOADER_STATUS 199
  48. #define MAVLINK_IAP_HEART 200
  49. #define BOOTLOADER_STATUS_OK 0 // 正常
  50. #define BOOTLOADER_STATUS_NEEDTRANSMIT 1 // 没有程序,需要升级
  51. #define BOOTLOADER_STATUS_FLASH_ERASOR_ERROR 2 // Flash 擦除失败
  52. #define BOOTLOADER_STATUS_FLASH_WRITE_ERROR 3 // Flash 写入失败
  53. extern unsigned char send_what;
  54. extern uint8_t ack_id;
  55. extern short id_cont;
  56. extern uint32_t usb_tx_index;
  57. extern uint8_t usb_tx_buf[IAP_PACK_SIZE];
  58. extern uint32_t usb_rx_index;
  59. extern uint8_t usb_rx_buf[IAP_PACK_SIZE + 2];
  60. extern bool IAP_STATUS_FLAG;
  61. void send_mavlink_ack(void);
  62. void send_mavlink_bootloader_status(uint8_t bootloader_status);
  63. void recv_iap_station_data_hookfunction(unsigned char rec_data);
  64. #endif