|
|
|
@ -661,6 +661,12 @@ protected: |
|
|
|
permissions |= cp & TELEM_PERM_LOCATION; |
|
|
|
} |
|
|
|
|
|
|
|
if (_prefs.telemetry_mode_env == TELEM_MODE_ALLOW_ALL) { |
|
|
|
permissions |= TELEM_PERM_ENVIRONMENT; |
|
|
|
} else if (_prefs.telemetry_mode_env == TELEM_MODE_ALLOW_FLAGS) { |
|
|
|
permissions |= cp & TELEM_PERM_ENVIRONMENT; |
|
|
|
} |
|
|
|
|
|
|
|
if (permissions & TELEM_PERM_BASE) { // only respond if base permission bit is set
|
|
|
|
telemetry.reset(); |
|
|
|
telemetry.addVoltage(TELEM_CHANNEL_SELF, (float)board.getBattMilliVolts() / 1000.0f); |
|
|
|
@ -824,7 +830,7 @@ public: |
|
|
|
file.read((uint8_t *) &_prefs.tx_power_dbm, sizeof(_prefs.tx_power_dbm)); // 68
|
|
|
|
file.read((uint8_t *) &_prefs.telemetry_mode_base, sizeof(_prefs.telemetry_mode_base)); // 69
|
|
|
|
file.read((uint8_t *) &_prefs.telemetry_mode_loc, sizeof(_prefs.telemetry_mode_loc)); // 70
|
|
|
|
file.read(pad, 1); // 71
|
|
|
|
file.read((uint8_t *) &_prefs.telemetry_mode_env, sizeof(_prefs.telemetry_mode_env)); // 71
|
|
|
|
file.read((uint8_t *) &_prefs.rx_delay_base, sizeof(_prefs.rx_delay_base)); // 72
|
|
|
|
file.read(pad, 4); // 76
|
|
|
|
file.read((uint8_t *) &_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80
|
|
|
|
@ -945,7 +951,7 @@ public: |
|
|
|
file.write((uint8_t *) &_prefs.tx_power_dbm, sizeof(_prefs.tx_power_dbm)); // 68
|
|
|
|
file.write((uint8_t *) &_prefs.telemetry_mode_base, sizeof(_prefs.telemetry_mode_base)); // 69
|
|
|
|
file.write((uint8_t *) &_prefs.telemetry_mode_loc, sizeof(_prefs.telemetry_mode_loc)); // 70
|
|
|
|
file.write(pad, 1); // 71
|
|
|
|
file.write((uint8_t *) &_prefs.telemetry_mode_env, sizeof(_prefs.telemetry_mode_env)); // 71
|
|
|
|
file.write((uint8_t *) &_prefs.rx_delay_base, sizeof(_prefs.rx_delay_base)); // 72
|
|
|
|
file.write(pad, 4); // 76
|
|
|
|
file.write((uint8_t *) &_prefs.ble_pin, sizeof(_prefs.ble_pin)); // 80
|
|
|
|
@ -990,7 +996,7 @@ public: |
|
|
|
memcpy(&out_frame[i], &lon, 4); i += 4; |
|
|
|
out_frame[i++] = 0; // reserved
|
|
|
|
out_frame[i++] = 0; // reserved
|
|
|
|
out_frame[i++] = (_prefs.telemetry_mode_loc << 2) | (_prefs.telemetry_mode_base); // v5+
|
|
|
|
out_frame[i++] = (_prefs.telemetry_mode_env << 4) | (_prefs.telemetry_mode_loc << 2) | (_prefs.telemetry_mode_base); // v5+
|
|
|
|
out_frame[i++] = _prefs.manual_add_contacts; |
|
|
|
|
|
|
|
uint32_t freq = _prefs.freq * 1000; |
|
|
|
@ -1282,6 +1288,7 @@ public: |
|
|
|
if (len >= 3) { |
|
|
|
_prefs.telemetry_mode_base = cmd_frame[2] & 0x03; // v5+
|
|
|
|
_prefs.telemetry_mode_loc = (cmd_frame[2] >> 2) & 0x03; |
|
|
|
_prefs.telemetry_mode_env = (cmd_frame[2] >> 4) & 0x03; |
|
|
|
} |
|
|
|
savePrefs(); |
|
|
|
writeOKFrame(); |
|
|
|
|