void AP_AccelCal::update_status() { AccelCalibrator *cal; if (!get_calibrator(0)) { // no calibrators _status = ACCEL_CAL_NOT_STARTED; return; } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_FAILED) { _status = ACCEL_CAL_FAILED; //fail if even one of the calibration has return; } } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_COLLECTING_SAMPLE) { _status = ACCEL_CAL_COLLECTING_SAMPLE; // move to Collecting sample state if all the callibrators have return; } } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_WAITING_FOR_ORIENTATION) { _status = ACCEL_CAL_WAITING_FOR_ORIENTATION; // move to waiting for user ack for orientation confirmation return; } } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_NOT_STARTED) { _status = ACCEL_CAL_NOT_STARTED; // we haven't started if all the calibrators haven't return; } } _status = ACCEL_CAL_SUCCESS; // we have succeeded calibration if all the calibrators have return; }
void AP_AccelCal::update_status() { AccelCalibrator *cal; if (!get_calibrator(0)) { // no calibrators _status = ACCEL_CAL_NOT_STARTED; return; } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_FAILED) { _status = ACCEL_CAL_FAILED; return; } } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_COLLECTING_SAMPLE) { _status = ACCEL_CAL_COLLECTING_SAMPLE; return; } } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_WAITING_FOR_ORIENTATION) { _status = ACCEL_CAL_WAITING_FOR_ORIENTATION; return; } } for(uint8_t i=0 ; (cal = get_calibrator(i)) ; i++) { if (cal->get_status() == ACCEL_CAL_NOT_STARTED) { _status = ACCEL_CAL_NOT_STARTED; return; } } _status = ACCEL_CAL_SUCCESS; return; }