void Rover::send_rangefinder(mavlink_channel_t chan) { float distance_cm; float voltage; bool got_one = false; // report smaller distance of all rangefinders for (uint8_t i=0; i<rangefinder.num_sensors(); i++) { AP_RangeFinder_Backend *s = rangefinder.get_backend(i); if (s == nullptr) { continue; } if (!got_one || s->distance_cm() < distance_cm) { distance_cm = s->distance_cm(); voltage = s->voltage_mv(); got_one = true; } } if (!got_one) { // no relevant data found return; } mavlink_msg_rangefinder_send( chan, distance_cm * 0.01f, voltage); }
uint16_t RangeFinder::voltage_mv_orient(enum Rotation orientation) const { AP_RangeFinder_Backend *backend = find_instance(orientation); if (backend == nullptr) { return 0; } return backend->voltage_mv(); }