// twentyfive_hz_logging - should be run at 25hz void Copter::twentyfive_hz_logging() { #if HIL_MODE != HIL_MODE_DISABLED // HIL for a copter needs very fast update of the servo values gcs_send_message(MSG_RADIO_OUT); #endif #if HIL_MODE == HIL_MODE_DISABLED if (should_log(MASK_LOG_ATTITUDE_FAST)) { Log_Write_Attitude(); DataFlash.Log_Write_Rate(ahrs, motors, attitude_control, pos_control); if (should_log(MASK_LOG_PID)) { DataFlash.Log_Write_PID(LOG_PIDR_MSG, attitude_control.get_rate_roll_pid().get_pid_info()); DataFlash.Log_Write_PID(LOG_PIDP_MSG, attitude_control.get_rate_pitch_pid().get_pid_info()); DataFlash.Log_Write_PID(LOG_PIDY_MSG, attitude_control.get_rate_yaw_pid().get_pid_info()); DataFlash.Log_Write_PID(LOG_PIDA_MSG, g.pid_accel_z.get_pid_info() ); } } // log IMU data if we're not already logging at the higher rate if (should_log(MASK_LOG_IMU) && !should_log(MASK_LOG_IMU_RAW)) { DataFlash.Log_Write_IMU(ins); } #endif #if PRECISION_LANDING == ENABLED // log output Log_Write_Precland(); #endif }
void Sub::update_precland() { int32_t height_above_ground_cm = current_loc.alt; // use range finder altitude if it is valid, else try to get terrain alt if (rangefinder_alt_ok()) { height_above_ground_cm = rangefinder_state.alt_cm; } else if (terrain_use()) { current_loc.get_alt_cm(Location_Class::ALT_FRAME_ABOVE_TERRAIN, height_above_ground_cm); } sub.precland.update(height_above_ground_cm); // log output Log_Write_Precland(); }
// twentyfive_hz_logging - should be run at 25hz void Copter::twentyfive_hz_logging() { #if HIL_MODE != HIL_MODE_DISABLED // HIL for a copter needs very fast update of the servo values gcs().send_message(MSG_SERVO_OUTPUT_RAW); #endif #if HIL_MODE == HIL_MODE_DISABLED if (should_log(MASK_LOG_ATTITUDE_FAST)) { Log_Write_EKF_POS(); } // log IMU data if we're not already logging at the higher rate if (should_log(MASK_LOG_IMU) && !should_log(MASK_LOG_IMU_RAW)) { DataFlash.Log_Write_IMU(); } #endif #if PRECISION_LANDING == ENABLED // log output Log_Write_Precland(); #endif }