mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-08-08 17:53:10 +02:00
Add telemetry config to radio settings
This commit is contained in:
@@ -101,6 +101,18 @@ class RadioConfigResponse(BaseModel):
|
||||
default=False,
|
||||
description="Whether the radio sends an extra direct ACK transmission",
|
||||
)
|
||||
telemetry_mode_base: int = Field(
|
||||
default=0,
|
||||
description="Base telemetry sharing mode (0=deny, 1=per-contact, 2=allow-all)",
|
||||
)
|
||||
telemetry_mode_loc: int = Field(
|
||||
default=0,
|
||||
description="Location telemetry sharing mode (0=deny, 1=per-contact, 2=allow-all)",
|
||||
)
|
||||
telemetry_mode_env: int = Field(
|
||||
default=0,
|
||||
description="Environment sensor sharing mode (0=deny, 1=per-contact, 2=allow-all)",
|
||||
)
|
||||
|
||||
|
||||
class RadioConfigUpdate(BaseModel):
|
||||
@@ -123,6 +135,15 @@ class RadioConfigUpdate(BaseModel):
|
||||
default=None,
|
||||
description="Whether the radio sends an extra direct ACK transmission",
|
||||
)
|
||||
telemetry_mode_base: int | None = Field(
|
||||
default=None, ge=0, le=2, description="Base telemetry sharing mode"
|
||||
)
|
||||
telemetry_mode_loc: int | None = Field(
|
||||
default=None, ge=0, le=2, description="Location telemetry sharing mode"
|
||||
)
|
||||
telemetry_mode_env: int | None = Field(
|
||||
default=None, ge=0, le=2, description="Environment sensor sharing mode"
|
||||
)
|
||||
|
||||
|
||||
class PrivateKeyUpdate(BaseModel):
|
||||
@@ -360,6 +381,9 @@ async def get_radio_config() -> RadioConfigResponse:
|
||||
path_hash_mode_supported=radio_manager.path_hash_mode_supported,
|
||||
advert_location_source=advert_location_source,
|
||||
multi_acks_enabled=bool(info.get("multi_acks", 0)),
|
||||
telemetry_mode_base=info.get("telemetry_mode_base", 0),
|
||||
telemetry_mode_loc=info.get("telemetry_mode_loc", 0),
|
||||
telemetry_mode_env=info.get("telemetry_mode_env", 0),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -51,6 +51,30 @@ async def apply_radio_config_update(
|
||||
if result is not None and result.type == EventType.ERROR:
|
||||
raise RadioCommandRejectedError(f"Failed to set multi ACKs: {result.payload}")
|
||||
|
||||
if update.telemetry_mode_base is not None:
|
||||
logger.info("Setting telemetry_mode_base to %d", update.telemetry_mode_base)
|
||||
result = await mc.commands.set_telemetry_mode_base(update.telemetry_mode_base)
|
||||
if result is not None and result.type == EventType.ERROR:
|
||||
raise RadioCommandRejectedError(
|
||||
f"Failed to set telemetry mode (base): {result.payload}"
|
||||
)
|
||||
|
||||
if update.telemetry_mode_loc is not None:
|
||||
logger.info("Setting telemetry_mode_loc to %d", update.telemetry_mode_loc)
|
||||
result = await mc.commands.set_telemetry_mode_loc(update.telemetry_mode_loc)
|
||||
if result is not None and result.type == EventType.ERROR:
|
||||
raise RadioCommandRejectedError(
|
||||
f"Failed to set telemetry mode (location): {result.payload}"
|
||||
)
|
||||
|
||||
if update.telemetry_mode_env is not None:
|
||||
logger.info("Setting telemetry_mode_env to %d", update.telemetry_mode_env)
|
||||
result = await mc.commands.set_telemetry_mode_env(update.telemetry_mode_env)
|
||||
if result is not None and result.type == EventType.ERROR:
|
||||
raise RadioCommandRejectedError(
|
||||
f"Failed to set telemetry mode (environment): {result.payload}"
|
||||
)
|
||||
|
||||
if update.name is not None:
|
||||
logger.info("Setting radio name to %s", update.name)
|
||||
await mc.commands.set_name(update.name)
|
||||
|
||||
Reference in New Issue
Block a user