mirror of
https://github.com/meshtastic/python.git
synced 2026-01-02 04:47:54 -05:00
1503 lines
64 KiB
Python
1503 lines
64 KiB
Python
"""
|
|
@generated by mypy-protobuf. Do not edit manually!
|
|
isort:skip_file
|
|
"""
|
|
import builtins
|
|
import collections.abc
|
|
import google.protobuf.descriptor
|
|
import google.protobuf.internal.containers
|
|
import google.protobuf.internal.enum_type_wrapper
|
|
import google.protobuf.message
|
|
import sys
|
|
import typing
|
|
|
|
if sys.version_info >= (3, 10):
|
|
import typing as typing_extensions
|
|
else:
|
|
import typing_extensions
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
|
|
@typing_extensions.final
|
|
class Config(google.protobuf.message.Message):
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
@typing_extensions.final
|
|
class DeviceConfig(google.protobuf.message.Message):
|
|
"""
|
|
Configuration
|
|
"""
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _Role:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _RoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DeviceConfig._Role.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
CLIENT: Config.DeviceConfig._Role.ValueType # 0
|
|
"""
|
|
Description: App connected or stand alone messaging device.
|
|
Technical Details: Default Role
|
|
"""
|
|
CLIENT_MUTE: Config.DeviceConfig._Role.ValueType # 1
|
|
"""
|
|
Description: Device that does not forward packets from other devices.
|
|
"""
|
|
ROUTER: Config.DeviceConfig._Role.ValueType # 2
|
|
"""
|
|
Description: Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list.
|
|
Technical Details: Mesh packets will prefer to be routed over this node. This node will not be used by client apps.
|
|
The wifi radio and the oled screen will be put to sleep.
|
|
This mode may still potentially have higher power usage due to it's preference in message rebroadcasting on the mesh.
|
|
"""
|
|
ROUTER_CLIENT: Config.DeviceConfig._Role.ValueType # 3
|
|
"""
|
|
Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
|
|
"""
|
|
REPEATER: Config.DeviceConfig._Role.ValueType # 4
|
|
"""
|
|
Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
|
Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
|
or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
|
"""
|
|
TRACKER: Config.DeviceConfig._Role.ValueType # 5
|
|
"""
|
|
Description: Broadcasts GPS position packets as priority.
|
|
Technical Details: Position Mesh packets will be prioritized higher and sent more frequently by default.
|
|
When used in conjunction with power.is_power_saving = true, nodes will wake up,
|
|
send position, and then sleep for position.position_broadcast_secs seconds.
|
|
"""
|
|
SENSOR: Config.DeviceConfig._Role.ValueType # 6
|
|
"""
|
|
Description: Broadcasts telemetry packets as priority.
|
|
Technical Details: Telemetry Mesh packets will be prioritized higher and sent more frequently by default.
|
|
When used in conjunction with power.is_power_saving = true, nodes will wake up,
|
|
send environment telemetry, and then sleep for telemetry.environment_update_interval seconds.
|
|
"""
|
|
TAK: Config.DeviceConfig._Role.ValueType # 7
|
|
"""
|
|
Description: Optimized for ATAK system communication and reduces routine broadcasts.
|
|
Technical Details: Used for nodes dedicated for connection to an ATAK EUD.
|
|
Turns off many of the routine broadcasts to favor CoT packet stream
|
|
from the Meshtastic ATAK plugin -> IMeshService -> Node
|
|
"""
|
|
CLIENT_HIDDEN: Config.DeviceConfig._Role.ValueType # 8
|
|
"""
|
|
Description: Device that only broadcasts as needed for stealth or power savings.
|
|
Technical Details: Used for nodes that "only speak when spoken to"
|
|
Turns all of the routine broadcasts but allows for ad-hoc communication
|
|
Still rebroadcasts, but with local only rebroadcast mode (known meshes only)
|
|
Can be used for clandestine operation or to dramatically reduce airtime / power consumption
|
|
"""
|
|
LOST_AND_FOUND: Config.DeviceConfig._Role.ValueType # 9
|
|
"""
|
|
Description: Broadcasts location as message to default channel regularly for to assist with device recovery.
|
|
Technical Details: Used to automatically send a text message to the mesh
|
|
with the current position of the device on a frequent interval:
|
|
"I'm lost! Position: lat / long"
|
|
"""
|
|
TAK_TRACKER: Config.DeviceConfig._Role.ValueType # 10
|
|
"""
|
|
Description: Enables automatic TAK PLI broadcasts and reduces routine broadcasts.
|
|
Technical Details: Turns off many of the routine broadcasts to favor ATAK CoT packet stream
|
|
and automatic TAK PLI (position location information) broadcasts.
|
|
Uses position module configuration to determine TAK PLI broadcast interval.
|
|
"""
|
|
|
|
class Role(_Role, metaclass=_RoleEnumTypeWrapper):
|
|
"""
|
|
Defines the device's role on the Mesh network
|
|
"""
|
|
|
|
CLIENT: Config.DeviceConfig.Role.ValueType # 0
|
|
"""
|
|
Description: App connected or stand alone messaging device.
|
|
Technical Details: Default Role
|
|
"""
|
|
CLIENT_MUTE: Config.DeviceConfig.Role.ValueType # 1
|
|
"""
|
|
Description: Device that does not forward packets from other devices.
|
|
"""
|
|
ROUTER: Config.DeviceConfig.Role.ValueType # 2
|
|
"""
|
|
Description: Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list.
|
|
Technical Details: Mesh packets will prefer to be routed over this node. This node will not be used by client apps.
|
|
The wifi radio and the oled screen will be put to sleep.
|
|
This mode may still potentially have higher power usage due to it's preference in message rebroadcasting on the mesh.
|
|
"""
|
|
ROUTER_CLIENT: Config.DeviceConfig.Role.ValueType # 3
|
|
"""
|
|
Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
|
|
"""
|
|
REPEATER: Config.DeviceConfig.Role.ValueType # 4
|
|
"""
|
|
Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
|
Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
|
or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
|
"""
|
|
TRACKER: Config.DeviceConfig.Role.ValueType # 5
|
|
"""
|
|
Description: Broadcasts GPS position packets as priority.
|
|
Technical Details: Position Mesh packets will be prioritized higher and sent more frequently by default.
|
|
When used in conjunction with power.is_power_saving = true, nodes will wake up,
|
|
send position, and then sleep for position.position_broadcast_secs seconds.
|
|
"""
|
|
SENSOR: Config.DeviceConfig.Role.ValueType # 6
|
|
"""
|
|
Description: Broadcasts telemetry packets as priority.
|
|
Technical Details: Telemetry Mesh packets will be prioritized higher and sent more frequently by default.
|
|
When used in conjunction with power.is_power_saving = true, nodes will wake up,
|
|
send environment telemetry, and then sleep for telemetry.environment_update_interval seconds.
|
|
"""
|
|
TAK: Config.DeviceConfig.Role.ValueType # 7
|
|
"""
|
|
Description: Optimized for ATAK system communication and reduces routine broadcasts.
|
|
Technical Details: Used for nodes dedicated for connection to an ATAK EUD.
|
|
Turns off many of the routine broadcasts to favor CoT packet stream
|
|
from the Meshtastic ATAK plugin -> IMeshService -> Node
|
|
"""
|
|
CLIENT_HIDDEN: Config.DeviceConfig.Role.ValueType # 8
|
|
"""
|
|
Description: Device that only broadcasts as needed for stealth or power savings.
|
|
Technical Details: Used for nodes that "only speak when spoken to"
|
|
Turns all of the routine broadcasts but allows for ad-hoc communication
|
|
Still rebroadcasts, but with local only rebroadcast mode (known meshes only)
|
|
Can be used for clandestine operation or to dramatically reduce airtime / power consumption
|
|
"""
|
|
LOST_AND_FOUND: Config.DeviceConfig.Role.ValueType # 9
|
|
"""
|
|
Description: Broadcasts location as message to default channel regularly for to assist with device recovery.
|
|
Technical Details: Used to automatically send a text message to the mesh
|
|
with the current position of the device on a frequent interval:
|
|
"I'm lost! Position: lat / long"
|
|
"""
|
|
TAK_TRACKER: Config.DeviceConfig.Role.ValueType # 10
|
|
"""
|
|
Description: Enables automatic TAK PLI broadcasts and reduces routine broadcasts.
|
|
Technical Details: Turns off many of the routine broadcasts to favor ATAK CoT packet stream
|
|
and automatic TAK PLI (position location information) broadcasts.
|
|
Uses position module configuration to determine TAK PLI broadcast interval.
|
|
"""
|
|
|
|
class _RebroadcastMode:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _RebroadcastModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DeviceConfig._RebroadcastMode.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
ALL: Config.DeviceConfig._RebroadcastMode.ValueType # 0
|
|
"""
|
|
Default behavior.
|
|
Rebroadcast any observed message, if it was on our private channel or from another mesh with the same lora params.
|
|
"""
|
|
ALL_SKIP_DECODING: Config.DeviceConfig._RebroadcastMode.ValueType # 1
|
|
"""
|
|
Same as behavior as ALL but skips packet decoding and simply rebroadcasts them.
|
|
Only available in Repeater role. Setting this on any other roles will result in ALL behavior.
|
|
"""
|
|
LOCAL_ONLY: Config.DeviceConfig._RebroadcastMode.ValueType # 2
|
|
"""
|
|
Ignores observed messages from foreign meshes that are open or those which it cannot decrypt.
|
|
Only rebroadcasts message on the nodes local primary / secondary channels.
|
|
"""
|
|
KNOWN_ONLY: Config.DeviceConfig._RebroadcastMode.ValueType # 3
|
|
"""
|
|
Ignores observed messages from foreign meshes like LOCAL_ONLY,
|
|
but takes it step further by also ignoring messages from nodenums not in the node's known list (NodeDB)
|
|
"""
|
|
|
|
class RebroadcastMode(_RebroadcastMode, metaclass=_RebroadcastModeEnumTypeWrapper):
|
|
"""
|
|
Defines the device's behavior for how messages are rebroadcast
|
|
"""
|
|
|
|
ALL: Config.DeviceConfig.RebroadcastMode.ValueType # 0
|
|
"""
|
|
Default behavior.
|
|
Rebroadcast any observed message, if it was on our private channel or from another mesh with the same lora params.
|
|
"""
|
|
ALL_SKIP_DECODING: Config.DeviceConfig.RebroadcastMode.ValueType # 1
|
|
"""
|
|
Same as behavior as ALL but skips packet decoding and simply rebroadcasts them.
|
|
Only available in Repeater role. Setting this on any other roles will result in ALL behavior.
|
|
"""
|
|
LOCAL_ONLY: Config.DeviceConfig.RebroadcastMode.ValueType # 2
|
|
"""
|
|
Ignores observed messages from foreign meshes that are open or those which it cannot decrypt.
|
|
Only rebroadcasts message on the nodes local primary / secondary channels.
|
|
"""
|
|
KNOWN_ONLY: Config.DeviceConfig.RebroadcastMode.ValueType # 3
|
|
"""
|
|
Ignores observed messages from foreign meshes like LOCAL_ONLY,
|
|
but takes it step further by also ignoring messages from nodenums not in the node's known list (NodeDB)
|
|
"""
|
|
|
|
ROLE_FIELD_NUMBER: builtins.int
|
|
SERIAL_ENABLED_FIELD_NUMBER: builtins.int
|
|
DEBUG_LOG_ENABLED_FIELD_NUMBER: builtins.int
|
|
BUTTON_GPIO_FIELD_NUMBER: builtins.int
|
|
BUZZER_GPIO_FIELD_NUMBER: builtins.int
|
|
REBROADCAST_MODE_FIELD_NUMBER: builtins.int
|
|
NODE_INFO_BROADCAST_SECS_FIELD_NUMBER: builtins.int
|
|
DOUBLE_TAP_AS_BUTTON_PRESS_FIELD_NUMBER: builtins.int
|
|
IS_MANAGED_FIELD_NUMBER: builtins.int
|
|
DISABLE_TRIPLE_CLICK_FIELD_NUMBER: builtins.int
|
|
TZDEF_FIELD_NUMBER: builtins.int
|
|
role: global___Config.DeviceConfig.Role.ValueType
|
|
"""
|
|
Sets the role of node
|
|
"""
|
|
serial_enabled: builtins.bool
|
|
"""
|
|
Disabling this will disable the SerialConsole by not initilizing the StreamAPI
|
|
"""
|
|
debug_log_enabled: builtins.bool
|
|
"""
|
|
By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
|
|
Set this to true to leave the debug log outputting even when API is active.
|
|
"""
|
|
button_gpio: builtins.int
|
|
"""
|
|
For boards without a hard wired button, this is the pin number that will be used
|
|
Boards that have more than one button can swap the function with this one. defaults to BUTTON_PIN if defined.
|
|
"""
|
|
buzzer_gpio: builtins.int
|
|
"""
|
|
For boards without a PWM buzzer, this is the pin number that will be used
|
|
Defaults to PIN_BUZZER if defined.
|
|
"""
|
|
rebroadcast_mode: global___Config.DeviceConfig.RebroadcastMode.ValueType
|
|
"""
|
|
Sets the role of node
|
|
"""
|
|
node_info_broadcast_secs: builtins.int
|
|
"""
|
|
Send our nodeinfo this often
|
|
Defaults to 900 Seconds (15 minutes)
|
|
"""
|
|
double_tap_as_button_press: builtins.bool
|
|
"""
|
|
Treat double tap interrupt on supported accelerometers as a button press if set to true
|
|
"""
|
|
is_managed: builtins.bool
|
|
"""
|
|
If true, device is considered to be "managed" by a mesh administrator
|
|
Clients should then limit available configuration and administrative options inside the user interface
|
|
"""
|
|
disable_triple_click: builtins.bool
|
|
"""
|
|
Disables the triple-press of user button to enable or disable GPS
|
|
"""
|
|
tzdef: builtins.str
|
|
"""
|
|
POSIX Timezone definition string from https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv.
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
role: global___Config.DeviceConfig.Role.ValueType = ...,
|
|
serial_enabled: builtins.bool = ...,
|
|
debug_log_enabled: builtins.bool = ...,
|
|
button_gpio: builtins.int = ...,
|
|
buzzer_gpio: builtins.int = ...,
|
|
rebroadcast_mode: global___Config.DeviceConfig.RebroadcastMode.ValueType = ...,
|
|
node_info_broadcast_secs: builtins.int = ...,
|
|
double_tap_as_button_press: builtins.bool = ...,
|
|
is_managed: builtins.bool = ...,
|
|
disable_triple_click: builtins.bool = ...,
|
|
tzdef: builtins.str = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["button_gpio", b"button_gpio", "buzzer_gpio", b"buzzer_gpio", "debug_log_enabled", b"debug_log_enabled", "disable_triple_click", b"disable_triple_click", "double_tap_as_button_press", b"double_tap_as_button_press", "is_managed", b"is_managed", "node_info_broadcast_secs", b"node_info_broadcast_secs", "rebroadcast_mode", b"rebroadcast_mode", "role", b"role", "serial_enabled", b"serial_enabled", "tzdef", b"tzdef"]) -> None: ...
|
|
|
|
@typing_extensions.final
|
|
class PositionConfig(google.protobuf.message.Message):
|
|
"""
|
|
Position Config
|
|
"""
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _PositionFlags:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _PositionFlagsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.PositionConfig._PositionFlags.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
UNSET: Config.PositionConfig._PositionFlags.ValueType # 0
|
|
"""
|
|
Required for compilation
|
|
"""
|
|
ALTITUDE: Config.PositionConfig._PositionFlags.ValueType # 1
|
|
"""
|
|
Include an altitude value (if available)
|
|
"""
|
|
ALTITUDE_MSL: Config.PositionConfig._PositionFlags.ValueType # 2
|
|
"""
|
|
Altitude value is MSL
|
|
"""
|
|
GEOIDAL_SEPARATION: Config.PositionConfig._PositionFlags.ValueType # 4
|
|
"""
|
|
Include geoidal separation
|
|
"""
|
|
DOP: Config.PositionConfig._PositionFlags.ValueType # 8
|
|
"""
|
|
Include the DOP value ; PDOP used by default, see below
|
|
"""
|
|
HVDOP: Config.PositionConfig._PositionFlags.ValueType # 16
|
|
"""
|
|
If POS_DOP set, send separate HDOP / VDOP values instead of PDOP
|
|
"""
|
|
SATINVIEW: Config.PositionConfig._PositionFlags.ValueType # 32
|
|
"""
|
|
Include number of "satellites in view"
|
|
"""
|
|
SEQ_NO: Config.PositionConfig._PositionFlags.ValueType # 64
|
|
"""
|
|
Include a sequence number incremented per packet
|
|
"""
|
|
TIMESTAMP: Config.PositionConfig._PositionFlags.ValueType # 128
|
|
"""
|
|
Include positional timestamp (from GPS solution)
|
|
"""
|
|
HEADING: Config.PositionConfig._PositionFlags.ValueType # 256
|
|
"""
|
|
Include positional heading
|
|
Intended for use with vehicle not walking speeds
|
|
walking speeds are likely to be error prone like the compass
|
|
"""
|
|
SPEED: Config.PositionConfig._PositionFlags.ValueType # 512
|
|
"""
|
|
Include positional speed
|
|
Intended for use with vehicle not walking speeds
|
|
walking speeds are likely to be error prone like the compass
|
|
"""
|
|
|
|
class PositionFlags(_PositionFlags, metaclass=_PositionFlagsEnumTypeWrapper):
|
|
"""
|
|
Bit field of boolean configuration options, indicating which optional
|
|
fields to include when assembling POSITION messages.
|
|
Longitude, latitude, altitude, speed, heading, and DOP
|
|
are always included (also time if GPS-synced)
|
|
NOTE: the more fields are included, the larger the message will be -
|
|
leading to longer airtime and a higher risk of packet loss
|
|
"""
|
|
|
|
UNSET: Config.PositionConfig.PositionFlags.ValueType # 0
|
|
"""
|
|
Required for compilation
|
|
"""
|
|
ALTITUDE: Config.PositionConfig.PositionFlags.ValueType # 1
|
|
"""
|
|
Include an altitude value (if available)
|
|
"""
|
|
ALTITUDE_MSL: Config.PositionConfig.PositionFlags.ValueType # 2
|
|
"""
|
|
Altitude value is MSL
|
|
"""
|
|
GEOIDAL_SEPARATION: Config.PositionConfig.PositionFlags.ValueType # 4
|
|
"""
|
|
Include geoidal separation
|
|
"""
|
|
DOP: Config.PositionConfig.PositionFlags.ValueType # 8
|
|
"""
|
|
Include the DOP value ; PDOP used by default, see below
|
|
"""
|
|
HVDOP: Config.PositionConfig.PositionFlags.ValueType # 16
|
|
"""
|
|
If POS_DOP set, send separate HDOP / VDOP values instead of PDOP
|
|
"""
|
|
SATINVIEW: Config.PositionConfig.PositionFlags.ValueType # 32
|
|
"""
|
|
Include number of "satellites in view"
|
|
"""
|
|
SEQ_NO: Config.PositionConfig.PositionFlags.ValueType # 64
|
|
"""
|
|
Include a sequence number incremented per packet
|
|
"""
|
|
TIMESTAMP: Config.PositionConfig.PositionFlags.ValueType # 128
|
|
"""
|
|
Include positional timestamp (from GPS solution)
|
|
"""
|
|
HEADING: Config.PositionConfig.PositionFlags.ValueType # 256
|
|
"""
|
|
Include positional heading
|
|
Intended for use with vehicle not walking speeds
|
|
walking speeds are likely to be error prone like the compass
|
|
"""
|
|
SPEED: Config.PositionConfig.PositionFlags.ValueType # 512
|
|
"""
|
|
Include positional speed
|
|
Intended for use with vehicle not walking speeds
|
|
walking speeds are likely to be error prone like the compass
|
|
"""
|
|
|
|
class _GpsMode:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _GpsModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.PositionConfig._GpsMode.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
DISABLED: Config.PositionConfig._GpsMode.ValueType # 0
|
|
"""
|
|
GPS is present but disabled
|
|
"""
|
|
ENABLED: Config.PositionConfig._GpsMode.ValueType # 1
|
|
"""
|
|
GPS is present and enabled
|
|
"""
|
|
NOT_PRESENT: Config.PositionConfig._GpsMode.ValueType # 2
|
|
"""
|
|
GPS is not present on the device
|
|
"""
|
|
|
|
class GpsMode(_GpsMode, metaclass=_GpsModeEnumTypeWrapper): ...
|
|
DISABLED: Config.PositionConfig.GpsMode.ValueType # 0
|
|
"""
|
|
GPS is present but disabled
|
|
"""
|
|
ENABLED: Config.PositionConfig.GpsMode.ValueType # 1
|
|
"""
|
|
GPS is present and enabled
|
|
"""
|
|
NOT_PRESENT: Config.PositionConfig.GpsMode.ValueType # 2
|
|
"""
|
|
GPS is not present on the device
|
|
"""
|
|
|
|
POSITION_BROADCAST_SECS_FIELD_NUMBER: builtins.int
|
|
POSITION_BROADCAST_SMART_ENABLED_FIELD_NUMBER: builtins.int
|
|
FIXED_POSITION_FIELD_NUMBER: builtins.int
|
|
GPS_ENABLED_FIELD_NUMBER: builtins.int
|
|
GPS_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int
|
|
GPS_ATTEMPT_TIME_FIELD_NUMBER: builtins.int
|
|
POSITION_FLAGS_FIELD_NUMBER: builtins.int
|
|
RX_GPIO_FIELD_NUMBER: builtins.int
|
|
TX_GPIO_FIELD_NUMBER: builtins.int
|
|
BROADCAST_SMART_MINIMUM_DISTANCE_FIELD_NUMBER: builtins.int
|
|
BROADCAST_SMART_MINIMUM_INTERVAL_SECS_FIELD_NUMBER: builtins.int
|
|
GPS_EN_GPIO_FIELD_NUMBER: builtins.int
|
|
GPS_MODE_FIELD_NUMBER: builtins.int
|
|
position_broadcast_secs: builtins.int
|
|
"""
|
|
We should send our position this often (but only if it has changed significantly)
|
|
Defaults to 15 minutes
|
|
"""
|
|
position_broadcast_smart_enabled: builtins.bool
|
|
"""
|
|
Adaptive position braoadcast, which is now the default.
|
|
"""
|
|
fixed_position: builtins.bool
|
|
"""
|
|
If set, this node is at a fixed position.
|
|
We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node.
|
|
The lat/lon/alt can be set by an internal GPS or with the help of the app.
|
|
"""
|
|
gps_enabled: builtins.bool
|
|
"""
|
|
Is GPS enabled for this node?
|
|
"""
|
|
gps_update_interval: builtins.int
|
|
"""
|
|
How often should we try to get GPS position (in seconds)
|
|
or zero for the default of once every 30 seconds
|
|
or a very large value (maxint) to update only once at boot.
|
|
"""
|
|
gps_attempt_time: builtins.int
|
|
"""
|
|
Deprecated in favor of using smart / regular broadcast intervals as implicit attempt time
|
|
"""
|
|
position_flags: builtins.int
|
|
"""
|
|
Bit field of boolean configuration options for POSITION messages
|
|
(bitwise OR of PositionFlags)
|
|
"""
|
|
rx_gpio: builtins.int
|
|
"""
|
|
(Re)define GPS_RX_PIN for your board.
|
|
"""
|
|
tx_gpio: builtins.int
|
|
"""
|
|
(Re)define GPS_TX_PIN for your board.
|
|
"""
|
|
broadcast_smart_minimum_distance: builtins.int
|
|
"""
|
|
The minimum distance in meters traveled (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled
|
|
"""
|
|
broadcast_smart_minimum_interval_secs: builtins.int
|
|
"""
|
|
The minimum number of seconds (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled
|
|
"""
|
|
gps_en_gpio: builtins.int
|
|
"""
|
|
(Re)define PIN_GPS_EN for your board.
|
|
"""
|
|
gps_mode: global___Config.PositionConfig.GpsMode.ValueType
|
|
"""
|
|
Set where GPS is enabled, disabled, or not present
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
position_broadcast_secs: builtins.int = ...,
|
|
position_broadcast_smart_enabled: builtins.bool = ...,
|
|
fixed_position: builtins.bool = ...,
|
|
gps_enabled: builtins.bool = ...,
|
|
gps_update_interval: builtins.int = ...,
|
|
gps_attempt_time: builtins.int = ...,
|
|
position_flags: builtins.int = ...,
|
|
rx_gpio: builtins.int = ...,
|
|
tx_gpio: builtins.int = ...,
|
|
broadcast_smart_minimum_distance: builtins.int = ...,
|
|
broadcast_smart_minimum_interval_secs: builtins.int = ...,
|
|
gps_en_gpio: builtins.int = ...,
|
|
gps_mode: global___Config.PositionConfig.GpsMode.ValueType = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["broadcast_smart_minimum_distance", b"broadcast_smart_minimum_distance", "broadcast_smart_minimum_interval_secs", b"broadcast_smart_minimum_interval_secs", "fixed_position", b"fixed_position", "gps_attempt_time", b"gps_attempt_time", "gps_en_gpio", b"gps_en_gpio", "gps_enabled", b"gps_enabled", "gps_mode", b"gps_mode", "gps_update_interval", b"gps_update_interval", "position_broadcast_secs", b"position_broadcast_secs", "position_broadcast_smart_enabled", b"position_broadcast_smart_enabled", "position_flags", b"position_flags", "rx_gpio", b"rx_gpio", "tx_gpio", b"tx_gpio"]) -> None: ...
|
|
|
|
@typing_extensions.final
|
|
class PowerConfig(google.protobuf.message.Message):
|
|
"""
|
|
Power Config\\
|
|
See [Power Config](/docs/settings/config/power) for additional power config details.
|
|
"""
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
IS_POWER_SAVING_FIELD_NUMBER: builtins.int
|
|
ON_BATTERY_SHUTDOWN_AFTER_SECS_FIELD_NUMBER: builtins.int
|
|
ADC_MULTIPLIER_OVERRIDE_FIELD_NUMBER: builtins.int
|
|
WAIT_BLUETOOTH_SECS_FIELD_NUMBER: builtins.int
|
|
SDS_SECS_FIELD_NUMBER: builtins.int
|
|
LS_SECS_FIELD_NUMBER: builtins.int
|
|
MIN_WAKE_SECS_FIELD_NUMBER: builtins.int
|
|
DEVICE_BATTERY_INA_ADDRESS_FIELD_NUMBER: builtins.int
|
|
is_power_saving: builtins.bool
|
|
"""
|
|
Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio.
|
|
Don't use this setting if you want to use your device with the phone apps or are using a device without a user button.
|
|
Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles
|
|
"""
|
|
on_battery_shutdown_after_secs: builtins.int
|
|
"""
|
|
Description: If non-zero, the device will fully power off this many seconds after external power is removed.
|
|
"""
|
|
adc_multiplier_override: builtins.float
|
|
"""
|
|
Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
|
|
Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
|
|
https://meshtastic.org/docs/configuration/radio/power/#adc-multiplier-override
|
|
Should be set to floating point value between 2 and 6
|
|
"""
|
|
wait_bluetooth_secs: builtins.int
|
|
"""
|
|
Description: The number of seconds for to wait before turning off BLE in No Bluetooth states
|
|
Technical Details: ESP32 Only 0 for default of 1 minute
|
|
"""
|
|
sds_secs: builtins.int
|
|
"""
|
|
Super Deep Sleep Seconds
|
|
While in Light Sleep if mesh_sds_timeout_secs is exceeded we will lower into super deep sleep
|
|
for this value (default 1 year) or a button press
|
|
0 for default of one year
|
|
"""
|
|
ls_secs: builtins.int
|
|
"""
|
|
Description: In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
|
|
Technical Details: ESP32 Only 0 for default of 300
|
|
"""
|
|
min_wake_secs: builtins.int
|
|
"""
|
|
Description: While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
|
|
Technical Details: ESP32 Only 0 for default of 10 seconds
|
|
"""
|
|
device_battery_ina_address: builtins.int
|
|
"""
|
|
I2C address of INA_2XX to use for reading device battery voltage
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
is_power_saving: builtins.bool = ...,
|
|
on_battery_shutdown_after_secs: builtins.int = ...,
|
|
adc_multiplier_override: builtins.float = ...,
|
|
wait_bluetooth_secs: builtins.int = ...,
|
|
sds_secs: builtins.int = ...,
|
|
ls_secs: builtins.int = ...,
|
|
min_wake_secs: builtins.int = ...,
|
|
device_battery_ina_address: builtins.int = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["adc_multiplier_override", b"adc_multiplier_override", "device_battery_ina_address", b"device_battery_ina_address", "is_power_saving", b"is_power_saving", "ls_secs", b"ls_secs", "min_wake_secs", b"min_wake_secs", "on_battery_shutdown_after_secs", b"on_battery_shutdown_after_secs", "sds_secs", b"sds_secs", "wait_bluetooth_secs", b"wait_bluetooth_secs"]) -> None: ...
|
|
|
|
@typing_extensions.final
|
|
class NetworkConfig(google.protobuf.message.Message):
|
|
"""
|
|
Network Config
|
|
"""
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _AddressMode:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _AddressModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.NetworkConfig._AddressMode.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
DHCP: Config.NetworkConfig._AddressMode.ValueType # 0
|
|
"""
|
|
obtain ip address via DHCP
|
|
"""
|
|
STATIC: Config.NetworkConfig._AddressMode.ValueType # 1
|
|
"""
|
|
use static ip address
|
|
"""
|
|
|
|
class AddressMode(_AddressMode, metaclass=_AddressModeEnumTypeWrapper): ...
|
|
DHCP: Config.NetworkConfig.AddressMode.ValueType # 0
|
|
"""
|
|
obtain ip address via DHCP
|
|
"""
|
|
STATIC: Config.NetworkConfig.AddressMode.ValueType # 1
|
|
"""
|
|
use static ip address
|
|
"""
|
|
|
|
@typing_extensions.final
|
|
class IpV4Config(google.protobuf.message.Message):
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
IP_FIELD_NUMBER: builtins.int
|
|
GATEWAY_FIELD_NUMBER: builtins.int
|
|
SUBNET_FIELD_NUMBER: builtins.int
|
|
DNS_FIELD_NUMBER: builtins.int
|
|
ip: builtins.int
|
|
"""
|
|
Static IP address
|
|
"""
|
|
gateway: builtins.int
|
|
"""
|
|
Static gateway address
|
|
"""
|
|
subnet: builtins.int
|
|
"""
|
|
Static subnet mask
|
|
"""
|
|
dns: builtins.int
|
|
"""
|
|
Static DNS server address
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
ip: builtins.int = ...,
|
|
gateway: builtins.int = ...,
|
|
subnet: builtins.int = ...,
|
|
dns: builtins.int = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["dns", b"dns", "gateway", b"gateway", "ip", b"ip", "subnet", b"subnet"]) -> None: ...
|
|
|
|
WIFI_ENABLED_FIELD_NUMBER: builtins.int
|
|
WIFI_SSID_FIELD_NUMBER: builtins.int
|
|
WIFI_PSK_FIELD_NUMBER: builtins.int
|
|
NTP_SERVER_FIELD_NUMBER: builtins.int
|
|
ETH_ENABLED_FIELD_NUMBER: builtins.int
|
|
ADDRESS_MODE_FIELD_NUMBER: builtins.int
|
|
IPV4_CONFIG_FIELD_NUMBER: builtins.int
|
|
RSYSLOG_SERVER_FIELD_NUMBER: builtins.int
|
|
wifi_enabled: builtins.bool
|
|
"""
|
|
Enable WiFi (disables Bluetooth)
|
|
"""
|
|
wifi_ssid: builtins.str
|
|
"""
|
|
If set, this node will try to join the specified wifi network and
|
|
acquire an address via DHCP
|
|
"""
|
|
wifi_psk: builtins.str
|
|
"""
|
|
If set, will be use to authenticate to the named wifi
|
|
"""
|
|
ntp_server: builtins.str
|
|
"""
|
|
NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org`
|
|
"""
|
|
eth_enabled: builtins.bool
|
|
"""
|
|
Enable Ethernet
|
|
"""
|
|
address_mode: global___Config.NetworkConfig.AddressMode.ValueType
|
|
"""
|
|
acquire an address via DHCP or assign static
|
|
"""
|
|
@property
|
|
def ipv4_config(self) -> global___Config.NetworkConfig.IpV4Config:
|
|
"""
|
|
struct to keep static address
|
|
"""
|
|
rsyslog_server: builtins.str
|
|
"""
|
|
rsyslog Server and Port
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
wifi_enabled: builtins.bool = ...,
|
|
wifi_ssid: builtins.str = ...,
|
|
wifi_psk: builtins.str = ...,
|
|
ntp_server: builtins.str = ...,
|
|
eth_enabled: builtins.bool = ...,
|
|
address_mode: global___Config.NetworkConfig.AddressMode.ValueType = ...,
|
|
ipv4_config: global___Config.NetworkConfig.IpV4Config | None = ...,
|
|
rsyslog_server: builtins.str = ...,
|
|
) -> None: ...
|
|
def HasField(self, field_name: typing_extensions.Literal["ipv4_config", b"ipv4_config"]) -> builtins.bool: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["address_mode", b"address_mode", "eth_enabled", b"eth_enabled", "ipv4_config", b"ipv4_config", "ntp_server", b"ntp_server", "rsyslog_server", b"rsyslog_server", "wifi_enabled", b"wifi_enabled", "wifi_psk", b"wifi_psk", "wifi_ssid", b"wifi_ssid"]) -> None: ...
|
|
|
|
@typing_extensions.final
|
|
class DisplayConfig(google.protobuf.message.Message):
|
|
"""
|
|
Display Config
|
|
"""
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _GpsCoordinateFormat:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _GpsCoordinateFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._GpsCoordinateFormat.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
DEC: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 0
|
|
"""
|
|
GPS coordinates are displayed in the normal decimal degrees format:
|
|
DD.DDDDDD DDD.DDDDDD
|
|
"""
|
|
DMS: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 1
|
|
"""
|
|
GPS coordinates are displayed in the degrees minutes seconds format:
|
|
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
|
"""
|
|
UTM: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 2
|
|
"""
|
|
Universal Transverse Mercator format:
|
|
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
|
"""
|
|
MGRS: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 3
|
|
"""
|
|
Military Grid Reference System format:
|
|
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
|
E is easting, N is northing
|
|
"""
|
|
OLC: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 4
|
|
"""
|
|
Open Location Code (aka Plus Codes).
|
|
"""
|
|
OSGR: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 5
|
|
"""
|
|
Ordnance Survey Grid Reference (the National Grid System of the UK).
|
|
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
|
E is the easting, N is the northing
|
|
"""
|
|
|
|
class GpsCoordinateFormat(_GpsCoordinateFormat, metaclass=_GpsCoordinateFormatEnumTypeWrapper):
|
|
"""
|
|
How the GPS coordinates are displayed on the OLED screen.
|
|
"""
|
|
|
|
DEC: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 0
|
|
"""
|
|
GPS coordinates are displayed in the normal decimal degrees format:
|
|
DD.DDDDDD DDD.DDDDDD
|
|
"""
|
|
DMS: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 1
|
|
"""
|
|
GPS coordinates are displayed in the degrees minutes seconds format:
|
|
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
|
"""
|
|
UTM: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 2
|
|
"""
|
|
Universal Transverse Mercator format:
|
|
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
|
"""
|
|
MGRS: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 3
|
|
"""
|
|
Military Grid Reference System format:
|
|
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
|
E is easting, N is northing
|
|
"""
|
|
OLC: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 4
|
|
"""
|
|
Open Location Code (aka Plus Codes).
|
|
"""
|
|
OSGR: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 5
|
|
"""
|
|
Ordnance Survey Grid Reference (the National Grid System of the UK).
|
|
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
|
E is the easting, N is the northing
|
|
"""
|
|
|
|
class _DisplayUnits:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _DisplayUnitsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._DisplayUnits.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
METRIC: Config.DisplayConfig._DisplayUnits.ValueType # 0
|
|
"""
|
|
Metric (Default)
|
|
"""
|
|
IMPERIAL: Config.DisplayConfig._DisplayUnits.ValueType # 1
|
|
"""
|
|
Imperial
|
|
"""
|
|
|
|
class DisplayUnits(_DisplayUnits, metaclass=_DisplayUnitsEnumTypeWrapper):
|
|
"""
|
|
Unit display preference
|
|
"""
|
|
|
|
METRIC: Config.DisplayConfig.DisplayUnits.ValueType # 0
|
|
"""
|
|
Metric (Default)
|
|
"""
|
|
IMPERIAL: Config.DisplayConfig.DisplayUnits.ValueType # 1
|
|
"""
|
|
Imperial
|
|
"""
|
|
|
|
class _OledType:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _OledTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._OledType.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
OLED_AUTO: Config.DisplayConfig._OledType.ValueType # 0
|
|
"""
|
|
Default / Auto
|
|
"""
|
|
OLED_SSD1306: Config.DisplayConfig._OledType.ValueType # 1
|
|
"""
|
|
Default / Auto
|
|
"""
|
|
OLED_SH1106: Config.DisplayConfig._OledType.ValueType # 2
|
|
"""
|
|
Default / Auto
|
|
"""
|
|
OLED_SH1107: Config.DisplayConfig._OledType.ValueType # 3
|
|
"""
|
|
Can not be auto detected but set by proto. Used for 128x128 screens
|
|
"""
|
|
|
|
class OledType(_OledType, metaclass=_OledTypeEnumTypeWrapper):
|
|
"""
|
|
Override OLED outo detect with this if it fails.
|
|
"""
|
|
|
|
OLED_AUTO: Config.DisplayConfig.OledType.ValueType # 0
|
|
"""
|
|
Default / Auto
|
|
"""
|
|
OLED_SSD1306: Config.DisplayConfig.OledType.ValueType # 1
|
|
"""
|
|
Default / Auto
|
|
"""
|
|
OLED_SH1106: Config.DisplayConfig.OledType.ValueType # 2
|
|
"""
|
|
Default / Auto
|
|
"""
|
|
OLED_SH1107: Config.DisplayConfig.OledType.ValueType # 3
|
|
"""
|
|
Can not be auto detected but set by proto. Used for 128x128 screens
|
|
"""
|
|
|
|
class _DisplayMode:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _DisplayModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._DisplayMode.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
DEFAULT: Config.DisplayConfig._DisplayMode.ValueType # 0
|
|
"""
|
|
Default. The old style for the 128x64 OLED screen
|
|
"""
|
|
TWOCOLOR: Config.DisplayConfig._DisplayMode.ValueType # 1
|
|
"""
|
|
Rearrange display elements to cater for bicolor OLED displays
|
|
"""
|
|
INVERTED: Config.DisplayConfig._DisplayMode.ValueType # 2
|
|
"""
|
|
Same as TwoColor, but with inverted top bar. Not so good for Epaper displays
|
|
"""
|
|
COLOR: Config.DisplayConfig._DisplayMode.ValueType # 3
|
|
"""
|
|
TFT Full Color Displays (not implemented yet)
|
|
"""
|
|
|
|
class DisplayMode(_DisplayMode, metaclass=_DisplayModeEnumTypeWrapper): ...
|
|
DEFAULT: Config.DisplayConfig.DisplayMode.ValueType # 0
|
|
"""
|
|
Default. The old style for the 128x64 OLED screen
|
|
"""
|
|
TWOCOLOR: Config.DisplayConfig.DisplayMode.ValueType # 1
|
|
"""
|
|
Rearrange display elements to cater for bicolor OLED displays
|
|
"""
|
|
INVERTED: Config.DisplayConfig.DisplayMode.ValueType # 2
|
|
"""
|
|
Same as TwoColor, but with inverted top bar. Not so good for Epaper displays
|
|
"""
|
|
COLOR: Config.DisplayConfig.DisplayMode.ValueType # 3
|
|
"""
|
|
TFT Full Color Displays (not implemented yet)
|
|
"""
|
|
|
|
SCREEN_ON_SECS_FIELD_NUMBER: builtins.int
|
|
GPS_FORMAT_FIELD_NUMBER: builtins.int
|
|
AUTO_SCREEN_CAROUSEL_SECS_FIELD_NUMBER: builtins.int
|
|
COMPASS_NORTH_TOP_FIELD_NUMBER: builtins.int
|
|
FLIP_SCREEN_FIELD_NUMBER: builtins.int
|
|
UNITS_FIELD_NUMBER: builtins.int
|
|
OLED_FIELD_NUMBER: builtins.int
|
|
DISPLAYMODE_FIELD_NUMBER: builtins.int
|
|
HEADING_BOLD_FIELD_NUMBER: builtins.int
|
|
WAKE_ON_TAP_OR_MOTION_FIELD_NUMBER: builtins.int
|
|
screen_on_secs: builtins.int
|
|
"""
|
|
Number of seconds the screen stays on after pressing the user button or receiving a message
|
|
0 for default of one minute MAXUINT for always on
|
|
"""
|
|
gps_format: global___Config.DisplayConfig.GpsCoordinateFormat.ValueType
|
|
"""
|
|
How the GPS coordinates are formatted on the OLED screen.
|
|
"""
|
|
auto_screen_carousel_secs: builtins.int
|
|
"""
|
|
Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
|
|
Potentially useful for devices without user buttons.
|
|
"""
|
|
compass_north_top: builtins.bool
|
|
"""
|
|
If this is set, the displayed compass will always point north. if unset, the old behaviour
|
|
(top of display is heading direction) is used.
|
|
"""
|
|
flip_screen: builtins.bool
|
|
"""
|
|
Flip screen vertically, for cases that mount the screen upside down
|
|
"""
|
|
units: global___Config.DisplayConfig.DisplayUnits.ValueType
|
|
"""
|
|
Perferred display units
|
|
"""
|
|
oled: global___Config.DisplayConfig.OledType.ValueType
|
|
"""
|
|
Override auto-detect in screen
|
|
"""
|
|
displaymode: global___Config.DisplayConfig.DisplayMode.ValueType
|
|
"""
|
|
Display Mode
|
|
"""
|
|
heading_bold: builtins.bool
|
|
"""
|
|
Print first line in pseudo-bold? FALSE is original style, TRUE is bold
|
|
"""
|
|
wake_on_tap_or_motion: builtins.bool
|
|
"""
|
|
Should we wake the screen up on accelerometer detected motion or tap
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
screen_on_secs: builtins.int = ...,
|
|
gps_format: global___Config.DisplayConfig.GpsCoordinateFormat.ValueType = ...,
|
|
auto_screen_carousel_secs: builtins.int = ...,
|
|
compass_north_top: builtins.bool = ...,
|
|
flip_screen: builtins.bool = ...,
|
|
units: global___Config.DisplayConfig.DisplayUnits.ValueType = ...,
|
|
oled: global___Config.DisplayConfig.OledType.ValueType = ...,
|
|
displaymode: global___Config.DisplayConfig.DisplayMode.ValueType = ...,
|
|
heading_bold: builtins.bool = ...,
|
|
wake_on_tap_or_motion: builtins.bool = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["auto_screen_carousel_secs", b"auto_screen_carousel_secs", "compass_north_top", b"compass_north_top", "displaymode", b"displaymode", "flip_screen", b"flip_screen", "gps_format", b"gps_format", "heading_bold", b"heading_bold", "oled", b"oled", "screen_on_secs", b"screen_on_secs", "units", b"units", "wake_on_tap_or_motion", b"wake_on_tap_or_motion"]) -> None: ...
|
|
|
|
@typing_extensions.final
|
|
class LoRaConfig(google.protobuf.message.Message):
|
|
"""
|
|
Lora Config
|
|
"""
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _RegionCode:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _RegionCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.LoRaConfig._RegionCode.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
UNSET: Config.LoRaConfig._RegionCode.ValueType # 0
|
|
"""
|
|
Region is not set
|
|
"""
|
|
US: Config.LoRaConfig._RegionCode.ValueType # 1
|
|
"""
|
|
United States
|
|
"""
|
|
EU_433: Config.LoRaConfig._RegionCode.ValueType # 2
|
|
"""
|
|
European Union 433mhz
|
|
"""
|
|
EU_868: Config.LoRaConfig._RegionCode.ValueType # 3
|
|
"""
|
|
European Union 868mhz
|
|
"""
|
|
CN: Config.LoRaConfig._RegionCode.ValueType # 4
|
|
"""
|
|
China
|
|
"""
|
|
JP: Config.LoRaConfig._RegionCode.ValueType # 5
|
|
"""
|
|
Japan
|
|
"""
|
|
ANZ: Config.LoRaConfig._RegionCode.ValueType # 6
|
|
"""
|
|
Australia / New Zealand
|
|
"""
|
|
KR: Config.LoRaConfig._RegionCode.ValueType # 7
|
|
"""
|
|
Korea
|
|
"""
|
|
TW: Config.LoRaConfig._RegionCode.ValueType # 8
|
|
"""
|
|
Taiwan
|
|
"""
|
|
RU: Config.LoRaConfig._RegionCode.ValueType # 9
|
|
"""
|
|
Russia
|
|
"""
|
|
IN: Config.LoRaConfig._RegionCode.ValueType # 10
|
|
"""
|
|
India
|
|
"""
|
|
NZ_865: Config.LoRaConfig._RegionCode.ValueType # 11
|
|
"""
|
|
New Zealand 865mhz
|
|
"""
|
|
TH: Config.LoRaConfig._RegionCode.ValueType # 12
|
|
"""
|
|
Thailand
|
|
"""
|
|
LORA_24: Config.LoRaConfig._RegionCode.ValueType # 13
|
|
"""
|
|
WLAN Band
|
|
"""
|
|
UA_433: Config.LoRaConfig._RegionCode.ValueType # 14
|
|
"""
|
|
Ukraine 433mhz
|
|
"""
|
|
UA_868: Config.LoRaConfig._RegionCode.ValueType # 15
|
|
"""
|
|
Ukraine 868mhz
|
|
"""
|
|
MY_433: Config.LoRaConfig._RegionCode.ValueType # 16
|
|
"""
|
|
Malaysia 433mhz
|
|
"""
|
|
MY_919: Config.LoRaConfig._RegionCode.ValueType # 17
|
|
"""
|
|
Malaysia 919mhz
|
|
"""
|
|
SG_923: Config.LoRaConfig._RegionCode.ValueType # 18
|
|
"""
|
|
Singapore 923mhz
|
|
"""
|
|
|
|
class RegionCode(_RegionCode, metaclass=_RegionCodeEnumTypeWrapper): ...
|
|
UNSET: Config.LoRaConfig.RegionCode.ValueType # 0
|
|
"""
|
|
Region is not set
|
|
"""
|
|
US: Config.LoRaConfig.RegionCode.ValueType # 1
|
|
"""
|
|
United States
|
|
"""
|
|
EU_433: Config.LoRaConfig.RegionCode.ValueType # 2
|
|
"""
|
|
European Union 433mhz
|
|
"""
|
|
EU_868: Config.LoRaConfig.RegionCode.ValueType # 3
|
|
"""
|
|
European Union 868mhz
|
|
"""
|
|
CN: Config.LoRaConfig.RegionCode.ValueType # 4
|
|
"""
|
|
China
|
|
"""
|
|
JP: Config.LoRaConfig.RegionCode.ValueType # 5
|
|
"""
|
|
Japan
|
|
"""
|
|
ANZ: Config.LoRaConfig.RegionCode.ValueType # 6
|
|
"""
|
|
Australia / New Zealand
|
|
"""
|
|
KR: Config.LoRaConfig.RegionCode.ValueType # 7
|
|
"""
|
|
Korea
|
|
"""
|
|
TW: Config.LoRaConfig.RegionCode.ValueType # 8
|
|
"""
|
|
Taiwan
|
|
"""
|
|
RU: Config.LoRaConfig.RegionCode.ValueType # 9
|
|
"""
|
|
Russia
|
|
"""
|
|
IN: Config.LoRaConfig.RegionCode.ValueType # 10
|
|
"""
|
|
India
|
|
"""
|
|
NZ_865: Config.LoRaConfig.RegionCode.ValueType # 11
|
|
"""
|
|
New Zealand 865mhz
|
|
"""
|
|
TH: Config.LoRaConfig.RegionCode.ValueType # 12
|
|
"""
|
|
Thailand
|
|
"""
|
|
LORA_24: Config.LoRaConfig.RegionCode.ValueType # 13
|
|
"""
|
|
WLAN Band
|
|
"""
|
|
UA_433: Config.LoRaConfig.RegionCode.ValueType # 14
|
|
"""
|
|
Ukraine 433mhz
|
|
"""
|
|
UA_868: Config.LoRaConfig.RegionCode.ValueType # 15
|
|
"""
|
|
Ukraine 868mhz
|
|
"""
|
|
MY_433: Config.LoRaConfig.RegionCode.ValueType # 16
|
|
"""
|
|
Malaysia 433mhz
|
|
"""
|
|
MY_919: Config.LoRaConfig.RegionCode.ValueType # 17
|
|
"""
|
|
Malaysia 919mhz
|
|
"""
|
|
SG_923: Config.LoRaConfig.RegionCode.ValueType # 18
|
|
"""
|
|
Singapore 923mhz
|
|
"""
|
|
|
|
class _ModemPreset:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _ModemPresetEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.LoRaConfig._ModemPreset.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
LONG_FAST: Config.LoRaConfig._ModemPreset.ValueType # 0
|
|
"""
|
|
Long Range - Fast
|
|
"""
|
|
LONG_SLOW: Config.LoRaConfig._ModemPreset.ValueType # 1
|
|
"""
|
|
Long Range - Slow
|
|
"""
|
|
VERY_LONG_SLOW: Config.LoRaConfig._ModemPreset.ValueType # 2
|
|
"""
|
|
Very Long Range - Slow
|
|
"""
|
|
MEDIUM_SLOW: Config.LoRaConfig._ModemPreset.ValueType # 3
|
|
"""
|
|
Medium Range - Slow
|
|
"""
|
|
MEDIUM_FAST: Config.LoRaConfig._ModemPreset.ValueType # 4
|
|
"""
|
|
Medium Range - Fast
|
|
"""
|
|
SHORT_SLOW: Config.LoRaConfig._ModemPreset.ValueType # 5
|
|
"""
|
|
Short Range - Slow
|
|
"""
|
|
SHORT_FAST: Config.LoRaConfig._ModemPreset.ValueType # 6
|
|
"""
|
|
Short Range - Fast
|
|
"""
|
|
LONG_MODERATE: Config.LoRaConfig._ModemPreset.ValueType # 7
|
|
"""
|
|
Long Range - Moderately Fast
|
|
"""
|
|
|
|
class ModemPreset(_ModemPreset, metaclass=_ModemPresetEnumTypeWrapper):
|
|
"""
|
|
Standard predefined channel settings
|
|
Note: these mappings must match ModemPreset Choice in the device code.
|
|
"""
|
|
|
|
LONG_FAST: Config.LoRaConfig.ModemPreset.ValueType # 0
|
|
"""
|
|
Long Range - Fast
|
|
"""
|
|
LONG_SLOW: Config.LoRaConfig.ModemPreset.ValueType # 1
|
|
"""
|
|
Long Range - Slow
|
|
"""
|
|
VERY_LONG_SLOW: Config.LoRaConfig.ModemPreset.ValueType # 2
|
|
"""
|
|
Very Long Range - Slow
|
|
"""
|
|
MEDIUM_SLOW: Config.LoRaConfig.ModemPreset.ValueType # 3
|
|
"""
|
|
Medium Range - Slow
|
|
"""
|
|
MEDIUM_FAST: Config.LoRaConfig.ModemPreset.ValueType # 4
|
|
"""
|
|
Medium Range - Fast
|
|
"""
|
|
SHORT_SLOW: Config.LoRaConfig.ModemPreset.ValueType # 5
|
|
"""
|
|
Short Range - Slow
|
|
"""
|
|
SHORT_FAST: Config.LoRaConfig.ModemPreset.ValueType # 6
|
|
"""
|
|
Short Range - Fast
|
|
"""
|
|
LONG_MODERATE: Config.LoRaConfig.ModemPreset.ValueType # 7
|
|
"""
|
|
Long Range - Moderately Fast
|
|
"""
|
|
|
|
USE_PRESET_FIELD_NUMBER: builtins.int
|
|
MODEM_PRESET_FIELD_NUMBER: builtins.int
|
|
BANDWIDTH_FIELD_NUMBER: builtins.int
|
|
SPREAD_FACTOR_FIELD_NUMBER: builtins.int
|
|
CODING_RATE_FIELD_NUMBER: builtins.int
|
|
FREQUENCY_OFFSET_FIELD_NUMBER: builtins.int
|
|
REGION_FIELD_NUMBER: builtins.int
|
|
HOP_LIMIT_FIELD_NUMBER: builtins.int
|
|
TX_ENABLED_FIELD_NUMBER: builtins.int
|
|
TX_POWER_FIELD_NUMBER: builtins.int
|
|
CHANNEL_NUM_FIELD_NUMBER: builtins.int
|
|
OVERRIDE_DUTY_CYCLE_FIELD_NUMBER: builtins.int
|
|
SX126X_RX_BOOSTED_GAIN_FIELD_NUMBER: builtins.int
|
|
OVERRIDE_FREQUENCY_FIELD_NUMBER: builtins.int
|
|
IGNORE_INCOMING_FIELD_NUMBER: builtins.int
|
|
IGNORE_MQTT_FIELD_NUMBER: builtins.int
|
|
use_preset: builtins.bool
|
|
"""
|
|
When enabled, the `modem_preset` fields will be adhered to, else the `bandwidth`/`spread_factor`/`coding_rate`
|
|
will be taked from their respective manually defined fields
|
|
"""
|
|
modem_preset: global___Config.LoRaConfig.ModemPreset.ValueType
|
|
"""
|
|
Either modem_config or bandwidth/spreading/coding will be specified - NOT BOTH.
|
|
As a heuristic: If bandwidth is specified, do not use modem_config.
|
|
Because protobufs take ZERO space when the value is zero this works out nicely.
|
|
This value is replaced by bandwidth/spread_factor/coding_rate.
|
|
If you'd like to experiment with other options add them to MeshRadio.cpp in the device code.
|
|
"""
|
|
bandwidth: builtins.int
|
|
"""
|
|
Bandwidth in MHz
|
|
Certain bandwidth numbers are 'special' and will be converted to the
|
|
appropriate floating point value: 31 -> 31.25MHz
|
|
"""
|
|
spread_factor: builtins.int
|
|
"""
|
|
A number from 7 to 12.
|
|
Indicates number of chirps per symbol as 1<<spread_factor.
|
|
"""
|
|
coding_rate: builtins.int
|
|
"""
|
|
The denominator of the coding rate.
|
|
ie for 4/5, the value is 5. 4/8 the value is 8.
|
|
"""
|
|
frequency_offset: builtins.float
|
|
"""
|
|
This parameter is for advanced users with advanced test equipment, we do not recommend most users use it.
|
|
A frequency offset that is added to to the calculated band center frequency.
|
|
Used to correct for crystal calibration errors.
|
|
"""
|
|
region: global___Config.LoRaConfig.RegionCode.ValueType
|
|
"""
|
|
The region code for the radio (US, CN, EU433, etc...)
|
|
"""
|
|
hop_limit: builtins.int
|
|
"""
|
|
Maximum number of hops. This can't be greater than 7.
|
|
Default of 3
|
|
Attempting to set a value > 7 results in the default
|
|
"""
|
|
tx_enabled: builtins.bool
|
|
"""
|
|
Disable TX from the LoRa radio. Useful for hot-swapping antennas and other tests.
|
|
Defaults to false
|
|
"""
|
|
tx_power: builtins.int
|
|
"""
|
|
If zero, then use default max legal continuous power (ie. something that won't
|
|
burn out the radio hardware)
|
|
In most cases you should use zero here.
|
|
Units are in dBm.
|
|
"""
|
|
channel_num: builtins.int
|
|
"""
|
|
This controls the actual hardware frequency the radio transmits on.
|
|
Most users should never need to be exposed to this field/concept.
|
|
A channel number between 1 and NUM_CHANNELS (whatever the max is in the current region).
|
|
If ZERO then the rule is "use the old channel name hash based
|
|
algorithm to derive the channel number")
|
|
If using the hash algorithm the channel number will be: hash(channel_name) %
|
|
NUM_CHANNELS (Where num channels depends on the regulatory region).
|
|
"""
|
|
override_duty_cycle: builtins.bool
|
|
"""
|
|
If true, duty cycle limits will be exceeded and thus you're possibly not following
|
|
the local regulations if you're not a HAM.
|
|
Has no effect if the duty cycle of the used region is 100%.
|
|
"""
|
|
sx126x_rx_boosted_gain: builtins.bool
|
|
"""
|
|
If true, sets RX boosted gain mode on SX126X based radios
|
|
"""
|
|
override_frequency: builtins.float
|
|
"""
|
|
This parameter is for advanced users and licensed HAM radio operators.
|
|
Ignore Channel Calculation and use this frequency instead. The frequency_offset
|
|
will still be applied. This will allow you to use out-of-band frequencies.
|
|
Please respect your local laws and regulations. If you are a HAM, make sure you
|
|
enable HAM mode and turn off encryption.
|
|
"""
|
|
@property
|
|
def ignore_incoming(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
|
|
"""
|
|
For testing it is useful sometimes to force a node to never listen to
|
|
particular other nodes (simulating radio out of range). All nodenums listed
|
|
in ignore_incoming will have packets they send dropped on receive (by router.cpp)
|
|
"""
|
|
ignore_mqtt: builtins.bool
|
|
"""
|
|
If true, the device will not process any packets received via LoRa that passed via MQTT anywhere on the path towards it.
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
use_preset: builtins.bool = ...,
|
|
modem_preset: global___Config.LoRaConfig.ModemPreset.ValueType = ...,
|
|
bandwidth: builtins.int = ...,
|
|
spread_factor: builtins.int = ...,
|
|
coding_rate: builtins.int = ...,
|
|
frequency_offset: builtins.float = ...,
|
|
region: global___Config.LoRaConfig.RegionCode.ValueType = ...,
|
|
hop_limit: builtins.int = ...,
|
|
tx_enabled: builtins.bool = ...,
|
|
tx_power: builtins.int = ...,
|
|
channel_num: builtins.int = ...,
|
|
override_duty_cycle: builtins.bool = ...,
|
|
sx126x_rx_boosted_gain: builtins.bool = ...,
|
|
override_frequency: builtins.float = ...,
|
|
ignore_incoming: collections.abc.Iterable[builtins.int] | None = ...,
|
|
ignore_mqtt: builtins.bool = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["bandwidth", b"bandwidth", "channel_num", b"channel_num", "coding_rate", b"coding_rate", "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", "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_extensions.final
|
|
class BluetoothConfig(google.protobuf.message.Message):
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _PairingMode:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _PairingModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.BluetoothConfig._PairingMode.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
RANDOM_PIN: Config.BluetoothConfig._PairingMode.ValueType # 0
|
|
"""
|
|
Device generates a random PIN that will be shown on the screen of the device for pairing
|
|
"""
|
|
FIXED_PIN: Config.BluetoothConfig._PairingMode.ValueType # 1
|
|
"""
|
|
Device requires a specified fixed PIN for pairing
|
|
"""
|
|
NO_PIN: Config.BluetoothConfig._PairingMode.ValueType # 2
|
|
"""
|
|
Device requires no PIN for pairing
|
|
"""
|
|
|
|
class PairingMode(_PairingMode, metaclass=_PairingModeEnumTypeWrapper): ...
|
|
RANDOM_PIN: Config.BluetoothConfig.PairingMode.ValueType # 0
|
|
"""
|
|
Device generates a random PIN that will be shown on the screen of the device for pairing
|
|
"""
|
|
FIXED_PIN: Config.BluetoothConfig.PairingMode.ValueType # 1
|
|
"""
|
|
Device requires a specified fixed PIN for pairing
|
|
"""
|
|
NO_PIN: Config.BluetoothConfig.PairingMode.ValueType # 2
|
|
"""
|
|
Device requires no PIN for pairing
|
|
"""
|
|
|
|
ENABLED_FIELD_NUMBER: builtins.int
|
|
MODE_FIELD_NUMBER: builtins.int
|
|
FIXED_PIN_FIELD_NUMBER: builtins.int
|
|
enabled: builtins.bool
|
|
"""
|
|
Enable Bluetooth on the device
|
|
"""
|
|
mode: global___Config.BluetoothConfig.PairingMode.ValueType
|
|
"""
|
|
Determines the pairing strategy for the device
|
|
"""
|
|
fixed_pin: builtins.int
|
|
"""
|
|
Specified PIN for PairingMode.FixedPin
|
|
"""
|
|
def __init__(
|
|
self,
|
|
*,
|
|
enabled: builtins.bool = ...,
|
|
mode: global___Config.BluetoothConfig.PairingMode.ValueType = ...,
|
|
fixed_pin: builtins.int = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "fixed_pin", b"fixed_pin", "mode", b"mode"]) -> None: ...
|
|
|
|
DEVICE_FIELD_NUMBER: builtins.int
|
|
POSITION_FIELD_NUMBER: builtins.int
|
|
POWER_FIELD_NUMBER: builtins.int
|
|
NETWORK_FIELD_NUMBER: builtins.int
|
|
DISPLAY_FIELD_NUMBER: builtins.int
|
|
LORA_FIELD_NUMBER: builtins.int
|
|
BLUETOOTH_FIELD_NUMBER: builtins.int
|
|
@property
|
|
def device(self) -> global___Config.DeviceConfig: ...
|
|
@property
|
|
def position(self) -> global___Config.PositionConfig: ...
|
|
@property
|
|
def power(self) -> global___Config.PowerConfig: ...
|
|
@property
|
|
def network(self) -> global___Config.NetworkConfig: ...
|
|
@property
|
|
def display(self) -> global___Config.DisplayConfig: ...
|
|
@property
|
|
def lora(self) -> global___Config.LoRaConfig: ...
|
|
@property
|
|
def bluetooth(self) -> global___Config.BluetoothConfig: ...
|
|
def __init__(
|
|
self,
|
|
*,
|
|
device: global___Config.DeviceConfig | None = ...,
|
|
position: global___Config.PositionConfig | None = ...,
|
|
power: global___Config.PowerConfig | None = ...,
|
|
network: global___Config.NetworkConfig | None = ...,
|
|
display: global___Config.DisplayConfig | None = ...,
|
|
lora: global___Config.LoRaConfig | None = ...,
|
|
bluetooth: global___Config.BluetoothConfig | None = ...,
|
|
) -> None: ...
|
|
def HasField(self, field_name: typing_extensions.Literal["bluetooth", b"bluetooth", "device", b"device", "display", b"display", "lora", b"lora", "network", b"network", "payload_variant", b"payload_variant", "position", b"position", "power", b"power"]) -> builtins.bool: ...
|
|
def ClearField(self, field_name: typing_extensions.Literal["bluetooth", b"bluetooth", "device", b"device", "display", b"display", "lora", b"lora", "network", b"network", "payload_variant", b"payload_variant", "position", b"position", "power", b"power"]) -> None: ...
|
|
def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["device", "position", "power", "network", "display", "lora", "bluetooth"] | None: ...
|
|
|
|
global___Config = Config
|