X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_log.h;h=1faea957639ce667ad44895b60dd22bf52b893d7;hb=065c60d38f38343bd1f319a87f6b50367a3abbe3;hp=5c150abcefac88a4fb2dc4444d01d4b8a9c0e190;hpb=f10009b07b651f69014ac5608f3ca29bce874c24;p=fw%2Faltos diff --git a/src/kernel/ao_log.h b/src/kernel/ao_log.h index 5c150abc..1faea957 100644 --- a/src/kernel/ao_log.h +++ b/src/kernel/ao_log.h @@ -29,7 +29,7 @@ * the log. Tasks may wait for this to be initialized * by sleeping on this variable. */ -extern int16_t ao_flight_number; +extern uint16_t ao_flight_number; extern uint8_t ao_log_mutex; extern uint32_t ao_log_current_pos; extern uint32_t ao_log_end_pos; @@ -59,12 +59,13 @@ extern enum ao_flight_state ao_log_state; #define AO_LOG_FORMAT_TELESTATIC 17 /* 32 byte typed telestatic records */ #define AO_LOG_FORMAT_MICROPEAK2 18 /* 2-byte baro values with header */ #define AO_LOG_FORMAT_TELEMEGA_4 19 /* 32 byte typed telemega records with 32 bit gyro cal and Bmx160 */ -#define AO_LOG_FORMAT_EASYMOTOR 20 /* ? byte typed easymotor records with pressure sensor and adxl375 */ +#define AO_LOG_FORMAT_EASYMOTOR 20 /* 16 byte typed easymotor records with pressure sensor and adxl375 */ +#define AO_LOG_FORMAT_TELEMEGA_5 21 /* 32 byte typed telemega records with 32 bit gyro cal, mpu6000 and mmc5983 */ #define AO_LOG_FORMAT_NONE 127 /* No log at all */ /* Return the flight number from the given log slot, 0 if none, -slot on failure */ -int16_t +int32_t ao_log_flight(uint8_t slot); /* Checksum the loaded log record */ @@ -229,7 +230,7 @@ struct ao_log_mega { struct { uint16_t flight; /* 4 */ int16_t ground_accel; /* 6 */ - uint32_t ground_pres; /* 8 */ + int32_t ground_pres; /* 8 */ int16_t ground_accel_along; /* 12 */ int16_t ground_accel_across; /* 14 */ int16_t ground_accel_through; /* 16 */ @@ -241,7 +242,7 @@ struct ao_log_mega { struct { uint16_t flight; /* 4 */ int16_t ground_accel; /* 6 */ - uint32_t ground_pres; /* 8 */ + int32_t ground_pres; /* 8 */ int16_t ground_accel_along; /* 12 */ int16_t ground_accel_across; /* 14 */ int16_t ground_accel_through; /* 16 */ @@ -258,15 +259,30 @@ struct ao_log_mega { struct { uint32_t pres; /* 4 */ uint32_t temp; /* 8 */ - int16_t accel_x; /* 12 */ - int16_t accel_y; /* 14 */ - int16_t accel_z; /* 16 */ - int16_t gyro_x; /* 18 */ - int16_t gyro_y; /* 20 */ - int16_t gyro_z; /* 22 */ - int16_t mag_x; /* 24 */ - int16_t mag_z; /* 26 */ - int16_t mag_y; /* 28 */ + union { + struct { + int16_t accel_along; /* 12 */ + int16_t accel_across; /* 14 */ + int16_t accel_through; /* 16 */ + int16_t gyro_roll; /* 18 */ + int16_t gyro_pitch; /* 20 */ + int16_t gyro_yaw; /* 22 */ + int16_t mag_along; /* 24 */ + int16_t mag_across; /* 26 */ + int16_t mag_through; /* 28 */ + }; + struct { + int16_t accel_x; /* 12 */ + int16_t accel_y; /* 14 */ + int16_t accel_z; /* 16 */ + int16_t gyro_x; /* 18 */ + int16_t gyro_y; /* 20 */ + int16_t gyro_z; /* 22 */ + int16_t mag_x; /* 24 */ + int16_t mag_z; /* 26 */ + int16_t mag_y; /* 28 */ + }; + }; int16_t accel; /* 30 */ } sensor; /* 32 */ /* AO_LOG_TEMP_VOLT */ @@ -374,7 +390,7 @@ struct ao_log_metrum { struct { uint16_t flight; /* 4 */ int16_t ground_accel; /* 6 */ - uint32_t ground_pres; /* 8 */ + int32_t ground_pres; /* 8 */ uint32_t ground_temp; /* 12 */ } flight; /* 16 */ /* AO_LOG_STATE */ @@ -434,7 +450,7 @@ struct ao_log_mini { struct { uint16_t flight; /* 4 */ uint16_t r6; - uint32_t ground_pres; /* 8 */ + int32_t ground_pres; /* 8 */ } flight; /* AO_LOG_STATE */ struct { @@ -453,9 +469,9 @@ struct ao_log_mini { }; /* 16 */ #define ao_log_pack24(dst,value) do { \ - (dst)[0] = (value); \ - (dst)[1] = (value) >> 8; \ - (dst)[2] = (value) >> 16; \ + (dst)[0] = (uint8_t) (value); \ + (dst)[1] = (uint8_t) ((value) >> 8); \ + (dst)[2] = (uint8_t) ((value) >> 16); \ } while (0) struct ao_log_gps { @@ -533,7 +549,7 @@ struct ao_log_motor { } u; }; -#if AO_LOG_FORMAT == AO_LOG_FOMAT_TELEMEGA_OLD || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA_3 || AO_LOG_FORMAT == AO_LOG_FORMAT_EASYMEGA_2 || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA_4 +#if AO_LOG_FORMAT == AO_LOG_FOMAT_TELEMEGA_OLD || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA_3 || AO_LOG_FORMAT == AO_LOG_FORMAT_EASYMEGA_2 || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA_4 || AO_LOG_FORMAT == AO_LOG_FORMAT_TELEMEGA_5 typedef struct ao_log_mega ao_log_type; #endif