#ifndef __DATA_SAVE_H #define __DATA_SAVE_H #include "stdbool.h" #include //打开记录的标志位 extern bool data_record_open; //结束记录的标志位 extern bool data_record_close; #pragma pack(1) typedef struct { unsigned short sorties; // 架次 char plane_type; // 机型 int fireware_num; // 固件号 int unlock_lon; // 解锁经度 int unlock_lat; // 解锁纬度 char unlock_time_year; // 解锁时间 年 char unlock_time_month; // 解锁时间 月 char unlock_time_day; // 解锁时间 日 char unlock_time_hour; // 解锁时间 时 char unlock_time_minut; // 解锁时间 分 char unlock_time_second; // 解锁时间 秒 int lock_lon; // 上锁经度 int lock_lat; // 上锁纬度 unsigned short flight_time; // min unsigned int total_flight_time; // min unsigned short flight_mileages; // 0.1 km unsigned int total_flight_mileages; // 0.1 km unsigned short unlock_voltage; // 0.1v unsigned short lock_voltage; // 0.1v unsigned char max_auto_roll; // deg unsigned char max_auto_pitch; // deg unsigned short max_auto_horizonal_speed; // dm/s char max_auto_climb_speed; // dm/s signed char max_auto_down_speed; // dm/s char max_auto_gps_num; // 最大gps星数 char min_auto_gps_num; // 最小gps星数 unsigned short gps_locating_time; // gps搜星时间 char mag_error; // 磁错误标志 char acc_gyro_error; // 加计陀螺错误标志 char baro_error; // 气压错误标志 char gps_error; // gps错误标志 char lidar_error; // 雷达错误标志 } FLY_LOG; #pragma pack() extern FLY_LOG fly_log; #pragma pack(1) typedef struct { int solved_lon; // 解算经度,cm int solved_lat; // 解算纬度,cm int target_lon; // 目标经度,cm int target_lat; // 目标纬度,cm int raw_lon; // 原始经度,cm int raw_lat; // 原始纬度,cm float flight_time; // 已飞时间,s short roll; // 横滚角 0.1deg short pitch; // 俯仰角 0.1deg short yaw; // 航向角 0.1deg short target_roll; // 目标横滚 0.1deg short target_pitch; // 目标俯仰 0.1deg short target_yaw; // 目标航向 0.1deg short x_gyro; // X陀螺 0.1deg/s short y_gyro; // Y陀螺 0.1deg/s short z_gyro; // Z陀螺 0.1deg/s short x_acc; // X加速度 cm/s^2 short y_acc; // Y加速度 cm/s^2 short z_acc; // Z加速度 cm/s^2 short x_raw_gyro1; // deg/s short y_raw_gyro1; // deg/s short z_raw_gyro1; // deg/s short x_raw_gyro2; // deg/s short y_raw_gyro2; // deg/s short z_raw_gyro2; // deg/s short x_raw_acc1; // cm/s^2 short y_raw_acc1; // cm/s^2 short z_raw_acc1; // cm/s^2 short x_raw_acc2; // cm/s^2 short y_raw_acc2; // cm/s^2 short z_raw_acc2; // cm/s^2 short x_raw_mag1; // 0.1mGause short y_raw_mag1; // 0.1mGause short z_raw_mag1; // 0.1mGause short x_raw_mag2; // 0.1mGause short y_raw_mag2; // 0.1mGause short z_raw_mag2; // 0.1mGause short air_speed; // 空速 0.1m/s short solved_alt; // 解算当前高度 0.1m short target_alt; // 目标高度 0.1m short forward_lidar; // 前雷达距离 0.1m short backward_lidar; // 后雷达距离 0.1m short down_lidar_alt; // 下雷达高度 0.1m char lidar_comp_state; // 雷达连接状态 short climb_rate; // 垂直速度 cm/s short target_climb_rate; // 目标垂直速度 cm/s short east_solved_speed; // 东西速度 cm/s short north_solved_speed; // 南北速度 cm/s short target_east_solved_speed; // 目标东西速度 cm/s short target_north_solved_speed; // 目标南北速度 cm/s short total_wp_number; // 总航点数 short target_wp_number; // 目标航点 short picture_number; // 拍照数 short voltage_value; // 电压 0.1v short dist_2_home; // 离家距离 m short dist_2_target; // 目标距离 m short dist_off_track; // 偏航距离 dm short gps_alt; // GPS高度 dm short gps_yaw; // GPS航向 deg short gps_speed; // GPS速度 cm/s char gps_num; // GPS星数 char gps_pdop; // GPSPDOP unsigned char pwmin1; // 输入CH1 unsigned char pwmin2; unsigned char pwmin3; unsigned char pwmin4; unsigned char pwmin5; unsigned char pwmin6; unsigned char pwmin7; unsigned char pwmin8; unsigned char pwmout1; unsigned char pwmout2; unsigned char pwmout3; unsigned char pwmout4; unsigned char pwmout5; unsigned char pwmout6; unsigned char pwmout7; unsigned char pwmout8; char temperature; // 温度 度 char rtk_flag; // rtk 标志位 char ins_flag; // 解算标志位 char lock_flag; // 锁标志 char pos_hold_flag; // 定点状态 char alt_hold_flag; // 定高状态 char lock_reason_flag; // 上锁原因 char rth_reason_flag; // 返航原因 char loiter_reason_flag; // 悬停原因 char warn_flag; // 报警标志位 char gps_status_flag; // gps状态 char gps_status2_flag; // 气压计状态 char acc_gyro_status_flag; // 陀螺加计状态 char mag_status_flag; // 磁状态 char flight_mode; // 飞行模式 uint32_t gps_time_day_hour_minute_second; // gps 时间 时分秒 [时 * 10000 + 分 * // 100 + 秒] short gps_time_year_month; // gps 时间 年月 [(年%100) * 100 + 月] short tlidar_alt; // 目标雷达高度 unsigned char rec_stx; // 计数累计 short data_rec_time; // 数据记录时间 short pid_r; // 横滚pidout short pid_p; // 俯仰pidout short pid_y; // 航向pidout short pid_t; // 油门pidout short x_gyro_t; // 俯仰目标角速度 short y_gyro_t; // 横滚目标角速度 short z_gyro_t; // 航向目标角速度 short gps_vertical_vel; // GPS 垂直速度 short raw_baroalt; // 原始 气压高度 char imu_fileter_reset_flag; // imu 滤波器重置标志 char imu_mag_yaw; // imu 收到解锁标志 char ahrs_roll; // ahrs roll char ahrs_pitch; // ahrs pitch char g0; // 标定的重力加速度 char redundant_gps_num; // 冗余 gps 星数 char dgps_ant2_gps_num; // 双天线定向中 ant2 卫星数目 int auxiliary_gps_lon; // 从 gps 经度 int auxiliary_gps_lat; // 从 gps 纬度 char ins_error; // ins 姿态正确性 bit0 0-ins 姿态正确 1-ins 姿态异常 char vehicle_data_flag; // 车载数据状态位 int16_t vehicle_vector[3]; int16_t raw_vehicle_vector[3]; uint8_t servo_rpm[8]; // 电调反馈转速 } FLY_DATA; #pragma pack() void data_record_service(void); void put_to_dataflash_buff(unsigned char *src_buff, unsigned short size); // void flash_write_dataendpage(void); // void gsprot_send_datasum_data(void); // void gsprot_send_datacontent_data(short data_page); // unsigned int gs_port_send_datasum_data(void); // void gs_port_send_datalog_data(unsigned int data_pack_num); void get_fly_data_type_data_5hz(void); void sd_card_init_fly_log(void); void sd_card_clear_fly_log(void); // extern unsigned char flash_data_translate; #endif