data_save.h 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. #ifndef __DATA_SAVE_H
  2. #define __DATA_SAVE_H
  3. #include "stdbool.h"
  4. #include <stdint.h>
  5. //打开记录的标志位
  6. extern bool data_record_open;
  7. //结束记录的标志位
  8. extern bool data_record_close;
  9. #pragma pack(1)
  10. typedef struct
  11. {
  12. unsigned short sorties; // 架次
  13. char plane_type; // 机型
  14. int fireware_num; // 固件号
  15. int unlock_lon; // 解锁经度
  16. int unlock_lat; // 解锁纬度
  17. char unlock_time_year; // 解锁时间 年
  18. char unlock_time_month; // 解锁时间 月
  19. char unlock_time_day; // 解锁时间 日
  20. char unlock_time_hour; // 解锁时间 时
  21. char unlock_time_minut; // 解锁时间 分
  22. char unlock_time_second; // 解锁时间 秒
  23. int lock_lon; // 上锁经度
  24. int lock_lat; // 上锁纬度
  25. unsigned short flight_time; // min
  26. unsigned int total_flight_time; // min
  27. unsigned short flight_mileages; // 0.1 km
  28. unsigned int total_flight_mileages; // 0.1 km
  29. unsigned short unlock_voltage; // 0.1v
  30. unsigned short lock_voltage; // 0.1v
  31. unsigned char max_auto_roll; // deg
  32. unsigned char max_auto_pitch; // deg
  33. unsigned short max_auto_horizonal_speed; // dm/s
  34. char max_auto_climb_speed; // dm/s
  35. signed char max_auto_down_speed; // dm/s
  36. char max_auto_gps_num; // 最大gps星数
  37. char min_auto_gps_num; // 最小gps星数
  38. unsigned short gps_locating_time; // gps搜星时间
  39. char mag_error; // 磁错误标志
  40. char acc_gyro_error; // 加计陀螺错误标志
  41. char baro_error; // 气压错误标志
  42. char gps_error; // gps错误标志
  43. char lidar_error; // 雷达错误标志
  44. } FLY_LOG;
  45. #pragma pack()
  46. extern FLY_LOG fly_log;
  47. #pragma pack(1)
  48. typedef struct
  49. {
  50. int solved_lon; // 解算经度,cm
  51. int solved_lat; // 解算纬度,cm
  52. int target_lon; // 目标经度,cm
  53. int target_lat; // 目标纬度,cm
  54. int raw_lon; // 原始经度,cm
  55. int raw_lat; // 原始纬度,cm
  56. float flight_time; // 已飞时间,s
  57. short roll; // 横滚角 0.1deg
  58. short pitch; // 俯仰角 0.1deg
  59. short yaw; // 航向角 0.1deg
  60. short target_roll; // 目标横滚 0.1deg
  61. short target_pitch; // 目标俯仰 0.1deg
  62. short target_yaw; // 目标航向 0.1deg
  63. short x_gyro; // X陀螺 0.1deg/s
  64. short y_gyro; // Y陀螺 0.1deg/s
  65. short z_gyro; // Z陀螺 0.1deg/s
  66. short x_acc; // X加速度 cm/s^2
  67. short y_acc; // Y加速度 cm/s^2
  68. short z_acc; // Z加速度 cm/s^2
  69. short x_raw_gyro1; // deg/s
  70. short y_raw_gyro1; // deg/s
  71. short z_raw_gyro1; // deg/s
  72. short x_raw_gyro2; // deg/s
  73. short y_raw_gyro2; // deg/s
  74. short z_raw_gyro2; // deg/s
  75. short x_raw_acc1; // cm/s^2
  76. short y_raw_acc1; // cm/s^2
  77. short z_raw_acc1; // cm/s^2
  78. short x_raw_acc2; // cm/s^2
  79. short y_raw_acc2; // cm/s^2
  80. short z_raw_acc2; // cm/s^2
  81. short x_raw_mag1; // 0.1mGause
  82. short y_raw_mag1; // 0.1mGause
  83. short z_raw_mag1; // 0.1mGause
  84. short x_raw_mag2; // 0.1mGause
  85. short y_raw_mag2; // 0.1mGause
  86. short z_raw_mag2; // 0.1mGause
  87. short air_speed; // 空速 0.1m/s
  88. short solved_alt; // 解算当前高度 0.1m
  89. short target_alt; // 目标高度 0.1m
  90. short forward_lidar; // 前雷达距离 0.1m
  91. short backward_lidar; // 后雷达距离 0.1m
  92. short down_lidar_alt; // 下雷达高度 0.1m
  93. char lidar_comp_state; // 雷达连接状态
  94. short climb_rate; // 垂直速度 cm/s
  95. short target_climb_rate; // 目标垂直速度 cm/s
  96. short east_solved_speed; // 东西速度 cm/s
  97. short north_solved_speed; // 南北速度 cm/s
  98. short target_east_solved_speed; // 目标东西速度 cm/s
  99. short target_north_solved_speed; // 目标南北速度 cm/s
  100. short total_wp_number; // 总航点数
  101. short target_wp_number; // 目标航点
  102. short picture_number; // 拍照数
  103. short voltage_value; // 电压 0.1v
  104. short dist_2_home; // 离家距离 m
  105. short dist_2_target; // 目标距离 m
  106. short dist_off_track; // 偏航距离 dm
  107. short gps_alt; // GPS高度 dm
  108. short gps_yaw; // GPS航向 deg
  109. short gps_speed; // GPS速度 cm/s
  110. char gps_num; // GPS星数
  111. char gps_pdop; // GPSPDOP
  112. unsigned char pwmin1; // 输入CH1
  113. unsigned char pwmin2;
  114. unsigned char pwmin3;
  115. unsigned char pwmin4;
  116. unsigned char pwmin5;
  117. unsigned char pwmin6;
  118. unsigned char pwmin7;
  119. unsigned char pwmin8;
  120. unsigned char pwmout1;
  121. unsigned char pwmout2;
  122. unsigned char pwmout3;
  123. unsigned char pwmout4;
  124. unsigned char pwmout5;
  125. unsigned char pwmout6;
  126. unsigned char pwmout7;
  127. unsigned char pwmout8;
  128. char temperature; // 温度 度
  129. char rtk_flag; // rtk 标志位
  130. char ins_flag; // 解算标志位
  131. char lock_flag; // 锁标志
  132. char pos_hold_flag; // 定点状态
  133. char alt_hold_flag; // 定高状态
  134. char lock_reason_flag; // 上锁原因
  135. char rth_reason_flag; // 返航原因
  136. char loiter_reason_flag; // 悬停原因
  137. char warn_flag; // 报警标志位
  138. char gps_status_flag; // gps状态
  139. char gps_status2_flag; // 气压计状态
  140. char acc_gyro_status_flag; // 陀螺加计状态
  141. char mag_status_flag; // 磁状态
  142. char flight_mode; // 飞行模式
  143. uint32_t gps_time_day_hour_minute_second; // gps 时间 时分秒 [时 * 10000 + 分 *
  144. // 100 + 秒]
  145. short gps_time_year_month; // gps 时间 年月 [(年%100) * 100 + 月]
  146. short tlidar_alt; // 目标雷达高度
  147. unsigned char rec_stx; // 计数累计
  148. short data_rec_time; // 数据记录时间
  149. short pid_r; // 横滚pidout
  150. short pid_p; // 俯仰pidout
  151. short pid_y; // 航向pidout
  152. short pid_t; // 油门pidout
  153. short x_gyro_t; // 俯仰目标角速度
  154. short y_gyro_t; // 横滚目标角速度
  155. short z_gyro_t; // 航向目标角速度
  156. short gps_vertical_vel; // GPS 垂直速度
  157. short raw_baroalt; // 原始 气压高度
  158. char imu_fileter_reset_flag; // imu 滤波器重置标志
  159. char imu_mag_yaw; // imu 收到解锁标志
  160. char ahrs_roll; // ahrs roll
  161. char ahrs_pitch; // ahrs pitch
  162. char g0; // 标定的重力加速度
  163. char redundant_gps_num; // 冗余 gps 星数
  164. char dgps_ant2_gps_num; // 双天线定向中 ant2 卫星数目
  165. int auxiliary_gps_lon; // 从 gps 经度
  166. int auxiliary_gps_lat; // 从 gps 纬度
  167. char ins_error; // ins 姿态正确性 bit0 0-ins 姿态正确 1-ins 姿态异常
  168. char vehicle_data_flag; // 车载数据状态位
  169. int16_t vehicle_vector[3];
  170. int16_t raw_vehicle_vector[3];
  171. uint8_t servo_rpm[8]; // 电调反馈转速
  172. } FLY_DATA;
  173. #pragma pack()
  174. void data_record_service(void);
  175. void put_to_dataflash_buff(unsigned char *src_buff, unsigned short size);
  176. // void flash_write_dataendpage(void);
  177. // void gsprot_send_datasum_data(void);
  178. // void gsprot_send_datacontent_data(short data_page);
  179. // unsigned int gs_port_send_datasum_data(void);
  180. // void gs_port_send_datalog_data(unsigned int data_pack_num);
  181. void get_fly_data_type_data_5hz(void);
  182. void sd_card_init_fly_log(void);
  183. void sd_card_clear_fly_log(void);
  184. // extern unsigned char flash_data_translate;
  185. #endif