STATIC_INLINE void handle_periodic_tasks(void) { if (sys_time_check_and_ack_timer(main_periodic_tid)) { main_periodic(); } if (sys_time_check_and_ack_timer(modules_tid)) { modules_periodic_task(); } if (sys_time_check_and_ack_timer(radio_control_tid)) { radio_control_periodic_task(); } if (sys_time_check_and_ack_timer(failsafe_tid)) { failsafe_check(); } if (sys_time_check_and_ack_timer(electrical_tid)) { electrical_periodic(); } if (sys_time_check_and_ack_timer(telemetry_tid)) { telemetry_periodic(); } #if USE_BARO_BOARD if (sys_time_check_and_ack_timer(baro_tid)) { baro_periodic(); } #endif }
void handle_periodic_tasks_ap(void) { if (sys_time_check_and_ack_timer(sensors_tid)) sensors_task(); #if USE_BARO_BOARD if (sys_time_check_and_ack_timer(baro_tid)) baro_periodic(); #endif if (sys_time_check_and_ack_timer(navigation_tid)) navigation_task(); #ifndef AHRS_TRIGGERED_ATTITUDE_LOOP if (sys_time_check_and_ack_timer(attitude_tid)) attitude_loop(); #endif if (sys_time_check_and_ack_timer(modules_tid)) modules_periodic_task(); if (sys_time_check_and_ack_timer(monitor_tid)) monitor_task(); if (sys_time_check_and_ack_timer(telemetry_tid)) { reporting_task(); LED_PERIODIC(); } }
STATIC_INLINE void handle_periodic_tasks(void) { if (sys_time_check_and_ack_timer(main_periodic_tid)) { main_periodic(); #if PERIODIC_FREQUENCY == MODULES_FREQUENCY /* Use the main periodc freq timer for modules if the freqs are the same * This is mainly useful for logging each step. */ modules_periodic_task(); #else } /* separate timer for modules, since it has a different freq than main */ if (sys_time_check_and_ack_timer(modules_tid)) { modules_periodic_task(); #endif } if (sys_time_check_and_ack_timer(radio_control_tid)) { radio_control_periodic_task(); } if (sys_time_check_and_ack_timer(failsafe_tid)) { failsafe_check(); } if (sys_time_check_and_ack_timer(electrical_tid)) { electrical_periodic(); } if (sys_time_check_and_ack_timer(telemetry_tid)) { telemetry_periodic(); } #if USE_BARO_BOARD if (sys_time_check_and_ack_timer(baro_tid)) { baro_periodic(); } #endif }
STATIC_INLINE void handle_periodic_tasks( void ) { if (sys_time_check_and_ack_timer(main_periodic_tid)) main_periodic(); if (sys_time_check_and_ack_timer(radio_control_tid)) radio_control_periodic_task(); if (sys_time_check_and_ack_timer(failsafe_tid)) failsafe_check(); if (sys_time_check_and_ack_timer(electrical_tid)) electrical_periodic(); if (sys_time_check_and_ack_timer(baro_tid)) baro_periodic(); if (sys_time_check_and_ack_timer(telemetry_tid)) telemetry_periodic(); }
int main(void) { main_init(); while (1) { if (sys_time_check_and_ack_timer(0)) { main_periodic_task(); } if (sys_time_check_and_ack_timer(baro_tid)) { baro_periodic(); } main_event_task(); } return 0; }
void handle_periodic_tasks_ap(void) { if (sys_time_check_and_ack_timer(sensors_tid)) { sensors_task(); } #if USE_BARO_BOARD if (sys_time_check_and_ack_timer(baro_tid)) { baro_periodic(); } #endif #if USE_GENERATED_AUTOPILOT if (sys_time_check_and_ack_timer(attitude_tid)) { autopilot_periodic(); } #else // static autopilot if (sys_time_check_and_ack_timer(navigation_tid)) { navigation_task(); } #ifndef AHRS_TRIGGERED_ATTITUDE_LOOP if (sys_time_check_and_ack_timer(attitude_tid)) { attitude_loop(); } #endif #endif if (sys_time_check_and_ack_timer(modules_tid)) { modules_periodic_task(); } if (sys_time_check_and_ack_timer(monitor_tid)) { monitor_task(); } if (sys_time_check_and_ack_timer(telemetry_tid)) { reporting_task(); LED_PERIODIC(); } }
/** Run at PERIODIC_FREQUENCY (60Hz if not defined) */ void sensors_task( void ) { #if USE_IMU imu_periodic(); #if USE_AHRS if (ahrs_timeout_counter < 255) ahrs_timeout_counter ++; #endif // USE_AHRS #endif // USE_IMU //FIXME: this is just a kludge #if USE_AHRS && defined SITL ahrs_propagate(); #endif #if USE_BAROMETER baro_periodic(); #endif ins_periodic(); }
static inline void main_init( void ) { mcu_init(); sys_time_register_timer((1./PERIODIC_FREQUENCY), NULL); baro_init(); // DEBUG_SERVO1_INIT(); // DEBUG_SERVO2_INIT(); } static inline void main_periodic_task( void ) { RunOnceEvery(2, {baro_periodic();}); LED_PERIODIC(); RunOnceEvery(256, {DOWNLINK_SEND_ALIVE(DefaultChannel, DefaultDevice, 16, MD5SUM);}); RunOnceEvery(256, { uint16_t i2c2_ack_fail_cnt = i2c2.errors->ack_fail_cnt; uint16_t i2c2_miss_start_stop_cnt = i2c2.errors->miss_start_stop_cnt; uint16_t i2c2_arb_lost_cnt = i2c2.errors->arb_lost_cnt; uint16_t i2c2_over_under_cnt = i2c2.errors->over_under_cnt; uint16_t i2c2_pec_recep_cnt = i2c2.errors->pec_recep_cnt; uint16_t i2c2_timeout_tlow_cnt = i2c2.errors->timeout_tlow_cnt; uint16_t i2c2_smbus_alert_cnt = i2c2.errors->smbus_alert_cnt; uint16_t i2c2_unexpected_event_cnt = i2c2.errors->unexpected_event_cnt; uint32_t i2c2_last_unexpected_event = i2c2.errors->last_unexpected_event; DOWNLINK_SEND_I2C_ERRORS(DefaultChannel, DefaultDevice, &i2c2_ack_fail_cnt,