diff --git a/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp b/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp index 3e669206ec..083bb7af92 100644 --- a/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp +++ b/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp @@ -296,12 +296,16 @@ void AP_Spektrum_Telem::calc_qos() // prepare rpm data - B/E mandatory frame that must be sent periodically void AP_Spektrum_Telem::calc_rpm() { +#if AP_BATTERY_ENABLED const AP_BattMonitor &_battery = AP::battery(); +#endif _telem.rpm.identifier = TELE_DEVICE_RPM; _telem.rpm.sID = 0; // battery voltage in centivolts, can have up to a 12S battery (4.25Vx12S = 51.0V) +#if AP_BATTERY_ENABLED _telem.rpm.volts = htobe16(((uint16_t)roundf(_battery.voltage(0) * 100.0f))); +#endif _telem.rpm.temperature = htobe16(int16_t(roundf(32.0f + AP::baro().get_temperature(0) * 9.0f / 5.0f))); #if AP_RPM_ENABLED const AP_RPM *rpm = AP::rpm(); @@ -328,10 +332,12 @@ void AP_Spektrum_Telem::send_msg_chunk(const MessageChunk& chunk) // prepare battery data - B/E but not supported by Spektrum void AP_Spektrum_Telem::calc_batt_volts(uint8_t instance) { +#if AP_BATTERY_ENABLED const AP_BattMonitor &_battery = AP::battery(); // battery voltage in centivolts, can have up to a 12S battery (4.25Vx12S = 51.0V) _telem.hv.volts = htobe16(uint16_t(roundf(_battery.voltage(instance) * 100.0f))); +#endif _telem.hv.identifier = TELE_DEVICE_VOLTAGE; _telem.hv.sID = 0; _telem_pending = true; @@ -340,6 +346,7 @@ void AP_Spektrum_Telem::calc_batt_volts(uint8_t instance) // prepare battery data - B/E but not supported by Spektrum void AP_Spektrum_Telem::calc_batt_amps(uint8_t instance) { +#if AP_BATTERY_ENABLED const AP_BattMonitor &_battery = AP::battery(); float current; @@ -349,6 +356,7 @@ void AP_Spektrum_Telem::calc_batt_amps(uint8_t instance) // Range: +/- 150A Resolution: 300A / 2048 = 0.196791 A/count _telem.amps.current = htobe16(int16_t(roundf(current * 2048.0f / 300.0f))); +#endif _telem.amps.identifier = TELE_DEVICE_AMPS; _telem.amps.sID = 0; _telem_pending = true; @@ -357,11 +365,14 @@ void AP_Spektrum_Telem::calc_batt_amps(uint8_t instance) // prepare battery data - L/E void AP_Spektrum_Telem::calc_batt_mah() { +#if AP_BATTERY_ENABLED const AP_BattMonitor &_battery = AP::battery(); +#endif _telem.fpMAH.identifier = TELE_DEVICE_FP_MAH; _telem.fpMAH.sID = 0; +#if AP_BATTERY_ENABLED float current; if (!_battery.current_amps(current, 0)) { current = 0; @@ -396,6 +407,10 @@ void AP_Spektrum_Telem::calc_batt_mah() } else { _telem.fpMAH.temp_B = 0x7FFF; } +#else + _telem.fpMAH.temp_A = 0x7FFF; + _telem.fpMAH.temp_B = 0x7FFF; +#endif _telem_pending = true; }