#pragma once #include #define LOG_IDS_FROM_HAL_CHIBIOS \ LOG_MON_MSG, \ LOG_WDOG_MSG // @LoggerMessage: MON // @Description: Main loop performance monitoring message. // @Field: TimeUS: Time since system startup // @Field: Dly: Loop delay so far // @Field: Tsk: Current task // @Field: IErr: Internal error mask // @Field: IErrCnt: Count of internal error occurances // @Field: IErrLn: Internal Error line // @Field: MM: MAVLink message currently being processed // @Field: MC: MAVLink command currently being processed // @Field: SmLn: If semaphore taken, line of semaphore take call // @Field: SPICnt: count of SPI transactions // @Field: I2CCnt: count of i2c transactions struct PACKED log_MON { LOG_PACKET_HEADER; uint64_t time_us; uint32_t loop_delay; int8_t current_task; uint32_t internal_error_mask; uint16_t internal_error_count; uint16_t internal_error_line; uint16_t mavmsg; uint16_t mavcmd; uint16_t semline; uint32_t spicnt; uint32_t i2ccnt; }; // @LoggerMessage: WDOG // @Description: Watchdog diagnostics // @Field: TimeUS: Time since system startup // @Field: Tsk: current task number // @Field: IE: internal error mast // @Field: IEC: internal error count // @Field: IEL: line internal error was raised on // @Field: MvMsg: mavlink message being acted on // @Field: MvCmd: mavlink command being acted on // @Field: SmLn: line semaphore was taken on // @Field: FL: fault_line // @Field: FT: fault_type // @Field: FA: fault address // @Field: FP: fault thread priority // @Field: ICSR: ICS regiuster // @Field: LR: long return address // @Field: TN: Thread name struct PACKED log_WDOG { LOG_PACKET_HEADER; uint64_t time_us; int8_t scheduler_task; uint32_t internal_errors; uint16_t internal_error_count; uint16_t internal_error_last_line; uint16_t last_mavlink_msgid; uint16_t last_mavlink_cmd; uint16_t semaphore_line; uint16_t fault_line; uint16_t fault_type; uint32_t fault_addr; uint8_t fault_thd_prio; uint32_t fault_icsr; uint32_t fault_lr; char thread_name4[4]; }; #define LOG_STRUCTURE_FROM_HAL_CHIBIOS \ { LOG_MON_MSG, sizeof(log_MON), \ "MON","QIbIHHHHHII","TimeUS,Dly,Tsk,IErr,IErrCnt,IErrLn,MM,MC,SmLn,SPICnt,I2CCnt", "s----------", "F----------", false }, \ { LOG_WDOG_MSG, sizeof(log_WDOG), \ "WDOG","QbIHHHHHHHIBIIn","TimeUS,Tsk,IE,IEC,IEL,MvMsg,MvCmd,SmLn,FL,FT,FA,FP,ICSR,LR,TN", "s--------------", "F--------------", false },