Parcourir la source

* Companion: telemetry_mode_env added to prefs

Scott Powell il y a 1 an
Parent
commit
02b6f4a285
2 fichiers modifiés avec 11 ajouts et 3 suppressions
  1. 1 0
      examples/companion_radio/NodePrefs.h
  2. 10 3
      examples/companion_radio/main.cpp

+ 1 - 0
examples/companion_radio/NodePrefs.h

@@ -19,6 +19,7 @@ struct NodePrefs {  // persisted to file
   uint8_t tx_power_dbm;
   uint8_t telemetry_mode_base;
   uint8_t telemetry_mode_loc;
+  uint8_t telemetry_mode_env;
   float rx_delay_base;
   uint32_t ble_pin;
 };

+ 10 - 3
examples/companion_radio/main.cpp

@@ -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();