Compare commits

...

4 Commits

Author SHA1 Message Date
Ben Meadors
c5fc51ea37 Update factory reset to use integer for config reset 2026-04-17 05:03:56 -05:00
Ian McEwen
cec79a7c1f poetry lock 2026-04-10 11:42:58 -07:00
Ian McEwen
6805fee667 loosen packaging version requirement 2026-04-10 11:41:29 -07:00
Ian McEwen
3cb9ce2a56 protobufs: v2.7.21 2026-04-10 11:40:56 -07:00
19 changed files with 421 additions and 123 deletions

View File

@@ -731,7 +731,7 @@ class Node:
p.factory_reset_device = True p.factory_reset_device = True
logger.info(f"Telling node to factory reset (full device reset)") logger.info(f"Telling node to factory reset (full device reset)")
else: else:
p.factory_reset_config = True p.factory_reset_config = 1
logger.info(f"Telling node to factory reset (config reset)") logger.info(f"Telling node to factory reset (config reset)")
# If sending to a remote node, wait for ACK/NAK # If sending to a remote node, wait for ACK/NAK

View File

File diff suppressed because one or more lines are too long

View File

@@ -232,6 +232,10 @@ class AdminMessage(google.protobuf.message.Message):
""" """
Traffic management module config Traffic management module config
""" """
TAK_CONFIG: AdminMessage._ModuleConfigType.ValueType # 15
"""
TAK module config
"""
class ModuleConfigType(_ModuleConfigType, metaclass=_ModuleConfigTypeEnumTypeWrapper): class ModuleConfigType(_ModuleConfigType, metaclass=_ModuleConfigTypeEnumTypeWrapper):
""" """
@@ -298,6 +302,10 @@ class AdminMessage(google.protobuf.message.Message):
""" """
Traffic management module config Traffic management module config
""" """
TAK_CONFIG: AdminMessage.ModuleConfigType.ValueType # 15
"""
TAK module config
"""
class _BackupLocation: class _BackupLocation:
ValueType = typing.NewType("ValueType", builtins.int) ValueType = typing.NewType("ValueType", builtins.int)
@@ -1000,6 +1008,8 @@ class SensorConfig(google.protobuf.message.Message):
SCD4X_CONFIG_FIELD_NUMBER: builtins.int SCD4X_CONFIG_FIELD_NUMBER: builtins.int
SEN5X_CONFIG_FIELD_NUMBER: builtins.int SEN5X_CONFIG_FIELD_NUMBER: builtins.int
SCD30_CONFIG_FIELD_NUMBER: builtins.int
SHTXX_CONFIG_FIELD_NUMBER: builtins.int
@property @property
def scd4x_config(self) -> global___SCD4X_config: def scd4x_config(self) -> global___SCD4X_config:
""" """
@@ -1012,14 +1022,28 @@ class SensorConfig(google.protobuf.message.Message):
SEN5X PM Sensor configuration SEN5X PM Sensor configuration
""" """
@property
def scd30_config(self) -> global___SCD30_config:
"""
SCD30 CO2 Sensor configuration
"""
@property
def shtxx_config(self) -> global___SHTXX_config:
"""
SHTXX temperature and relative humidity sensor configuration
"""
def __init__( def __init__(
self, self,
*, *,
scd4x_config: global___SCD4X_config | None = ..., scd4x_config: global___SCD4X_config | None = ...,
sen5x_config: global___SEN5X_config | None = ..., sen5x_config: global___SEN5X_config | None = ...,
scd30_config: global___SCD30_config | None = ...,
shtxx_config: global___SHTXX_config | None = ...,
) -> None: ... ) -> None: ...
def HasField(self, field_name: typing.Literal["scd4x_config", b"scd4x_config", "sen5x_config", b"sen5x_config"]) -> builtins.bool: ... def HasField(self, field_name: typing.Literal["scd30_config", b"scd30_config", "scd4x_config", b"scd4x_config", "sen5x_config", b"sen5x_config", "shtxx_config", b"shtxx_config"]) -> builtins.bool: ...
def ClearField(self, field_name: typing.Literal["scd4x_config", b"scd4x_config", "sen5x_config", b"sen5x_config"]) -> None: ... def ClearField(self, field_name: typing.Literal["scd30_config", b"scd30_config", "scd4x_config", b"scd4x_config", "sen5x_config", b"sen5x_config", "shtxx_config", b"shtxx_config"]) -> None: ...
global___SensorConfig = SensorConfig global___SensorConfig = SensorConfig
@@ -1120,3 +1144,84 @@ class SEN5X_config(google.protobuf.message.Message):
def WhichOneof(self, oneof_group: typing.Literal["_set_temperature", b"_set_temperature"]) -> typing.Literal["set_temperature"] | None: ... def WhichOneof(self, oneof_group: typing.Literal["_set_temperature", b"_set_temperature"]) -> typing.Literal["set_temperature"] | None: ...
global___SEN5X_config = SEN5X_config global___SEN5X_config = SEN5X_config
@typing.final
class SCD30_config(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
SET_ASC_FIELD_NUMBER: builtins.int
SET_TARGET_CO2_CONC_FIELD_NUMBER: builtins.int
SET_TEMPERATURE_FIELD_NUMBER: builtins.int
SET_ALTITUDE_FIELD_NUMBER: builtins.int
SET_MEASUREMENT_INTERVAL_FIELD_NUMBER: builtins.int
SOFT_RESET_FIELD_NUMBER: builtins.int
set_asc: builtins.bool
"""
Set Automatic self-calibration enabled
"""
set_target_co2_conc: builtins.int
"""
Recalibration target CO2 concentration in ppm (FRC or ASC)
"""
set_temperature: builtins.float
"""
Reference temperature in degC
"""
set_altitude: builtins.int
"""
Altitude of sensor in meters above sea level. 0 - 3000m (overrides ambient pressure)
"""
set_measurement_interval: builtins.int
"""
Power mode for sensor (true for low power, false for normal)
"""
soft_reset: builtins.bool
"""
Perform a factory reset of the sensor
"""
def __init__(
self,
*,
set_asc: builtins.bool | None = ...,
set_target_co2_conc: builtins.int | None = ...,
set_temperature: builtins.float | None = ...,
set_altitude: builtins.int | None = ...,
set_measurement_interval: builtins.int | None = ...,
soft_reset: builtins.bool | None = ...,
) -> None: ...
def HasField(self, field_name: typing.Literal["_set_altitude", b"_set_altitude", "_set_asc", b"_set_asc", "_set_measurement_interval", b"_set_measurement_interval", "_set_target_co2_conc", b"_set_target_co2_conc", "_set_temperature", b"_set_temperature", "_soft_reset", b"_soft_reset", "set_altitude", b"set_altitude", "set_asc", b"set_asc", "set_measurement_interval", b"set_measurement_interval", "set_target_co2_conc", b"set_target_co2_conc", "set_temperature", b"set_temperature", "soft_reset", b"soft_reset"]) -> builtins.bool: ...
def ClearField(self, field_name: typing.Literal["_set_altitude", b"_set_altitude", "_set_asc", b"_set_asc", "_set_measurement_interval", b"_set_measurement_interval", "_set_target_co2_conc", b"_set_target_co2_conc", "_set_temperature", b"_set_temperature", "_soft_reset", b"_soft_reset", "set_altitude", b"set_altitude", "set_asc", b"set_asc", "set_measurement_interval", b"set_measurement_interval", "set_target_co2_conc", b"set_target_co2_conc", "set_temperature", b"set_temperature", "soft_reset", b"soft_reset"]) -> None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing.Literal["_set_altitude", b"_set_altitude"]) -> typing.Literal["set_altitude"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing.Literal["_set_asc", b"_set_asc"]) -> typing.Literal["set_asc"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing.Literal["_set_measurement_interval", b"_set_measurement_interval"]) -> typing.Literal["set_measurement_interval"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing.Literal["_set_target_co2_conc", b"_set_target_co2_conc"]) -> typing.Literal["set_target_co2_conc"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing.Literal["_set_temperature", b"_set_temperature"]) -> typing.Literal["set_temperature"] | None: ...
@typing.overload
def WhichOneof(self, oneof_group: typing.Literal["_soft_reset", b"_soft_reset"]) -> typing.Literal["soft_reset"] | None: ...
global___SCD30_config = SCD30_config
@typing.final
class SHTXX_config(google.protobuf.message.Message):
DESCRIPTOR: google.protobuf.descriptor.Descriptor
SET_ACCURACY_FIELD_NUMBER: builtins.int
set_accuracy: builtins.int
"""
Accuracy mode (0 = low, 1 = medium, 2 = high)
"""
def __init__(
self,
*,
set_accuracy: builtins.int | None = ...,
) -> None: ...
def HasField(self, field_name: typing.Literal["_set_accuracy", b"_set_accuracy", "set_accuracy", b"set_accuracy"]) -> builtins.bool: ...
def ClearField(self, field_name: typing.Literal["_set_accuracy", b"_set_accuracy", "set_accuracy", b"set_accuracy"]) -> None: ...
def WhichOneof(self, oneof_group: typing.Literal["_set_accuracy", b"_set_accuracy"]) -> typing.Literal["set_accuracy"] | None: ...
global___SHTXX_config = SHTXX_config

View File

File diff suppressed because one or more lines are too long

View File

@@ -1584,6 +1584,39 @@ class Config(google.protobuf.message.Message):
This preset performs similarly to LongFast, but with 500Khz bandwidth. This preset performs similarly to LongFast, but with 500Khz bandwidth.
""" """
class _FEM_LNA_Mode:
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType
class _FEM_LNA_ModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.LoRaConfig._FEM_LNA_Mode.ValueType], builtins.type):
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
DISABLED: Config.LoRaConfig._FEM_LNA_Mode.ValueType # 0
"""
FEM_LNA is present but disabled
"""
ENABLED: Config.LoRaConfig._FEM_LNA_Mode.ValueType # 1
"""
FEM_LNA is present and enabled
"""
NOT_PRESENT: Config.LoRaConfig._FEM_LNA_Mode.ValueType # 2
"""
FEM_LNA is not present on the device
"""
class FEM_LNA_Mode(_FEM_LNA_Mode, metaclass=_FEM_LNA_ModeEnumTypeWrapper): ...
DISABLED: Config.LoRaConfig.FEM_LNA_Mode.ValueType # 0
"""
FEM_LNA is present but disabled
"""
ENABLED: Config.LoRaConfig.FEM_LNA_Mode.ValueType # 1
"""
FEM_LNA is present and enabled
"""
NOT_PRESENT: Config.LoRaConfig.FEM_LNA_Mode.ValueType # 2
"""
FEM_LNA is not present on the device
"""
USE_PRESET_FIELD_NUMBER: builtins.int USE_PRESET_FIELD_NUMBER: builtins.int
MODEM_PRESET_FIELD_NUMBER: builtins.int MODEM_PRESET_FIELD_NUMBER: builtins.int
BANDWIDTH_FIELD_NUMBER: builtins.int BANDWIDTH_FIELD_NUMBER: builtins.int
@@ -1602,6 +1635,7 @@ class Config(google.protobuf.message.Message):
IGNORE_INCOMING_FIELD_NUMBER: builtins.int IGNORE_INCOMING_FIELD_NUMBER: builtins.int
IGNORE_MQTT_FIELD_NUMBER: builtins.int IGNORE_MQTT_FIELD_NUMBER: builtins.int
CONFIG_OK_TO_MQTT_FIELD_NUMBER: builtins.int CONFIG_OK_TO_MQTT_FIELD_NUMBER: builtins.int
FEM_LNA_MODE_FIELD_NUMBER: builtins.int
use_preset: builtins.bool use_preset: builtins.bool
""" """
When enabled, the `modem_preset` fields will be adhered to, else the `bandwidth`/`spread_factor`/`coding_rate` When enabled, the `modem_preset` fields will be adhered to, else the `bandwidth`/`spread_factor`/`coding_rate`
@@ -1699,6 +1733,10 @@ class Config(google.protobuf.message.Message):
""" """
Sets the ok_to_mqtt bit on outgoing packets Sets the ok_to_mqtt bit on outgoing packets
""" """
fem_lna_mode: global___Config.LoRaConfig.FEM_LNA_Mode.ValueType
"""
Set where LORA FEM is enabled, disabled, or not present
"""
@property @property
def ignore_incoming(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: def ignore_incoming(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
""" """
@@ -1728,8 +1766,9 @@ class Config(google.protobuf.message.Message):
ignore_incoming: collections.abc.Iterable[builtins.int] | None = ..., ignore_incoming: collections.abc.Iterable[builtins.int] | None = ...,
ignore_mqtt: builtins.bool = ..., ignore_mqtt: builtins.bool = ...,
config_ok_to_mqtt: builtins.bool = ..., config_ok_to_mqtt: builtins.bool = ...,
fem_lna_mode: global___Config.LoRaConfig.FEM_LNA_Mode.ValueType = ...,
) -> None: ... ) -> None: ...
def ClearField(self, field_name: typing.Literal["bandwidth", b"bandwidth", "channel_num", b"channel_num", "coding_rate", b"coding_rate", "config_ok_to_mqtt", b"config_ok_to_mqtt", "frequency_offset", b"frequency_offset", "hop_limit", b"hop_limit", "ignore_incoming", b"ignore_incoming", "ignore_mqtt", b"ignore_mqtt", "modem_preset", b"modem_preset", "override_duty_cycle", b"override_duty_cycle", "override_frequency", b"override_frequency", "pa_fan_disabled", b"pa_fan_disabled", "region", b"region", "spread_factor", b"spread_factor", "sx126x_rx_boosted_gain", b"sx126x_rx_boosted_gain", "tx_enabled", b"tx_enabled", "tx_power", b"tx_power", "use_preset", b"use_preset"]) -> None: ... def ClearField(self, field_name: typing.Literal["bandwidth", b"bandwidth", "channel_num", b"channel_num", "coding_rate", b"coding_rate", "config_ok_to_mqtt", b"config_ok_to_mqtt", "fem_lna_mode", b"fem_lna_mode", "frequency_offset", b"frequency_offset", "hop_limit", b"hop_limit", "ignore_incoming", b"ignore_incoming", "ignore_mqtt", b"ignore_mqtt", "modem_preset", b"modem_preset", "override_duty_cycle", b"override_duty_cycle", "override_frequency", b"override_frequency", "pa_fan_disabled", b"pa_fan_disabled", "region", b"region", "spread_factor", b"spread_factor", "sx126x_rx_boosted_gain", b"sx126x_rx_boosted_gain", "tx_enabled", b"tx_enabled", "tx_power", b"tx_power", "use_preset", b"use_preset"]) -> None: ...
@typing.final @typing.final
class BluetoothConfig(google.protobuf.message.Message): class BluetoothConfig(google.protobuf.message.Message):

View File

@@ -15,7 +15,7 @@ from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config
from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2 from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/localonly.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xfa\x03\n\x0bLocalConfig\x12\x38\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfig\x12<\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfig\x12\x36\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfig\x12:\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfig\x12:\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfig\x12\x34\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfig\x12>\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\x12<\n\x08security\x18\t \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfig\"\x95\t\n\x11LocalModuleConfig\x12:\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfig\x12>\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfig\x12[\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfig\x12K\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfig\x12\x45\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfig\x12\x44\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfig\x12M\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfig\x12<\n\x05\x61udio\x18\t \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfig\x12O\n\x0fremote_hardware\x18\n \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfig\x12K\n\rneighbor_info\x18\x0b \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfig\x12Q\n\x10\x61mbient_lighting\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfig\x12Q\n\x10\x64\x65tection_sensor\x18\r \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig\x12\x46\n\npaxcounter\x18\x0e \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfig\x12L\n\rstatusmessage\x18\x0f \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.StatusMessageConfig\x12U\n\x12traffic_management\x18\x10 \x01(\x0b\x32\x39.meshtastic.protobuf.ModuleConfig.TrafficManagementConfig\x12\x0f\n\x07version\x18\x08 \x01(\rBe\n\x14org.meshtastic.protoB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/localonly.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xfa\x03\n\x0bLocalConfig\x12\x38\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfig\x12<\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfig\x12\x36\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfig\x12:\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfig\x12:\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfig\x12\x34\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfig\x12>\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\x12<\n\x08security\x18\t \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfig\"\xcf\t\n\x11LocalModuleConfig\x12:\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfig\x12>\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfig\x12[\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfig\x12K\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfig\x12\x45\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfig\x12\x44\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfig\x12M\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfig\x12<\n\x05\x61udio\x18\t \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfig\x12O\n\x0fremote_hardware\x18\n \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfig\x12K\n\rneighbor_info\x18\x0b \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfig\x12Q\n\x10\x61mbient_lighting\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfig\x12Q\n\x10\x64\x65tection_sensor\x18\r \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig\x12\x46\n\npaxcounter\x18\x0e \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfig\x12L\n\rstatusmessage\x18\x0f \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.StatusMessageConfig\x12U\n\x12traffic_management\x18\x10 \x01(\x0b\x32\x39.meshtastic.protobuf.ModuleConfig.TrafficManagementConfig\x12\x38\n\x03tak\x18\x11 \x01(\x0b\x32+.meshtastic.protobuf.ModuleConfig.TAKConfig\x12\x0f\n\x07version\x18\x08 \x01(\rBe\n\x14org.meshtastic.protoB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_globals = globals() _globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -26,5 +26,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
_globals['_LOCALCONFIG']._serialized_start=136 _globals['_LOCALCONFIG']._serialized_start=136
_globals['_LOCALCONFIG']._serialized_end=642 _globals['_LOCALCONFIG']._serialized_end=642
_globals['_LOCALMODULECONFIG']._serialized_start=645 _globals['_LOCALMODULECONFIG']._serialized_start=645
_globals['_LOCALMODULECONFIG']._serialized_end=1818 _globals['_LOCALMODULECONFIG']._serialized_end=1876
# @@protoc_insertion_point(module_scope) # @@protoc_insertion_point(module_scope)

View File

@@ -121,6 +121,7 @@ class LocalModuleConfig(google.protobuf.message.Message):
PAXCOUNTER_FIELD_NUMBER: builtins.int PAXCOUNTER_FIELD_NUMBER: builtins.int
STATUSMESSAGE_FIELD_NUMBER: builtins.int STATUSMESSAGE_FIELD_NUMBER: builtins.int
TRAFFIC_MANAGEMENT_FIELD_NUMBER: builtins.int TRAFFIC_MANAGEMENT_FIELD_NUMBER: builtins.int
TAK_FIELD_NUMBER: builtins.int
VERSION_FIELD_NUMBER: builtins.int VERSION_FIELD_NUMBER: builtins.int
version: builtins.int version: builtins.int
""" """
@@ -218,6 +219,12 @@ class LocalModuleConfig(google.protobuf.message.Message):
The part of the config that is specific to the Traffic Management module The part of the config that is specific to the Traffic Management module
""" """
@property
def tak(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.TAKConfig:
"""
TAK Config
"""
def __init__( def __init__(
self, self,
*, *,
@@ -236,9 +243,10 @@ class LocalModuleConfig(google.protobuf.message.Message):
paxcounter: meshtastic.protobuf.module_config_pb2.ModuleConfig.PaxcounterConfig | None = ..., paxcounter: meshtastic.protobuf.module_config_pb2.ModuleConfig.PaxcounterConfig | None = ...,
statusmessage: meshtastic.protobuf.module_config_pb2.ModuleConfig.StatusMessageConfig | None = ..., statusmessage: meshtastic.protobuf.module_config_pb2.ModuleConfig.StatusMessageConfig | None = ...,
traffic_management: meshtastic.protobuf.module_config_pb2.ModuleConfig.TrafficManagementConfig | None = ..., traffic_management: meshtastic.protobuf.module_config_pb2.ModuleConfig.TrafficManagementConfig | None = ...,
tak: meshtastic.protobuf.module_config_pb2.ModuleConfig.TAKConfig | None = ...,
version: builtins.int = ..., version: builtins.int = ...,
) -> None: ... ) -> None: ...
def HasField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "telemetry", b"telemetry", "traffic_management", b"traffic_management"]) -> builtins.bool: ... def HasField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "tak", b"tak", "telemetry", b"telemetry", "traffic_management", b"traffic_management"]) -> builtins.bool: ...
def ClearField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "telemetry", b"telemetry", "traffic_management", b"traffic_management", "version", b"version"]) -> None: ... def ClearField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "tak", b"tak", "telemetry", b"telemetry", "traffic_management", b"traffic_management", "version", b"version"]) -> None: ...
global___LocalModuleConfig = LocalModuleConfig global___LocalModuleConfig = LocalModuleConfig

View File

File diff suppressed because one or more lines are too long

View File

@@ -547,6 +547,22 @@ class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._
""" """
LilyGo T5 S3 ePaper Pro (V1 and V2) LilyGo T5 S3 ePaper Pro (V1 and V2)
""" """
TBEAM_BPF: _HardwareModel.ValueType # 124
"""
LilyGo T-Beam BPF (144-148Mhz)
"""
MINI_EPAPER_S3: _HardwareModel.ValueType # 125
"""
LilyGo T-Mini E-paper S3 Kit
"""
TDISPLAY_S3_PRO: _HardwareModel.ValueType # 126
"""
LilyGo T-Display S3 Pro LR1121
"""
HELTEC_MESH_NODE_T096: _HardwareModel.ValueType # 127
"""
Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen.
"""
PRIVATE_HW: _HardwareModel.ValueType # 255 PRIVATE_HW: _HardwareModel.ValueType # 255
""" """
------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------
@@ -1077,6 +1093,22 @@ T5_S3_EPAPER_PRO: HardwareModel.ValueType # 123
""" """
LilyGo T5 S3 ePaper Pro (V1 and V2) LilyGo T5 S3 ePaper Pro (V1 and V2)
""" """
TBEAM_BPF: HardwareModel.ValueType # 124
"""
LilyGo T-Beam BPF (144-148Mhz)
"""
MINI_EPAPER_S3: HardwareModel.ValueType # 125
"""
LilyGo T-Mini E-paper S3 Kit
"""
TDISPLAY_S3_PRO: HardwareModel.ValueType # 126
"""
LilyGo T-Display S3 Pro LR1121
"""
HELTEC_MESH_NODE_T096: HardwareModel.ValueType # 127
"""
Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen.
"""
PRIVATE_HW: HardwareModel.ValueType # 255 PRIVATE_HW: HardwareModel.ValueType # 255
""" """
------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------

View File

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@ import google.protobuf.descriptor
import google.protobuf.internal.containers import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message import google.protobuf.message
import meshtastic.protobuf.atak_pb2
import sys import sys
import typing import typing
@@ -1301,6 +1302,34 @@ class ModuleConfig(google.protobuf.message.Message):
) -> None: ... ) -> None: ...
def ClearField(self, field_name: typing.Literal["node_status", b"node_status"]) -> None: ... def ClearField(self, field_name: typing.Literal["node_status", b"node_status"]) -> None: ...
@typing.final
class TAKConfig(google.protobuf.message.Message):
"""
TAK team/role configuration
"""
DESCRIPTOR: google.protobuf.descriptor.Descriptor
TEAM_FIELD_NUMBER: builtins.int
ROLE_FIELD_NUMBER: builtins.int
team: meshtastic.protobuf.atak_pb2.Team.ValueType
"""
Team color.
Default Unspecifed_Color -> firmware uses Cyan
"""
role: meshtastic.protobuf.atak_pb2.MemberRole.ValueType
"""
Member role.
Default Unspecifed -> firmware uses TeamMember
"""
def __init__(
self,
*,
team: meshtastic.protobuf.atak_pb2.Team.ValueType = ...,
role: meshtastic.protobuf.atak_pb2.MemberRole.ValueType = ...,
) -> None: ...
def ClearField(self, field_name: typing.Literal["role", b"role", "team", b"team"]) -> None: ...
MQTT_FIELD_NUMBER: builtins.int MQTT_FIELD_NUMBER: builtins.int
SERIAL_FIELD_NUMBER: builtins.int SERIAL_FIELD_NUMBER: builtins.int
EXTERNAL_NOTIFICATION_FIELD_NUMBER: builtins.int EXTERNAL_NOTIFICATION_FIELD_NUMBER: builtins.int
@@ -1316,6 +1345,7 @@ class ModuleConfig(google.protobuf.message.Message):
PAXCOUNTER_FIELD_NUMBER: builtins.int PAXCOUNTER_FIELD_NUMBER: builtins.int
STATUSMESSAGE_FIELD_NUMBER: builtins.int STATUSMESSAGE_FIELD_NUMBER: builtins.int
TRAFFIC_MANAGEMENT_FIELD_NUMBER: builtins.int TRAFFIC_MANAGEMENT_FIELD_NUMBER: builtins.int
TAK_FIELD_NUMBER: builtins.int
@property @property
def mqtt(self) -> global___ModuleConfig.MQTTConfig: def mqtt(self) -> global___ModuleConfig.MQTTConfig:
""" """
@@ -1406,6 +1436,12 @@ class ModuleConfig(google.protobuf.message.Message):
Traffic management module config for mesh network optimization Traffic management module config for mesh network optimization
""" """
@property
def tak(self) -> global___ModuleConfig.TAKConfig:
"""
TAK team/role configuration for TAK_TRACKER
"""
def __init__( def __init__(
self, self,
*, *,
@@ -1424,10 +1460,11 @@ class ModuleConfig(google.protobuf.message.Message):
paxcounter: global___ModuleConfig.PaxcounterConfig | None = ..., paxcounter: global___ModuleConfig.PaxcounterConfig | None = ...,
statusmessage: global___ModuleConfig.StatusMessageConfig | None = ..., statusmessage: global___ModuleConfig.StatusMessageConfig | None = ...,
traffic_management: global___ModuleConfig.TrafficManagementConfig | None = ..., traffic_management: global___ModuleConfig.TrafficManagementConfig | None = ...,
tak: global___ModuleConfig.TAKConfig | None = ...,
) -> None: ... ) -> None: ...
def HasField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "payload_variant", b"payload_variant", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "telemetry", b"telemetry", "traffic_management", b"traffic_management"]) -> builtins.bool: ... def HasField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "payload_variant", b"payload_variant", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "tak", b"tak", "telemetry", b"telemetry", "traffic_management", b"traffic_management"]) -> builtins.bool: ...
def ClearField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "payload_variant", b"payload_variant", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "telemetry", b"telemetry", "traffic_management", b"traffic_management"]) -> None: ... def ClearField(self, field_name: typing.Literal["ambient_lighting", b"ambient_lighting", "audio", b"audio", "canned_message", b"canned_message", "detection_sensor", b"detection_sensor", "external_notification", b"external_notification", "mqtt", b"mqtt", "neighbor_info", b"neighbor_info", "paxcounter", b"paxcounter", "payload_variant", b"payload_variant", "range_test", b"range_test", "remote_hardware", b"remote_hardware", "serial", b"serial", "statusmessage", b"statusmessage", "store_forward", b"store_forward", "tak", b"tak", "telemetry", b"telemetry", "traffic_management", b"traffic_management"]) -> None: ...
def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["mqtt", "serial", "external_notification", "store_forward", "range_test", "telemetry", "canned_message", "audio", "remote_hardware", "neighbor_info", "ambient_lighting", "detection_sensor", "paxcounter", "statusmessage", "traffic_management"] | None: ... def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["mqtt", "serial", "external_notification", "store_forward", "range_test", "telemetry", "canned_message", "audio", "remote_hardware", "neighbor_info", "ambient_lighting", "detection_sensor", "paxcounter", "statusmessage", "traffic_management", "tak"] | None: ...
global___ModuleConfig = ModuleConfig global___ModuleConfig = ModuleConfig

View File

@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xab\x05\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\x1f\n\x1bTEXT_MESSAGE_COMPRESSED_APP\x10\x07\x12\x10\n\x0cWAYPOINT_APP\x10\x08\x12\r\n\tAUDIO_APP\x10\t\x12\x18\n\x14\x44\x45TECTION_SENSOR_APP\x10\n\x12\r\n\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x1e\n\x1aSTORE_FORWARD_PLUSPLUS_APP\x10#\x12\x13\n\x0fNODE_STATUS_APP\x10$\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42^\n\x14org.meshtastic.protoB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xd3\x05\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\x1f\n\x1bTEXT_MESSAGE_COMPRESSED_APP\x10\x07\x12\x10\n\x0cWAYPOINT_APP\x10\x08\x12\r\n\tAUDIO_APP\x10\t\x12\x18\n\x14\x44\x45TECTION_SENSOR_APP\x10\n\x12\r\n\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x1e\n\x1aSTORE_FORWARD_PLUSPLUS_APP\x10#\x12\x13\n\x0fNODE_STATUS_APP\x10$\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x12\n\x0eLORAWAN_BRIDGE\x10K\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x12\n\x0eGROUPALARM_APP\x10p\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42^\n\x14org.meshtastic.protoB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_globals = globals() _globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -22,5 +22,5 @@ if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
_globals['_PORTNUM']._serialized_start=60 _globals['_PORTNUM']._serialized_start=60
_globals['_PORTNUM']._serialized_end=743 _globals['_PORTNUM']._serialized_end=783
# @@protoc_insertion_point(module_scope) # @@protoc_insertion_point(module_scope)

View File

@@ -197,6 +197,11 @@ class _PortNumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTy
""" """
PowerStress based monitoring support (for automated power consumption testing) PowerStress based monitoring support (for automated power consumption testing)
""" """
LORAWAN_BRIDGE: _PortNum.ValueType # 75
"""
LoraWAN Payload Transport
ENCODING: compact binary LoRaWAN uplink (10-byte RF metadata + PHY payload) - see LoRaWANBridgeModule
"""
RETICULUM_TUNNEL_APP: _PortNum.ValueType # 76 RETICULUM_TUNNEL_APP: _PortNum.ValueType # 76
""" """
Reticulum Network Stack Tunnel App Reticulum Network Stack Tunnel App
@@ -208,6 +213,12 @@ class _PortNumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTy
arbitrary telemetry over meshtastic that is not covered by telemetry.proto arbitrary telemetry over meshtastic that is not covered by telemetry.proto
ENCODING: CayenneLLP ENCODING: CayenneLLP
""" """
GROUPALARM_APP: _PortNum.ValueType # 112
"""
GroupAlarm integration
Used for transporting GroupAlarm-related messages between Meshtastic nodes
and companion applications/services.
"""
PRIVATE_APP: _PortNum.ValueType # 256 PRIVATE_APP: _PortNum.ValueType # 256
""" """
Private applications should use portnums >= 256. Private applications should use portnums >= 256.
@@ -415,6 +426,11 @@ POWERSTRESS_APP: PortNum.ValueType # 74
""" """
PowerStress based monitoring support (for automated power consumption testing) PowerStress based monitoring support (for automated power consumption testing)
""" """
LORAWAN_BRIDGE: PortNum.ValueType # 75
"""
LoraWAN Payload Transport
ENCODING: compact binary LoRaWAN uplink (10-byte RF metadata + PHY payload) - see LoRaWANBridgeModule
"""
RETICULUM_TUNNEL_APP: PortNum.ValueType # 76 RETICULUM_TUNNEL_APP: PortNum.ValueType # 76
""" """
Reticulum Network Stack Tunnel App Reticulum Network Stack Tunnel App
@@ -426,6 +442,12 @@ App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes
arbitrary telemetry over meshtastic that is not covered by telemetry.proto arbitrary telemetry over meshtastic that is not covered by telemetry.proto
ENCODING: CayenneLLP ENCODING: CayenneLLP
""" """
GROUPALARM_APP: PortNum.ValueType # 112
"""
GroupAlarm integration
Used for transporting GroupAlarm-related messages between Meshtastic nodes
and companion applications/services.
"""
PRIVATE_APP: PortNum.ValueType # 256 PRIVATE_APP: PortNum.ValueType # 256
""" """
Private applications should use portnums >= 256. Private applications should use portnums >= 256.

View File

File diff suppressed because one or more lines are too long

View File

@@ -53,7 +53,7 @@ class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wra
""" """
SHTC3: _TelemetrySensorType.ValueType # 7 SHTC3: _TelemetrySensorType.ValueType # 7
""" """
High accuracy temperature and humidity TODO - REMOVE High accuracy temperature and humidity
""" """
LPS22: _TelemetrySensorType.ValueType # 8 LPS22: _TelemetrySensorType.ValueType # 8
""" """
@@ -73,7 +73,7 @@ class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wra
""" """
SHT31: _TelemetrySensorType.ValueType # 12 SHT31: _TelemetrySensorType.ValueType # 12
""" """
High accuracy temperature and humidity TODO - REMOVE High accuracy temperature and humidity
""" """
PMSA003I: _TelemetrySensorType.ValueType # 13 PMSA003I: _TelemetrySensorType.ValueType # 13
""" """
@@ -93,7 +93,7 @@ class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wra
""" """
SHT4X: _TelemetrySensorType.ValueType # 17 SHT4X: _TelemetrySensorType.ValueType # 17
""" """
Sensirion High accuracy temperature and humidity TODO - REMOVE Sensirion High accuracy temperature and humidity
""" """
VEML7700: _TelemetrySensorType.ValueType # 18 VEML7700: _TelemetrySensorType.ValueType # 18
""" """
@@ -213,12 +213,20 @@ class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wra
""" """
SHT21: _TelemetrySensorType.ValueType # 47 SHT21: _TelemetrySensorType.ValueType # 47
""" """
STH21 Temperature and R. Humidity sensor TODO - REMOVE STH21 Temperature and R. Humidity sensor
""" """
STC31: _TelemetrySensorType.ValueType # 48 STC31: _TelemetrySensorType.ValueType # 48
""" """
Sensirion STC31 CO2 sensor Sensirion STC31 CO2 sensor
""" """
SCD30: _TelemetrySensorType.ValueType # 49
"""
SCD30 CO2, humidity, temperature sensor
"""
SHTXX: _TelemetrySensorType.ValueType # 50
"""
SHT family of sensors for temperature and humidity
"""
class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper): class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper):
""" """
@@ -255,7 +263,7 @@ High accuracy temperature and pressure
""" """
SHTC3: TelemetrySensorType.ValueType # 7 SHTC3: TelemetrySensorType.ValueType # 7
""" """
High accuracy temperature and humidity TODO - REMOVE High accuracy temperature and humidity
""" """
LPS22: TelemetrySensorType.ValueType # 8 LPS22: TelemetrySensorType.ValueType # 8
""" """
@@ -275,7 +283,7 @@ QMC5883L: TelemetrySensorType.ValueType # 11
""" """
SHT31: TelemetrySensorType.ValueType # 12 SHT31: TelemetrySensorType.ValueType # 12
""" """
High accuracy temperature and humidity TODO - REMOVE High accuracy temperature and humidity
""" """
PMSA003I: TelemetrySensorType.ValueType # 13 PMSA003I: TelemetrySensorType.ValueType # 13
""" """
@@ -295,7 +303,7 @@ RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
""" """
SHT4X: TelemetrySensorType.ValueType # 17 SHT4X: TelemetrySensorType.ValueType # 17
""" """
Sensirion High accuracy temperature and humidity TODO - REMOVE Sensirion High accuracy temperature and humidity
""" """
VEML7700: TelemetrySensorType.ValueType # 18 VEML7700: TelemetrySensorType.ValueType # 18
""" """
@@ -415,12 +423,20 @@ HDC1080 Temperature and Humidity Sensor
""" """
SHT21: TelemetrySensorType.ValueType # 47 SHT21: TelemetrySensorType.ValueType # 47
""" """
STH21 Temperature and R. Humidity sensor TODO - REMOVE STH21 Temperature and R. Humidity sensor
""" """
STC31: TelemetrySensorType.ValueType # 48 STC31: TelemetrySensorType.ValueType # 48
""" """
Sensirion STC31 CO2 sensor Sensirion STC31 CO2 sensor
""" """
SCD30: TelemetrySensorType.ValueType # 49
"""
SCD30 CO2, humidity, temperature sensor
"""
SHTXX: TelemetrySensorType.ValueType # 50
"""
SHT family of sensors for temperature and humidity
"""
global___TelemetrySensorType = TelemetrySensorType global___TelemetrySensorType = TelemetrySensorType
@typing.final @typing.final

View File

@@ -262,6 +262,36 @@ def test_shutdown(caplog):
assert re.search(r"Telling node to shutdown", caplog.text, re.MULTILINE) assert re.search(r"Telling node to shutdown", caplog.text, re.MULTILINE)
@pytest.mark.unit
def test_factoryReset_config_uses_int_field():
"""Test factoryReset(config) sets int32 protobuf field with an int value."""
iface = MagicMock(autospec=MeshInterface)
anode = Node(iface, 1234567890, noProto=True)
amesg = admin_pb2.AdminMessage()
with patch("meshtastic.admin_pb2.AdminMessage", return_value=amesg):
with patch.object(anode, "_sendAdmin") as mock_send_admin:
anode.factoryReset(full=False)
assert amesg.factory_reset_config == 1
mock_send_admin.assert_called_once_with(amesg, onResponse=anode.onAckNak)
@pytest.mark.unit
def test_factoryReset_full_sets_device_field():
"""Test factoryReset(full=True) sets the full-device reset protobuf field."""
iface = MagicMock(autospec=MeshInterface)
anode = Node(iface, 1234567890, noProto=True)
amesg = admin_pb2.AdminMessage()
with patch("meshtastic.admin_pb2.AdminMessage", return_value=amesg):
with patch.object(anode, "_sendAdmin") as mock_send_admin:
anode.factoryReset(full=True)
assert amesg.factory_reset_device is True
mock_send_admin.assert_called_once_with(amesg, onResponse=anode.onAckNak)
@pytest.mark.unit @pytest.mark.unit
def test_setURL_empty_url(capsys): def test_setURL_empty_url(capsys):
"""Test reboot""" """Test reboot"""

2
poetry.lock generated
View File

@@ -5941,4 +5941,4 @@ tunnel = ["pytap2"]
[metadata] [metadata]
lock-version = "2.1" lock-version = "2.1"
python-versions = "^3.9,<3.15" python-versions = "^3.9,<3.15"
content-hash = "e87e2eaffca4ad13aa7e1b8622ec4b37b23a4efe1f4febe0ca87b92db5fe6d1e" content-hash = "674308d6eb7c3730031cc3e73c98b2413c7f59002a9317bfad387bc34a17c64d"

View File

@@ -15,7 +15,7 @@ requests = "^2.31.0"
pyyaml = "^6.0.1" pyyaml = "^6.0.1"
pypubsub = "^4.0.3" pypubsub = "^4.0.3"
bleak = ">=0.22.3" bleak = ">=0.22.3"
packaging = "^24.0" packaging = ">=24.0"
argcomplete = { version = "^3.5.2", optional = true } argcomplete = { version = "^3.5.2", optional = true }
pyqrcode = { version = "^1.2.1", optional = true } pyqrcode = { version = "^1.2.1", optional = true }
dotmap = { version = "^1.3.30", optional = true } dotmap = { version = "^1.3.30", optional = true }