From 0b9af0dcba4adb6e3b9c199147605c991ff70664 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Tue, 25 Jun 2024 19:05:46 -0700 Subject: [PATCH 1/4] remove old protobufs (moving to meshtastic.protobuf) --- meshtastic/admin_pb2.py | 39 - meshtastic/admin_pb2.pyi | 557 ------ meshtastic/apponly_pb2.py | 28 - meshtastic/apponly_pb2.pyi | 54 - meshtastic/atak_pb2.py | 40 - meshtastic/atak_pb2.pyi | 464 ----- meshtastic/cannedmessages_pb2.py | 26 - meshtastic/cannedmessages_pb2.pyi | 37 - meshtastic/channel_pb2.py | 34 - meshtastic/channel_pb2.pyi | 231 --- meshtastic/clientonly_pb2.py | 27 - meshtastic/clientonly_pb2.pyi | 77 - meshtastic/config_pb2.py | 70 - meshtastic/config_pb2.pyi | 1508 --------------- meshtastic/connection_status_pb2.py | 36 - meshtastic/connection_status_pb2.pyi | 227 --- meshtastic/deviceonly_pb2.py | 46 - meshtastic/deviceonly_pb2.pyi | 386 ---- meshtastic/localonly_pb2.py | 30 - meshtastic/localonly_pb2.pyi | 204 --- meshtastic/mesh_pb2.py | 98 - meshtastic/mesh_pb2.pyi | 2526 -------------------------- meshtastic/module_config_pb2.py | 66 - meshtastic/module_config_pb2.pyi | 1184 ------------ meshtastic/mqtt_pb2.py | 30 - meshtastic/mqtt_pb2.pyi | 151 -- meshtastic/nanopb_pb2.py | 39 - meshtastic/nanopb_pb2.pyi | 321 ---- meshtastic/paxcount_pb2.py | 26 - meshtastic/paxcount_pb2.pyi | 49 - meshtastic/portnums_pb2.py | 26 - meshtastic/portnums_pb2.pyi | 369 ---- meshtastic/remote_hardware_pb2.py | 28 - meshtastic/remote_hardware_pb2.pyi | 125 -- meshtastic/rtttl_pb2.py | 26 - meshtastic/rtttl_pb2.pyi | 37 - meshtastic/storeforward_pb2.py | 34 - meshtastic/storeforward_pb2.pyi | 341 ---- meshtastic/telemetry_pb2.py | 36 - meshtastic/telemetry_pb2.pyi | 571 ------ meshtastic/xmodem_pb2.py | 28 - meshtastic/xmodem_pb2.pyi | 66 - 42 files changed, 10298 deletions(-) delete mode 100644 meshtastic/admin_pb2.py delete mode 100644 meshtastic/admin_pb2.pyi delete mode 100644 meshtastic/apponly_pb2.py delete mode 100644 meshtastic/apponly_pb2.pyi delete mode 100644 meshtastic/atak_pb2.py delete mode 100644 meshtastic/atak_pb2.pyi delete mode 100644 meshtastic/cannedmessages_pb2.py delete mode 100644 meshtastic/cannedmessages_pb2.pyi delete mode 100644 meshtastic/channel_pb2.py delete mode 100644 meshtastic/channel_pb2.pyi delete mode 100644 meshtastic/clientonly_pb2.py delete mode 100644 meshtastic/clientonly_pb2.pyi delete mode 100644 meshtastic/config_pb2.py delete mode 100644 meshtastic/config_pb2.pyi delete mode 100644 meshtastic/connection_status_pb2.py delete mode 100644 meshtastic/connection_status_pb2.pyi delete mode 100644 meshtastic/deviceonly_pb2.py delete mode 100644 meshtastic/deviceonly_pb2.pyi delete mode 100644 meshtastic/localonly_pb2.py delete mode 100644 meshtastic/localonly_pb2.pyi delete mode 100644 meshtastic/mesh_pb2.py delete mode 100644 meshtastic/mesh_pb2.pyi delete mode 100644 meshtastic/module_config_pb2.py delete mode 100644 meshtastic/module_config_pb2.pyi delete mode 100644 meshtastic/mqtt_pb2.py delete mode 100644 meshtastic/mqtt_pb2.pyi delete mode 100644 meshtastic/nanopb_pb2.py delete mode 100644 meshtastic/nanopb_pb2.pyi delete mode 100644 meshtastic/paxcount_pb2.py delete mode 100644 meshtastic/paxcount_pb2.pyi delete mode 100644 meshtastic/portnums_pb2.py delete mode 100644 meshtastic/portnums_pb2.pyi delete mode 100644 meshtastic/remote_hardware_pb2.py delete mode 100644 meshtastic/remote_hardware_pb2.pyi delete mode 100644 meshtastic/rtttl_pb2.py delete mode 100644 meshtastic/rtttl_pb2.pyi delete mode 100644 meshtastic/storeforward_pb2.py delete mode 100644 meshtastic/storeforward_pb2.pyi delete mode 100644 meshtastic/telemetry_pb2.py delete mode 100644 meshtastic/telemetry_pb2.pyi delete mode 100644 meshtastic/xmodem_pb2.py delete mode 100644 meshtastic/xmodem_pb2.pyi diff --git a/meshtastic/admin_pb2.py b/meshtastic/admin_pb2.py deleted file mode 100644 index e98de3e..0000000 --- a/meshtastic/admin_pb2.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/admin.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import channel_pb2 as meshtastic_dot_channel__pb2 -from meshtastic import config_pb2 as meshtastic_dot_config__pb2 -from meshtastic import connection_status_pb2 as meshtastic_dot_connection__status__pb2 -from meshtastic import mesh_pb2 as meshtastic_dot_mesh__pb2 -from meshtastic import module_config_pb2 as meshtastic_dot_module__config__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16meshtastic/admin.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\x1a\"meshtastic/connection_status.proto\x1a\x15meshtastic/mesh.proto\x1a\x1emeshtastic/module_config.proto\"\xce\x11\n\x0c\x41\x64minMessage\x12\x1d\n\x13get_channel_request\x18\x01 \x01(\rH\x00\x12\x33\n\x14get_channel_response\x18\x02 \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12\x1b\n\x11get_owner_request\x18\x03 \x01(\x08H\x00\x12.\n\x12get_owner_response\x18\x04 \x01(\x0b\x32\x10.meshtastic.UserH\x00\x12\x41\n\x12get_config_request\x18\x05 \x01(\x0e\x32#.meshtastic.AdminMessage.ConfigTypeH\x00\x12\x31\n\x13get_config_response\x18\x06 \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12N\n\x19get_module_config_request\x18\x07 \x01(\x0e\x32).meshtastic.AdminMessage.ModuleConfigTypeH\x00\x12>\n\x1aget_module_config_response\x18\x08 \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12\x34\n*get_canned_message_module_messages_request\x18\n \x01(\x08H\x00\x12\x35\n+get_canned_message_module_messages_response\x18\x0b \x01(\tH\x00\x12%\n\x1bget_device_metadata_request\x18\x0c \x01(\x08H\x00\x12\x42\n\x1cget_device_metadata_response\x18\r \x01(\x0b\x32\x1a.meshtastic.DeviceMetadataH\x00\x12\x1e\n\x14get_ringtone_request\x18\x0e \x01(\x08H\x00\x12\x1f\n\x15get_ringtone_response\x18\x0f \x01(\tH\x00\x12.\n$get_device_connection_status_request\x18\x10 \x01(\x08H\x00\x12S\n%get_device_connection_status_response\x18\x11 \x01(\x0b\x32\".meshtastic.DeviceConnectionStatusH\x00\x12\x31\n\x0cset_ham_mode\x18\x12 \x01(\x0b\x32\x19.meshtastic.HamParametersH\x00\x12/\n%get_node_remote_hardware_pins_request\x18\x13 \x01(\x08H\x00\x12\\\n&get_node_remote_hardware_pins_response\x18\x14 \x01(\x0b\x32*.meshtastic.NodeRemoteHardwarePinsResponseH\x00\x12 \n\x16\x65nter_dfu_mode_request\x18\x15 \x01(\x08H\x00\x12\x1d\n\x13\x64\x65lete_file_request\x18\x16 \x01(\tH\x00\x12%\n\tset_owner\x18 \x01(\x0b\x32\x10.meshtastic.UserH\x00\x12*\n\x0bset_channel\x18! \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12(\n\nset_config\x18\" \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12\x35\n\x11set_module_config\x18# \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12,\n\"set_canned_message_module_messages\x18$ \x01(\tH\x00\x12\x1e\n\x14set_ringtone_message\x18% \x01(\tH\x00\x12\x1b\n\x11remove_by_nodenum\x18& \x01(\rH\x00\x12\x1b\n\x11set_favorite_node\x18\' \x01(\rH\x00\x12\x1e\n\x14remove_favorite_node\x18( \x01(\rH\x00\x12\x32\n\x12set_fixed_position\x18) \x01(\x0b\x32\x14.meshtastic.PositionH\x00\x12\x1f\n\x15remove_fixed_position\x18* \x01(\x08H\x00\x12\x1d\n\x13\x62\x65gin_edit_settings\x18@ \x01(\x08H\x00\x12\x1e\n\x14\x63ommit_edit_settings\x18\x41 \x01(\x08H\x00\x12\x1c\n\x12reboot_ota_seconds\x18_ \x01(\x05H\x00\x12\x18\n\x0e\x65xit_simulator\x18` \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18\x61 \x01(\x05H\x00\x12\x1a\n\x10shutdown_seconds\x18\x62 \x01(\x05H\x00\x12\x17\n\rfactory_reset\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x05H\x00\"\x95\x01\n\nConfigType\x12\x11\n\rDEVICE_CONFIG\x10\x00\x12\x13\n\x0fPOSITION_CONFIG\x10\x01\x12\x10\n\x0cPOWER_CONFIG\x10\x02\x12\x12\n\x0eNETWORK_CONFIG\x10\x03\x12\x12\n\x0e\x44ISPLAY_CONFIG\x10\x04\x12\x0f\n\x0bLORA_CONFIG\x10\x05\x12\x14\n\x10\x42LUETOOTH_CONFIG\x10\x06\"\xbb\x02\n\x10ModuleConfigType\x12\x0f\n\x0bMQTT_CONFIG\x10\x00\x12\x11\n\rSERIAL_CONFIG\x10\x01\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x02\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x03\x12\x14\n\x10RANGETEST_CONFIG\x10\x04\x12\x14\n\x10TELEMETRY_CONFIG\x10\x05\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10\x06\x12\x10\n\x0c\x41UDIO_CONFIG\x10\x07\x12\x19\n\x15REMOTEHARDWARE_CONFIG\x10\x08\x12\x17\n\x13NEIGHBORINFO_CONFIG\x10\t\x12\x1a\n\x16\x41MBIENTLIGHTING_CONFIG\x10\n\x12\x1a\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x0b\x12\x15\n\x11PAXCOUNTER_CONFIG\x10\x0c\x42\x11\n\x0fpayload_variant\"[\n\rHamParameters\x12\x11\n\tcall_sign\x18\x01 \x01(\t\x12\x10\n\x08tx_power\x18\x02 \x01(\x05\x12\x11\n\tfrequency\x18\x03 \x01(\x02\x12\x12\n\nshort_name\x18\x04 \x01(\t\"f\n\x1eNodeRemoteHardwarePinsResponse\x12\x44\n\x19node_remote_hardware_pins\x18\x01 \x03(\x0b\x32!.meshtastic.NodeRemoteHardwarePinB`\n\x13\x63om.geeksville.meshB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.admin_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\013AdminProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _ADMINMESSAGE._serialized_start=181 - _ADMINMESSAGE._serialized_end=2435 - _ADMINMESSAGE_CONFIGTYPE._serialized_start=1949 - _ADMINMESSAGE_CONFIGTYPE._serialized_end=2098 - _ADMINMESSAGE_MODULECONFIGTYPE._serialized_start=2101 - _ADMINMESSAGE_MODULECONFIGTYPE._serialized_end=2416 - _HAMPARAMETERS._serialized_start=2437 - _HAMPARAMETERS._serialized_end=2528 - _NODEREMOTEHARDWAREPINSRESPONSE._serialized_start=2530 - _NODEREMOTEHARDWAREPINSRESPONSE._serialized_end=2632 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/admin_pb2.pyi b/meshtastic/admin_pb2.pyi deleted file mode 100644 index 8488f5b..0000000 --- a/meshtastic/admin_pb2.pyi +++ /dev/null @@ -1,557 +0,0 @@ -""" -@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 meshtastic.channel_pb2 -import meshtastic.config_pb2 -import meshtastic.connection_status_pb2 -import meshtastic.mesh_pb2 -import meshtastic.module_config_pb2 -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 AdminMessage(google.protobuf.message.Message): - """ - This message is handled by the Admin module and is responsible for all settings/channel read/write operations. - This message is used to do settings operations to both remote AND local nodes. - (Prior to 1.2 these operations were done via special ToRadio operations) - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _ConfigType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _ConfigTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AdminMessage._ConfigType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEVICE_CONFIG: AdminMessage._ConfigType.ValueType # 0 - """ - TODO: REPLACE - """ - POSITION_CONFIG: AdminMessage._ConfigType.ValueType # 1 - """ - TODO: REPLACE - """ - POWER_CONFIG: AdminMessage._ConfigType.ValueType # 2 - """ - TODO: REPLACE - """ - NETWORK_CONFIG: AdminMessage._ConfigType.ValueType # 3 - """ - TODO: REPLACE - """ - DISPLAY_CONFIG: AdminMessage._ConfigType.ValueType # 4 - """ - TODO: REPLACE - """ - LORA_CONFIG: AdminMessage._ConfigType.ValueType # 5 - """ - TODO: REPLACE - """ - BLUETOOTH_CONFIG: AdminMessage._ConfigType.ValueType # 6 - """ - TODO: REPLACE - """ - - class ConfigType(_ConfigType, metaclass=_ConfigTypeEnumTypeWrapper): - """ - TODO: REPLACE - """ - - DEVICE_CONFIG: AdminMessage.ConfigType.ValueType # 0 - """ - TODO: REPLACE - """ - POSITION_CONFIG: AdminMessage.ConfigType.ValueType # 1 - """ - TODO: REPLACE - """ - POWER_CONFIG: AdminMessage.ConfigType.ValueType # 2 - """ - TODO: REPLACE - """ - NETWORK_CONFIG: AdminMessage.ConfigType.ValueType # 3 - """ - TODO: REPLACE - """ - DISPLAY_CONFIG: AdminMessage.ConfigType.ValueType # 4 - """ - TODO: REPLACE - """ - LORA_CONFIG: AdminMessage.ConfigType.ValueType # 5 - """ - TODO: REPLACE - """ - BLUETOOTH_CONFIG: AdminMessage.ConfigType.ValueType # 6 - """ - TODO: REPLACE - """ - - class _ModuleConfigType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _ModuleConfigTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AdminMessage._ModuleConfigType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - MQTT_CONFIG: AdminMessage._ModuleConfigType.ValueType # 0 - """ - TODO: REPLACE - """ - SERIAL_CONFIG: AdminMessage._ModuleConfigType.ValueType # 1 - """ - TODO: REPLACE - """ - EXTNOTIF_CONFIG: AdminMessage._ModuleConfigType.ValueType # 2 - """ - TODO: REPLACE - """ - STOREFORWARD_CONFIG: AdminMessage._ModuleConfigType.ValueType # 3 - """ - TODO: REPLACE - """ - RANGETEST_CONFIG: AdminMessage._ModuleConfigType.ValueType # 4 - """ - TODO: REPLACE - """ - TELEMETRY_CONFIG: AdminMessage._ModuleConfigType.ValueType # 5 - """ - TODO: REPLACE - """ - CANNEDMSG_CONFIG: AdminMessage._ModuleConfigType.ValueType # 6 - """ - TODO: REPLACE - """ - AUDIO_CONFIG: AdminMessage._ModuleConfigType.ValueType # 7 - """ - TODO: REPLACE - """ - REMOTEHARDWARE_CONFIG: AdminMessage._ModuleConfigType.ValueType # 8 - """ - TODO: REPLACE - """ - NEIGHBORINFO_CONFIG: AdminMessage._ModuleConfigType.ValueType # 9 - """ - TODO: REPLACE - """ - AMBIENTLIGHTING_CONFIG: AdminMessage._ModuleConfigType.ValueType # 10 - """ - TODO: REPLACE - """ - DETECTIONSENSOR_CONFIG: AdminMessage._ModuleConfigType.ValueType # 11 - """ - TODO: REPLACE - """ - PAXCOUNTER_CONFIG: AdminMessage._ModuleConfigType.ValueType # 12 - """ - TODO: REPLACE - """ - - class ModuleConfigType(_ModuleConfigType, metaclass=_ModuleConfigTypeEnumTypeWrapper): - """ - TODO: REPLACE - """ - - MQTT_CONFIG: AdminMessage.ModuleConfigType.ValueType # 0 - """ - TODO: REPLACE - """ - SERIAL_CONFIG: AdminMessage.ModuleConfigType.ValueType # 1 - """ - TODO: REPLACE - """ - EXTNOTIF_CONFIG: AdminMessage.ModuleConfigType.ValueType # 2 - """ - TODO: REPLACE - """ - STOREFORWARD_CONFIG: AdminMessage.ModuleConfigType.ValueType # 3 - """ - TODO: REPLACE - """ - RANGETEST_CONFIG: AdminMessage.ModuleConfigType.ValueType # 4 - """ - TODO: REPLACE - """ - TELEMETRY_CONFIG: AdminMessage.ModuleConfigType.ValueType # 5 - """ - TODO: REPLACE - """ - CANNEDMSG_CONFIG: AdminMessage.ModuleConfigType.ValueType # 6 - """ - TODO: REPLACE - """ - AUDIO_CONFIG: AdminMessage.ModuleConfigType.ValueType # 7 - """ - TODO: REPLACE - """ - REMOTEHARDWARE_CONFIG: AdminMessage.ModuleConfigType.ValueType # 8 - """ - TODO: REPLACE - """ - NEIGHBORINFO_CONFIG: AdminMessage.ModuleConfigType.ValueType # 9 - """ - TODO: REPLACE - """ - AMBIENTLIGHTING_CONFIG: AdminMessage.ModuleConfigType.ValueType # 10 - """ - TODO: REPLACE - """ - DETECTIONSENSOR_CONFIG: AdminMessage.ModuleConfigType.ValueType # 11 - """ - TODO: REPLACE - """ - PAXCOUNTER_CONFIG: AdminMessage.ModuleConfigType.ValueType # 12 - """ - TODO: REPLACE - """ - - GET_CHANNEL_REQUEST_FIELD_NUMBER: builtins.int - GET_CHANNEL_RESPONSE_FIELD_NUMBER: builtins.int - GET_OWNER_REQUEST_FIELD_NUMBER: builtins.int - GET_OWNER_RESPONSE_FIELD_NUMBER: builtins.int - GET_CONFIG_REQUEST_FIELD_NUMBER: builtins.int - GET_CONFIG_RESPONSE_FIELD_NUMBER: builtins.int - GET_MODULE_CONFIG_REQUEST_FIELD_NUMBER: builtins.int - GET_MODULE_CONFIG_RESPONSE_FIELD_NUMBER: builtins.int - GET_CANNED_MESSAGE_MODULE_MESSAGES_REQUEST_FIELD_NUMBER: builtins.int - GET_CANNED_MESSAGE_MODULE_MESSAGES_RESPONSE_FIELD_NUMBER: builtins.int - GET_DEVICE_METADATA_REQUEST_FIELD_NUMBER: builtins.int - GET_DEVICE_METADATA_RESPONSE_FIELD_NUMBER: builtins.int - GET_RINGTONE_REQUEST_FIELD_NUMBER: builtins.int - GET_RINGTONE_RESPONSE_FIELD_NUMBER: builtins.int - GET_DEVICE_CONNECTION_STATUS_REQUEST_FIELD_NUMBER: builtins.int - GET_DEVICE_CONNECTION_STATUS_RESPONSE_FIELD_NUMBER: builtins.int - SET_HAM_MODE_FIELD_NUMBER: builtins.int - GET_NODE_REMOTE_HARDWARE_PINS_REQUEST_FIELD_NUMBER: builtins.int - GET_NODE_REMOTE_HARDWARE_PINS_RESPONSE_FIELD_NUMBER: builtins.int - ENTER_DFU_MODE_REQUEST_FIELD_NUMBER: builtins.int - DELETE_FILE_REQUEST_FIELD_NUMBER: builtins.int - SET_OWNER_FIELD_NUMBER: builtins.int - SET_CHANNEL_FIELD_NUMBER: builtins.int - SET_CONFIG_FIELD_NUMBER: builtins.int - SET_MODULE_CONFIG_FIELD_NUMBER: builtins.int - SET_CANNED_MESSAGE_MODULE_MESSAGES_FIELD_NUMBER: builtins.int - SET_RINGTONE_MESSAGE_FIELD_NUMBER: builtins.int - REMOVE_BY_NODENUM_FIELD_NUMBER: builtins.int - SET_FAVORITE_NODE_FIELD_NUMBER: builtins.int - REMOVE_FAVORITE_NODE_FIELD_NUMBER: builtins.int - SET_FIXED_POSITION_FIELD_NUMBER: builtins.int - REMOVE_FIXED_POSITION_FIELD_NUMBER: builtins.int - BEGIN_EDIT_SETTINGS_FIELD_NUMBER: builtins.int - COMMIT_EDIT_SETTINGS_FIELD_NUMBER: builtins.int - REBOOT_OTA_SECONDS_FIELD_NUMBER: builtins.int - EXIT_SIMULATOR_FIELD_NUMBER: builtins.int - REBOOT_SECONDS_FIELD_NUMBER: builtins.int - SHUTDOWN_SECONDS_FIELD_NUMBER: builtins.int - FACTORY_RESET_FIELD_NUMBER: builtins.int - NODEDB_RESET_FIELD_NUMBER: builtins.int - get_channel_request: builtins.int - """ - Send the specified channel in the response to this message - NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) - """ - @property - def get_channel_response(self) -> meshtastic.channel_pb2.Channel: - """ - TODO: REPLACE - """ - get_owner_request: builtins.bool - """ - Send the current owner data in the response to this message. - """ - @property - def get_owner_response(self) -> meshtastic.mesh_pb2.User: - """ - TODO: REPLACE - """ - get_config_request: global___AdminMessage.ConfigType.ValueType - """ - Ask for the following config data to be sent - """ - @property - def get_config_response(self) -> meshtastic.config_pb2.Config: - """ - Send the current Config in the response to this message. - """ - get_module_config_request: global___AdminMessage.ModuleConfigType.ValueType - """ - Ask for the following config data to be sent - """ - @property - def get_module_config_response(self) -> meshtastic.module_config_pb2.ModuleConfig: - """ - Send the current Config in the response to this message. - """ - get_canned_message_module_messages_request: builtins.bool - """ - Get the Canned Message Module messages in the response to this message. - """ - get_canned_message_module_messages_response: builtins.str - """ - Get the Canned Message Module messages in the response to this message. - """ - get_device_metadata_request: builtins.bool - """ - Request the node to send device metadata (firmware, protobuf version, etc) - """ - @property - def get_device_metadata_response(self) -> meshtastic.mesh_pb2.DeviceMetadata: - """ - Device metadata response - """ - get_ringtone_request: builtins.bool - """ - Get the Ringtone in the response to this message. - """ - get_ringtone_response: builtins.str - """ - Get the Ringtone in the response to this message. - """ - get_device_connection_status_request: builtins.bool - """ - Request the node to send it's connection status - """ - @property - def get_device_connection_status_response(self) -> meshtastic.connection_status_pb2.DeviceConnectionStatus: - """ - Device connection status response - """ - @property - def set_ham_mode(self) -> global___HamParameters: - """ - Setup a node for licensed amateur (ham) radio operation - """ - get_node_remote_hardware_pins_request: builtins.bool - """ - Get the mesh's nodes with their available gpio pins for RemoteHardware module use - """ - @property - def get_node_remote_hardware_pins_response(self) -> global___NodeRemoteHardwarePinsResponse: - """ - Respond with the mesh's nodes with their available gpio pins for RemoteHardware module use - """ - enter_dfu_mode_request: builtins.bool - """ - Enter (UF2) DFU mode - Only implemented on NRF52 currently - """ - delete_file_request: builtins.str - """ - Delete the file by the specified path from the device - """ - @property - def set_owner(self) -> meshtastic.mesh_pb2.User: - """ - Set the owner for this node - """ - @property - def set_channel(self) -> meshtastic.channel_pb2.Channel: - """ - Set channels (using the new API). - A special channel is the "primary channel". - The other records are secondary channels. - Note: only one channel can be marked as primary. - If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. - """ - @property - def set_config(self) -> meshtastic.config_pb2.Config: - """ - Set the current Config - """ - @property - def set_module_config(self) -> meshtastic.module_config_pb2.ModuleConfig: - """ - Set the current Config - """ - set_canned_message_module_messages: builtins.str - """ - Set the Canned Message Module messages text. - """ - set_ringtone_message: builtins.str - """ - Set the ringtone for ExternalNotification. - """ - remove_by_nodenum: builtins.int - """ - Remove the node by the specified node-num from the NodeDB on the device - """ - set_favorite_node: builtins.int - """ - Set specified node-num to be favorited on the NodeDB on the device - """ - remove_favorite_node: builtins.int - """ - Set specified node-num to be un-favorited on the NodeDB on the device - """ - @property - def set_fixed_position(self) -> meshtastic.mesh_pb2.Position: - """ - Set fixed position data on the node and then set the position.fixed_position = true - """ - remove_fixed_position: builtins.bool - """ - Clear fixed position coordinates and then set position.fixed_position = false - """ - begin_edit_settings: builtins.bool - """ - Begins an edit transaction for config, module config, owner, and channel settings changes - This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) - """ - commit_edit_settings: builtins.bool - """ - Commits an open transaction for any edits made to config, module config, owner, and channel settings - """ - reboot_ota_seconds: builtins.int - """ - Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) - Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. - """ - exit_simulator: builtins.bool - """ - This message is only supported for the simulator Portduino build. - If received the simulator will exit successfully. - """ - reboot_seconds: builtins.int - """ - Tell the node to reboot in this many seconds (or <0 to cancel reboot) - """ - shutdown_seconds: builtins.int - """ - Tell the node to shutdown in this many seconds (or <0 to cancel shutdown) - """ - factory_reset: builtins.int - """ - Tell the node to factory reset, all device settings will be returned to factory defaults. - """ - nodedb_reset: builtins.int - """ - Tell the node to reset the nodedb. - """ - def __init__( - self, - *, - get_channel_request: builtins.int = ..., - get_channel_response: meshtastic.channel_pb2.Channel | None = ..., - get_owner_request: builtins.bool = ..., - get_owner_response: meshtastic.mesh_pb2.User | None = ..., - get_config_request: global___AdminMessage.ConfigType.ValueType = ..., - get_config_response: meshtastic.config_pb2.Config | None = ..., - get_module_config_request: global___AdminMessage.ModuleConfigType.ValueType = ..., - get_module_config_response: meshtastic.module_config_pb2.ModuleConfig | None = ..., - get_canned_message_module_messages_request: builtins.bool = ..., - get_canned_message_module_messages_response: builtins.str = ..., - get_device_metadata_request: builtins.bool = ..., - get_device_metadata_response: meshtastic.mesh_pb2.DeviceMetadata | None = ..., - get_ringtone_request: builtins.bool = ..., - get_ringtone_response: builtins.str = ..., - get_device_connection_status_request: builtins.bool = ..., - get_device_connection_status_response: meshtastic.connection_status_pb2.DeviceConnectionStatus | None = ..., - set_ham_mode: global___HamParameters | None = ..., - get_node_remote_hardware_pins_request: builtins.bool = ..., - get_node_remote_hardware_pins_response: global___NodeRemoteHardwarePinsResponse | None = ..., - enter_dfu_mode_request: builtins.bool = ..., - delete_file_request: builtins.str = ..., - set_owner: meshtastic.mesh_pb2.User | None = ..., - set_channel: meshtastic.channel_pb2.Channel | None = ..., - set_config: meshtastic.config_pb2.Config | None = ..., - set_module_config: meshtastic.module_config_pb2.ModuleConfig | None = ..., - set_canned_message_module_messages: builtins.str = ..., - set_ringtone_message: builtins.str = ..., - remove_by_nodenum: builtins.int = ..., - set_favorite_node: builtins.int = ..., - remove_favorite_node: builtins.int = ..., - set_fixed_position: meshtastic.mesh_pb2.Position | None = ..., - remove_fixed_position: builtins.bool = ..., - begin_edit_settings: builtins.bool = ..., - commit_edit_settings: builtins.bool = ..., - reboot_ota_seconds: builtins.int = ..., - exit_simulator: builtins.bool = ..., - reboot_seconds: builtins.int = ..., - shutdown_seconds: builtins.int = ..., - factory_reset: builtins.int = ..., - nodedb_reset: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset", b"factory_reset", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "shutdown_seconds", b"shutdown_seconds"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset", b"factory_reset", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "shutdown_seconds", b"shutdown_seconds"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["get_channel_request", "get_channel_response", "get_owner_request", "get_owner_response", "get_config_request", "get_config_response", "get_module_config_request", "get_module_config_response", "get_canned_message_module_messages_request", "get_canned_message_module_messages_response", "get_device_metadata_request", "get_device_metadata_response", "get_ringtone_request", "get_ringtone_response", "get_device_connection_status_request", "get_device_connection_status_response", "set_ham_mode", "get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", "enter_dfu_mode_request", "delete_file_request", "set_owner", "set_channel", "set_config", "set_module_config", "set_canned_message_module_messages", "set_ringtone_message", "remove_by_nodenum", "set_favorite_node", "remove_favorite_node", "set_fixed_position", "remove_fixed_position", "begin_edit_settings", "commit_edit_settings", "reboot_ota_seconds", "exit_simulator", "reboot_seconds", "shutdown_seconds", "factory_reset", "nodedb_reset"] | None: ... - -global___AdminMessage = AdminMessage - -@typing_extensions.final -class HamParameters(google.protobuf.message.Message): - """ - Parameters for setting up Meshtastic for ameteur radio usage - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CALL_SIGN_FIELD_NUMBER: builtins.int - TX_POWER_FIELD_NUMBER: builtins.int - FREQUENCY_FIELD_NUMBER: builtins.int - SHORT_NAME_FIELD_NUMBER: builtins.int - call_sign: builtins.str - """ - Amateur radio call sign, eg. KD2ABC - """ - tx_power: builtins.int - """ - Transmit power in dBm at the LoRA transceiver, not including any amplification - """ - frequency: builtins.float - """ - The selected frequency of LoRA operation - Please respect your local laws, regulations, and band plans. - Ensure your radio is capable of operating of the selected frequency before setting this. - """ - short_name: builtins.str - """ - Optional short name of user - """ - def __init__( - self, - *, - call_sign: builtins.str = ..., - tx_power: builtins.int = ..., - frequency: builtins.float = ..., - short_name: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["call_sign", b"call_sign", "frequency", b"frequency", "short_name", b"short_name", "tx_power", b"tx_power"]) -> None: ... - -global___HamParameters = HamParameters - -@typing_extensions.final -class NodeRemoteHardwarePinsResponse(google.protobuf.message.Message): - """ - Response envelope for node_remote_hardware_pins - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NODE_REMOTE_HARDWARE_PINS_FIELD_NUMBER: builtins.int - @property - def node_remote_hardware_pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.mesh_pb2.NodeRemoteHardwarePin]: - """ - Nodes and their respective remote hardware GPIO pins - """ - def __init__( - self, - *, - node_remote_hardware_pins: collections.abc.Iterable[meshtastic.mesh_pb2.NodeRemoteHardwarePin] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["node_remote_hardware_pins", b"node_remote_hardware_pins"]) -> None: ... - -global___NodeRemoteHardwarePinsResponse = NodeRemoteHardwarePinsResponse diff --git a/meshtastic/apponly_pb2.py b/meshtastic/apponly_pb2.py deleted file mode 100644 index 46d9931..0000000 --- a/meshtastic/apponly_pb2.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/apponly.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import channel_pb2 as meshtastic_dot_channel__pb2 -from meshtastic import config_pb2 as meshtastic_dot_config__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18meshtastic/apponly.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\"o\n\nChannelSet\x12-\n\x08settings\x18\x01 \x03(\x0b\x32\x1b.meshtastic.ChannelSettings\x12\x32\n\x0blora_config\x18\x02 \x01(\x0b\x32\x1d.meshtastic.Config.LoRaConfigBb\n\x13\x63om.geeksville.meshB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.apponly_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _CHANNELSET._serialized_start=91 - _CHANNELSET._serialized_end=202 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/apponly_pb2.pyi b/meshtastic/apponly_pb2.pyi deleted file mode 100644 index 0d84ed6..0000000 --- a/meshtastic/apponly_pb2.pyi +++ /dev/null @@ -1,54 +0,0 @@ -""" -@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.message -import meshtastic.channel_pb2 -import meshtastic.config_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class ChannelSet(google.protobuf.message.Message): - """ - This is the most compact possible representation for a set of channels. - It includes only one PRIMARY channel (which must be first) and - any SECONDARY channels. - No DISABLED channels are included. - This abstraction is used only on the the 'app side' of the world (ie python, javascript and android etc) to show a group of Channels as a (long) URL - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - SETTINGS_FIELD_NUMBER: builtins.int - LORA_CONFIG_FIELD_NUMBER: builtins.int - @property - def settings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.channel_pb2.ChannelSettings]: - """ - Channel list with settings - """ - @property - def lora_config(self) -> meshtastic.config_pb2.Config.LoRaConfig: - """ - LoRa config - """ - def __init__( - self, - *, - settings: collections.abc.Iterable[meshtastic.channel_pb2.ChannelSettings] | None = ..., - lora_config: meshtastic.config_pb2.Config.LoRaConfig | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["lora_config", b"lora_config"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["lora_config", b"lora_config", "settings", b"settings"]) -> None: ... - -global___ChannelSet = ChannelSet diff --git a/meshtastic/atak_pb2.py b/meshtastic/atak_pb2.py deleted file mode 100644 index a813729..0000000 --- a/meshtastic/atak_pb2.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/atak.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/atak.proto\x12\nmeshtastic\"\xe6\x01\n\tTAKPacket\x12\x15\n\ris_compressed\x18\x01 \x01(\x08\x12$\n\x07\x63ontact\x18\x02 \x01(\x0b\x32\x13.meshtastic.Contact\x12 \n\x05group\x18\x03 \x01(\x0b\x32\x11.meshtastic.Group\x12\"\n\x06status\x18\x04 \x01(\x0b\x32\x12.meshtastic.Status\x12\x1e\n\x03pli\x18\x05 \x01(\x0b\x32\x0f.meshtastic.PLIH\x00\x12#\n\x04\x63hat\x18\x06 \x01(\x0b\x32\x13.meshtastic.GeoChatH\x00\x42\x11\n\x0fpayload_variant\"\\\n\x07GeoChat\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x02to\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bto_callsign\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_toB\x0e\n\x0c_to_callsign\"M\n\x05Group\x12$\n\x04role\x18\x01 \x01(\x0e\x32\x16.meshtastic.MemberRole\x12\x1e\n\x04team\x18\x02 \x01(\x0e\x32\x10.meshtastic.Team\"\x19\n\x06Status\x12\x0f\n\x07\x62\x61ttery\x18\x01 \x01(\r\"4\n\x07\x43ontact\x12\x10\n\x08\x63\x61llsign\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\t\"_\n\x03PLI\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x12\x0e\n\x06\x63ourse\x18\x05 \x01(\r*\xc0\x01\n\x04Team\x12\x14\n\x10Unspecifed_Color\x10\x00\x12\t\n\x05White\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\n\n\x06Orange\x10\x03\x12\x0b\n\x07Magenta\x10\x04\x12\x07\n\x03Red\x10\x05\x12\n\n\x06Maroon\x10\x06\x12\n\n\x06Purple\x10\x07\x12\r\n\tDark_Blue\x10\x08\x12\x08\n\x04\x42lue\x10\t\x12\x08\n\x04\x43yan\x10\n\x12\x08\n\x04Teal\x10\x0b\x12\t\n\x05Green\x10\x0c\x12\x0e\n\nDark_Green\x10\r\x12\t\n\x05\x42rown\x10\x0e*\x7f\n\nMemberRole\x12\x0e\n\nUnspecifed\x10\x00\x12\x0e\n\nTeamMember\x10\x01\x12\x0c\n\x08TeamLead\x10\x02\x12\x06\n\x02HQ\x10\x03\x12\n\n\x06Sniper\x10\x04\x12\t\n\x05Medic\x10\x05\x12\x13\n\x0f\x46orwardObserver\x10\x06\x12\x07\n\x03RTO\x10\x07\x12\x06\n\x02K9\x10\x08\x42_\n\x13\x63om.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.atak_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _TEAM._serialized_start=622 - _TEAM._serialized_end=814 - _MEMBERROLE._serialized_start=816 - _MEMBERROLE._serialized_end=943 - _TAKPACKET._serialized_start=38 - _TAKPACKET._serialized_end=268 - _GEOCHAT._serialized_start=270 - _GEOCHAT._serialized_end=362 - _GROUP._serialized_start=364 - _GROUP._serialized_end=441 - _STATUS._serialized_start=443 - _STATUS._serialized_end=468 - _CONTACT._serialized_start=470 - _CONTACT._serialized_end=522 - _PLI._serialized_start=524 - _PLI._serialized_end=619 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/atak_pb2.pyi b/meshtastic/atak_pb2.pyi deleted file mode 100644 index 0cc35ef..0000000 --- a/meshtastic/atak_pb2.pyi +++ /dev/null @@ -1,464 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -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 - -class _Team: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _TeamEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Team.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - Unspecifed_Color: _Team.ValueType # 0 - """ - Unspecifed - """ - White: _Team.ValueType # 1 - """ - White - """ - Yellow: _Team.ValueType # 2 - """ - Yellow - """ - Orange: _Team.ValueType # 3 - """ - Orange - """ - Magenta: _Team.ValueType # 4 - """ - Magenta - """ - Red: _Team.ValueType # 5 - """ - Red - """ - Maroon: _Team.ValueType # 6 - """ - Maroon - """ - Purple: _Team.ValueType # 7 - """ - Purple - """ - Dark_Blue: _Team.ValueType # 8 - """ - Dark Blue - """ - Blue: _Team.ValueType # 9 - """ - Blue - """ - Cyan: _Team.ValueType # 10 - """ - Cyan - """ - Teal: _Team.ValueType # 11 - """ - Teal - """ - Green: _Team.ValueType # 12 - """ - Green - """ - Dark_Green: _Team.ValueType # 13 - """ - Dark Green - """ - Brown: _Team.ValueType # 14 - """ - Brown - """ - -class Team(_Team, metaclass=_TeamEnumTypeWrapper): ... - -Unspecifed_Color: Team.ValueType # 0 -""" -Unspecifed -""" -White: Team.ValueType # 1 -""" -White -""" -Yellow: Team.ValueType # 2 -""" -Yellow -""" -Orange: Team.ValueType # 3 -""" -Orange -""" -Magenta: Team.ValueType # 4 -""" -Magenta -""" -Red: Team.ValueType # 5 -""" -Red -""" -Maroon: Team.ValueType # 6 -""" -Maroon -""" -Purple: Team.ValueType # 7 -""" -Purple -""" -Dark_Blue: Team.ValueType # 8 -""" -Dark Blue -""" -Blue: Team.ValueType # 9 -""" -Blue -""" -Cyan: Team.ValueType # 10 -""" -Cyan -""" -Teal: Team.ValueType # 11 -""" -Teal -""" -Green: Team.ValueType # 12 -""" -Green -""" -Dark_Green: Team.ValueType # 13 -""" -Dark Green -""" -Brown: Team.ValueType # 14 -""" -Brown -""" -global___Team = Team - -class _MemberRole: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _MemberRoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MemberRole.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - Unspecifed: _MemberRole.ValueType # 0 - """ - Unspecifed - """ - TeamMember: _MemberRole.ValueType # 1 - """ - Team Member - """ - TeamLead: _MemberRole.ValueType # 2 - """ - Team Lead - """ - HQ: _MemberRole.ValueType # 3 - """ - Headquarters - """ - Sniper: _MemberRole.ValueType # 4 - """ - Airsoft enthusiast - """ - Medic: _MemberRole.ValueType # 5 - """ - Medic - """ - ForwardObserver: _MemberRole.ValueType # 6 - """ - ForwardObserver - """ - RTO: _MemberRole.ValueType # 7 - """ - Radio Telephone Operator - """ - K9: _MemberRole.ValueType # 8 - """ - Doggo - """ - -class MemberRole(_MemberRole, metaclass=_MemberRoleEnumTypeWrapper): - """ - Role of the group member - """ - -Unspecifed: MemberRole.ValueType # 0 -""" -Unspecifed -""" -TeamMember: MemberRole.ValueType # 1 -""" -Team Member -""" -TeamLead: MemberRole.ValueType # 2 -""" -Team Lead -""" -HQ: MemberRole.ValueType # 3 -""" -Headquarters -""" -Sniper: MemberRole.ValueType # 4 -""" -Airsoft enthusiast -""" -Medic: MemberRole.ValueType # 5 -""" -Medic -""" -ForwardObserver: MemberRole.ValueType # 6 -""" -ForwardObserver -""" -RTO: MemberRole.ValueType # 7 -""" -Radio Telephone Operator -""" -K9: MemberRole.ValueType # 8 -""" -Doggo -""" -global___MemberRole = MemberRole - -@typing_extensions.final -class TAKPacket(google.protobuf.message.Message): - """ - Packets for the official ATAK Plugin - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - IS_COMPRESSED_FIELD_NUMBER: builtins.int - CONTACT_FIELD_NUMBER: builtins.int - GROUP_FIELD_NUMBER: builtins.int - STATUS_FIELD_NUMBER: builtins.int - PLI_FIELD_NUMBER: builtins.int - CHAT_FIELD_NUMBER: builtins.int - is_compressed: builtins.bool - """ - Are the payloads strings compressed for LoRA transport? - """ - @property - def contact(self) -> global___Contact: - """ - The contact / callsign for ATAK user - """ - @property - def group(self) -> global___Group: - """ - The group for ATAK user - """ - @property - def status(self) -> global___Status: - """ - The status of the ATAK EUD - """ - @property - def pli(self) -> global___PLI: - """ - TAK position report - """ - @property - def chat(self) -> global___GeoChat: - """ - ATAK GeoChat message - """ - def __init__( - self, - *, - is_compressed: builtins.bool = ..., - contact: global___Contact | None = ..., - group: global___Group | None = ..., - status: global___Status | None = ..., - pli: global___PLI | None = ..., - chat: global___GeoChat | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["chat", b"chat", "contact", b"contact", "group", b"group", "payload_variant", b"payload_variant", "pli", b"pli", "status", b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["chat", b"chat", "contact", b"contact", "group", b"group", "is_compressed", b"is_compressed", "payload_variant", b"payload_variant", "pli", b"pli", "status", b"status"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["pli", "chat"] | None: ... - -global___TAKPacket = TAKPacket - -@typing_extensions.final -class GeoChat(google.protobuf.message.Message): - """ - ATAK GeoChat message - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MESSAGE_FIELD_NUMBER: builtins.int - TO_FIELD_NUMBER: builtins.int - TO_CALLSIGN_FIELD_NUMBER: builtins.int - message: builtins.str - """ - The text message - """ - to: builtins.str - """ - Uid recipient of the message - """ - to_callsign: builtins.str - """ - Callsign of the recipient for the message - """ - def __init__( - self, - *, - message: builtins.str = ..., - to: builtins.str | None = ..., - to_callsign: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_to", b"_to", "_to_callsign", b"_to_callsign", "to", b"to", "to_callsign", b"to_callsign"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_to", b"_to", "_to_callsign", b"_to_callsign", "message", b"message", "to", b"to", "to_callsign", b"to_callsign"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_to", b"_to"]) -> typing_extensions.Literal["to"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_to_callsign", b"_to_callsign"]) -> typing_extensions.Literal["to_callsign"] | None: ... - -global___GeoChat = GeoChat - -@typing_extensions.final -class Group(google.protobuf.message.Message): - """ - ATAK Group - <__group role='Team Member' name='Cyan'/> - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROLE_FIELD_NUMBER: builtins.int - TEAM_FIELD_NUMBER: builtins.int - role: global___MemberRole.ValueType - """ - Role of the group member - """ - team: global___Team.ValueType - """ - Team (color) - Default Cyan - """ - def __init__( - self, - *, - role: global___MemberRole.ValueType = ..., - team: global___Team.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["role", b"role", "team", b"team"]) -> None: ... - -global___Group = Group - -@typing_extensions.final -class Status(google.protobuf.message.Message): - """ - ATAK EUD Status - - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - BATTERY_FIELD_NUMBER: builtins.int - battery: builtins.int - """ - Battery level - """ - def __init__( - self, - *, - battery: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["battery", b"battery"]) -> None: ... - -global___Status = Status - -@typing_extensions.final -class Contact(google.protobuf.message.Message): - """ - ATAK Contact - - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CALLSIGN_FIELD_NUMBER: builtins.int - DEVICE_CALLSIGN_FIELD_NUMBER: builtins.int - callsign: builtins.str - """ - Callsign - """ - device_callsign: builtins.str - """ - Device callsign - - IP address of endpoint in integer form (0.0.0.0 default) - """ - def __init__( - self, - *, - callsign: builtins.str = ..., - device_callsign: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["callsign", b"callsign", "device_callsign", b"device_callsign"]) -> None: ... - -global___Contact = Contact - -@typing_extensions.final -class PLI(google.protobuf.message.Message): - """ - Position Location Information from ATAK - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LATITUDE_I_FIELD_NUMBER: builtins.int - LONGITUDE_I_FIELD_NUMBER: builtins.int - ALTITUDE_FIELD_NUMBER: builtins.int - SPEED_FIELD_NUMBER: builtins.int - COURSE_FIELD_NUMBER: builtins.int - latitude_i: builtins.int - """ - The new preferred location encoding, multiply by 1e-7 to get degrees - in floating point - """ - longitude_i: builtins.int - """ - The new preferred location encoding, multiply by 1e-7 to get degrees - in floating point - """ - altitude: builtins.int - """ - Altitude (ATAK prefers HAE) - """ - speed: builtins.int - """ - Speed - """ - course: builtins.int - """ - Course in degrees - """ - def __init__( - self, - *, - latitude_i: builtins.int = ..., - longitude_i: builtins.int = ..., - altitude: builtins.int = ..., - speed: builtins.int = ..., - course: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["altitude", b"altitude", "course", b"course", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i", "speed", b"speed"]) -> None: ... - -global___PLI = PLI diff --git a/meshtastic/cannedmessages_pb2.py b/meshtastic/cannedmessages_pb2.py deleted file mode 100644 index 058f3cf..0000000 --- a/meshtastic/cannedmessages_pb2.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/cannedmessages.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/cannedmessages.proto\x12\nmeshtastic\"-\n\x19\x43\x61nnedMessageModuleConfig\x12\x10\n\x08messages\x18\x01 \x01(\tBn\n\x13\x63om.geeksville.meshB\x19\x43\x61nnedMessageConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.cannedmessages_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\031CannedMessageConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _CANNEDMESSAGEMODULECONFIG._serialized_start=47 - _CANNEDMESSAGEMODULECONFIG._serialized_end=92 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/cannedmessages_pb2.pyi b/meshtastic/cannedmessages_pb2.pyi deleted file mode 100644 index 9ee96bd..0000000 --- a/meshtastic/cannedmessages_pb2.pyi +++ /dev/null @@ -1,37 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class CannedMessageModuleConfig(google.protobuf.message.Message): - """ - Canned message module configuration. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MESSAGES_FIELD_NUMBER: builtins.int - messages: builtins.str - """ - Predefined messages for canned message module separated by '|' characters. - """ - def __init__( - self, - *, - messages: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["messages", b"messages"]) -> None: ... - -global___CannedMessageModuleConfig = CannedMessageModuleConfig diff --git a/meshtastic/channel_pb2.py b/meshtastic/channel_pb2.py deleted file mode 100644 index 2e66fe8..0000000 --- a/meshtastic/channel_pb2.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/channel.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18meshtastic/channel.proto\x12\nmeshtastic\"\xb8\x01\n\x0f\x43hannelSettings\x12\x17\n\x0b\x63hannel_num\x18\x01 \x01(\rB\x02\x18\x01\x12\x0b\n\x03psk\x18\x02 \x01(\x0c\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\n\n\x02id\x18\x04 \x01(\x07\x12\x16\n\x0euplink_enabled\x18\x05 \x01(\x08\x12\x18\n\x10\x64ownlink_enabled\x18\x06 \x01(\x08\x12\x33\n\x0fmodule_settings\x18\x07 \x01(\x0b\x32\x1a.meshtastic.ModuleSettings\"E\n\x0eModuleSettings\x12\x1a\n\x12position_precision\x18\x01 \x01(\r\x12\x17\n\x0fis_client_muted\x18\x02 \x01(\x08\"\xa1\x01\n\x07\x43hannel\x12\r\n\x05index\x18\x01 \x01(\x05\x12-\n\x08settings\x18\x02 \x01(\x0b\x32\x1b.meshtastic.ChannelSettings\x12&\n\x04role\x18\x03 \x01(\x0e\x32\x18.meshtastic.Channel.Role\"0\n\x04Role\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07PRIMARY\x10\x01\x12\r\n\tSECONDARY\x10\x02\x42\x62\n\x13\x63om.geeksville.meshB\rChannelProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.channel_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\rChannelProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _CHANNELSETTINGS.fields_by_name['channel_num']._options = None - _CHANNELSETTINGS.fields_by_name['channel_num']._serialized_options = b'\030\001' - _CHANNELSETTINGS._serialized_start=41 - _CHANNELSETTINGS._serialized_end=225 - _MODULESETTINGS._serialized_start=227 - _MODULESETTINGS._serialized_end=296 - _CHANNEL._serialized_start=299 - _CHANNEL._serialized_end=460 - _CHANNEL_ROLE._serialized_start=412 - _CHANNEL_ROLE._serialized_end=460 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/channel_pb2.pyi b/meshtastic/channel_pb2.pyi deleted file mode 100644 index ff23a5f..0000000 --- a/meshtastic/channel_pb2.pyi +++ /dev/null @@ -1,231 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -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 ChannelSettings(google.protobuf.message.Message): - """ - This information can be encoded as a QRcode/url so that other users can configure - their radio to join the same channel. - A note about how channel names are shown to users: channelname-X - poundsymbol is a prefix used to indicate this is a channel name (idea from @professr). - Where X is a letter from A-Z (base 26) representing a hash of the PSK for this - channel - so that if the user changes anything about the channel (which does - force a new PSK) this letter will also change. Thus preventing user confusion if - two friends try to type in a channel name of "BobsChan" and then can't talk - because their PSKs will be different. - The PSK is hashed into this letter by "0x41 + [xor all bytes of the psk ] modulo 26" - This also allows the option of someday if people have the PSK off (zero), the - users COULD type in a channel name and be able to talk. - FIXME: Add description of multi-channel support and how primary vs secondary channels are used. - FIXME: explain how apps use channels for security. - explain how remote settings and remote gpio are managed as an example - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CHANNEL_NUM_FIELD_NUMBER: builtins.int - PSK_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - UPLINK_ENABLED_FIELD_NUMBER: builtins.int - DOWNLINK_ENABLED_FIELD_NUMBER: builtins.int - MODULE_SETTINGS_FIELD_NUMBER: builtins.int - channel_num: builtins.int - """ - Deprecated in favor of LoraConfig.channel_num - """ - psk: builtins.bytes - """ - A simple pre-shared key for now for crypto. - Must be either 0 bytes (no crypto), 16 bytes (AES128), or 32 bytes (AES256). - A special shorthand is used for 1 byte long psks. - These psks should be treated as only minimally secure, - because they are listed in this source code. - Those bytes are mapped using the following scheme: - `0` = No crypto - `1` = The special "default" channel key: {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0x01} - `2` through 10 = The default channel key, except with 1 through 9 added to the last byte. - Shown to user as simple1 through 10 - """ - name: builtins.str - """ - A SHORT name that will be packed into the URL. - Less than 12 bytes. - Something for end users to call the channel - If this is the empty string it is assumed that this channel - is the special (minimally secure) "Default"channel. - In user interfaces it should be rendered as a local language translation of "X". - For channel_num hashing empty string will be treated as "X". - Where "X" is selected based on the English words listed above for ModemPreset - """ - id: builtins.int - """ - Used to construct a globally unique channel ID. - The full globally unique ID will be: "name.id" where ID is shown as base36. - Assuming that the number of meshtastic users is below 20K (true for a long time) - the chance of this 64 bit random number colliding with anyone else is super low. - And the penalty for collision is low as well, it just means that anyone trying to decrypt channel messages might need to - try multiple candidate channels. - Any time a non wire compatible change is made to a channel, this field should be regenerated. - There are a small number of 'special' globally known (and fairly) insecure standard channels. - Those channels do not have a numeric id included in the settings, but instead it is pulled from - a table of well known IDs. - (see Well Known Channels FIXME) - """ - uplink_enabled: builtins.bool - """ - If true, messages on the mesh will be sent to the *public* internet by any gateway ndoe - """ - downlink_enabled: builtins.bool - """ - If true, messages seen on the internet will be forwarded to the local mesh. - """ - @property - def module_settings(self) -> global___ModuleSettings: - """ - Per-channel module settings. - """ - def __init__( - self, - *, - channel_num: builtins.int = ..., - psk: builtins.bytes = ..., - name: builtins.str = ..., - id: builtins.int = ..., - uplink_enabled: builtins.bool = ..., - downlink_enabled: builtins.bool = ..., - module_settings: global___ModuleSettings | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["module_settings", b"module_settings"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel_num", b"channel_num", "downlink_enabled", b"downlink_enabled", "id", b"id", "module_settings", b"module_settings", "name", b"name", "psk", b"psk", "uplink_enabled", b"uplink_enabled"]) -> None: ... - -global___ChannelSettings = ChannelSettings - -@typing_extensions.final -class ModuleSettings(google.protobuf.message.Message): - """ - This message is specifically for modules to store per-channel configuration data. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - POSITION_PRECISION_FIELD_NUMBER: builtins.int - IS_CLIENT_MUTED_FIELD_NUMBER: builtins.int - position_precision: builtins.int - """ - Bits of precision for the location sent in position packets. - """ - is_client_muted: builtins.bool - """ - Controls whether or not the phone / clients should mute the current channel - Useful for noisy public channels you don't necessarily want to disable - """ - def __init__( - self, - *, - position_precision: builtins.int = ..., - is_client_muted: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["is_client_muted", b"is_client_muted", "position_precision", b"position_precision"]) -> None: ... - -global___ModuleSettings = ModuleSettings - -@typing_extensions.final -class Channel(google.protobuf.message.Message): - """ - A pair of a channel number, mode and the (sharable) settings for that channel - """ - - 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[Channel._Role.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DISABLED: Channel._Role.ValueType # 0 - """ - This channel is not in use right now - """ - PRIMARY: Channel._Role.ValueType # 1 - """ - This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY - """ - SECONDARY: Channel._Role.ValueType # 2 - """ - Secondary channels are only used for encryption/decryption/authentication purposes. - Their radio settings (freq etc) are ignored, only psk is used. - """ - - class Role(_Role, metaclass=_RoleEnumTypeWrapper): - """ - How this channel is being used (or not). - Note: this field is an enum to give us options for the future. - In particular, someday we might make a 'SCANNING' option. - SCANNING channels could have different frequencies and the radio would - occasionally check that freq to see if anything is being transmitted. - For devices that have multiple physical radios attached, we could keep multiple PRIMARY/SCANNING channels active at once to allow - cross band routing as needed. - If a device has only a single radio (the common case) only one channel can be PRIMARY at a time - (but any number of SECONDARY channels can't be sent received on that common frequency) - """ - - DISABLED: Channel.Role.ValueType # 0 - """ - This channel is not in use right now - """ - PRIMARY: Channel.Role.ValueType # 1 - """ - This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY - """ - SECONDARY: Channel.Role.ValueType # 2 - """ - Secondary channels are only used for encryption/decryption/authentication purposes. - Their radio settings (freq etc) are ignored, only psk is used. - """ - - INDEX_FIELD_NUMBER: builtins.int - SETTINGS_FIELD_NUMBER: builtins.int - ROLE_FIELD_NUMBER: builtins.int - index: builtins.int - """ - The index of this channel in the channel table (from 0 to MAX_NUM_CHANNELS-1) - (Someday - not currently implemented) An index of -1 could be used to mean "set by name", - in which case the target node will find and set the channel by settings.name. - """ - @property - def settings(self) -> global___ChannelSettings: - """ - The new settings, or NULL to disable that channel - """ - role: global___Channel.Role.ValueType - """ - TODO: REPLACE - """ - def __init__( - self, - *, - index: builtins.int = ..., - settings: global___ChannelSettings | None = ..., - role: global___Channel.Role.ValueType = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["settings", b"settings"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["index", b"index", "role", b"role", "settings", b"settings"]) -> None: ... - -global___Channel = Channel diff --git a/meshtastic/clientonly_pb2.py b/meshtastic/clientonly_pb2.py deleted file mode 100644 index 91e7b0d..0000000 --- a/meshtastic/clientonly_pb2.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/clientonly.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import localonly_pb2 as meshtastic_dot_localonly__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bmeshtastic/clientonly.proto\x12\nmeshtastic\x1a\x1ameshtastic/localonly.proto\"\x8d\x02\n\rDeviceProfile\x12\x16\n\tlong_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nshort_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x63hannel_url\x18\x03 \x01(\tH\x02\x88\x01\x01\x12,\n\x06\x63onfig\x18\x04 \x01(\x0b\x32\x17.meshtastic.LocalConfigH\x03\x88\x01\x01\x12\x39\n\rmodule_config\x18\x05 \x01(\x0b\x32\x1d.meshtastic.LocalModuleConfigH\x04\x88\x01\x01\x42\x0c\n\n_long_nameB\r\n\x0b_short_nameB\x0e\n\x0c_channel_urlB\t\n\x07_configB\x10\n\x0e_module_configBe\n\x13\x63om.geeksville.meshB\x10\x43lientOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.clientonly_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\020ClientOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _DEVICEPROFILE._serialized_start=72 - _DEVICEPROFILE._serialized_end=341 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/clientonly_pb2.pyi b/meshtastic/clientonly_pb2.pyi deleted file mode 100644 index 10820e7..0000000 --- a/meshtastic/clientonly_pb2.pyi +++ /dev/null @@ -1,77 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import meshtastic.localonly_pb2 -import sys -import typing - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class DeviceProfile(google.protobuf.message.Message): - """ - This abstraction is used to contain any configuration for provisioning a node on any client. - It is useful for importing and exporting configurations. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LONG_NAME_FIELD_NUMBER: builtins.int - SHORT_NAME_FIELD_NUMBER: builtins.int - CHANNEL_URL_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - MODULE_CONFIG_FIELD_NUMBER: builtins.int - long_name: builtins.str - """ - Long name for the node - """ - short_name: builtins.str - """ - Short name of the node - """ - channel_url: builtins.str - """ - The url of the channels from our node - """ - @property - def config(self) -> meshtastic.localonly_pb2.LocalConfig: - """ - The Config of the node - """ - @property - def module_config(self) -> meshtastic.localonly_pb2.LocalModuleConfig: - """ - The ModuleConfig of the node - """ - def __init__( - self, - *, - long_name: builtins.str | None = ..., - short_name: builtins.str | None = ..., - channel_url: builtins.str | None = ..., - config: meshtastic.localonly_pb2.LocalConfig | None = ..., - module_config: meshtastic.localonly_pb2.LocalModuleConfig | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_channel_url", b"_channel_url", "_config", b"_config", "_long_name", b"_long_name", "_module_config", b"_module_config", "_short_name", b"_short_name", "channel_url", b"channel_url", "config", b"config", "long_name", b"long_name", "module_config", b"module_config", "short_name", b"short_name"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_channel_url", b"_channel_url", "_config", b"_config", "_long_name", b"_long_name", "_module_config", b"_module_config", "_short_name", b"_short_name", "channel_url", b"channel_url", "config", b"config", "long_name", b"long_name", "module_config", b"module_config", "short_name", b"short_name"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_channel_url", b"_channel_url"]) -> typing_extensions.Literal["channel_url"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_config", b"_config"]) -> typing_extensions.Literal["config"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_long_name", b"_long_name"]) -> typing_extensions.Literal["long_name"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_module_config", b"_module_config"]) -> typing_extensions.Literal["module_config"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_short_name", b"_short_name"]) -> typing_extensions.Literal["short_name"] | None: ... - -global___DeviceProfile = DeviceProfile diff --git a/meshtastic/config_pb2.py b/meshtastic/config_pb2.py deleted file mode 100644 index 9b216f9..0000000 --- a/meshtastic/config_pb2.py +++ /dev/null @@ -1,70 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/config.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17meshtastic/config.proto\x12\nmeshtastic\"\xc2\x1f\n\x06\x43onfig\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x1f.meshtastic.Config.DeviceConfigH\x00\x12\x35\n\x08position\x18\x02 \x01(\x0b\x32!.meshtastic.Config.PositionConfigH\x00\x12/\n\x05power\x18\x03 \x01(\x0b\x32\x1e.meshtastic.Config.PowerConfigH\x00\x12\x33\n\x07network\x18\x04 \x01(\x0b\x32 .meshtastic.Config.NetworkConfigH\x00\x12\x33\n\x07\x64isplay\x18\x05 \x01(\x0b\x32 .meshtastic.Config.DisplayConfigH\x00\x12-\n\x04lora\x18\x06 \x01(\x0b\x32\x1d.meshtastic.Config.LoRaConfigH\x00\x12\x37\n\tbluetooth\x18\x07 \x01(\x0b\x32\".meshtastic.Config.BluetoothConfigH\x00\x1a\x91\x05\n\x0c\x44\x65viceConfig\x12\x32\n\x04role\x18\x01 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12\x16\n\x0eserial_enabled\x18\x02 \x01(\x08\x12\x19\n\x11\x64\x65\x62ug_log_enabled\x18\x03 \x01(\x08\x12\x13\n\x0b\x62utton_gpio\x18\x04 \x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 \x01(\r\x12I\n\x10rebroadcast_mode\x18\x06 \x01(\x0e\x32/.meshtastic.Config.DeviceConfig.RebroadcastMode\x12 \n\x18node_info_broadcast_secs\x18\x07 \x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 \x01(\x08\x12\x12\n\nis_managed\x18\t \x01(\x08\x12\x1c\n\x14\x64isable_triple_click\x18\n \x01(\x08\x12\r\n\x05tzdef\x18\x0b \x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c \x01(\x08\"\xaa\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x11\n\rROUTER_CLIENT\x10\x03\x12\x0c\n\x08REPEATER\x10\x04\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x12\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\"Q\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x1a\x91\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 \x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 \x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 \x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 \x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t \x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n \x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b \x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x0c \x01(\r\x12;\n\x08gps_mode\x18\r \x01(\x0e\x32).meshtastic.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10 \x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\xea\x01\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 \x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 \x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 \x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 \x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 \x01(\r\x12\"\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\r\x1a\xfe\x02\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 \x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 \x01(\t\x12\x12\n\nntp_server\x18\x05 \x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 \x01(\x08\x12\x42\n\x0c\x61\x64\x64ress_mode\x18\x07 \x01(\x0e\x32,.meshtastic.Config.NetworkConfig.AddressMode\x12@\n\x0bipv4_config\x18\x08 \x01(\x0b\x32+.meshtastic.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t \x01(\t\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 \x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 \x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 \x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\x1a\xbe\x05\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12H\n\ngps_format\x18\x02 \x01(\x0e\x32\x34.meshtastic.Config.DisplayConfig.GpsCoordinateFormat\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x19\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x12\x13\n\x0b\x66lip_screen\x18\x05 \x01(\x08\x12<\n\x05units\x18\x06 \x01(\x0e\x32-.meshtastic.Config.DisplayConfig.DisplayUnits\x12\x37\n\x04oled\x18\x07 \x01(\x0e\x32).meshtastic.Config.DisplayConfig.OledType\x12\x41\n\x0b\x64isplaymode\x18\x08 \x01(\x0e\x32,.meshtastic.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n \x01(\x08\"M\n\x13GpsCoordinateFormat\x12\x07\n\x03\x44\x45\x43\x10\x00\x12\x07\n\x03\x44MS\x10\x01\x12\x07\n\x03UTM\x10\x02\x12\x08\n\x04MGRS\x10\x03\x12\x07\n\x03OLC\x10\x04\x12\x08\n\x04OSGR\x10\x05\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"M\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\x1a\xb0\x06\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01 \x01(\x08\x12?\n\x0cmodem_preset\x18\x02 \x01(\x0e\x32).meshtastic.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03 \x01(\r\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x05 \x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 \x01(\x02\x12\x38\n\x06region\x18\x07 \x01(\x0e\x32(.meshtastic.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n \x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b \x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c \x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r \x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e \x01(\x02\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\"\xcd\x01\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\"\x94\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x12\n\x0eVERY_LONG_SLOW\x10\x02\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x1a\xad\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12<\n\x04mode\x18\x02 \x01(\x0e\x32..meshtastic.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03 \x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x42\x11\n\x0fpayload_variantBa\n\x13\x63om.geeksville.meshB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.config_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\014ConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._options = None - _CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._serialized_options = b'\030\001' - _CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._options = None - _CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._serialized_options = b'\030\001' - _CONFIG._serialized_start=40 - _CONFIG._serialized_end=4074 - _CONFIG_DEVICECONFIG._serialized_start=416 - _CONFIG_DEVICECONFIG._serialized_end=1073 - _CONFIG_DEVICECONFIG_ROLE._serialized_start=820 - _CONFIG_DEVICECONFIG_ROLE._serialized_end=990 - _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_start=992 - _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_end=1073 - _CONFIG_POSITIONCONFIG._serialized_start=1076 - _CONFIG_POSITIONCONFIG._serialized_end=1733 - _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_start=1507 - _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_end=1678 - _CONFIG_POSITIONCONFIG_GPSMODE._serialized_start=1680 - _CONFIG_POSITIONCONFIG_GPSMODE._serialized_end=1733 - _CONFIG_POWERCONFIG._serialized_start=1736 - _CONFIG_POWERCONFIG._serialized_end=1970 - _CONFIG_NETWORKCONFIG._serialized_start=1973 - _CONFIG_NETWORKCONFIG._serialized_end=2355 - _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_start=2248 - _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_end=2318 - _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_start=2320 - _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_end=2355 - _CONFIG_DISPLAYCONFIG._serialized_start=2358 - _CONFIG_DISPLAYCONFIG._serialized_end=3060 - _CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT._serialized_start=2795 - _CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT._serialized_end=2872 - _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_start=2874 - _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_end=2914 - _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_start=2916 - _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_end=2993 - _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_start=2995 - _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_end=3060 - _CONFIG_LORACONFIG._serialized_start=3063 - _CONFIG_LORACONFIG._serialized_end=3879 - _CONFIG_LORACONFIG_REGIONCODE._serialized_start=3523 - _CONFIG_LORACONFIG_REGIONCODE._serialized_end=3728 - _CONFIG_LORACONFIG_MODEMPRESET._serialized_start=3731 - _CONFIG_LORACONFIG_MODEMPRESET._serialized_end=3879 - _CONFIG_BLUETOOTHCONFIG._serialized_start=3882 - _CONFIG_BLUETOOTHCONFIG._serialized_end=4055 - _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_start=3999 - _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_end=4055 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/config_pb2.pyi b/meshtastic/config_pb2.pyi deleted file mode 100644 index 4e864f0..0000000 --- a/meshtastic/config_pb2.pyi +++ /dev/null @@ -1,1508 +0,0 @@ -""" -@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 - LED_HEARTBEAT_DISABLED_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. - """ - led_heartbeat_disabled: builtins.bool - """ - If true, disable the default blinking LED (LED_PIN) behavior on the device - """ - 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 = ..., - led_heartbeat_disabled: builtins.bool = ..., - ) -> 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", "led_heartbeat_disabled", b"led_heartbeat_disabled", "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< 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 diff --git a/meshtastic/connection_status_pb2.py b/meshtastic/connection_status_pb2.py deleted file mode 100644 index 1d37189..0000000 --- a/meshtastic/connection_status_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/connection_status.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/connection_status.proto\x12\nmeshtastic\"\xb1\x02\n\x16\x44\x65viceConnectionStatus\x12\x33\n\x04wifi\x18\x01 \x01(\x0b\x32 .meshtastic.WifiConnectionStatusH\x00\x88\x01\x01\x12;\n\x08\x65thernet\x18\x02 \x01(\x0b\x32$.meshtastic.EthernetConnectionStatusH\x01\x88\x01\x01\x12=\n\tbluetooth\x18\x03 \x01(\x0b\x32%.meshtastic.BluetoothConnectionStatusH\x02\x88\x01\x01\x12\x37\n\x06serial\x18\x04 \x01(\x0b\x32\".meshtastic.SerialConnectionStatusH\x03\x88\x01\x01\x42\x07\n\x05_wifiB\x0b\n\t_ethernetB\x0c\n\n_bluetoothB\t\n\x07_serial\"g\n\x14WifiConnectionStatus\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.meshtastic.NetworkConnectionStatus\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x0c\n\x04rssi\x18\x03 \x01(\x05\"O\n\x18\x45thernetConnectionStatus\x12\x33\n\x06status\x18\x01 \x01(\x0b\x32#.meshtastic.NetworkConnectionStatus\"{\n\x17NetworkConnectionStatus\x12\x12\n\nip_address\x18\x01 \x01(\x07\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x12\x19\n\x11is_mqtt_connected\x18\x03 \x01(\x08\x12\x1b\n\x13is_syslog_connected\x18\x04 \x01(\x08\"L\n\x19\x42luetoothConnectionStatus\x12\x0b\n\x03pin\x18\x01 \x01(\r\x12\x0c\n\x04rssi\x18\x02 \x01(\x05\x12\x14\n\x0cis_connected\x18\x03 \x01(\x08\"<\n\x16SerialConnectionStatus\x12\x0c\n\x04\x62\x61ud\x18\x01 \x01(\r\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x42\x65\n\x13\x63om.geeksville.meshB\x10\x43onnStatusProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.connection_status_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\020ConnStatusProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _DEVICECONNECTIONSTATUS._serialized_start=51 - _DEVICECONNECTIONSTATUS._serialized_end=356 - _WIFICONNECTIONSTATUS._serialized_start=358 - _WIFICONNECTIONSTATUS._serialized_end=461 - _ETHERNETCONNECTIONSTATUS._serialized_start=463 - _ETHERNETCONNECTIONSTATUS._serialized_end=542 - _NETWORKCONNECTIONSTATUS._serialized_start=544 - _NETWORKCONNECTIONSTATUS._serialized_end=667 - _BLUETOOTHCONNECTIONSTATUS._serialized_start=669 - _BLUETOOTHCONNECTIONSTATUS._serialized_end=745 - _SERIALCONNECTIONSTATUS._serialized_start=747 - _SERIALCONNECTIONSTATUS._serialized_end=807 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/connection_status_pb2.pyi b/meshtastic/connection_status_pb2.pyi deleted file mode 100644 index 1e56ba3..0000000 --- a/meshtastic/connection_status_pb2.pyi +++ /dev/null @@ -1,227 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys -import typing - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class DeviceConnectionStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - WIFI_FIELD_NUMBER: builtins.int - ETHERNET_FIELD_NUMBER: builtins.int - BLUETOOTH_FIELD_NUMBER: builtins.int - SERIAL_FIELD_NUMBER: builtins.int - @property - def wifi(self) -> global___WifiConnectionStatus: - """ - WiFi Status - """ - @property - def ethernet(self) -> global___EthernetConnectionStatus: - """ - WiFi Status - """ - @property - def bluetooth(self) -> global___BluetoothConnectionStatus: - """ - Bluetooth Status - """ - @property - def serial(self) -> global___SerialConnectionStatus: - """ - Serial Status - """ - def __init__( - self, - *, - wifi: global___WifiConnectionStatus | None = ..., - ethernet: global___EthernetConnectionStatus | None = ..., - bluetooth: global___BluetoothConnectionStatus | None = ..., - serial: global___SerialConnectionStatus | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_bluetooth", b"_bluetooth", "_ethernet", b"_ethernet", "_serial", b"_serial", "_wifi", b"_wifi", "bluetooth", b"bluetooth", "ethernet", b"ethernet", "serial", b"serial", "wifi", b"wifi"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_bluetooth", b"_bluetooth", "_ethernet", b"_ethernet", "_serial", b"_serial", "_wifi", b"_wifi", "bluetooth", b"bluetooth", "ethernet", b"ethernet", "serial", b"serial", "wifi", b"wifi"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_bluetooth", b"_bluetooth"]) -> typing_extensions.Literal["bluetooth"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_ethernet", b"_ethernet"]) -> typing_extensions.Literal["ethernet"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_serial", b"_serial"]) -> typing_extensions.Literal["serial"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_wifi", b"_wifi"]) -> typing_extensions.Literal["wifi"] | None: ... - -global___DeviceConnectionStatus = DeviceConnectionStatus - -@typing_extensions.final -class WifiConnectionStatus(google.protobuf.message.Message): - """ - WiFi connection status - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - STATUS_FIELD_NUMBER: builtins.int - SSID_FIELD_NUMBER: builtins.int - RSSI_FIELD_NUMBER: builtins.int - @property - def status(self) -> global___NetworkConnectionStatus: - """ - Connection status - """ - ssid: builtins.str - """ - WiFi access point SSID - """ - rssi: builtins.int - """ - RSSI of wireless connection - """ - def __init__( - self, - *, - status: global___NetworkConnectionStatus | None = ..., - ssid: builtins.str = ..., - rssi: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["status", b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["rssi", b"rssi", "ssid", b"ssid", "status", b"status"]) -> None: ... - -global___WifiConnectionStatus = WifiConnectionStatus - -@typing_extensions.final -class EthernetConnectionStatus(google.protobuf.message.Message): - """ - Ethernet connection status - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - STATUS_FIELD_NUMBER: builtins.int - @property - def status(self) -> global___NetworkConnectionStatus: - """ - Connection status - """ - def __init__( - self, - *, - status: global___NetworkConnectionStatus | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["status", b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... - -global___EthernetConnectionStatus = EthernetConnectionStatus - -@typing_extensions.final -class NetworkConnectionStatus(google.protobuf.message.Message): - """ - Ethernet or WiFi connection status - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - IP_ADDRESS_FIELD_NUMBER: builtins.int - IS_CONNECTED_FIELD_NUMBER: builtins.int - IS_MQTT_CONNECTED_FIELD_NUMBER: builtins.int - IS_SYSLOG_CONNECTED_FIELD_NUMBER: builtins.int - ip_address: builtins.int - """ - IP address of device - """ - is_connected: builtins.bool - """ - Whether the device has an active connection or not - """ - is_mqtt_connected: builtins.bool - """ - Whether the device has an active connection to an MQTT broker or not - """ - is_syslog_connected: builtins.bool - """ - Whether the device is actively remote syslogging or not - """ - def __init__( - self, - *, - ip_address: builtins.int = ..., - is_connected: builtins.bool = ..., - is_mqtt_connected: builtins.bool = ..., - is_syslog_connected: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ip_address", b"ip_address", "is_connected", b"is_connected", "is_mqtt_connected", b"is_mqtt_connected", "is_syslog_connected", b"is_syslog_connected"]) -> None: ... - -global___NetworkConnectionStatus = NetworkConnectionStatus - -@typing_extensions.final -class BluetoothConnectionStatus(google.protobuf.message.Message): - """ - Bluetooth connection status - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PIN_FIELD_NUMBER: builtins.int - RSSI_FIELD_NUMBER: builtins.int - IS_CONNECTED_FIELD_NUMBER: builtins.int - pin: builtins.int - """ - The pairing PIN for bluetooth - """ - rssi: builtins.int - """ - RSSI of bluetooth connection - """ - is_connected: builtins.bool - """ - Whether the device has an active connection or not - """ - def __init__( - self, - *, - pin: builtins.int = ..., - rssi: builtins.int = ..., - is_connected: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["is_connected", b"is_connected", "pin", b"pin", "rssi", b"rssi"]) -> None: ... - -global___BluetoothConnectionStatus = BluetoothConnectionStatus - -@typing_extensions.final -class SerialConnectionStatus(google.protobuf.message.Message): - """ - Serial connection status - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - BAUD_FIELD_NUMBER: builtins.int - IS_CONNECTED_FIELD_NUMBER: builtins.int - baud: builtins.int - """ - Serial baud rate - """ - is_connected: builtins.bool - """ - Whether the device has an active connection or not - """ - def __init__( - self, - *, - baud: builtins.int = ..., - is_connected: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["baud", b"baud", "is_connected", b"is_connected"]) -> None: ... - -global___SerialConnectionStatus = SerialConnectionStatus diff --git a/meshtastic/deviceonly_pb2.py b/meshtastic/deviceonly_pb2.py deleted file mode 100644 index 02dc0f8..0000000 --- a/meshtastic/deviceonly_pb2.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/deviceonly.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import channel_pb2 as meshtastic_dot_channel__pb2 -from meshtastic import localonly_pb2 as meshtastic_dot_localonly__pb2 -from meshtastic import mesh_pb2 as meshtastic_dot_mesh__pb2 -from meshtastic import module_config_pb2 as meshtastic_dot_module__config__pb2 -from meshtastic import telemetry_pb2 as meshtastic_dot_telemetry__pb2 -from . import nanopb_pb2 as nanopb__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bmeshtastic/deviceonly.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x1ameshtastic/localonly.proto\x1a\x15meshtastic/mesh.proto\x1a\x1emeshtastic/module_config.proto\x1a\x1ameshtastic/telemetry.proto\x1a\x0cnanopb.proto\"\x90\x01\n\x0cPositionLite\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12\x37\n\x0flocation_source\x18\x05 \x01(\x0e\x32\x1e.meshtastic.Position.LocSource\"\x86\x02\n\x0cNodeInfoLite\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x1e\n\x04user\x18\x02 \x01(\x0b\x32\x10.meshtastic.User\x12*\n\x08position\x18\x03 \x01(\x0b\x32\x18.meshtastic.PositionLite\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12\x31\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\x19.meshtastic.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x11\n\thops_away\x18\t \x01(\r\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\"\xc3\x03\n\x0b\x44\x65viceState\x12\'\n\x07my_node\x18\x02 \x01(\x0b\x32\x16.meshtastic.MyNodeInfo\x12\x1f\n\x05owner\x18\x03 \x01(\x0b\x32\x10.meshtastic.User\x12-\n\rreceive_queue\x18\x05 \x03(\x0b\x32\x16.meshtastic.MeshPacket\x12\x0f\n\x07version\x18\x08 \x01(\r\x12/\n\x0frx_text_message\x18\x07 \x01(\x0b\x32\x16.meshtastic.MeshPacket\x12\x13\n\x07no_save\x18\t \x01(\x08\x42\x02\x18\x01\x12\x15\n\rdid_gps_reset\x18\x0b \x01(\x08\x12+\n\x0brx_waypoint\x18\x0c \x01(\x0b\x32\x16.meshtastic.MeshPacket\x12\x44\n\x19node_remote_hardware_pins\x18\r \x03(\x0b\x32!.meshtastic.NodeRemoteHardwarePin\x12Z\n\x0cnode_db_lite\x18\x0e \x03(\x0b\x32\x18.meshtastic.NodeInfoLiteB*\x92?\'\x92\x01$std::vector\"E\n\x0b\x43hannelFile\x12%\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x13.meshtastic.Channel\x12\x0f\n\x07version\x18\x02 \x01(\r\"\x97\x02\n\x08OEMStore\x12\x16\n\x0eoem_icon_width\x18\x01 \x01(\r\x12\x17\n\x0foem_icon_height\x18\x02 \x01(\r\x12\x15\n\roem_icon_bits\x18\x03 \x01(\x0c\x12)\n\x08oem_font\x18\x04 \x01(\x0e\x32\x17.meshtastic.ScreenFonts\x12\x10\n\x08oem_text\x18\x05 \x01(\t\x12\x13\n\x0boem_aes_key\x18\x06 \x01(\x0c\x12\x31\n\x10oem_local_config\x18\x07 \x01(\x0b\x32\x17.meshtastic.LocalConfig\x12>\n\x17oem_local_module_config\x18\x08 \x01(\x0b\x32\x1d.meshtastic.LocalModuleConfig*>\n\x0bScreenFonts\x12\x0e\n\nFONT_SMALL\x10\x00\x12\x0f\n\x0b\x46ONT_MEDIUM\x10\x01\x12\x0e\n\nFONT_LARGE\x10\x02\x42m\n\x13\x63om.geeksville.meshB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x92?\x0b\xc2\x01\x08b\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.deviceonly_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000\222?\013\302\001\010' - _DEVICESTATE.fields_by_name['no_save']._options = None - _DEVICESTATE.fields_by_name['no_save']._serialized_options = b'\030\001' - _DEVICESTATE.fields_by_name['node_db_lite']._options = None - _DEVICESTATE.fields_by_name['node_db_lite']._serialized_options = b'\222?\'\222\001$std::vector' - _SCREENFONTS._serialized_start=1413 - _SCREENFONTS._serialized_end=1475 - _POSITIONLITE._serialized_start=195 - _POSITIONLITE._serialized_end=339 - _NODEINFOLITE._serialized_start=342 - _NODEINFOLITE._serialized_end=604 - _DEVICESTATE._serialized_start=607 - _DEVICESTATE._serialized_end=1058 - _CHANNELFILE._serialized_start=1060 - _CHANNELFILE._serialized_end=1129 - _OEMSTORE._serialized_start=1132 - _OEMSTORE._serialized_end=1411 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/deviceonly_pb2.pyi b/meshtastic/deviceonly_pb2.pyi deleted file mode 100644 index 38e8b9f..0000000 --- a/meshtastic/deviceonly_pb2.pyi +++ /dev/null @@ -1,386 +0,0 @@ -""" -@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 meshtastic.channel_pb2 -import meshtastic.localonly_pb2 -import meshtastic.mesh_pb2 -import meshtastic.telemetry_pb2 -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _ScreenFonts: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ScreenFontsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ScreenFonts.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - FONT_SMALL: _ScreenFonts.ValueType # 0 - """ - TODO: REPLACE - """ - FONT_MEDIUM: _ScreenFonts.ValueType # 1 - """ - TODO: REPLACE - """ - FONT_LARGE: _ScreenFonts.ValueType # 2 - """ - TODO: REPLACE - """ - -class ScreenFonts(_ScreenFonts, metaclass=_ScreenFontsEnumTypeWrapper): - """ - Font sizes for the device screen - """ - -FONT_SMALL: ScreenFonts.ValueType # 0 -""" -TODO: REPLACE -""" -FONT_MEDIUM: ScreenFonts.ValueType # 1 -""" -TODO: REPLACE -""" -FONT_LARGE: ScreenFonts.ValueType # 2 -""" -TODO: REPLACE -""" -global___ScreenFonts = ScreenFonts - -@typing_extensions.final -class PositionLite(google.protobuf.message.Message): - """ - Position with static location information only for NodeDBLite - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LATITUDE_I_FIELD_NUMBER: builtins.int - LONGITUDE_I_FIELD_NUMBER: builtins.int - ALTITUDE_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - LOCATION_SOURCE_FIELD_NUMBER: builtins.int - latitude_i: builtins.int - """ - The new preferred location encoding, multiply by 1e-7 to get degrees - in floating point - """ - longitude_i: builtins.int - """ - TODO: REPLACE - """ - altitude: builtins.int - """ - In meters above MSL (but see issue #359) - """ - time: builtins.int - """ - This is usually not sent over the mesh (to save space), but it is sent - from the phone so that the local device can set its RTC If it is sent over - the mesh (because there are devices on the mesh without GPS), it will only - be sent by devices which has a hardware GPS clock. - seconds since 1970 - """ - location_source: meshtastic.mesh_pb2.Position.LocSource.ValueType - """ - TODO: REPLACE - """ - def __init__( - self, - *, - latitude_i: builtins.int = ..., - longitude_i: builtins.int = ..., - altitude: builtins.int = ..., - time: builtins.int = ..., - location_source: meshtastic.mesh_pb2.Position.LocSource.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["altitude", b"altitude", "latitude_i", b"latitude_i", "location_source", b"location_source", "longitude_i", b"longitude_i", "time", b"time"]) -> None: ... - -global___PositionLite = PositionLite - -@typing_extensions.final -class NodeInfoLite(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NUM_FIELD_NUMBER: builtins.int - USER_FIELD_NUMBER: builtins.int - POSITION_FIELD_NUMBER: builtins.int - SNR_FIELD_NUMBER: builtins.int - LAST_HEARD_FIELD_NUMBER: builtins.int - DEVICE_METRICS_FIELD_NUMBER: builtins.int - CHANNEL_FIELD_NUMBER: builtins.int - VIA_MQTT_FIELD_NUMBER: builtins.int - HOPS_AWAY_FIELD_NUMBER: builtins.int - IS_FAVORITE_FIELD_NUMBER: builtins.int - num: builtins.int - """ - The node number - """ - @property - def user(self) -> meshtastic.mesh_pb2.User: - """ - The user info for this node - """ - @property - def position(self) -> global___PositionLite: - """ - This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. - Position.time now indicates the last time we received a POSITION from that node. - """ - snr: builtins.float - """ - Returns the Signal-to-noise ratio (SNR) of the last received message, - as measured by the receiver. Return SNR of the last received message in dB - """ - last_heard: builtins.int - """ - Set to indicate the last time we received a packet from this node - """ - @property - def device_metrics(self) -> meshtastic.telemetry_pb2.DeviceMetrics: - """ - The latest device metrics for the node. - """ - channel: builtins.int - """ - local channel index we heard that node on. Only populated if its not the default channel. - """ - via_mqtt: builtins.bool - """ - True if we witnessed the node over MQTT instead of LoRA transport - """ - hops_away: builtins.int - """ - Number of hops away from us this node is (0 if adjacent) - """ - is_favorite: builtins.bool - """ - True if node is in our favorites list - Persists between NodeDB internal clean ups - """ - def __init__( - self, - *, - num: builtins.int = ..., - user: meshtastic.mesh_pb2.User | None = ..., - position: global___PositionLite | None = ..., - snr: builtins.float = ..., - last_heard: builtins.int = ..., - device_metrics: meshtastic.telemetry_pb2.DeviceMetrics | None = ..., - channel: builtins.int = ..., - via_mqtt: builtins.bool = ..., - hops_away: builtins.int = ..., - is_favorite: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["device_metrics", b"device_metrics", "position", b"position", "user", b"user"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "is_favorite", b"is_favorite", "last_heard", b"last_heard", "num", b"num", "position", b"position", "snr", b"snr", "user", b"user", "via_mqtt", b"via_mqtt"]) -> None: ... - -global___NodeInfoLite = NodeInfoLite - -@typing_extensions.final -class DeviceState(google.protobuf.message.Message): - """ - This message is never sent over the wire, but it is used for serializing DB - state to flash in the device code - FIXME, since we write this each time we enter deep sleep (and have infinite - flash) it would be better to use some sort of append only data structure for - the receive queue and use the preferences store for the other stuff - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MY_NODE_FIELD_NUMBER: builtins.int - OWNER_FIELD_NUMBER: builtins.int - RECEIVE_QUEUE_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - RX_TEXT_MESSAGE_FIELD_NUMBER: builtins.int - NO_SAVE_FIELD_NUMBER: builtins.int - DID_GPS_RESET_FIELD_NUMBER: builtins.int - RX_WAYPOINT_FIELD_NUMBER: builtins.int - NODE_REMOTE_HARDWARE_PINS_FIELD_NUMBER: builtins.int - NODE_DB_LITE_FIELD_NUMBER: builtins.int - @property - def my_node(self) -> meshtastic.mesh_pb2.MyNodeInfo: - """ - Read only settings/info about this node - """ - @property - def owner(self) -> meshtastic.mesh_pb2.User: - """ - My owner info - """ - @property - def receive_queue(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.mesh_pb2.MeshPacket]: - """ - Received packets saved for delivery to the phone - """ - version: builtins.int - """ - A version integer used to invalidate old save files when we make - incompatible changes This integer is set at build time and is private to - NodeDB.cpp in the device code. - """ - @property - def rx_text_message(self) -> meshtastic.mesh_pb2.MeshPacket: - """ - We keep the last received text message (only) stored in the device flash, - so we can show it on the screen. - Might be null - """ - no_save: builtins.bool - """ - Used only during development. - Indicates developer is testing and changes should never be saved to flash. - Deprecated in 2.3.1 - """ - did_gps_reset: builtins.bool - """ - Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset. - """ - @property - def rx_waypoint(self) -> meshtastic.mesh_pb2.MeshPacket: - """ - We keep the last received waypoint stored in the device flash, - so we can show it on the screen. - Might be null - """ - @property - def node_remote_hardware_pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.mesh_pb2.NodeRemoteHardwarePin]: - """ - The mesh's nodes with their available gpio pins for RemoteHardware module - """ - @property - def node_db_lite(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NodeInfoLite]: - """ - New lite version of NodeDB to decrease memory footprint - """ - def __init__( - self, - *, - my_node: meshtastic.mesh_pb2.MyNodeInfo | None = ..., - owner: meshtastic.mesh_pb2.User | None = ..., - receive_queue: collections.abc.Iterable[meshtastic.mesh_pb2.MeshPacket] | None = ..., - version: builtins.int = ..., - rx_text_message: meshtastic.mesh_pb2.MeshPacket | None = ..., - no_save: builtins.bool = ..., - did_gps_reset: builtins.bool = ..., - rx_waypoint: meshtastic.mesh_pb2.MeshPacket | None = ..., - node_remote_hardware_pins: collections.abc.Iterable[meshtastic.mesh_pb2.NodeRemoteHardwarePin] | None = ..., - node_db_lite: collections.abc.Iterable[global___NodeInfoLite] | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["my_node", b"my_node", "owner", b"owner", "rx_text_message", b"rx_text_message", "rx_waypoint", b"rx_waypoint"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["did_gps_reset", b"did_gps_reset", "my_node", b"my_node", "no_save", b"no_save", "node_db_lite", b"node_db_lite", "node_remote_hardware_pins", b"node_remote_hardware_pins", "owner", b"owner", "receive_queue", b"receive_queue", "rx_text_message", b"rx_text_message", "rx_waypoint", b"rx_waypoint", "version", b"version"]) -> None: ... - -global___DeviceState = DeviceState - -@typing_extensions.final -class ChannelFile(google.protobuf.message.Message): - """ - The on-disk saved channels - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CHANNELS_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - @property - def channels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.channel_pb2.Channel]: - """ - The channels our node knows about - """ - version: builtins.int - """ - A version integer used to invalidate old save files when we make - incompatible changes This integer is set at build time and is private to - NodeDB.cpp in the device code. - """ - def __init__( - self, - *, - channels: collections.abc.Iterable[meshtastic.channel_pb2.Channel] | None = ..., - version: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["channels", b"channels", "version", b"version"]) -> None: ... - -global___ChannelFile = ChannelFile - -@typing_extensions.final -class OEMStore(google.protobuf.message.Message): - """ - This can be used for customizing the firmware distribution. If populated, - show a secondary bootup screen with custom logo and text for 2.5 seconds. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - OEM_ICON_WIDTH_FIELD_NUMBER: builtins.int - OEM_ICON_HEIGHT_FIELD_NUMBER: builtins.int - OEM_ICON_BITS_FIELD_NUMBER: builtins.int - OEM_FONT_FIELD_NUMBER: builtins.int - OEM_TEXT_FIELD_NUMBER: builtins.int - OEM_AES_KEY_FIELD_NUMBER: builtins.int - OEM_LOCAL_CONFIG_FIELD_NUMBER: builtins.int - OEM_LOCAL_MODULE_CONFIG_FIELD_NUMBER: builtins.int - oem_icon_width: builtins.int - """ - The Logo width in Px - """ - oem_icon_height: builtins.int - """ - The Logo height in Px - """ - oem_icon_bits: builtins.bytes - """ - The Logo in XBM bytechar format - """ - oem_font: global___ScreenFonts.ValueType - """ - Use this font for the OEM text. - """ - oem_text: builtins.str - """ - Use this font for the OEM text. - """ - oem_aes_key: builtins.bytes - """ - The default device encryption key, 16 or 32 byte - """ - @property - def oem_local_config(self) -> meshtastic.localonly_pb2.LocalConfig: - """ - A Preset LocalConfig to apply during factory reset - """ - @property - def oem_local_module_config(self) -> meshtastic.localonly_pb2.LocalModuleConfig: - """ - A Preset LocalModuleConfig to apply during factory reset - """ - def __init__( - self, - *, - oem_icon_width: builtins.int = ..., - oem_icon_height: builtins.int = ..., - oem_icon_bits: builtins.bytes = ..., - oem_font: global___ScreenFonts.ValueType = ..., - oem_text: builtins.str = ..., - oem_aes_key: builtins.bytes = ..., - oem_local_config: meshtastic.localonly_pb2.LocalConfig | None = ..., - oem_local_module_config: meshtastic.localonly_pb2.LocalModuleConfig | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["oem_local_config", b"oem_local_config", "oem_local_module_config", b"oem_local_module_config"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["oem_aes_key", b"oem_aes_key", "oem_font", b"oem_font", "oem_icon_bits", b"oem_icon_bits", "oem_icon_height", b"oem_icon_height", "oem_icon_width", b"oem_icon_width", "oem_local_config", b"oem_local_config", "oem_local_module_config", b"oem_local_module_config", "oem_text", b"oem_text"]) -> None: ... - -global___OEMStore = OEMStore diff --git a/meshtastic/localonly_pb2.py b/meshtastic/localonly_pb2.py deleted file mode 100644 index 324aaad..0000000 --- a/meshtastic/localonly_pb2.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/localonly.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import config_pb2 as meshtastic_dot_config__pb2 -from meshtastic import module_config_pb2 as meshtastic_dot_module__config__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ameshtastic/localonly.proto\x12\nmeshtastic\x1a\x17meshtastic/config.proto\x1a\x1emeshtastic/module_config.proto\"\xfd\x02\n\x0bLocalConfig\x12/\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x1f.meshtastic.Config.DeviceConfig\x12\x33\n\x08position\x18\x02 \x01(\x0b\x32!.meshtastic.Config.PositionConfig\x12-\n\x05power\x18\x03 \x01(\x0b\x32\x1e.meshtastic.Config.PowerConfig\x12\x31\n\x07network\x18\x04 \x01(\x0b\x32 .meshtastic.Config.NetworkConfig\x12\x31\n\x07\x64isplay\x18\x05 \x01(\x0b\x32 .meshtastic.Config.DisplayConfig\x12+\n\x04lora\x18\x06 \x01(\x0b\x32\x1d.meshtastic.Config.LoRaConfig\x12\x35\n\tbluetooth\x18\x07 \x01(\x0b\x32\".meshtastic.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\"\xfb\x06\n\x11LocalModuleConfig\x12\x31\n\x04mqtt\x18\x01 \x01(\x0b\x32#.meshtastic.ModuleConfig.MQTTConfig\x12\x35\n\x06serial\x18\x02 \x01(\x0b\x32%.meshtastic.ModuleConfig.SerialConfig\x12R\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32\x33.meshtastic.ModuleConfig.ExternalNotificationConfig\x12\x42\n\rstore_forward\x18\x04 \x01(\x0b\x32+.meshtastic.ModuleConfig.StoreForwardConfig\x12<\n\nrange_test\x18\x05 \x01(\x0b\x32(.meshtastic.ModuleConfig.RangeTestConfig\x12;\n\ttelemetry\x18\x06 \x01(\x0b\x32(.meshtastic.ModuleConfig.TelemetryConfig\x12\x44\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32,.meshtastic.ModuleConfig.CannedMessageConfig\x12\x33\n\x05\x61udio\x18\t \x01(\x0b\x32$.meshtastic.ModuleConfig.AudioConfig\x12\x46\n\x0fremote_hardware\x18\n \x01(\x0b\x32-.meshtastic.ModuleConfig.RemoteHardwareConfig\x12\x42\n\rneighbor_info\x18\x0b \x01(\x0b\x32+.meshtastic.ModuleConfig.NeighborInfoConfig\x12H\n\x10\x61mbient_lighting\x18\x0c \x01(\x0b\x32..meshtastic.ModuleConfig.AmbientLightingConfig\x12H\n\x10\x64\x65tection_sensor\x18\r \x01(\x0b\x32..meshtastic.ModuleConfig.DetectionSensorConfig\x12=\n\npaxcounter\x18\x0e \x01(\x0b\x32).meshtastic.ModuleConfig.PaxcounterConfig\x12\x0f\n\x07version\x18\x08 \x01(\rBd\n\x13\x63om.geeksville.meshB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.localonly_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\017LocalOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _LOCALCONFIG._serialized_start=100 - _LOCALCONFIG._serialized_end=481 - _LOCALMODULECONFIG._serialized_start=484 - _LOCALMODULECONFIG._serialized_end=1375 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/localonly_pb2.pyi b/meshtastic/localonly_pb2.pyi deleted file mode 100644 index 19cdc02..0000000 --- a/meshtastic/localonly_pb2.pyi +++ /dev/null @@ -1,204 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import meshtastic.config_pb2 -import meshtastic.module_config_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class LocalConfig(google.protobuf.message.Message): - """ - Protobuf structures common to apponly.proto and deviceonly.proto - This is never sent over the wire, only for local use - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - 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 - VERSION_FIELD_NUMBER: builtins.int - @property - def device(self) -> meshtastic.config_pb2.Config.DeviceConfig: - """ - The part of the config that is specific to the Device - """ - @property - def position(self) -> meshtastic.config_pb2.Config.PositionConfig: - """ - The part of the config that is specific to the GPS Position - """ - @property - def power(self) -> meshtastic.config_pb2.Config.PowerConfig: - """ - The part of the config that is specific to the Power settings - """ - @property - def network(self) -> meshtastic.config_pb2.Config.NetworkConfig: - """ - The part of the config that is specific to the Wifi Settings - """ - @property - def display(self) -> meshtastic.config_pb2.Config.DisplayConfig: - """ - The part of the config that is specific to the Display - """ - @property - def lora(self) -> meshtastic.config_pb2.Config.LoRaConfig: - """ - The part of the config that is specific to the Lora Radio - """ - @property - def bluetooth(self) -> meshtastic.config_pb2.Config.BluetoothConfig: - """ - The part of the config that is specific to the Bluetooth settings - """ - version: builtins.int - """ - A version integer used to invalidate old save files when we make - incompatible changes This integer is set at build time and is private to - NodeDB.cpp in the device code. - """ - def __init__( - self, - *, - device: meshtastic.config_pb2.Config.DeviceConfig | None = ..., - position: meshtastic.config_pb2.Config.PositionConfig | None = ..., - power: meshtastic.config_pb2.Config.PowerConfig | None = ..., - network: meshtastic.config_pb2.Config.NetworkConfig | None = ..., - display: meshtastic.config_pb2.Config.DisplayConfig | None = ..., - lora: meshtastic.config_pb2.Config.LoRaConfig | None = ..., - bluetooth: meshtastic.config_pb2.Config.BluetoothConfig | None = ..., - version: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["bluetooth", b"bluetooth", "device", b"device", "display", b"display", "lora", b"lora", "network", b"network", "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", "position", b"position", "power", b"power", "version", b"version"]) -> None: ... - -global___LocalConfig = LocalConfig - -@typing_extensions.final -class LocalModuleConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MQTT_FIELD_NUMBER: builtins.int - SERIAL_FIELD_NUMBER: builtins.int - EXTERNAL_NOTIFICATION_FIELD_NUMBER: builtins.int - STORE_FORWARD_FIELD_NUMBER: builtins.int - RANGE_TEST_FIELD_NUMBER: builtins.int - TELEMETRY_FIELD_NUMBER: builtins.int - CANNED_MESSAGE_FIELD_NUMBER: builtins.int - AUDIO_FIELD_NUMBER: builtins.int - REMOTE_HARDWARE_FIELD_NUMBER: builtins.int - NEIGHBOR_INFO_FIELD_NUMBER: builtins.int - AMBIENT_LIGHTING_FIELD_NUMBER: builtins.int - DETECTION_SENSOR_FIELD_NUMBER: builtins.int - PAXCOUNTER_FIELD_NUMBER: builtins.int - VERSION_FIELD_NUMBER: builtins.int - @property - def mqtt(self) -> meshtastic.module_config_pb2.ModuleConfig.MQTTConfig: - """ - The part of the config that is specific to the MQTT module - """ - @property - def serial(self) -> meshtastic.module_config_pb2.ModuleConfig.SerialConfig: - """ - The part of the config that is specific to the Serial module - """ - @property - def external_notification(self) -> meshtastic.module_config_pb2.ModuleConfig.ExternalNotificationConfig: - """ - The part of the config that is specific to the ExternalNotification module - """ - @property - def store_forward(self) -> meshtastic.module_config_pb2.ModuleConfig.StoreForwardConfig: - """ - The part of the config that is specific to the Store & Forward module - """ - @property - def range_test(self) -> meshtastic.module_config_pb2.ModuleConfig.RangeTestConfig: - """ - The part of the config that is specific to the RangeTest module - """ - @property - def telemetry(self) -> meshtastic.module_config_pb2.ModuleConfig.TelemetryConfig: - """ - The part of the config that is specific to the Telemetry module - """ - @property - def canned_message(self) -> meshtastic.module_config_pb2.ModuleConfig.CannedMessageConfig: - """ - The part of the config that is specific to the Canned Message module - """ - @property - def audio(self) -> meshtastic.module_config_pb2.ModuleConfig.AudioConfig: - """ - The part of the config that is specific to the Audio module - """ - @property - def remote_hardware(self) -> meshtastic.module_config_pb2.ModuleConfig.RemoteHardwareConfig: - """ - The part of the config that is specific to the Remote Hardware module - """ - @property - def neighbor_info(self) -> meshtastic.module_config_pb2.ModuleConfig.NeighborInfoConfig: - """ - The part of the config that is specific to the Neighbor Info module - """ - @property - def ambient_lighting(self) -> meshtastic.module_config_pb2.ModuleConfig.AmbientLightingConfig: - """ - The part of the config that is specific to the Ambient Lighting module - """ - @property - def detection_sensor(self) -> meshtastic.module_config_pb2.ModuleConfig.DetectionSensorConfig: - """ - The part of the config that is specific to the Detection Sensor module - """ - @property - def paxcounter(self) -> meshtastic.module_config_pb2.ModuleConfig.PaxcounterConfig: - """ - Paxcounter Config - """ - version: builtins.int - """ - A version integer used to invalidate old save files when we make - incompatible changes This integer is set at build time and is private to - NodeDB.cpp in the device code. - """ - def __init__( - self, - *, - mqtt: meshtastic.module_config_pb2.ModuleConfig.MQTTConfig | None = ..., - serial: meshtastic.module_config_pb2.ModuleConfig.SerialConfig | None = ..., - external_notification: meshtastic.module_config_pb2.ModuleConfig.ExternalNotificationConfig | None = ..., - store_forward: meshtastic.module_config_pb2.ModuleConfig.StoreForwardConfig | None = ..., - range_test: meshtastic.module_config_pb2.ModuleConfig.RangeTestConfig | None = ..., - telemetry: meshtastic.module_config_pb2.ModuleConfig.TelemetryConfig | None = ..., - canned_message: meshtastic.module_config_pb2.ModuleConfig.CannedMessageConfig | None = ..., - audio: meshtastic.module_config_pb2.ModuleConfig.AudioConfig | None = ..., - remote_hardware: meshtastic.module_config_pb2.ModuleConfig.RemoteHardwareConfig | None = ..., - neighbor_info: meshtastic.module_config_pb2.ModuleConfig.NeighborInfoConfig | None = ..., - ambient_lighting: meshtastic.module_config_pb2.ModuleConfig.AmbientLightingConfig | None = ..., - detection_sensor: meshtastic.module_config_pb2.ModuleConfig.DetectionSensorConfig | None = ..., - paxcounter: meshtastic.module_config_pb2.ModuleConfig.PaxcounterConfig | None = ..., - version: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.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", "store_forward", b"store_forward", "telemetry", b"telemetry"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.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", "store_forward", b"store_forward", "telemetry", b"telemetry", "version", b"version"]) -> None: ... - -global___LocalModuleConfig = LocalModuleConfig diff --git a/meshtastic/mesh_pb2.py b/meshtastic/mesh_pb2.py deleted file mode 100644 index 29cfeb2..0000000 --- a/meshtastic/mesh_pb2.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/mesh.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import channel_pb2 as meshtastic_dot_channel__pb2 -from meshtastic import config_pb2 as meshtastic_dot_config__pb2 -from meshtastic import module_config_pb2 as meshtastic_dot_module__config__pb2 -from meshtastic import portnums_pb2 as meshtastic_dot_portnums__pb2 -from meshtastic import telemetry_pb2 as meshtastic_dot_telemetry__pb2 -from meshtastic import xmodem_pb2 as meshtastic_dot_xmodem__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/mesh.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\x1a\x1emeshtastic/module_config.proto\x1a\x19meshtastic/portnums.proto\x1a\x1ameshtastic/telemetry.proto\x1a\x17meshtastic/xmodem.proto\"\xe5\x05\n\x08Position\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12\x37\n\x0flocation_source\x18\x05 \x01(\x0e\x32\x1e.meshtastic.Position.LocSource\x12\x37\n\x0f\x61ltitude_source\x18\x06 \x01(\x0e\x32\x1e.meshtastic.Position.AltSource\x12\x11\n\ttimestamp\x18\x07 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 \x01(\x05\x12\x14\n\x0c\x61ltitude_hae\x18\t \x01(\x11\x12#\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11\x12\x0c\n\x04PDOP\x18\x0b \x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e \x01(\r\x12\x14\n\x0cground_speed\x18\x0f \x01(\r\x12\x14\n\x0cground_track\x18\x10 \x01(\r\x12\x13\n\x0b\x66ix_quality\x18\x11 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 \x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 \x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 \x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 \x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\"\xc4\x01\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x13\n\x07macaddr\x18\x04 \x01(\x0c\x42\x02\x18\x01\x12+\n\x08hw_model\x18\x05 \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06 \x01(\x08\x12\x32\n\x04role\x18\x07 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\"\x1f\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\"\xfc\x02\n\x07Routing\x12\x33\n\rroute_request\x18\x01 \x01(\x0b\x32\x1a.meshtastic.RouteDiscoveryH\x00\x12\x31\n\x0broute_reply\x18\x02 \x01(\x0b\x32\x1a.meshtastic.RouteDiscoveryH\x00\x12\x31\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\x19.meshtastic.Routing.ErrorH\x00\"\xca\x01\n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!B\t\n\x07variant\"\xa7\x01\n\x04\x44\x61ta\x12$\n\x07portnum\x18\x01 \x01(\x0e\x32\x13.meshtastic.PortNum\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x15\n\rwant_response\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 \x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 \x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\"\x93\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x12\n\nlatitude_i\x18\x02 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x03 \x01(\x0f\x12\x0e\n\x06\x65xpire\x18\x04 \x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\x07\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 \x01(\tH\x00\x12\x10\n\x08retained\x18\x04 \x01(\x08\x42\x11\n\x0fpayload_variant\"\x95\x04\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\r\x12#\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x10.meshtastic.DataH\x00\x12\x13\n\tencrypted\x18\x05 \x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 \x01(\x07\x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t \x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12\x31\n\x08priority\x18\x0b \x01(\x0e\x32\x1f.meshtastic.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c \x01(\x05\x12\x33\n\x07\x64\x65layed\x18\r \x01(\x0e\x32\x1e.meshtastic.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\"[\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x12\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\x42\x11\n\x0fpayload_variant\"\xfe\x01\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x1e\n\x04user\x18\x02 \x01(\x0b\x32\x10.meshtastic.User\x12&\n\x08position\x18\x03 \x01(\x0b\x32\x14.meshtastic.Position\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12\x31\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\x19.meshtastic.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x11\n\thops_away\x18\t \x01(\r\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\"P\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b \x01(\r\"\xc0\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06source\x18\x03 \x01(\t\x12*\n\x05level\x18\x04 \x01(\x0e\x32\x1b.meshtastic.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 \x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 \x01(\r\"\xdb\x04\n\tFromRadio\x12\n\n\x02id\x18\x01 \x01(\r\x12(\n\x06packet\x18\x02 \x01(\x0b\x32\x16.meshtastic.MeshPacketH\x00\x12)\n\x07my_info\x18\x03 \x01(\x0b\x32\x16.meshtastic.MyNodeInfoH\x00\x12)\n\tnode_info\x18\x04 \x01(\x0b\x32\x14.meshtastic.NodeInfoH\x00\x12$\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12+\n\nlog_record\x18\x06 \x01(\x0b\x32\x15.meshtastic.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x30\n\x0cmoduleConfig\x18\t \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12&\n\x07\x63hannel\x18\n \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12.\n\x0bqueueStatus\x18\x0b \x01(\x0b\x32\x17.meshtastic.QueueStatusH\x00\x12*\n\x0cxmodemPacket\x18\x0c \x01(\x0b\x32\x12.meshtastic.XModemH\x00\x12.\n\x08metadata\x18\r \x01(\x0b\x32\x1a.meshtastic.DeviceMetadataH\x00\x12\x44\n\x16mqttClientProxyMessage\x18\x0e \x01(\x0b\x32\".meshtastic.MqttClientProxyMessageH\x00\x42\x11\n\x0fpayload_variant\"\x94\x02\n\x07ToRadio\x12(\n\x06packet\x18\x01 \x01(\x0b\x32\x16.meshtastic.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 \x01(\x08H\x00\x12*\n\x0cxmodemPacket\x18\x05 \x01(\x0b\x32\x12.meshtastic.XModemH\x00\x12\x44\n\x16mqttClientProxyMessage\x18\x06 \x01(\x0b\x32\".meshtastic.MqttClientProxyMessageH\x00\x12*\n\theartbeat\x18\x07 \x01(\x0b\x32\x15.meshtastic.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"@\n\nCompressed\x12$\n\x07portnum\x18\x01 \x01(\x0e\x32\x13.meshtastic.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x87\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_interval_secs\x18\x03 \x01(\r\x12\'\n\tneighbors\x18\x04 \x03(\x0b\x32\x14.meshtastic.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 \x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 \x01(\r\"\xad\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 \x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 \x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 \x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 \x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12\x32\n\x04role\x18\x07 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08 \x01(\r\x12+\n\x08hw_model\x18\t \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n \x01(\x08\"\x0b\n\tHeartbeat\"U\n\x15NodeRemoteHardwarePin\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12*\n\x03pin\x18\x02 \x01(\x0b\x32\x1d.meshtastic.RemoteHardwarePin\"e\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x13\n\x0b\x63hunk_count\x18\x02 \x01(\r\x12\x13\n\x0b\x63hunk_index\x18\x03 \x01(\r\x12\x15\n\rpayload_chunk\x18\x04 \x01(\x0c\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 \x03(\r\"\xaa\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x1a\n\x10request_transfer\x18\x02 \x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 \x01(\x08H\x00\x12\x32\n\rresend_chunks\x18\x04 \x01(\x0b\x32\x19.meshtastic.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xeb\x08\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK4631\x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nWIO_WM1110\x10\x15\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10 \x12\x0e\n\nNRF52840DK\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12 \n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xed\x01*\xee\x01\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x42_\n\x13\x63om.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.mesh_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _USER.fields_by_name['macaddr']._options = None - _USER.fields_by_name['macaddr']._serialized_options = b'\030\001' - _MESHPACKET.fields_by_name['delayed']._options = None - _MESHPACKET.fields_by_name['delayed']._serialized_options = b'\030\001' - _HARDWAREMODEL._serialized_start=5046 - _HARDWAREMODEL._serialized_end=6177 - _CONSTANTS._serialized_start=6179 - _CONSTANTS._serialized_end=6223 - _CRITICALERRORCODE._serialized_start=6226 - _CRITICALERRORCODE._serialized_end=6464 - _POSITION._serialized_start=201 - _POSITION._serialized_end=942 - _POSITION_LOCSOURCE._serialized_start=764 - _POSITION_LOCSOURCE._serialized_end=842 - _POSITION_ALTSOURCE._serialized_start=844 - _POSITION_ALTSOURCE._serialized_end=942 - _USER._serialized_start=945 - _USER._serialized_end=1141 - _ROUTEDISCOVERY._serialized_start=1143 - _ROUTEDISCOVERY._serialized_end=1174 - _ROUTING._serialized_start=1177 - _ROUTING._serialized_end=1557 - _ROUTING_ERROR._serialized_start=1344 - _ROUTING_ERROR._serialized_end=1546 - _DATA._serialized_start=1560 - _DATA._serialized_end=1727 - _WAYPOINT._serialized_start=1730 - _WAYPOINT._serialized_end=1877 - _MQTTCLIENTPROXYMESSAGE._serialized_start=1879 - _MQTTCLIENTPROXYMESSAGE._serialized_end=1987 - _MESHPACKET._serialized_start=1990 - _MESHPACKET._serialized_end=2523 - _MESHPACKET_PRIORITY._serialized_start=2345 - _MESHPACKET_PRIORITY._serialized_end=2436 - _MESHPACKET_DELAYED._serialized_start=2438 - _MESHPACKET_DELAYED._serialized_end=2504 - _NODEINFO._serialized_start=2526 - _NODEINFO._serialized_end=2780 - _MYNODEINFO._serialized_start=2782 - _MYNODEINFO._serialized_end=2862 - _LOGRECORD._serialized_start=2865 - _LOGRECORD._serialized_end=3057 - _LOGRECORD_LEVEL._serialized_start=2969 - _LOGRECORD_LEVEL._serialized_end=3057 - _QUEUESTATUS._serialized_start=3059 - _QUEUESTATUS._serialized_end=3139 - _FROMRADIO._serialized_start=3142 - _FROMRADIO._serialized_end=3745 - _TORADIO._serialized_start=3748 - _TORADIO._serialized_end=4024 - _COMPRESSED._serialized_start=4026 - _COMPRESSED._serialized_end=4090 - _NEIGHBORINFO._serialized_start=4093 - _NEIGHBORINFO._serialized_end=4228 - _NEIGHBOR._serialized_start=4230 - _NEIGHBOR._serialized_end=4330 - _DEVICEMETADATA._serialized_start=4333 - _DEVICEMETADATA._serialized_end=4634 - _HEARTBEAT._serialized_start=4636 - _HEARTBEAT._serialized_end=4647 - _NODEREMOTEHARDWAREPIN._serialized_start=4649 - _NODEREMOTEHARDWAREPIN._serialized_end=4734 - _CHUNKEDPAYLOAD._serialized_start=4736 - _CHUNKEDPAYLOAD._serialized_end=4837 - _RESEND_CHUNKS._serialized_start=4839 - _RESEND_CHUNKS._serialized_end=4870 - _CHUNKEDPAYLOADRESPONSE._serialized_start=4873 - _CHUNKEDPAYLOADRESPONSE._serialized_end=5043 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/mesh_pb2.pyi b/meshtastic/mesh_pb2.pyi deleted file mode 100644 index 391aae7..0000000 --- a/meshtastic/mesh_pb2.pyi +++ /dev/null @@ -1,2526 +0,0 @@ -""" -@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 meshtastic.channel_pb2 -import meshtastic.config_pb2 -import meshtastic.module_config_pb2 -import meshtastic.portnums_pb2 -import meshtastic.telemetry_pb2 -import meshtastic.xmodem_pb2 -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _HardwareModel: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_HardwareModel.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: _HardwareModel.ValueType # 0 - """ - TODO: REPLACE - """ - TLORA_V2: _HardwareModel.ValueType # 1 - """ - TODO: REPLACE - """ - TLORA_V1: _HardwareModel.ValueType # 2 - """ - TODO: REPLACE - """ - TLORA_V2_1_1P6: _HardwareModel.ValueType # 3 - """ - TODO: REPLACE - """ - TBEAM: _HardwareModel.ValueType # 4 - """ - TODO: REPLACE - """ - HELTEC_V2_0: _HardwareModel.ValueType # 5 - """ - The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13 - (see HELTEC_V2 for the new version). - """ - TBEAM_V0P7: _HardwareModel.ValueType # 6 - """ - TODO: REPLACE - """ - T_ECHO: _HardwareModel.ValueType # 7 - """ - TODO: REPLACE - """ - TLORA_V1_1P3: _HardwareModel.ValueType # 8 - """ - TODO: REPLACE - """ - RAK4631: _HardwareModel.ValueType # 9 - """ - TODO: REPLACE - """ - HELTEC_V2_1: _HardwareModel.ValueType # 10 - """ - The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37. - Sadly they did not update anything on the silkscreen to identify this board - """ - HELTEC_V1: _HardwareModel.ValueType # 11 - """ - Ancient heltec WiFi_Lora_32 board - """ - LILYGO_TBEAM_S3_CORE: _HardwareModel.ValueType # 12 - """ - New T-BEAM with ESP32-S3 CPU - """ - RAK11200: _HardwareModel.ValueType # 13 - """ - RAK WisBlock ESP32 core: https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/ - """ - NANO_G1: _HardwareModel.ValueType # 14 - """ - B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano - """ - TLORA_V2_1_1P8: _HardwareModel.ValueType # 15 - """ - TODO: REPLACE - """ - TLORA_T3_S3: _HardwareModel.ValueType # 16 - """ - TODO: REPLACE - """ - NANO_G1_EXPLORER: _HardwareModel.ValueType # 17 - """ - B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer - """ - NANO_G2_ULTRA: _HardwareModel.ValueType # 18 - """ - B&Q Consulting Nano G2 Ultra: https://wiki.uniteng.com/en/meshtastic/nano-g2-ultra - """ - LORA_TYPE: _HardwareModel.ValueType # 19 - """ - LoRAType device: https://loratype.org/ - """ - WIPHONE: _HardwareModel.ValueType # 20 - """ - wiphone https://www.wiphone.io/ - """ - WIO_WM1110: _HardwareModel.ValueType # 21 - """ - WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk - """ - STATION_G1: _HardwareModel.ValueType # 25 - """ - B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station - """ - RAK11310: _HardwareModel.ValueType # 26 - """ - RAK11310 (RP2040 + SX1262) - """ - SENSELORA_RP2040: _HardwareModel.ValueType # 27 - """ - Makerfabs SenseLoRA Receiver (RP2040 + RFM96) - """ - SENSELORA_S3: _HardwareModel.ValueType # 28 - """ - Makerfabs SenseLoRA Industrial Monitor (ESP32-S3 + RFM96) - """ - CANARYONE: _HardwareModel.ValueType # 29 - """ - Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone - """ - RP2040_LORA: _HardwareModel.ValueType # 30 - """ - Waveshare RP2040 LoRa - https://www.waveshare.com/rp2040-lora.htm - """ - STATION_G2: _HardwareModel.ValueType # 31 - """ - B&Q Consulting Station G2: https://wiki.uniteng.com/en/meshtastic/station-g2 - """ - LORA_RELAY_V1: _HardwareModel.ValueType # 32 - """ - --------------------------------------------------------------------------- - Less common/prototype boards listed here (needs one more byte over the air) - --------------------------------------------------------------------------- - """ - NRF52840DK: _HardwareModel.ValueType # 33 - """ - TODO: REPLACE - """ - PPR: _HardwareModel.ValueType # 34 - """ - TODO: REPLACE - """ - GENIEBLOCKS: _HardwareModel.ValueType # 35 - """ - TODO: REPLACE - """ - NRF52_UNKNOWN: _HardwareModel.ValueType # 36 - """ - TODO: REPLACE - """ - PORTDUINO: _HardwareModel.ValueType # 37 - """ - TODO: REPLACE - """ - ANDROID_SIM: _HardwareModel.ValueType # 38 - """ - The simulator built into the android app - """ - DIY_V1: _HardwareModel.ValueType # 39 - """ - Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics - """ - NRF52840_PCA10059: _HardwareModel.ValueType # 40 - """ - nRF52840 Dongle : https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle/ - """ - DR_DEV: _HardwareModel.ValueType # 41 - """ - Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3 - """ - M5STACK: _HardwareModel.ValueType # 42 - """ - M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ - """ - HELTEC_V3: _HardwareModel.ValueType # 43 - """ - New Heltec LoRA32 with ESP32-S3 CPU - """ - HELTEC_WSL_V3: _HardwareModel.ValueType # 44 - """ - New Heltec Wireless Stick Lite with ESP32-S3 CPU - """ - BETAFPV_2400_TX: _HardwareModel.ValueType # 45 - """ - New BETAFPV ELRS Micro TX Module 2.4G with ESP32 CPU - """ - BETAFPV_900_NANO_TX: _HardwareModel.ValueType # 46 - """ - BetaFPV ExpressLRS "Nano" TX Module 900MHz with ESP32 CPU - """ - RPI_PICO: _HardwareModel.ValueType # 47 - """ - Raspberry Pi Pico (W) with Waveshare SX1262 LoRa Node Module - """ - HELTEC_WIRELESS_TRACKER: _HardwareModel.ValueType # 48 - """ - Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT - Newer V1.1, version is written on the PCB near the display. - """ - HELTEC_WIRELESS_PAPER: _HardwareModel.ValueType # 49 - """ - Heltec Wireless Paper with ESP32-S3 CPU and E-Ink display - """ - T_DECK: _HardwareModel.ValueType # 50 - """ - LilyGo T-Deck with ESP32-S3 CPU, Keyboard and IPS display - """ - T_WATCH_S3: _HardwareModel.ValueType # 51 - """ - LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display - """ - PICOMPUTER_S3: _HardwareModel.ValueType # 52 - """ - Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display - """ - HELTEC_HT62: _HardwareModel.ValueType # 53 - """ - Heltec HT-CT62 with ESP32-C3 CPU and SX1262 LoRa - """ - EBYTE_ESP32_S3: _HardwareModel.ValueType # 54 - """ - EBYTE SPI LoRa module and ESP32-S3 - """ - ESP32_S3_PICO: _HardwareModel.ValueType # 55 - """ - Waveshare ESP32-S3-PICO with PICO LoRa HAT and 2.9inch e-Ink - """ - CHATTER_2: _HardwareModel.ValueType # 56 - """ - CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom - Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible - with one cut and one jumper Meshtastic works - """ - HELTEC_WIRELESS_PAPER_V1_0: _HardwareModel.ValueType # 57 - """ - Heltec Wireless Paper, With ESP32-S3 CPU and E-Ink display - Older "V1.0" Variant, has no "version sticker" - E-Ink model is DEPG0213BNS800 - Tab on the screen protector is RED - Flex connector marking is FPC-7528B - """ - HELTEC_WIRELESS_TRACKER_V1_0: _HardwareModel.ValueType # 58 - """ - Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT - Older "V1.0" Variant - """ - UNPHONE: _HardwareModel.ValueType # 59 - """ - unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope - """ - TD_LORAC: _HardwareModel.ValueType # 60 - """ - Teledatics TD-LORAC NRF52840 based M.2 LoRA module - Compatible with the TD-WRLS development board - """ - CDEBYTE_EORA_S3: _HardwareModel.ValueType # 61 - """ - CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3 - """ - TWC_MESH_V4: _HardwareModel.ValueType # 62 - """ - TWC_MESH_V4 - Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS - """ - NRF52_PROMICRO_DIY: _HardwareModel.ValueType # 63 - """ - NRF52_PROMICRO_DIY - Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS - """ - RADIOMASTER_900_BANDIT_NANO: _HardwareModel.ValueType # 64 - """ - RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module - ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS - """ - PRIVATE_HW: _HardwareModel.ValueType # 255 - """ - ------------------------------------------------------------------------------------------------------------------------------------------ - Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. - ------------------------------------------------------------------------------------------------------------------------------------------ - """ - -class HardwareModel(_HardwareModel, metaclass=_HardwareModelEnumTypeWrapper): - """ - Note: these enum names must EXACTLY match the string used in the device - bin/build-all.sh script. - Because they will be used to find firmware filenames in the android app for OTA updates. - To match the old style filenames, _ is converted to -, p is converted to . - """ - -UNSET: HardwareModel.ValueType # 0 -""" -TODO: REPLACE -""" -TLORA_V2: HardwareModel.ValueType # 1 -""" -TODO: REPLACE -""" -TLORA_V1: HardwareModel.ValueType # 2 -""" -TODO: REPLACE -""" -TLORA_V2_1_1P6: HardwareModel.ValueType # 3 -""" -TODO: REPLACE -""" -TBEAM: HardwareModel.ValueType # 4 -""" -TODO: REPLACE -""" -HELTEC_V2_0: HardwareModel.ValueType # 5 -""" -The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13 -(see HELTEC_V2 for the new version). -""" -TBEAM_V0P7: HardwareModel.ValueType # 6 -""" -TODO: REPLACE -""" -T_ECHO: HardwareModel.ValueType # 7 -""" -TODO: REPLACE -""" -TLORA_V1_1P3: HardwareModel.ValueType # 8 -""" -TODO: REPLACE -""" -RAK4631: HardwareModel.ValueType # 9 -""" -TODO: REPLACE -""" -HELTEC_V2_1: HardwareModel.ValueType # 10 -""" -The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37. -Sadly they did not update anything on the silkscreen to identify this board -""" -HELTEC_V1: HardwareModel.ValueType # 11 -""" -Ancient heltec WiFi_Lora_32 board -""" -LILYGO_TBEAM_S3_CORE: HardwareModel.ValueType # 12 -""" -New T-BEAM with ESP32-S3 CPU -""" -RAK11200: HardwareModel.ValueType # 13 -""" -RAK WisBlock ESP32 core: https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/ -""" -NANO_G1: HardwareModel.ValueType # 14 -""" -B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano -""" -TLORA_V2_1_1P8: HardwareModel.ValueType # 15 -""" -TODO: REPLACE -""" -TLORA_T3_S3: HardwareModel.ValueType # 16 -""" -TODO: REPLACE -""" -NANO_G1_EXPLORER: HardwareModel.ValueType # 17 -""" -B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer -""" -NANO_G2_ULTRA: HardwareModel.ValueType # 18 -""" -B&Q Consulting Nano G2 Ultra: https://wiki.uniteng.com/en/meshtastic/nano-g2-ultra -""" -LORA_TYPE: HardwareModel.ValueType # 19 -""" -LoRAType device: https://loratype.org/ -""" -WIPHONE: HardwareModel.ValueType # 20 -""" -wiphone https://www.wiphone.io/ -""" -WIO_WM1110: HardwareModel.ValueType # 21 -""" -WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk -""" -STATION_G1: HardwareModel.ValueType # 25 -""" -B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station -""" -RAK11310: HardwareModel.ValueType # 26 -""" -RAK11310 (RP2040 + SX1262) -""" -SENSELORA_RP2040: HardwareModel.ValueType # 27 -""" -Makerfabs SenseLoRA Receiver (RP2040 + RFM96) -""" -SENSELORA_S3: HardwareModel.ValueType # 28 -""" -Makerfabs SenseLoRA Industrial Monitor (ESP32-S3 + RFM96) -""" -CANARYONE: HardwareModel.ValueType # 29 -""" -Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone -""" -RP2040_LORA: HardwareModel.ValueType # 30 -""" -Waveshare RP2040 LoRa - https://www.waveshare.com/rp2040-lora.htm -""" -STATION_G2: HardwareModel.ValueType # 31 -""" -B&Q Consulting Station G2: https://wiki.uniteng.com/en/meshtastic/station-g2 -""" -LORA_RELAY_V1: HardwareModel.ValueType # 32 -""" ---------------------------------------------------------------------------- -Less common/prototype boards listed here (needs one more byte over the air) ---------------------------------------------------------------------------- -""" -NRF52840DK: HardwareModel.ValueType # 33 -""" -TODO: REPLACE -""" -PPR: HardwareModel.ValueType # 34 -""" -TODO: REPLACE -""" -GENIEBLOCKS: HardwareModel.ValueType # 35 -""" -TODO: REPLACE -""" -NRF52_UNKNOWN: HardwareModel.ValueType # 36 -""" -TODO: REPLACE -""" -PORTDUINO: HardwareModel.ValueType # 37 -""" -TODO: REPLACE -""" -ANDROID_SIM: HardwareModel.ValueType # 38 -""" -The simulator built into the android app -""" -DIY_V1: HardwareModel.ValueType # 39 -""" -Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics -""" -NRF52840_PCA10059: HardwareModel.ValueType # 40 -""" -nRF52840 Dongle : https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle/ -""" -DR_DEV: HardwareModel.ValueType # 41 -""" -Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3 -""" -M5STACK: HardwareModel.ValueType # 42 -""" -M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ -""" -HELTEC_V3: HardwareModel.ValueType # 43 -""" -New Heltec LoRA32 with ESP32-S3 CPU -""" -HELTEC_WSL_V3: HardwareModel.ValueType # 44 -""" -New Heltec Wireless Stick Lite with ESP32-S3 CPU -""" -BETAFPV_2400_TX: HardwareModel.ValueType # 45 -""" -New BETAFPV ELRS Micro TX Module 2.4G with ESP32 CPU -""" -BETAFPV_900_NANO_TX: HardwareModel.ValueType # 46 -""" -BetaFPV ExpressLRS "Nano" TX Module 900MHz with ESP32 CPU -""" -RPI_PICO: HardwareModel.ValueType # 47 -""" -Raspberry Pi Pico (W) with Waveshare SX1262 LoRa Node Module -""" -HELTEC_WIRELESS_TRACKER: HardwareModel.ValueType # 48 -""" -Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT -Newer V1.1, version is written on the PCB near the display. -""" -HELTEC_WIRELESS_PAPER: HardwareModel.ValueType # 49 -""" -Heltec Wireless Paper with ESP32-S3 CPU and E-Ink display -""" -T_DECK: HardwareModel.ValueType # 50 -""" -LilyGo T-Deck with ESP32-S3 CPU, Keyboard and IPS display -""" -T_WATCH_S3: HardwareModel.ValueType # 51 -""" -LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display -""" -PICOMPUTER_S3: HardwareModel.ValueType # 52 -""" -Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display -""" -HELTEC_HT62: HardwareModel.ValueType # 53 -""" -Heltec HT-CT62 with ESP32-C3 CPU and SX1262 LoRa -""" -EBYTE_ESP32_S3: HardwareModel.ValueType # 54 -""" -EBYTE SPI LoRa module and ESP32-S3 -""" -ESP32_S3_PICO: HardwareModel.ValueType # 55 -""" -Waveshare ESP32-S3-PICO with PICO LoRa HAT and 2.9inch e-Ink -""" -CHATTER_2: HardwareModel.ValueType # 56 -""" -CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom -Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible -with one cut and one jumper Meshtastic works -""" -HELTEC_WIRELESS_PAPER_V1_0: HardwareModel.ValueType # 57 -""" -Heltec Wireless Paper, With ESP32-S3 CPU and E-Ink display -Older "V1.0" Variant, has no "version sticker" -E-Ink model is DEPG0213BNS800 -Tab on the screen protector is RED -Flex connector marking is FPC-7528B -""" -HELTEC_WIRELESS_TRACKER_V1_0: HardwareModel.ValueType # 58 -""" -Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT -Older "V1.0" Variant -""" -UNPHONE: HardwareModel.ValueType # 59 -""" -unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope -""" -TD_LORAC: HardwareModel.ValueType # 60 -""" -Teledatics TD-LORAC NRF52840 based M.2 LoRA module -Compatible with the TD-WRLS development board -""" -CDEBYTE_EORA_S3: HardwareModel.ValueType # 61 -""" -CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3 -""" -TWC_MESH_V4: HardwareModel.ValueType # 62 -""" -TWC_MESH_V4 -Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS -""" -NRF52_PROMICRO_DIY: HardwareModel.ValueType # 63 -""" -NRF52_PROMICRO_DIY -Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS -""" -RADIOMASTER_900_BANDIT_NANO: HardwareModel.ValueType # 64 -""" -RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module -ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS -""" -PRIVATE_HW: HardwareModel.ValueType # 255 -""" ------------------------------------------------------------------------------------------------------------------------------------------- -Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. ------------------------------------------------------------------------------------------------------------------------------------------- -""" -global___HardwareModel = HardwareModel - -class _Constants: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ConstantsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Constants.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ZERO: _Constants.ValueType # 0 - """ - First enum must be zero, and we are just using this enum to - pass int constants between two very different environments - """ - DATA_PAYLOAD_LEN: _Constants.ValueType # 237 - """ - From mesh.options - note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is - outside of this envelope - """ - -class Constants(_Constants, metaclass=_ConstantsEnumTypeWrapper): - """ - Shared constants between device and phone - """ - -ZERO: Constants.ValueType # 0 -""" -First enum must be zero, and we are just using this enum to -pass int constants between two very different environments -""" -DATA_PAYLOAD_LEN: Constants.ValueType # 237 -""" -From mesh.options -note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is -outside of this envelope -""" -global___Constants = Constants - -class _CriticalErrorCode: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _CriticalErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CriticalErrorCode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NONE: _CriticalErrorCode.ValueType # 0 - """ - TODO: REPLACE - """ - TX_WATCHDOG: _CriticalErrorCode.ValueType # 1 - """ - A software bug was detected while trying to send lora - """ - SLEEP_ENTER_WAIT: _CriticalErrorCode.ValueType # 2 - """ - A software bug was detected on entry to sleep - """ - NO_RADIO: _CriticalErrorCode.ValueType # 3 - """ - No Lora radio hardware could be found - """ - UNSPECIFIED: _CriticalErrorCode.ValueType # 4 - """ - Not normally used - """ - UBLOX_UNIT_FAILED: _CriticalErrorCode.ValueType # 5 - """ - We failed while configuring a UBlox GPS - """ - NO_AXP192: _CriticalErrorCode.ValueType # 6 - """ - This board was expected to have a power management chip and it is missing or broken - """ - INVALID_RADIO_SETTING: _CriticalErrorCode.ValueType # 7 - """ - The channel tried to set a radio setting which is not supported by this chipset, - radio comms settings are now undefined. - """ - TRANSMIT_FAILED: _CriticalErrorCode.ValueType # 8 - """ - Radio transmit hardware failure. We sent data to the radio chip, but it didn't - reply with an interrupt. - """ - BROWNOUT: _CriticalErrorCode.ValueType # 9 - """ - We detected that the main CPU voltage dropped below the minimum acceptable value - """ - SX1262_FAILURE: _CriticalErrorCode.ValueType # 10 - """Selftest of SX1262 radio chip failed""" - RADIO_SPI_BUG: _CriticalErrorCode.ValueType # 11 - """ - A (likely software but possibly hardware) failure was detected while trying to send packets. - If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug - """ - -class CriticalErrorCode(_CriticalErrorCode, metaclass=_CriticalErrorCodeEnumTypeWrapper): - """ - Error codes for critical errors - The device might report these fault codes on the screen. - If you encounter a fault code, please post on the meshtastic.discourse.group - and we'll try to help. - """ - -NONE: CriticalErrorCode.ValueType # 0 -""" -TODO: REPLACE -""" -TX_WATCHDOG: CriticalErrorCode.ValueType # 1 -""" -A software bug was detected while trying to send lora -""" -SLEEP_ENTER_WAIT: CriticalErrorCode.ValueType # 2 -""" -A software bug was detected on entry to sleep -""" -NO_RADIO: CriticalErrorCode.ValueType # 3 -""" -No Lora radio hardware could be found -""" -UNSPECIFIED: CriticalErrorCode.ValueType # 4 -""" -Not normally used -""" -UBLOX_UNIT_FAILED: CriticalErrorCode.ValueType # 5 -""" -We failed while configuring a UBlox GPS -""" -NO_AXP192: CriticalErrorCode.ValueType # 6 -""" -This board was expected to have a power management chip and it is missing or broken -""" -INVALID_RADIO_SETTING: CriticalErrorCode.ValueType # 7 -""" -The channel tried to set a radio setting which is not supported by this chipset, -radio comms settings are now undefined. -""" -TRANSMIT_FAILED: CriticalErrorCode.ValueType # 8 -""" -Radio transmit hardware failure. We sent data to the radio chip, but it didn't -reply with an interrupt. -""" -BROWNOUT: CriticalErrorCode.ValueType # 9 -""" -We detected that the main CPU voltage dropped below the minimum acceptable value -""" -SX1262_FAILURE: CriticalErrorCode.ValueType # 10 -"""Selftest of SX1262 radio chip failed""" -RADIO_SPI_BUG: CriticalErrorCode.ValueType # 11 -""" -A (likely software but possibly hardware) failure was detected while trying to send packets. -If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug -""" -global___CriticalErrorCode = CriticalErrorCode - -@typing_extensions.final -class Position(google.protobuf.message.Message): - """ - a gps position - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _LocSource: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _LocSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Position._LocSource.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - LOC_UNSET: Position._LocSource.ValueType # 0 - """ - TODO: REPLACE - """ - LOC_MANUAL: Position._LocSource.ValueType # 1 - """ - TODO: REPLACE - """ - LOC_INTERNAL: Position._LocSource.ValueType # 2 - """ - TODO: REPLACE - """ - LOC_EXTERNAL: Position._LocSource.ValueType # 3 - """ - TODO: REPLACE - """ - - class LocSource(_LocSource, metaclass=_LocSourceEnumTypeWrapper): - """ - How the location was acquired: manual, onboard GPS, external (EUD) GPS - """ - - LOC_UNSET: Position.LocSource.ValueType # 0 - """ - TODO: REPLACE - """ - LOC_MANUAL: Position.LocSource.ValueType # 1 - """ - TODO: REPLACE - """ - LOC_INTERNAL: Position.LocSource.ValueType # 2 - """ - TODO: REPLACE - """ - LOC_EXTERNAL: Position.LocSource.ValueType # 3 - """ - TODO: REPLACE - """ - - class _AltSource: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _AltSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Position._AltSource.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ALT_UNSET: Position._AltSource.ValueType # 0 - """ - TODO: REPLACE - """ - ALT_MANUAL: Position._AltSource.ValueType # 1 - """ - TODO: REPLACE - """ - ALT_INTERNAL: Position._AltSource.ValueType # 2 - """ - TODO: REPLACE - """ - ALT_EXTERNAL: Position._AltSource.ValueType # 3 - """ - TODO: REPLACE - """ - ALT_BAROMETRIC: Position._AltSource.ValueType # 4 - """ - TODO: REPLACE - """ - - class AltSource(_AltSource, metaclass=_AltSourceEnumTypeWrapper): - """ - How the altitude was acquired: manual, GPS int/ext, etc - Default: same as location_source if present - """ - - ALT_UNSET: Position.AltSource.ValueType # 0 - """ - TODO: REPLACE - """ - ALT_MANUAL: Position.AltSource.ValueType # 1 - """ - TODO: REPLACE - """ - ALT_INTERNAL: Position.AltSource.ValueType # 2 - """ - TODO: REPLACE - """ - ALT_EXTERNAL: Position.AltSource.ValueType # 3 - """ - TODO: REPLACE - """ - ALT_BAROMETRIC: Position.AltSource.ValueType # 4 - """ - TODO: REPLACE - """ - - LATITUDE_I_FIELD_NUMBER: builtins.int - LONGITUDE_I_FIELD_NUMBER: builtins.int - ALTITUDE_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - LOCATION_SOURCE_FIELD_NUMBER: builtins.int - ALTITUDE_SOURCE_FIELD_NUMBER: builtins.int - TIMESTAMP_FIELD_NUMBER: builtins.int - TIMESTAMP_MILLIS_ADJUST_FIELD_NUMBER: builtins.int - ALTITUDE_HAE_FIELD_NUMBER: builtins.int - ALTITUDE_GEOIDAL_SEPARATION_FIELD_NUMBER: builtins.int - PDOP_FIELD_NUMBER: builtins.int - HDOP_FIELD_NUMBER: builtins.int - VDOP_FIELD_NUMBER: builtins.int - GPS_ACCURACY_FIELD_NUMBER: builtins.int - GROUND_SPEED_FIELD_NUMBER: builtins.int - GROUND_TRACK_FIELD_NUMBER: builtins.int - FIX_QUALITY_FIELD_NUMBER: builtins.int - FIX_TYPE_FIELD_NUMBER: builtins.int - SATS_IN_VIEW_FIELD_NUMBER: builtins.int - SENSOR_ID_FIELD_NUMBER: builtins.int - NEXT_UPDATE_FIELD_NUMBER: builtins.int - SEQ_NUMBER_FIELD_NUMBER: builtins.int - PRECISION_BITS_FIELD_NUMBER: builtins.int - latitude_i: builtins.int - """ - The new preferred location encoding, multiply by 1e-7 to get degrees - in floating point - """ - longitude_i: builtins.int - """ - TODO: REPLACE - """ - altitude: builtins.int - """ - In meters above MSL (but see issue #359) - """ - time: builtins.int - """ - This is usually not sent over the mesh (to save space), but it is sent - from the phone so that the local device can set its time if it is sent over - the mesh (because there are devices on the mesh without GPS or RTC). - seconds since 1970 - """ - location_source: global___Position.LocSource.ValueType - """ - TODO: REPLACE - """ - altitude_source: global___Position.AltSource.ValueType - """ - TODO: REPLACE - """ - timestamp: builtins.int - """ - Positional timestamp (actual timestamp of GPS solution) in integer epoch seconds - """ - timestamp_millis_adjust: builtins.int - """ - Pos. timestamp milliseconds adjustment (rarely available or required) - """ - altitude_hae: builtins.int - """ - HAE altitude in meters - can be used instead of MSL altitude - """ - altitude_geoidal_separation: builtins.int - """ - Geoidal separation in meters - """ - PDOP: builtins.int - """ - Horizontal, Vertical and Position Dilution of Precision, in 1/100 units - - PDOP is sufficient for most cases - - for higher precision scenarios, HDOP and VDOP can be used instead, - in which case PDOP becomes redundant (PDOP=sqrt(HDOP^2 + VDOP^2)) - TODO: REMOVE/INTEGRATE - """ - HDOP: builtins.int - """ - TODO: REPLACE - """ - VDOP: builtins.int - """ - TODO: REPLACE - """ - gps_accuracy: builtins.int - """ - GPS accuracy (a hardware specific constant) in mm - multiplied with DOP to calculate positional accuracy - Default: "'bout three meters-ish" :) - """ - ground_speed: builtins.int - """ - Ground speed in m/s and True North TRACK in 1/100 degrees - Clarification of terms: - - "track" is the direction of motion (measured in horizontal plane) - - "heading" is where the fuselage points (measured in horizontal plane) - - "yaw" indicates a relative rotation about the vertical axis - TODO: REMOVE/INTEGRATE - """ - ground_track: builtins.int - """ - TODO: REPLACE - """ - fix_quality: builtins.int - """ - GPS fix quality (from NMEA GxGGA statement or similar) - """ - fix_type: builtins.int - """ - GPS fix type 2D/3D (from NMEA GxGSA statement) - """ - sats_in_view: builtins.int - """ - GPS "Satellites in View" number - """ - sensor_id: builtins.int - """ - Sensor ID - in case multiple positioning sensors are being used - """ - next_update: builtins.int - """ - Estimated/expected time (in seconds) until next update: - - if we update at fixed intervals of X seconds, use X - - if we update at dynamic intervals (based on relative movement etc), - but "AT LEAST every Y seconds", use Y - """ - seq_number: builtins.int - """ - A sequence number, incremented with each Position message to help - detect lost updates if needed - """ - precision_bits: builtins.int - """ - Indicates the bits of precision set by the sending node - """ - def __init__( - self, - *, - latitude_i: builtins.int = ..., - longitude_i: builtins.int = ..., - altitude: builtins.int = ..., - time: builtins.int = ..., - location_source: global___Position.LocSource.ValueType = ..., - altitude_source: global___Position.AltSource.ValueType = ..., - timestamp: builtins.int = ..., - timestamp_millis_adjust: builtins.int = ..., - altitude_hae: builtins.int = ..., - altitude_geoidal_separation: builtins.int = ..., - PDOP: builtins.int = ..., - HDOP: builtins.int = ..., - VDOP: builtins.int = ..., - gps_accuracy: builtins.int = ..., - ground_speed: builtins.int = ..., - ground_track: builtins.int = ..., - fix_quality: builtins.int = ..., - fix_type: builtins.int = ..., - sats_in_view: builtins.int = ..., - sensor_id: builtins.int = ..., - next_update: builtins.int = ..., - seq_number: builtins.int = ..., - precision_bits: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["HDOP", b"HDOP", "PDOP", b"PDOP", "VDOP", b"VDOP", "altitude", b"altitude", "altitude_geoidal_separation", b"altitude_geoidal_separation", "altitude_hae", b"altitude_hae", "altitude_source", b"altitude_source", "fix_quality", b"fix_quality", "fix_type", b"fix_type", "gps_accuracy", b"gps_accuracy", "ground_speed", b"ground_speed", "ground_track", b"ground_track", "latitude_i", b"latitude_i", "location_source", b"location_source", "longitude_i", b"longitude_i", "next_update", b"next_update", "precision_bits", b"precision_bits", "sats_in_view", b"sats_in_view", "sensor_id", b"sensor_id", "seq_number", b"seq_number", "time", b"time", "timestamp", b"timestamp", "timestamp_millis_adjust", b"timestamp_millis_adjust"]) -> None: ... - -global___Position = Position - -@typing_extensions.final -class User(google.protobuf.message.Message): - """ - Broadcast when a newly powered mesh node wants to find a node num it can use - Sent from the phone over bluetooth to set the user id for the owner of this node. - Also sent from nodes to each other when a new node signs on (so all clients can have this info) - The algorithm is as follows: - when a node starts up, it broadcasts their user and the normal flow is for all - other nodes to reply with their User as well (so the new node can build its nodedb) - If a node ever receives a User (not just the first broadcast) message where - the sender node number equals our node number, that indicates a collision has - occurred and the following steps should happen: - If the receiving node (that was already in the mesh)'s macaddr is LOWER than the - new User who just tried to sign in: it gets to keep its nodenum. - We send a broadcast message of OUR User (we use a broadcast so that the other node can - receive our message, considering we have the same id - it also serves to let - observers correct their nodedb) - this case is rare so it should be okay. - If any node receives a User where the macaddr is GTE than their local macaddr, - they have been vetoed and should pick a new random nodenum (filtering against - whatever it knows about the nodedb) and rebroadcast their User. - A few nodenums are reserved and will never be requested: - 0xff - broadcast - 0 through 3 - for future use - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - LONG_NAME_FIELD_NUMBER: builtins.int - SHORT_NAME_FIELD_NUMBER: builtins.int - MACADDR_FIELD_NUMBER: builtins.int - HW_MODEL_FIELD_NUMBER: builtins.int - IS_LICENSED_FIELD_NUMBER: builtins.int - ROLE_FIELD_NUMBER: builtins.int - id: builtins.str - """ - A globally unique ID string for this user. - In the case of Signal that would mean +16504442323, for the default macaddr derived id it would be !<8 hexidecimal bytes>. - Note: app developers are encouraged to also use the following standard - node IDs "^all" (for broadcast), "^local" (for the locally connected node) - """ - long_name: builtins.str - """ - A full name for this user, i.e. "Kevin Hester" - """ - short_name: builtins.str - """ - A VERY short name, ideally two characters. - Suitable for a tiny OLED screen - """ - macaddr: builtins.bytes - """ - Deprecated in Meshtastic 2.1.x - This is the addr of the radio. - Not populated by the phone, but added by the esp32 when broadcasting - """ - hw_model: global___HardwareModel.ValueType - """ - TBEAM, HELTEC, etc... - Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. - Apps will still need the string here for older builds - (so OTA update can find the right image), but if the enum is available it will be used instead. - """ - is_licensed: builtins.bool - """ - In some regions Ham radio operators have different bandwidth limitations than others. - If this user is a licensed operator, set this flag. - Also, "long_name" should be their licence number. - """ - role: meshtastic.config_pb2.Config.DeviceConfig.Role.ValueType - """ - Indicates that the user's role in the mesh - """ - def __init__( - self, - *, - id: builtins.str = ..., - long_name: builtins.str = ..., - short_name: builtins.str = ..., - macaddr: builtins.bytes = ..., - hw_model: global___HardwareModel.ValueType = ..., - is_licensed: builtins.bool = ..., - role: meshtastic.config_pb2.Config.DeviceConfig.Role.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["hw_model", b"hw_model", "id", b"id", "is_licensed", b"is_licensed", "long_name", b"long_name", "macaddr", b"macaddr", "role", b"role", "short_name", b"short_name"]) -> None: ... - -global___User = User - -@typing_extensions.final -class RouteDiscovery(google.protobuf.message.Message): - """ - A message used in our Dynamic Source Routing protocol (RFC 4728 based) - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROUTE_FIELD_NUMBER: builtins.int - @property - def route(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: - """ - The list of nodenums this packet has visited so far - """ - def __init__( - self, - *, - route: collections.abc.Iterable[builtins.int] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["route", b"route"]) -> None: ... - -global___RouteDiscovery = RouteDiscovery - -@typing_extensions.final -class Routing(google.protobuf.message.Message): - """ - A Routing control Data packet handled by the routing module - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Error: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Routing._Error.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NONE: Routing._Error.ValueType # 0 - """ - This message is not a failure - """ - NO_ROUTE: Routing._Error.ValueType # 1 - """ - Our node doesn't have a route to the requested destination anymore. - """ - GOT_NAK: Routing._Error.ValueType # 2 - """ - We received a nak while trying to forward on your behalf - """ - TIMEOUT: Routing._Error.ValueType # 3 - """ - TODO: REPLACE - """ - NO_INTERFACE: Routing._Error.ValueType # 4 - """ - No suitable interface could be found for delivering this packet - """ - MAX_RETRANSMIT: Routing._Error.ValueType # 5 - """ - We reached the max retransmission count (typically for naive flood routing) - """ - NO_CHANNEL: Routing._Error.ValueType # 6 - """ - No suitable channel was found for sending this packet (i.e. was requested channel index disabled?) - """ - TOO_LARGE: Routing._Error.ValueType # 7 - """ - The packet was too big for sending (exceeds interface MTU after encoding) - """ - NO_RESPONSE: Routing._Error.ValueType # 8 - """ - The request had want_response set, the request reached the destination node, but no service on that node wants to send a response - (possibly due to bad channel permissions) - """ - DUTY_CYCLE_LIMIT: Routing._Error.ValueType # 9 - """ - Cannot send currently because duty cycle regulations will be violated. - """ - BAD_REQUEST: Routing._Error.ValueType # 32 - """ - The application layer service on the remote node received your request, but considered your request somehow invalid - """ - NOT_AUTHORIZED: Routing._Error.ValueType # 33 - """ - The application layer service on the remote node received your request, but considered your request not authorized - (i.e you did not send the request on the required bound channel) - """ - - class Error(_Error, metaclass=_ErrorEnumTypeWrapper): - """ - A failure in delivering a message (usually used for routing control messages, but might be provided in addition to ack.fail_id to provide - details on the type of failure). - """ - - NONE: Routing.Error.ValueType # 0 - """ - This message is not a failure - """ - NO_ROUTE: Routing.Error.ValueType # 1 - """ - Our node doesn't have a route to the requested destination anymore. - """ - GOT_NAK: Routing.Error.ValueType # 2 - """ - We received a nak while trying to forward on your behalf - """ - TIMEOUT: Routing.Error.ValueType # 3 - """ - TODO: REPLACE - """ - NO_INTERFACE: Routing.Error.ValueType # 4 - """ - No suitable interface could be found for delivering this packet - """ - MAX_RETRANSMIT: Routing.Error.ValueType # 5 - """ - We reached the max retransmission count (typically for naive flood routing) - """ - NO_CHANNEL: Routing.Error.ValueType # 6 - """ - No suitable channel was found for sending this packet (i.e. was requested channel index disabled?) - """ - TOO_LARGE: Routing.Error.ValueType # 7 - """ - The packet was too big for sending (exceeds interface MTU after encoding) - """ - NO_RESPONSE: Routing.Error.ValueType # 8 - """ - The request had want_response set, the request reached the destination node, but no service on that node wants to send a response - (possibly due to bad channel permissions) - """ - DUTY_CYCLE_LIMIT: Routing.Error.ValueType # 9 - """ - Cannot send currently because duty cycle regulations will be violated. - """ - BAD_REQUEST: Routing.Error.ValueType # 32 - """ - The application layer service on the remote node received your request, but considered your request somehow invalid - """ - NOT_AUTHORIZED: Routing.Error.ValueType # 33 - """ - The application layer service on the remote node received your request, but considered your request not authorized - (i.e you did not send the request on the required bound channel) - """ - - ROUTE_REQUEST_FIELD_NUMBER: builtins.int - ROUTE_REPLY_FIELD_NUMBER: builtins.int - ERROR_REASON_FIELD_NUMBER: builtins.int - @property - def route_request(self) -> global___RouteDiscovery: - """ - A route request going from the requester - """ - @property - def route_reply(self) -> global___RouteDiscovery: - """ - A route reply - """ - error_reason: global___Routing.Error.ValueType - """ - A failure in delivering a message (usually used for routing control messages, but might be provided - in addition to ack.fail_id to provide details on the type of failure). - """ - def __init__( - self, - *, - route_request: global___RouteDiscovery | None = ..., - route_reply: global___RouteDiscovery | None = ..., - error_reason: global___Routing.Error.ValueType = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["error_reason", b"error_reason", "route_reply", b"route_reply", "route_request", b"route_request", "variant", b"variant"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["error_reason", b"error_reason", "route_reply", b"route_reply", "route_request", b"route_request", "variant", b"variant"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["variant", b"variant"]) -> typing_extensions.Literal["route_request", "route_reply", "error_reason"] | None: ... - -global___Routing = Routing - -@typing_extensions.final -class Data(google.protobuf.message.Message): - """ - (Formerly called SubPacket) - The payload portion fo a packet, this is the actual bytes that are sent - inside a radio packet (because from/to are broken out by the comms library) - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PORTNUM_FIELD_NUMBER: builtins.int - PAYLOAD_FIELD_NUMBER: builtins.int - WANT_RESPONSE_FIELD_NUMBER: builtins.int - DEST_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - REQUEST_ID_FIELD_NUMBER: builtins.int - REPLY_ID_FIELD_NUMBER: builtins.int - EMOJI_FIELD_NUMBER: builtins.int - portnum: meshtastic.portnums_pb2.PortNum.ValueType - """ - Formerly named typ and of type Type - """ - payload: builtins.bytes - """ - TODO: REPLACE - """ - want_response: builtins.bool - """ - Not normally used, but for testing a sender can request that recipient - responds in kind (i.e. if it received a position, it should unicast back it's position). - Note: that if you set this on a broadcast you will receive many replies. - """ - dest: builtins.int - """ - The address of the destination node. - This field is is filled in by the mesh radio device software, application - layer software should never need it. - RouteDiscovery messages _must_ populate this. - Other message types might need to if they are doing multihop routing. - """ - source: builtins.int - """ - The address of the original sender for this message. - This field should _only_ be populated for reliable multihop packets (to keep - packets small). - """ - request_id: builtins.int - """ - Only used in routing or response messages. - Indicates the original message ID that this message is reporting failure on. (formerly called original_id) - """ - reply_id: builtins.int - """ - If set, this message is intened to be a reply to a previously sent message with the defined id. - """ - emoji: builtins.int - """ - Defaults to false. If true, then what is in the payload should be treated as an emoji like giving - a message a heart or poop emoji. - """ - def __init__( - self, - *, - portnum: meshtastic.portnums_pb2.PortNum.ValueType = ..., - payload: builtins.bytes = ..., - want_response: builtins.bool = ..., - dest: builtins.int = ..., - source: builtins.int = ..., - request_id: builtins.int = ..., - reply_id: builtins.int = ..., - emoji: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["dest", b"dest", "emoji", b"emoji", "payload", b"payload", "portnum", b"portnum", "reply_id", b"reply_id", "request_id", b"request_id", "source", b"source", "want_response", b"want_response"]) -> None: ... - -global___Data = Data - -@typing_extensions.final -class Waypoint(google.protobuf.message.Message): - """ - Waypoint message, used to share arbitrary locations across the mesh - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - LATITUDE_I_FIELD_NUMBER: builtins.int - LONGITUDE_I_FIELD_NUMBER: builtins.int - EXPIRE_FIELD_NUMBER: builtins.int - LOCKED_TO_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - DESCRIPTION_FIELD_NUMBER: builtins.int - ICON_FIELD_NUMBER: builtins.int - id: builtins.int - """ - Id of the waypoint - """ - latitude_i: builtins.int - """ - latitude_i - """ - longitude_i: builtins.int - """ - longitude_i - """ - expire: builtins.int - """ - Time the waypoint is to expire (epoch) - """ - locked_to: builtins.int - """ - If greater than zero, treat the value as a nodenum only allowing them to update the waypoint. - If zero, the waypoint is open to be edited by any member of the mesh. - """ - name: builtins.str - """ - Name of the waypoint - max 30 chars - """ - description: builtins.str - """ - Description of the waypoint - max 100 chars - """ - icon: builtins.int - """ - Designator icon for the waypoint in the form of a unicode emoji - """ - def __init__( - self, - *, - id: builtins.int = ..., - latitude_i: builtins.int = ..., - longitude_i: builtins.int = ..., - expire: builtins.int = ..., - locked_to: builtins.int = ..., - name: builtins.str = ..., - description: builtins.str = ..., - icon: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "expire", b"expire", "icon", b"icon", "id", b"id", "latitude_i", b"latitude_i", "locked_to", b"locked_to", "longitude_i", b"longitude_i", "name", b"name"]) -> None: ... - -global___Waypoint = Waypoint - -@typing_extensions.final -class MqttClientProxyMessage(google.protobuf.message.Message): - """ - This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TOPIC_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - TEXT_FIELD_NUMBER: builtins.int - RETAINED_FIELD_NUMBER: builtins.int - topic: builtins.str - """ - The MQTT topic this message will be sent /received on - """ - data: builtins.bytes - """ - Bytes - """ - text: builtins.str - """ - Text - """ - retained: builtins.bool - """ - Whether the message should be retained (or not) - """ - def __init__( - self, - *, - topic: builtins.str = ..., - data: builtins.bytes = ..., - text: builtins.str = ..., - retained: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["data", b"data", "payload_variant", b"payload_variant", "text", b"text"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "payload_variant", b"payload_variant", "retained", b"retained", "text", b"text", "topic", b"topic"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["data", "text"] | None: ... - -global___MqttClientProxyMessage = MqttClientProxyMessage - -@typing_extensions.final -class MeshPacket(google.protobuf.message.Message): - """ - A packet envelope sent/received over the mesh - only payload_variant is sent in the payload portion of the LORA packet. - The other fields are either not sent at all, or sent in the special 16 byte LORA header. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Priority: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _PriorityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MeshPacket._Priority.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: MeshPacket._Priority.ValueType # 0 - """ - Treated as Priority.DEFAULT - """ - MIN: MeshPacket._Priority.ValueType # 1 - """ - TODO: REPLACE - """ - BACKGROUND: MeshPacket._Priority.ValueType # 10 - """ - Background position updates are sent with very low priority - - if the link is super congested they might not go out at all - """ - DEFAULT: MeshPacket._Priority.ValueType # 64 - """ - This priority is used for most messages that don't have a priority set - """ - RELIABLE: MeshPacket._Priority.ValueType # 70 - """ - If priority is unset but the message is marked as want_ack, - assume it is important and use a slightly higher priority - """ - ACK: MeshPacket._Priority.ValueType # 120 - """ - Ack/naks are sent with very high priority to ensure that retransmission - stops as soon as possible - """ - MAX: MeshPacket._Priority.ValueType # 127 - """ - TODO: REPLACE - """ - - class Priority(_Priority, metaclass=_PriorityEnumTypeWrapper): - """ - The priority of this message for sending. - Higher priorities are sent first (when managing the transmit queue). - This field is never sent over the air, it is only used internally inside of a local device node. - API clients (either on the local node or connected directly to the node) - can set this parameter if necessary. - (values must be <= 127 to keep protobuf field to one byte in size. - Detailed background on this field: - I noticed a funny side effect of lora being so slow: Usually when making - a protocol there isn’t much need to use message priority to change the order - of transmission (because interfaces are fairly fast). - But for lora where packets can take a few seconds each, it is very important - to make sure that critical packets are sent ASAP. - In the case of meshtastic that means we want to send protocol acks as soon as possible - (to prevent unneeded retransmissions), we want routing messages to be sent next, - then messages marked as reliable and finally 'background' packets like periodic position updates. - So I bit the bullet and implemented a new (internal - not sent over the air) - field in MeshPacket called 'priority'. - And the transmission queue in the router object is now a priority queue. - """ - - UNSET: MeshPacket.Priority.ValueType # 0 - """ - Treated as Priority.DEFAULT - """ - MIN: MeshPacket.Priority.ValueType # 1 - """ - TODO: REPLACE - """ - BACKGROUND: MeshPacket.Priority.ValueType # 10 - """ - Background position updates are sent with very low priority - - if the link is super congested they might not go out at all - """ - DEFAULT: MeshPacket.Priority.ValueType # 64 - """ - This priority is used for most messages that don't have a priority set - """ - RELIABLE: MeshPacket.Priority.ValueType # 70 - """ - If priority is unset but the message is marked as want_ack, - assume it is important and use a slightly higher priority - """ - ACK: MeshPacket.Priority.ValueType # 120 - """ - Ack/naks are sent with very high priority to ensure that retransmission - stops as soon as possible - """ - MAX: MeshPacket.Priority.ValueType # 127 - """ - TODO: REPLACE - """ - - class _Delayed: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _DelayedEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MeshPacket._Delayed.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NO_DELAY: MeshPacket._Delayed.ValueType # 0 - """ - If unset, the message is being sent in real time. - """ - DELAYED_BROADCAST: MeshPacket._Delayed.ValueType # 1 - """ - The message is delayed and was originally a broadcast - """ - DELAYED_DIRECT: MeshPacket._Delayed.ValueType # 2 - """ - The message is delayed and was originally a direct message - """ - - class Delayed(_Delayed, metaclass=_DelayedEnumTypeWrapper): - """ - Identify if this is a delayed packet - """ - - NO_DELAY: MeshPacket.Delayed.ValueType # 0 - """ - If unset, the message is being sent in real time. - """ - DELAYED_BROADCAST: MeshPacket.Delayed.ValueType # 1 - """ - The message is delayed and was originally a broadcast - """ - DELAYED_DIRECT: MeshPacket.Delayed.ValueType # 2 - """ - The message is delayed and was originally a direct message - """ - - FROM_FIELD_NUMBER: builtins.int - TO_FIELD_NUMBER: builtins.int - CHANNEL_FIELD_NUMBER: builtins.int - DECODED_FIELD_NUMBER: builtins.int - ENCRYPTED_FIELD_NUMBER: builtins.int - ID_FIELD_NUMBER: builtins.int - RX_TIME_FIELD_NUMBER: builtins.int - RX_SNR_FIELD_NUMBER: builtins.int - HOP_LIMIT_FIELD_NUMBER: builtins.int - WANT_ACK_FIELD_NUMBER: builtins.int - PRIORITY_FIELD_NUMBER: builtins.int - RX_RSSI_FIELD_NUMBER: builtins.int - DELAYED_FIELD_NUMBER: builtins.int - VIA_MQTT_FIELD_NUMBER: builtins.int - HOP_START_FIELD_NUMBER: builtins.int - to: builtins.int - """ - The (immediate) destination for this packet - """ - channel: builtins.int - """ - (Usually) If set, this indicates the index in the secondary_channels table that this packet was sent/received on. - If unset, packet was on the primary channel. - A particular node might know only a subset of channels in use on the mesh. - Therefore channel_index is inherently a local concept and meaningless to send between nodes. - Very briefly, while sending and receiving deep inside the device Router code, this field instead - contains the 'channel hash' instead of the index. - This 'trick' is only used while the payload_variant is an 'encrypted'. - """ - @property - def decoded(self) -> global___Data: - """ - TODO: REPLACE - """ - encrypted: builtins.bytes - """ - TODO: REPLACE - """ - id: builtins.int - """ - A unique ID for this packet. - Always 0 for no-ack packets or non broadcast packets (and therefore take zero bytes of space). - Otherwise a unique ID for this packet, useful for flooding algorithms. - ID only needs to be unique on a _per sender_ basis, and it only - needs to be unique for a few minutes (long enough to last for the length of - any ACK or the completion of a mesh broadcast flood). - Note: Our crypto implementation uses this id as well. - See [crypto](/docs/overview/encryption) for details. - """ - rx_time: builtins.int - """ - The time this message was received by the esp32 (secs since 1970). - Note: this field is _never_ sent on the radio link itself (to save space) Times - are typically not sent over the mesh, but they will be added to any Packet - (chain of SubPacket) sent to the phone (so the phone can know exact time of reception) - """ - rx_snr: builtins.float - """ - *Never* sent over the radio links. - Set during reception to indicate the SNR of this packet. - Used to collect statistics on current link quality. - """ - hop_limit: builtins.int - """ - If unset treated as zero (no forwarding, send to adjacent nodes only) - if 1, allow hopping through one node, etc... - For our usecase real world topologies probably have a max of about 3. - This field is normally placed into a few of bits in the header. - """ - want_ack: builtins.bool - """ - This packet is being sent as a reliable message, we would prefer it to arrive at the destination. - We would like to receive a ack packet in response. - Broadcasts messages treat this flag specially: Since acks for broadcasts would - rapidly flood the channel, the normal ack behavior is suppressed. - Instead, the original sender listens to see if at least one node is rebroadcasting this packet (because naive flooding algorithm). - If it hears that the odds (given typical LoRa topologies) the odds are very high that every node should eventually receive the message. - So FloodingRouter.cpp generates an implicit ack which is delivered to the original sender. - If after some time we don't hear anyone rebroadcast our packet, we will timeout and retransmit, using the regular resend logic. - Note: This flag is normally sent in a flag bit in the header when sent over the wire - """ - priority: global___MeshPacket.Priority.ValueType - """ - The priority of this message for sending. - See MeshPacket.Priority description for more details. - """ - rx_rssi: builtins.int - """ - rssi of received packet. Only sent to phone for dispay purposes. - """ - delayed: global___MeshPacket.Delayed.ValueType - """ - Describe if this message is delayed - """ - via_mqtt: builtins.bool - """ - Describes whether this packet passed via MQTT somewhere along the path it currently took. - """ - hop_start: builtins.int - """ - Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header. - When receiving a packet, the difference between hop_start and hop_limit gives how many hops it traveled. - """ - def __init__( - self, - *, - to: builtins.int = ..., - channel: builtins.int = ..., - decoded: global___Data | None = ..., - encrypted: builtins.bytes = ..., - id: builtins.int = ..., - rx_time: builtins.int = ..., - rx_snr: builtins.float = ..., - hop_limit: builtins.int = ..., - want_ack: builtins.bool = ..., - priority: global___MeshPacket.Priority.ValueType = ..., - rx_rssi: builtins.int = ..., - delayed: global___MeshPacket.Delayed.ValueType = ..., - via_mqtt: builtins.bool = ..., - hop_start: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["decoded", b"decoded", "encrypted", b"encrypted", "payload_variant", b"payload_variant"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "decoded", b"decoded", "delayed", b"delayed", "encrypted", b"encrypted", "from", b"from", "hop_limit", b"hop_limit", "hop_start", b"hop_start", "id", b"id", "payload_variant", b"payload_variant", "priority", b"priority", "rx_rssi", b"rx_rssi", "rx_snr", b"rx_snr", "rx_time", b"rx_time", "to", b"to", "via_mqtt", b"via_mqtt", "want_ack", b"want_ack"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["decoded", "encrypted"] | None: ... - -global___MeshPacket = MeshPacket - -@typing_extensions.final -class NodeInfo(google.protobuf.message.Message): - """ - The bluetooth to device link: - Old BTLE protocol docs from TODO, merge in above and make real docs... - use protocol buffers, and NanoPB - messages from device to phone: - POSITION_UPDATE (..., time) - TEXT_RECEIVED(from, text, time) - OPAQUE_RECEIVED(from, payload, time) (for signal messages or other applications) - messages from phone to device: - SET_MYID(id, human readable long, human readable short) (send down the unique ID - string used for this node, a human readable string shown for that id, and a very - short human readable string suitable for oled screen) SEND_OPAQUE(dest, payload) - (for signal messages or other applications) SEND_TEXT(dest, text) Get all - nodes() (returns list of nodes, with full info, last time seen, loc, battery - level etc) SET_CONFIG (switches device to a new set of radio params and - preshared key, drops all existing nodes, force our node to rejoin this new group) - Full information about a node on the mesh - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NUM_FIELD_NUMBER: builtins.int - USER_FIELD_NUMBER: builtins.int - POSITION_FIELD_NUMBER: builtins.int - SNR_FIELD_NUMBER: builtins.int - LAST_HEARD_FIELD_NUMBER: builtins.int - DEVICE_METRICS_FIELD_NUMBER: builtins.int - CHANNEL_FIELD_NUMBER: builtins.int - VIA_MQTT_FIELD_NUMBER: builtins.int - HOPS_AWAY_FIELD_NUMBER: builtins.int - IS_FAVORITE_FIELD_NUMBER: builtins.int - num: builtins.int - """ - The node number - """ - @property - def user(self) -> global___User: - """ - The user info for this node - """ - @property - def position(self) -> global___Position: - """ - This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. - Position.time now indicates the last time we received a POSITION from that node. - """ - snr: builtins.float - """ - Returns the Signal-to-noise ratio (SNR) of the last received message, - as measured by the receiver. Return SNR of the last received message in dB - """ - last_heard: builtins.int - """ - TODO: REMOVE/INTEGRATE - Not currently used (till full DSR deployment?) Our current preferred node node for routing - might be the same as num if - we are adjacent Or zero if we don't yet know a route to this node. - fixed32 next_hop = 5; - - - Set to indicate the last time we received a packet from this node - """ - @property - def device_metrics(self) -> meshtastic.telemetry_pb2.DeviceMetrics: - """ - The latest device metrics for the node. - """ - channel: builtins.int - """ - local channel index we heard that node on. Only populated if its not the default channel. - """ - via_mqtt: builtins.bool - """ - True if we witnessed the node over MQTT instead of LoRA transport - """ - hops_away: builtins.int - """ - Number of hops away from us this node is (0 if adjacent) - """ - is_favorite: builtins.bool - """ - True if node is in our favorites list - Persists between NodeDB internal clean ups - """ - def __init__( - self, - *, - num: builtins.int = ..., - user: global___User | None = ..., - position: global___Position | None = ..., - snr: builtins.float = ..., - last_heard: builtins.int = ..., - device_metrics: meshtastic.telemetry_pb2.DeviceMetrics | None = ..., - channel: builtins.int = ..., - via_mqtt: builtins.bool = ..., - hops_away: builtins.int = ..., - is_favorite: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["device_metrics", b"device_metrics", "position", b"position", "user", b"user"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "is_favorite", b"is_favorite", "last_heard", b"last_heard", "num", b"num", "position", b"position", "snr", b"snr", "user", b"user", "via_mqtt", b"via_mqtt"]) -> None: ... - -global___NodeInfo = NodeInfo - -@typing_extensions.final -class MyNodeInfo(google.protobuf.message.Message): - """ - Unique local debugging info for this node - Note: we don't include position or the user info, because that will come in the - Sent to the phone in response to WantNodes. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MY_NODE_NUM_FIELD_NUMBER: builtins.int - REBOOT_COUNT_FIELD_NUMBER: builtins.int - MIN_APP_VERSION_FIELD_NUMBER: builtins.int - my_node_num: builtins.int - """ - Tells the phone what our node number is, default starting value is - lowbyte of macaddr, but it will be fixed if that is already in use - """ - reboot_count: builtins.int - """ - The total number of reboots this node has ever encountered - (well - since the last time we discarded preferences) - """ - min_app_version: builtins.int - """ - The minimum app version that can talk to this device. - Phone/PC apps should compare this to their build number and if too low tell the user they must update their app - """ - def __init__( - self, - *, - my_node_num: builtins.int = ..., - reboot_count: builtins.int = ..., - min_app_version: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["min_app_version", b"min_app_version", "my_node_num", b"my_node_num", "reboot_count", b"reboot_count"]) -> None: ... - -global___MyNodeInfo = MyNodeInfo - -@typing_extensions.final -class LogRecord(google.protobuf.message.Message): - """ - Debug output from the device. - To minimize the size of records inside the device code, if a time/source/level is not set - on the message it is assumed to be a continuation of the previously sent message. - This allows the device code to use fixed maxlen 64 byte strings for messages, - and then extend as needed by emitting multiple records. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Level: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _LevelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[LogRecord._Level.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: LogRecord._Level.ValueType # 0 - """ - Log levels, chosen to match python logging conventions. - """ - CRITICAL: LogRecord._Level.ValueType # 50 - """ - Log levels, chosen to match python logging conventions. - """ - ERROR: LogRecord._Level.ValueType # 40 - """ - Log levels, chosen to match python logging conventions. - """ - WARNING: LogRecord._Level.ValueType # 30 - """ - Log levels, chosen to match python logging conventions. - """ - INFO: LogRecord._Level.ValueType # 20 - """ - Log levels, chosen to match python logging conventions. - """ - DEBUG: LogRecord._Level.ValueType # 10 - """ - Log levels, chosen to match python logging conventions. - """ - TRACE: LogRecord._Level.ValueType # 5 - """ - Log levels, chosen to match python logging conventions. - """ - - class Level(_Level, metaclass=_LevelEnumTypeWrapper): - """ - Log levels, chosen to match python logging conventions. - """ - - UNSET: LogRecord.Level.ValueType # 0 - """ - Log levels, chosen to match python logging conventions. - """ - CRITICAL: LogRecord.Level.ValueType # 50 - """ - Log levels, chosen to match python logging conventions. - """ - ERROR: LogRecord.Level.ValueType # 40 - """ - Log levels, chosen to match python logging conventions. - """ - WARNING: LogRecord.Level.ValueType # 30 - """ - Log levels, chosen to match python logging conventions. - """ - INFO: LogRecord.Level.ValueType # 20 - """ - Log levels, chosen to match python logging conventions. - """ - DEBUG: LogRecord.Level.ValueType # 10 - """ - Log levels, chosen to match python logging conventions. - """ - TRACE: LogRecord.Level.ValueType # 5 - """ - Log levels, chosen to match python logging conventions. - """ - - MESSAGE_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - SOURCE_FIELD_NUMBER: builtins.int - LEVEL_FIELD_NUMBER: builtins.int - message: builtins.str - """ - Log levels, chosen to match python logging conventions. - """ - time: builtins.int - """ - Seconds since 1970 - or 0 for unknown/unset - """ - source: builtins.str - """ - Usually based on thread name - if known - """ - level: global___LogRecord.Level.ValueType - """ - Not yet set - """ - def __init__( - self, - *, - message: builtins.str = ..., - time: builtins.int = ..., - source: builtins.str = ..., - level: global___LogRecord.Level.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["level", b"level", "message", b"message", "source", b"source", "time", b"time"]) -> None: ... - -global___LogRecord = LogRecord - -@typing_extensions.final -class QueueStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - RES_FIELD_NUMBER: builtins.int - FREE_FIELD_NUMBER: builtins.int - MAXLEN_FIELD_NUMBER: builtins.int - MESH_PACKET_ID_FIELD_NUMBER: builtins.int - res: builtins.int - """Last attempt to queue status, ErrorCode""" - free: builtins.int - """Free entries in the outgoing queue""" - maxlen: builtins.int - """Maximum entries in the outgoing queue""" - mesh_packet_id: builtins.int - """What was mesh packet id that generated this response?""" - def __init__( - self, - *, - res: builtins.int = ..., - free: builtins.int = ..., - maxlen: builtins.int = ..., - mesh_packet_id: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["free", b"free", "maxlen", b"maxlen", "mesh_packet_id", b"mesh_packet_id", "res", b"res"]) -> None: ... - -global___QueueStatus = QueueStatus - -@typing_extensions.final -class FromRadio(google.protobuf.message.Message): - """ - Packets from the radio to the phone will appear on the fromRadio characteristic. - It will support READ and NOTIFY. When a new packet arrives the device will BLE notify? - It will sit in that descriptor until consumed by the phone, - at which point the next item in the FIFO will be populated. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ID_FIELD_NUMBER: builtins.int - PACKET_FIELD_NUMBER: builtins.int - MY_INFO_FIELD_NUMBER: builtins.int - NODE_INFO_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - LOG_RECORD_FIELD_NUMBER: builtins.int - CONFIG_COMPLETE_ID_FIELD_NUMBER: builtins.int - REBOOTED_FIELD_NUMBER: builtins.int - MODULECONFIG_FIELD_NUMBER: builtins.int - CHANNEL_FIELD_NUMBER: builtins.int - QUEUESTATUS_FIELD_NUMBER: builtins.int - XMODEMPACKET_FIELD_NUMBER: builtins.int - METADATA_FIELD_NUMBER: builtins.int - MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER: builtins.int - id: builtins.int - """ - The packet id, used to allow the phone to request missing read packets from the FIFO, - see our bluetooth docs - """ - @property - def packet(self) -> global___MeshPacket: - """ - Log levels, chosen to match python logging conventions. - """ - @property - def my_info(self) -> global___MyNodeInfo: - """ - Tells the phone what our node number is, can be -1 if we've not yet joined a mesh. - NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. - """ - @property - def node_info(self) -> global___NodeInfo: - """ - One packet is sent for each node in the on radio DB - starts over with the first node in our DB - """ - @property - def config(self) -> meshtastic.config_pb2.Config: - """ - Include a part of the config (was: RadioConfig radio) - """ - @property - def log_record(self) -> global___LogRecord: - """ - Set to send debug console output over our protobuf stream - """ - config_complete_id: builtins.int - """ - Sent as true once the device has finished sending all of the responses to want_config - recipient should check if this ID matches our original request nonce, if - not, it means your config responses haven't started yet. - NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. - """ - rebooted: builtins.bool - """ - Sent to tell clients the radio has just rebooted. - Set to true if present. - Not used on all transports, currently just used for the serial console. - NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. - """ - @property - def moduleConfig(self) -> meshtastic.module_config_pb2.ModuleConfig: - """ - Include module config - """ - @property - def channel(self) -> meshtastic.channel_pb2.Channel: - """ - One packet is sent for each channel - """ - @property - def queueStatus(self) -> global___QueueStatus: - """ - Queue status info - """ - @property - def xmodemPacket(self) -> meshtastic.xmodem_pb2.XModem: - """ - File Transfer Chunk - """ - @property - def metadata(self) -> global___DeviceMetadata: - """ - Device metadata message - """ - @property - def mqttClientProxyMessage(self) -> global___MqttClientProxyMessage: - """ - MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT) - """ - def __init__( - self, - *, - id: builtins.int = ..., - packet: global___MeshPacket | None = ..., - my_info: global___MyNodeInfo | None = ..., - node_info: global___NodeInfo | None = ..., - config: meshtastic.config_pb2.Config | None = ..., - log_record: global___LogRecord | None = ..., - config_complete_id: builtins.int = ..., - rebooted: builtins.bool = ..., - moduleConfig: meshtastic.module_config_pb2.ModuleConfig | None = ..., - channel: meshtastic.channel_pb2.Channel | None = ..., - queueStatus: global___QueueStatus | None = ..., - xmodemPacket: meshtastic.xmodem_pb2.XModem | None = ..., - metadata: global___DeviceMetadata | None = ..., - mqttClientProxyMessage: global___MqttClientProxyMessage | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["channel", b"channel", "config", b"config", "config_complete_id", b"config_complete_id", "log_record", b"log_record", "metadata", b"metadata", "moduleConfig", b"moduleConfig", "mqttClientProxyMessage", b"mqttClientProxyMessage", "my_info", b"my_info", "node_info", b"node_info", "packet", b"packet", "payload_variant", b"payload_variant", "queueStatus", b"queueStatus", "rebooted", b"rebooted", "xmodemPacket", b"xmodemPacket"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "config", b"config", "config_complete_id", b"config_complete_id", "id", b"id", "log_record", b"log_record", "metadata", b"metadata", "moduleConfig", b"moduleConfig", "mqttClientProxyMessage", b"mqttClientProxyMessage", "my_info", b"my_info", "node_info", b"node_info", "packet", b"packet", "payload_variant", b"payload_variant", "queueStatus", b"queueStatus", "rebooted", b"rebooted", "xmodemPacket", b"xmodemPacket"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["packet", "my_info", "node_info", "config", "log_record", "config_complete_id", "rebooted", "moduleConfig", "channel", "queueStatus", "xmodemPacket", "metadata", "mqttClientProxyMessage"] | None: ... - -global___FromRadio = FromRadio - -@typing_extensions.final -class ToRadio(google.protobuf.message.Message): - """ - Packets/commands to the radio will be written (reliably) to the toRadio characteristic. - Once the write completes the phone can assume it is handled. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PACKET_FIELD_NUMBER: builtins.int - WANT_CONFIG_ID_FIELD_NUMBER: builtins.int - DISCONNECT_FIELD_NUMBER: builtins.int - XMODEMPACKET_FIELD_NUMBER: builtins.int - MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER: builtins.int - HEARTBEAT_FIELD_NUMBER: builtins.int - @property - def packet(self) -> global___MeshPacket: - """ - Send this packet on the mesh - """ - want_config_id: builtins.int - """ - Phone wants radio to send full node db to the phone, This is - typically the first packet sent to the radio when the phone gets a - bluetooth connection. The radio will respond by sending back a - MyNodeInfo, a owner, a radio config and a series of - FromRadio.node_infos, and config_complete - the integer you write into this field will be reported back in the - config_complete_id response this allows clients to never be confused by - a stale old partially sent config. - """ - disconnect: builtins.bool - """ - Tell API server we are disconnecting now. - This is useful for serial links where there is no hardware/protocol based notification that the client has dropped the link. - (Sending this message is optional for clients) - """ - @property - def xmodemPacket(self) -> meshtastic.xmodem_pb2.XModem: - """ - File Transfer Chunk - """ - @property - def mqttClientProxyMessage(self) -> global___MqttClientProxyMessage: - """ - MQTT Client Proxy Message (for client / phone subscribed to MQTT sending to device) - """ - @property - def heartbeat(self) -> global___Heartbeat: - """ - Heartbeat message (used to keep the device connection awake on serial) - """ - def __init__( - self, - *, - packet: global___MeshPacket | None = ..., - want_config_id: builtins.int = ..., - disconnect: builtins.bool = ..., - xmodemPacket: meshtastic.xmodem_pb2.XModem | None = ..., - mqttClientProxyMessage: global___MqttClientProxyMessage | None = ..., - heartbeat: global___Heartbeat | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["disconnect", b"disconnect", "heartbeat", b"heartbeat", "mqttClientProxyMessage", b"mqttClientProxyMessage", "packet", b"packet", "payload_variant", b"payload_variant", "want_config_id", b"want_config_id", "xmodemPacket", b"xmodemPacket"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["disconnect", b"disconnect", "heartbeat", b"heartbeat", "mqttClientProxyMessage", b"mqttClientProxyMessage", "packet", b"packet", "payload_variant", b"payload_variant", "want_config_id", b"want_config_id", "xmodemPacket", b"xmodemPacket"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["packet", "want_config_id", "disconnect", "xmodemPacket", "mqttClientProxyMessage", "heartbeat"] | None: ... - -global___ToRadio = ToRadio - -@typing_extensions.final -class Compressed(google.protobuf.message.Message): - """ - Compressed message payload - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PORTNUM_FIELD_NUMBER: builtins.int - DATA_FIELD_NUMBER: builtins.int - portnum: meshtastic.portnums_pb2.PortNum.ValueType - """ - PortNum to determine the how to handle the compressed payload. - """ - data: builtins.bytes - """ - Compressed data. - """ - def __init__( - self, - *, - portnum: meshtastic.portnums_pb2.PortNum.ValueType = ..., - data: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "portnum", b"portnum"]) -> None: ... - -global___Compressed = Compressed - -@typing_extensions.final -class NeighborInfo(google.protobuf.message.Message): - """ - Full info on edges for a single node - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NODE_ID_FIELD_NUMBER: builtins.int - LAST_SENT_BY_ID_FIELD_NUMBER: builtins.int - NODE_BROADCAST_INTERVAL_SECS_FIELD_NUMBER: builtins.int - NEIGHBORS_FIELD_NUMBER: builtins.int - node_id: builtins.int - """ - The node ID of the node sending info on its neighbors - """ - last_sent_by_id: builtins.int - """ - Field to pass neighbor info for the next sending cycle - """ - node_broadcast_interval_secs: builtins.int - """ - Broadcast interval of the represented node (in seconds) - """ - @property - def neighbors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Neighbor]: - """ - The list of out edges from this node - """ - def __init__( - self, - *, - node_id: builtins.int = ..., - last_sent_by_id: builtins.int = ..., - node_broadcast_interval_secs: builtins.int = ..., - neighbors: collections.abc.Iterable[global___Neighbor] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["last_sent_by_id", b"last_sent_by_id", "neighbors", b"neighbors", "node_broadcast_interval_secs", b"node_broadcast_interval_secs", "node_id", b"node_id"]) -> None: ... - -global___NeighborInfo = NeighborInfo - -@typing_extensions.final -class Neighbor(google.protobuf.message.Message): - """ - A single edge in the mesh - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NODE_ID_FIELD_NUMBER: builtins.int - SNR_FIELD_NUMBER: builtins.int - LAST_RX_TIME_FIELD_NUMBER: builtins.int - NODE_BROADCAST_INTERVAL_SECS_FIELD_NUMBER: builtins.int - node_id: builtins.int - """ - Node ID of neighbor - """ - snr: builtins.float - """ - SNR of last heard message - """ - last_rx_time: builtins.int - """ - Reception time (in secs since 1970) of last message that was last sent by this ID. - Note: this is for local storage only and will not be sent out over the mesh. - """ - node_broadcast_interval_secs: builtins.int - """ - Broadcast interval of this neighbor (in seconds). - Note: this is for local storage only and will not be sent out over the mesh. - """ - def __init__( - self, - *, - node_id: builtins.int = ..., - snr: builtins.float = ..., - last_rx_time: builtins.int = ..., - node_broadcast_interval_secs: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["last_rx_time", b"last_rx_time", "node_broadcast_interval_secs", b"node_broadcast_interval_secs", "node_id", b"node_id", "snr", b"snr"]) -> None: ... - -global___Neighbor = Neighbor - -@typing_extensions.final -class DeviceMetadata(google.protobuf.message.Message): - """ - Device metadata response - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FIRMWARE_VERSION_FIELD_NUMBER: builtins.int - DEVICE_STATE_VERSION_FIELD_NUMBER: builtins.int - CANSHUTDOWN_FIELD_NUMBER: builtins.int - HASWIFI_FIELD_NUMBER: builtins.int - HASBLUETOOTH_FIELD_NUMBER: builtins.int - HASETHERNET_FIELD_NUMBER: builtins.int - ROLE_FIELD_NUMBER: builtins.int - POSITION_FLAGS_FIELD_NUMBER: builtins.int - HW_MODEL_FIELD_NUMBER: builtins.int - HASREMOTEHARDWARE_FIELD_NUMBER: builtins.int - firmware_version: builtins.str - """ - Device firmware version string - """ - device_state_version: builtins.int - """ - Device state version - """ - canShutdown: builtins.bool - """ - Indicates whether the device can shutdown CPU natively or via power management chip - """ - hasWifi: builtins.bool - """ - Indicates that the device has native wifi capability - """ - hasBluetooth: builtins.bool - """ - Indicates that the device has native bluetooth capability - """ - hasEthernet: builtins.bool - """ - Indicates that the device has an ethernet peripheral - """ - role: meshtastic.config_pb2.Config.DeviceConfig.Role.ValueType - """ - Indicates that the device's role in the mesh - """ - position_flags: builtins.int - """ - Indicates the device's current enabled position flags - """ - hw_model: global___HardwareModel.ValueType - """ - Device hardware model - """ - hasRemoteHardware: builtins.bool - """ - Has Remote Hardware enabled - """ - def __init__( - self, - *, - firmware_version: builtins.str = ..., - device_state_version: builtins.int = ..., - canShutdown: builtins.bool = ..., - hasWifi: builtins.bool = ..., - hasBluetooth: builtins.bool = ..., - hasEthernet: builtins.bool = ..., - role: meshtastic.config_pb2.Config.DeviceConfig.Role.ValueType = ..., - position_flags: builtins.int = ..., - hw_model: global___HardwareModel.ValueType = ..., - hasRemoteHardware: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["canShutdown", b"canShutdown", "device_state_version", b"device_state_version", "firmware_version", b"firmware_version", "hasBluetooth", b"hasBluetooth", "hasEthernet", b"hasEthernet", "hasRemoteHardware", b"hasRemoteHardware", "hasWifi", b"hasWifi", "hw_model", b"hw_model", "position_flags", b"position_flags", "role", b"role"]) -> None: ... - -global___DeviceMetadata = DeviceMetadata - -@typing_extensions.final -class Heartbeat(google.protobuf.message.Message): - """ - A heartbeat message is sent to the node from the client to keep the connection alive. - This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___Heartbeat = Heartbeat - -@typing_extensions.final -class NodeRemoteHardwarePin(google.protobuf.message.Message): - """ - RemoteHardwarePins associated with a node - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NODE_NUM_FIELD_NUMBER: builtins.int - PIN_FIELD_NUMBER: builtins.int - node_num: builtins.int - """ - The node_num exposing the available gpio pin - """ - @property - def pin(self) -> meshtastic.module_config_pb2.RemoteHardwarePin: - """ - The the available gpio pin for usage with RemoteHardware module - """ - def __init__( - self, - *, - node_num: builtins.int = ..., - pin: meshtastic.module_config_pb2.RemoteHardwarePin | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pin", b"pin"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["node_num", b"node_num", "pin", b"pin"]) -> None: ... - -global___NodeRemoteHardwarePin = NodeRemoteHardwarePin - -@typing_extensions.final -class ChunkedPayload(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PAYLOAD_ID_FIELD_NUMBER: builtins.int - CHUNK_COUNT_FIELD_NUMBER: builtins.int - CHUNK_INDEX_FIELD_NUMBER: builtins.int - PAYLOAD_CHUNK_FIELD_NUMBER: builtins.int - payload_id: builtins.int - """ - The ID of the entire payload - """ - chunk_count: builtins.int - """ - The total number of chunks in the payload - """ - chunk_index: builtins.int - """ - The current chunk index in the total - """ - payload_chunk: builtins.bytes - """ - The binary data of the current chunk - """ - def __init__( - self, - *, - payload_id: builtins.int = ..., - chunk_count: builtins.int = ..., - chunk_index: builtins.int = ..., - payload_chunk: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["chunk_count", b"chunk_count", "chunk_index", b"chunk_index", "payload_chunk", b"payload_chunk", "payload_id", b"payload_id"]) -> None: ... - -global___ChunkedPayload = ChunkedPayload - -@typing_extensions.final -class resend_chunks(google.protobuf.message.Message): - """ - Wrapper message for broken repeated oneof support - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CHUNKS_FIELD_NUMBER: builtins.int - @property - def chunks(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... - def __init__( - self, - *, - chunks: collections.abc.Iterable[builtins.int] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["chunks", b"chunks"]) -> None: ... - -global___resend_chunks = resend_chunks - -@typing_extensions.final -class ChunkedPayloadResponse(google.protobuf.message.Message): - """ - Responses to a ChunkedPayload request - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PAYLOAD_ID_FIELD_NUMBER: builtins.int - REQUEST_TRANSFER_FIELD_NUMBER: builtins.int - ACCEPT_TRANSFER_FIELD_NUMBER: builtins.int - RESEND_CHUNKS_FIELD_NUMBER: builtins.int - payload_id: builtins.int - """ - The ID of the entire payload - """ - request_transfer: builtins.bool - """ - Request to transfer chunked payload - """ - accept_transfer: builtins.bool - """ - Accept the transfer chunked payload - """ - @property - def resend_chunks(self) -> global___resend_chunks: - """ - Request missing indexes in the chunked payload - """ - def __init__( - self, - *, - payload_id: builtins.int = ..., - request_transfer: builtins.bool = ..., - accept_transfer: builtins.bool = ..., - resend_chunks: global___resend_chunks | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["accept_transfer", b"accept_transfer", "payload_variant", b"payload_variant", "request_transfer", b"request_transfer", "resend_chunks", b"resend_chunks"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["accept_transfer", b"accept_transfer", "payload_id", b"payload_id", "payload_variant", b"payload_variant", "request_transfer", b"request_transfer", "resend_chunks", b"resend_chunks"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["request_transfer", "accept_transfer", "resend_chunks"] | None: ... - -global___ChunkedPayloadResponse = ChunkedPayloadResponse diff --git a/meshtastic/module_config_pb2.py b/meshtastic/module_config_pb2.py deleted file mode 100644 index b1085e6..0000000 --- a/meshtastic/module_config_pb2.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/module_config.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/module_config.proto\x12\nmeshtastic\"\xd3\"\n\x0cModuleConfig\x12\x33\n\x04mqtt\x18\x01 \x01(\x0b\x32#.meshtastic.ModuleConfig.MQTTConfigH\x00\x12\x37\n\x06serial\x18\x02 \x01(\x0b\x32%.meshtastic.ModuleConfig.SerialConfigH\x00\x12T\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32\x33.meshtastic.ModuleConfig.ExternalNotificationConfigH\x00\x12\x44\n\rstore_forward\x18\x04 \x01(\x0b\x32+.meshtastic.ModuleConfig.StoreForwardConfigH\x00\x12>\n\nrange_test\x18\x05 \x01(\x0b\x32(.meshtastic.ModuleConfig.RangeTestConfigH\x00\x12=\n\ttelemetry\x18\x06 \x01(\x0b\x32(.meshtastic.ModuleConfig.TelemetryConfigH\x00\x12\x46\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32,.meshtastic.ModuleConfig.CannedMessageConfigH\x00\x12\x35\n\x05\x61udio\x18\x08 \x01(\x0b\x32$.meshtastic.ModuleConfig.AudioConfigH\x00\x12H\n\x0fremote_hardware\x18\t \x01(\x0b\x32-.meshtastic.ModuleConfig.RemoteHardwareConfigH\x00\x12\x44\n\rneighbor_info\x18\n \x01(\x0b\x32+.meshtastic.ModuleConfig.NeighborInfoConfigH\x00\x12J\n\x10\x61mbient_lighting\x18\x0b \x01(\x0b\x32..meshtastic.ModuleConfig.AmbientLightingConfigH\x00\x12J\n\x10\x64\x65tection_sensor\x18\x0c \x01(\x0b\x32..meshtastic.ModuleConfig.DetectionSensorConfigH\x00\x12?\n\npaxcounter\x18\r \x01(\x0b\x32).meshtastic.ModuleConfig.PaxcounterConfigH\x00\x1a\xb0\x02\n\nMQTTConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x10\n\x08username\x18\x03 \x01(\t\x12\x10\n\x08password\x18\x04 \x01(\t\x12\x1a\n\x12\x65ncryption_enabled\x18\x05 \x01(\x08\x12\x14\n\x0cjson_enabled\x18\x06 \x01(\x08\x12\x13\n\x0btls_enabled\x18\x07 \x01(\x08\x12\x0c\n\x04root\x18\x08 \x01(\t\x12\x1f\n\x17proxy_to_client_enabled\x18\t \x01(\x08\x12\x1d\n\x15map_reporting_enabled\x18\n \x01(\x08\x12G\n\x13map_report_settings\x18\x0b \x01(\x0b\x32*.meshtastic.ModuleConfig.MapReportSettings\x1aN\n\x11MapReportSettings\x12\x1d\n\x15publish_interval_secs\x18\x01 \x01(\r\x12\x1a\n\x12position_precision\x18\x02 \x01(\r\x1a\x82\x01\n\x14RemoteHardwareConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1a\x61llow_undefined_pin_access\x18\x02 \x01(\x08\x12\x35\n\x0e\x61vailable_pins\x18\x03 \x03(\x0b\x32\x1d.meshtastic.RemoteHardwarePin\x1a>\n\x12NeighborInfoConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0fupdate_interval\x18\x02 \x01(\r\x1a\xd2\x01\n\x15\x44\x65tectionSensorConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16minimum_broadcast_secs\x18\x02 \x01(\r\x12\x1c\n\x14state_broadcast_secs\x18\x03 \x01(\r\x12\x11\n\tsend_bell\x18\x04 \x01(\x08\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x13\n\x0bmonitor_pin\x18\x06 \x01(\r\x12 \n\x18\x64\x65tection_triggered_high\x18\x07 \x01(\x08\x12\x12\n\nuse_pullup\x18\x08 \x01(\x08\x1a\xe4\x02\n\x0b\x41udioConfig\x12\x16\n\x0e\x63odec2_enabled\x18\x01 \x01(\x08\x12\x0f\n\x07ptt_pin\x18\x02 \x01(\r\x12@\n\x07\x62itrate\x18\x03 \x01(\x0e\x32/.meshtastic.ModuleConfig.AudioConfig.Audio_Baud\x12\x0e\n\x06i2s_ws\x18\x04 \x01(\r\x12\x0e\n\x06i2s_sd\x18\x05 \x01(\r\x12\x0f\n\x07i2s_din\x18\x06 \x01(\r\x12\x0f\n\x07i2s_sck\x18\x07 \x01(\r\"\xa7\x01\n\nAudio_Baud\x12\x12\n\x0e\x43ODEC2_DEFAULT\x10\x00\x12\x0f\n\x0b\x43ODEC2_3200\x10\x01\x12\x0f\n\x0b\x43ODEC2_2400\x10\x02\x12\x0f\n\x0b\x43ODEC2_1600\x10\x03\x12\x0f\n\x0b\x43ODEC2_1400\x10\x04\x12\x0f\n\x0b\x43ODEC2_1300\x10\x05\x12\x0f\n\x0b\x43ODEC2_1200\x10\x06\x12\x0e\n\nCODEC2_700\x10\x07\x12\x0f\n\x0b\x43ODEC2_700B\x10\x08\x1av\n\x10PaxcounterConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1apaxcounter_update_interval\x18\x02 \x01(\r\x12\x16\n\x0ewifi_threshold\x18\x03 \x01(\x05\x12\x15\n\rble_threshold\x18\x04 \x01(\x05\x1a\xe4\x04\n\x0cSerialConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0c\n\x04\x65\x63ho\x18\x02 \x01(\x08\x12\x0b\n\x03rxd\x18\x03 \x01(\r\x12\x0b\n\x03txd\x18\x04 \x01(\r\x12?\n\x04\x62\x61ud\x18\x05 \x01(\x0e\x32\x31.meshtastic.ModuleConfig.SerialConfig.Serial_Baud\x12\x0f\n\x07timeout\x18\x06 \x01(\r\x12?\n\x04mode\x18\x07 \x01(\x0e\x32\x31.meshtastic.ModuleConfig.SerialConfig.Serial_Mode\x12$\n\x1coverride_console_serial_port\x18\x08 \x01(\x08\"\x8a\x02\n\x0bSerial_Baud\x12\x10\n\x0c\x42\x41UD_DEFAULT\x10\x00\x12\x0c\n\x08\x42\x41UD_110\x10\x01\x12\x0c\n\x08\x42\x41UD_300\x10\x02\x12\x0c\n\x08\x42\x41UD_600\x10\x03\x12\r\n\tBAUD_1200\x10\x04\x12\r\n\tBAUD_2400\x10\x05\x12\r\n\tBAUD_4800\x10\x06\x12\r\n\tBAUD_9600\x10\x07\x12\x0e\n\nBAUD_19200\x10\x08\x12\x0e\n\nBAUD_38400\x10\t\x12\x0e\n\nBAUD_57600\x10\n\x12\x0f\n\x0b\x42\x41UD_115200\x10\x0b\x12\x0f\n\x0b\x42\x41UD_230400\x10\x0c\x12\x0f\n\x0b\x42\x41UD_460800\x10\r\x12\x0f\n\x0b\x42\x41UD_576000\x10\x0e\x12\x0f\n\x0b\x42\x41UD_921600\x10\x0f\"U\n\x0bSerial_Mode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\n\n\x06SIMPLE\x10\x01\x12\t\n\x05PROTO\x10\x02\x12\x0b\n\x07TEXTMSG\x10\x03\x12\x08\n\x04NMEA\x10\x04\x12\x0b\n\x07\x43\x41LTOPO\x10\x05\x1a\xe9\x02\n\x1a\x45xternalNotificationConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\toutput_ms\x18\x02 \x01(\r\x12\x0e\n\x06output\x18\x03 \x01(\r\x12\x14\n\x0coutput_vibra\x18\x08 \x01(\r\x12\x15\n\routput_buzzer\x18\t \x01(\r\x12\x0e\n\x06\x61\x63tive\x18\x04 \x01(\x08\x12\x15\n\ralert_message\x18\x05 \x01(\x08\x12\x1b\n\x13\x61lert_message_vibra\x18\n \x01(\x08\x12\x1c\n\x14\x61lert_message_buzzer\x18\x0b \x01(\x08\x12\x12\n\nalert_bell\x18\x06 \x01(\x08\x12\x18\n\x10\x61lert_bell_vibra\x18\x0c \x01(\x08\x12\x19\n\x11\x61lert_bell_buzzer\x18\r \x01(\x08\x12\x0f\n\x07use_pwm\x18\x07 \x01(\x08\x12\x13\n\x0bnag_timeout\x18\x0e \x01(\r\x12\x19\n\x11use_i2s_as_buzzer\x18\x0f \x01(\x08\x1a\x84\x01\n\x12StoreForwardConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\theartbeat\x18\x02 \x01(\x08\x12\x0f\n\x07records\x18\x03 \x01(\r\x12\x1a\n\x12history_return_max\x18\x04 \x01(\r\x12\x1d\n\x15history_return_window\x18\x05 \x01(\r\x1a@\n\x0fRangeTestConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06sender\x18\x02 \x01(\r\x12\x0c\n\x04save\x18\x03 \x01(\x08\x1a\xe6\x02\n\x0fTelemetryConfig\x12\x1e\n\x16\x64\x65vice_update_interval\x18\x01 \x01(\r\x12#\n\x1b\x65nvironment_update_interval\x18\x02 \x01(\r\x12\'\n\x1f\x65nvironment_measurement_enabled\x18\x03 \x01(\x08\x12\"\n\x1a\x65nvironment_screen_enabled\x18\x04 \x01(\x08\x12&\n\x1e\x65nvironment_display_fahrenheit\x18\x05 \x01(\x08\x12\x1b\n\x13\x61ir_quality_enabled\x18\x06 \x01(\x08\x12\x1c\n\x14\x61ir_quality_interval\x18\x07 \x01(\r\x12!\n\x19power_measurement_enabled\x18\x08 \x01(\x08\x12\x1d\n\x15power_update_interval\x18\t \x01(\r\x12\x1c\n\x14power_screen_enabled\x18\n \x01(\x08\x1a\xd6\x04\n\x13\x43\x61nnedMessageConfig\x12\x17\n\x0frotary1_enabled\x18\x01 \x01(\x08\x12\x19\n\x11inputbroker_pin_a\x18\x02 \x01(\r\x12\x19\n\x11inputbroker_pin_b\x18\x03 \x01(\r\x12\x1d\n\x15inputbroker_pin_press\x18\x04 \x01(\r\x12Y\n\x14inputbroker_event_cw\x18\x05 \x01(\x0e\x32;.meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar\x12Z\n\x15inputbroker_event_ccw\x18\x06 \x01(\x0e\x32;.meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar\x12\\\n\x17inputbroker_event_press\x18\x07 \x01(\x0e\x32;.meshtastic.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x17\n\x0fupdown1_enabled\x18\x08 \x01(\x08\x12\x0f\n\x07\x65nabled\x18\t \x01(\x08\x12\x1a\n\x12\x61llow_input_source\x18\n \x01(\t\x12\x11\n\tsend_bell\x18\x0b \x01(\x08\"c\n\x0eInputEventChar\x12\x08\n\x04NONE\x10\x00\x12\x06\n\x02UP\x10\x11\x12\x08\n\x04\x44OWN\x10\x12\x12\x08\n\x04LEFT\x10\x13\x12\t\n\x05RIGHT\x10\x14\x12\n\n\x06SELECT\x10\n\x12\x08\n\x04\x42\x41\x43K\x10\x1b\x12\n\n\x06\x43\x41NCEL\x10\x18\x1a\x65\n\x15\x41mbientLightingConfig\x12\x11\n\tled_state\x18\x01 \x01(\x08\x12\x0f\n\x07\x63urrent\x18\x02 \x01(\r\x12\x0b\n\x03red\x18\x03 \x01(\r\x12\r\n\x05green\x18\x04 \x01(\r\x12\x0c\n\x04\x62lue\x18\x05 \x01(\rB\x11\n\x0fpayload_variant\"d\n\x11RemoteHardwarePin\x12\x10\n\x08gpio_pin\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12/\n\x04type\x18\x03 \x01(\x0e\x32!.meshtastic.RemoteHardwarePinType*I\n\x15RemoteHardwarePinType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0c\x44IGITAL_READ\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x42g\n\x13\x63om.geeksville.meshB\x12ModuleConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.module_config_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\022ModuleConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _REMOTEHARDWAREPINTYPE._serialized_start=4586 - _REMOTEHARDWAREPINTYPE._serialized_end=4659 - _MODULECONFIG._serialized_start=47 - _MODULECONFIG._serialized_end=4482 - _MODULECONFIG_MQTTCONFIG._serialized_start=945 - _MODULECONFIG_MQTTCONFIG._serialized_end=1249 - _MODULECONFIG_MAPREPORTSETTINGS._serialized_start=1251 - _MODULECONFIG_MAPREPORTSETTINGS._serialized_end=1329 - _MODULECONFIG_REMOTEHARDWARECONFIG._serialized_start=1332 - _MODULECONFIG_REMOTEHARDWARECONFIG._serialized_end=1462 - _MODULECONFIG_NEIGHBORINFOCONFIG._serialized_start=1464 - _MODULECONFIG_NEIGHBORINFOCONFIG._serialized_end=1526 - _MODULECONFIG_DETECTIONSENSORCONFIG._serialized_start=1529 - _MODULECONFIG_DETECTIONSENSORCONFIG._serialized_end=1739 - _MODULECONFIG_AUDIOCONFIG._serialized_start=1742 - _MODULECONFIG_AUDIOCONFIG._serialized_end=2098 - _MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD._serialized_start=1931 - _MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD._serialized_end=2098 - _MODULECONFIG_PAXCOUNTERCONFIG._serialized_start=2100 - _MODULECONFIG_PAXCOUNTERCONFIG._serialized_end=2218 - _MODULECONFIG_SERIALCONFIG._serialized_start=2221 - _MODULECONFIG_SERIALCONFIG._serialized_end=2833 - _MODULECONFIG_SERIALCONFIG_SERIAL_BAUD._serialized_start=2480 - _MODULECONFIG_SERIALCONFIG_SERIAL_BAUD._serialized_end=2746 - _MODULECONFIG_SERIALCONFIG_SERIAL_MODE._serialized_start=2748 - _MODULECONFIG_SERIALCONFIG_SERIAL_MODE._serialized_end=2833 - _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG._serialized_start=2836 - _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG._serialized_end=3197 - _MODULECONFIG_STOREFORWARDCONFIG._serialized_start=3200 - _MODULECONFIG_STOREFORWARDCONFIG._serialized_end=3332 - _MODULECONFIG_RANGETESTCONFIG._serialized_start=3334 - _MODULECONFIG_RANGETESTCONFIG._serialized_end=3398 - _MODULECONFIG_TELEMETRYCONFIG._serialized_start=3401 - _MODULECONFIG_TELEMETRYCONFIG._serialized_end=3759 - _MODULECONFIG_CANNEDMESSAGECONFIG._serialized_start=3762 - _MODULECONFIG_CANNEDMESSAGECONFIG._serialized_end=4360 - _MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR._serialized_start=4261 - _MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR._serialized_end=4360 - _MODULECONFIG_AMBIENTLIGHTINGCONFIG._serialized_start=4362 - _MODULECONFIG_AMBIENTLIGHTINGCONFIG._serialized_end=4463 - _REMOTEHARDWAREPIN._serialized_start=4484 - _REMOTEHARDWAREPIN._serialized_end=4584 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/module_config_pb2.pyi b/meshtastic/module_config_pb2.pyi deleted file mode 100644 index 67bb608..0000000 --- a/meshtastic/module_config_pb2.pyi +++ /dev/null @@ -1,1184 +0,0 @@ -""" -@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 - -class _RemoteHardwarePinType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _RemoteHardwarePinTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_RemoteHardwarePinType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN: _RemoteHardwarePinType.ValueType # 0 - """ - Unset/unused - """ - DIGITAL_READ: _RemoteHardwarePinType.ValueType # 1 - """ - GPIO pin can be read (if it is high / low) - """ - DIGITAL_WRITE: _RemoteHardwarePinType.ValueType # 2 - """ - GPIO pin can be written to (high / low) - """ - -class RemoteHardwarePinType(_RemoteHardwarePinType, metaclass=_RemoteHardwarePinTypeEnumTypeWrapper): ... - -UNKNOWN: RemoteHardwarePinType.ValueType # 0 -""" -Unset/unused -""" -DIGITAL_READ: RemoteHardwarePinType.ValueType # 1 -""" -GPIO pin can be read (if it is high / low) -""" -DIGITAL_WRITE: RemoteHardwarePinType.ValueType # 2 -""" -GPIO pin can be written to (high / low) -""" -global___RemoteHardwarePinType = RemoteHardwarePinType - -@typing_extensions.final -class ModuleConfig(google.protobuf.message.Message): - """ - Module Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - @typing_extensions.final - class MQTTConfig(google.protobuf.message.Message): - """ - MQTT Client Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - ADDRESS_FIELD_NUMBER: builtins.int - USERNAME_FIELD_NUMBER: builtins.int - PASSWORD_FIELD_NUMBER: builtins.int - ENCRYPTION_ENABLED_FIELD_NUMBER: builtins.int - JSON_ENABLED_FIELD_NUMBER: builtins.int - TLS_ENABLED_FIELD_NUMBER: builtins.int - ROOT_FIELD_NUMBER: builtins.int - PROXY_TO_CLIENT_ENABLED_FIELD_NUMBER: builtins.int - MAP_REPORTING_ENABLED_FIELD_NUMBER: builtins.int - MAP_REPORT_SETTINGS_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as - is_uplink_enabled or is_downlink_enabled. - """ - address: builtins.str - """ - The server to use for our MQTT global message gateway feature. - If not set, the default server will be used - """ - username: builtins.str - """ - MQTT username to use (most useful for a custom MQTT server). - If using a custom server, this will be honoured even if empty. - If using the default server, this will only be honoured if set, otherwise the device will use the default username - """ - password: builtins.str - """ - MQTT password to use (most useful for a custom MQTT server). - If using a custom server, this will be honoured even if empty. - If using the default server, this will only be honoured if set, otherwise the device will use the default password - """ - encryption_enabled: builtins.bool - """ - Whether to send encrypted or decrypted packets to MQTT. - This parameter is only honoured if you also set server - (the default official mqtt.meshtastic.org server can handle encrypted packets) - Decrypted packets may be useful for external systems that want to consume meshtastic packets - """ - json_enabled: builtins.bool - """ - Whether to send / consume json packets on MQTT - """ - tls_enabled: builtins.bool - """ - If true, we attempt to establish a secure connection using TLS - """ - root: builtins.str - """ - The root topic to use for MQTT messages. Default is "msh". - This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs - """ - proxy_to_client_enabled: builtins.bool - """ - If true, we can use the connected phone / client to proxy messages to MQTT instead of a direct connection - """ - map_reporting_enabled: builtins.bool - """ - If true, we will periodically report unencrypted information about our node to a map via MQTT - """ - @property - def map_report_settings(self) -> global___ModuleConfig.MapReportSettings: - """ - Settings for reporting information about our node to a map via MQTT - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - address: builtins.str = ..., - username: builtins.str = ..., - password: builtins.str = ..., - encryption_enabled: builtins.bool = ..., - json_enabled: builtins.bool = ..., - tls_enabled: builtins.bool = ..., - root: builtins.str = ..., - proxy_to_client_enabled: builtins.bool = ..., - map_reporting_enabled: builtins.bool = ..., - map_report_settings: global___ModuleConfig.MapReportSettings | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["map_report_settings", b"map_report_settings"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["address", b"address", "enabled", b"enabled", "encryption_enabled", b"encryption_enabled", "json_enabled", b"json_enabled", "map_report_settings", b"map_report_settings", "map_reporting_enabled", b"map_reporting_enabled", "password", b"password", "proxy_to_client_enabled", b"proxy_to_client_enabled", "root", b"root", "tls_enabled", b"tls_enabled", "username", b"username"]) -> None: ... - - @typing_extensions.final - class MapReportSettings(google.protobuf.message.Message): - """ - Settings for reporting unencrypted information about our node to a map via MQTT - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PUBLISH_INTERVAL_SECS_FIELD_NUMBER: builtins.int - POSITION_PRECISION_FIELD_NUMBER: builtins.int - publish_interval_secs: builtins.int - """ - How often we should report our info to the map (in seconds) - """ - position_precision: builtins.int - """ - Bits of precision for the location sent (default of 32 is full precision). - """ - def __init__( - self, - *, - publish_interval_secs: builtins.int = ..., - position_precision: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["position_precision", b"position_precision", "publish_interval_secs", b"publish_interval_secs"]) -> None: ... - - @typing_extensions.final - class RemoteHardwareConfig(google.protobuf.message.Message): - """ - RemoteHardwareModule Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - ALLOW_UNDEFINED_PIN_ACCESS_FIELD_NUMBER: builtins.int - AVAILABLE_PINS_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Whether the Module is enabled - """ - allow_undefined_pin_access: builtins.bool - """ - Whether the Module allows consumers to read / write to pins not defined in available_pins - """ - @property - def available_pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RemoteHardwarePin]: - """ - Exposes the available pins to the mesh for reading and writing - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - allow_undefined_pin_access: builtins.bool = ..., - available_pins: collections.abc.Iterable[global___RemoteHardwarePin] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_undefined_pin_access", b"allow_undefined_pin_access", "available_pins", b"available_pins", "enabled", b"enabled"]) -> None: ... - - @typing_extensions.final - class NeighborInfoConfig(google.protobuf.message.Message): - """ - NeighborInfoModule Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - UPDATE_INTERVAL_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Whether the Module is enabled - """ - update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - Neighbor Info to the mesh - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - update_interval: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "update_interval", b"update_interval"]) -> None: ... - - @typing_extensions.final - class DetectionSensorConfig(google.protobuf.message.Message): - """ - Detection Sensor Module Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - MINIMUM_BROADCAST_SECS_FIELD_NUMBER: builtins.int - STATE_BROADCAST_SECS_FIELD_NUMBER: builtins.int - SEND_BELL_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - MONITOR_PIN_FIELD_NUMBER: builtins.int - DETECTION_TRIGGERED_HIGH_FIELD_NUMBER: builtins.int - USE_PULLUP_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Whether the Module is enabled - """ - minimum_broadcast_secs: builtins.int - """ - Interval in seconds of how often we can send a message to the mesh when a state change is detected - """ - state_broadcast_secs: builtins.int - """ - Interval in seconds of how often we should send a message to the mesh with the current state regardless of changes - When set to 0, only state changes will be broadcasted - Works as a sort of status heartbeat for peace of mind - """ - send_bell: builtins.bool - """ - Send ASCII bell with alert message - Useful for triggering ext. notification on bell - """ - name: builtins.str - """ - Friendly name used to format message sent to mesh - Example: A name "Motion" would result in a message "Motion detected" - Maximum length of 20 characters - """ - monitor_pin: builtins.int - """ - GPIO pin to monitor for state changes - """ - detection_triggered_high: builtins.bool - """ - Whether or not the GPIO pin state detection is triggered on HIGH (1) - Otherwise LOW (0) - """ - use_pullup: builtins.bool - """ - Whether or not use INPUT_PULLUP mode for GPIO pin - Only applicable if the board uses pull-up resistors on the pin - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - minimum_broadcast_secs: builtins.int = ..., - state_broadcast_secs: builtins.int = ..., - send_bell: builtins.bool = ..., - name: builtins.str = ..., - monitor_pin: builtins.int = ..., - detection_triggered_high: builtins.bool = ..., - use_pullup: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["detection_triggered_high", b"detection_triggered_high", "enabled", b"enabled", "minimum_broadcast_secs", b"minimum_broadcast_secs", "monitor_pin", b"monitor_pin", "name", b"name", "send_bell", b"send_bell", "state_broadcast_secs", b"state_broadcast_secs", "use_pullup", b"use_pullup"]) -> None: ... - - @typing_extensions.final - class AudioConfig(google.protobuf.message.Message): - """ - Audio Config for codec2 voice - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Audio_Baud: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _Audio_BaudEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.AudioConfig._Audio_Baud.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - CODEC2_DEFAULT: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 0 - CODEC2_3200: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 1 - CODEC2_2400: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 2 - CODEC2_1600: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 3 - CODEC2_1400: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 4 - CODEC2_1300: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 5 - CODEC2_1200: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 6 - CODEC2_700: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 7 - CODEC2_700B: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 8 - - class Audio_Baud(_Audio_Baud, metaclass=_Audio_BaudEnumTypeWrapper): - """ - Baudrate for codec2 voice - """ - - CODEC2_DEFAULT: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 0 - CODEC2_3200: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 1 - CODEC2_2400: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 2 - CODEC2_1600: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 3 - CODEC2_1400: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 4 - CODEC2_1300: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 5 - CODEC2_1200: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 6 - CODEC2_700: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 7 - CODEC2_700B: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 8 - - CODEC2_ENABLED_FIELD_NUMBER: builtins.int - PTT_PIN_FIELD_NUMBER: builtins.int - BITRATE_FIELD_NUMBER: builtins.int - I2S_WS_FIELD_NUMBER: builtins.int - I2S_SD_FIELD_NUMBER: builtins.int - I2S_DIN_FIELD_NUMBER: builtins.int - I2S_SCK_FIELD_NUMBER: builtins.int - codec2_enabled: builtins.bool - """ - Whether Audio is enabled - """ - ptt_pin: builtins.int - """ - PTT Pin - """ - bitrate: global___ModuleConfig.AudioConfig.Audio_Baud.ValueType - """ - The audio sample rate to use for codec2 - """ - i2s_ws: builtins.int - """ - I2S Word Select - """ - i2s_sd: builtins.int - """ - I2S Data IN - """ - i2s_din: builtins.int - """ - I2S Data OUT - """ - i2s_sck: builtins.int - """ - I2S Clock - """ - def __init__( - self, - *, - codec2_enabled: builtins.bool = ..., - ptt_pin: builtins.int = ..., - bitrate: global___ModuleConfig.AudioConfig.Audio_Baud.ValueType = ..., - i2s_ws: builtins.int = ..., - i2s_sd: builtins.int = ..., - i2s_din: builtins.int = ..., - i2s_sck: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bitrate", b"bitrate", "codec2_enabled", b"codec2_enabled", "i2s_din", b"i2s_din", "i2s_sck", b"i2s_sck", "i2s_sd", b"i2s_sd", "i2s_ws", b"i2s_ws", "ptt_pin", b"ptt_pin"]) -> None: ... - - @typing_extensions.final - class PaxcounterConfig(google.protobuf.message.Message): - """ - Config for the Paxcounter Module - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - PAXCOUNTER_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int - WIFI_THRESHOLD_FIELD_NUMBER: builtins.int - BLE_THRESHOLD_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Enable the Paxcounter Module - """ - paxcounter_update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - metrics to the mesh - """ - wifi_threshold: builtins.int - """ - WiFi RSSI threshold. Defaults to -80 - """ - ble_threshold: builtins.int - """ - BLE RSSI threshold. Defaults to -80 - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - paxcounter_update_interval: builtins.int = ..., - wifi_threshold: builtins.int = ..., - ble_threshold: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ble_threshold", b"ble_threshold", "enabled", b"enabled", "paxcounter_update_interval", b"paxcounter_update_interval", "wifi_threshold", b"wifi_threshold"]) -> None: ... - - @typing_extensions.final - class SerialConfig(google.protobuf.message.Message): - """ - Serial Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Serial_Baud: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _Serial_BaudEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.SerialConfig._Serial_Baud.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - BAUD_DEFAULT: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 0 - BAUD_110: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 1 - BAUD_300: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 2 - BAUD_600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 3 - BAUD_1200: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 4 - BAUD_2400: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 5 - BAUD_4800: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 6 - BAUD_9600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 7 - BAUD_19200: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 8 - BAUD_38400: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 9 - BAUD_57600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 10 - BAUD_115200: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 11 - BAUD_230400: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 12 - BAUD_460800: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 13 - BAUD_576000: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 14 - BAUD_921600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 15 - - class Serial_Baud(_Serial_Baud, metaclass=_Serial_BaudEnumTypeWrapper): - """ - TODO: REPLACE - """ - - BAUD_DEFAULT: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 0 - BAUD_110: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 1 - BAUD_300: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 2 - BAUD_600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 3 - BAUD_1200: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 4 - BAUD_2400: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 5 - BAUD_4800: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 6 - BAUD_9600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 7 - BAUD_19200: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 8 - BAUD_38400: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 9 - BAUD_57600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 10 - BAUD_115200: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 11 - BAUD_230400: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 12 - BAUD_460800: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 13 - BAUD_576000: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 14 - BAUD_921600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 15 - - class _Serial_Mode: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _Serial_ModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.SerialConfig._Serial_Mode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEFAULT: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 0 - SIMPLE: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 1 - PROTO: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 2 - TEXTMSG: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 3 - NMEA: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 4 - CALTOPO: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 5 - """NMEA messages specifically tailored for CalTopo""" - - class Serial_Mode(_Serial_Mode, metaclass=_Serial_ModeEnumTypeWrapper): - """ - TODO: REPLACE - """ - - DEFAULT: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 0 - SIMPLE: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 1 - PROTO: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 2 - TEXTMSG: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 3 - NMEA: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 4 - CALTOPO: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 5 - """NMEA messages specifically tailored for CalTopo""" - - ENABLED_FIELD_NUMBER: builtins.int - ECHO_FIELD_NUMBER: builtins.int - RXD_FIELD_NUMBER: builtins.int - TXD_FIELD_NUMBER: builtins.int - BAUD_FIELD_NUMBER: builtins.int - TIMEOUT_FIELD_NUMBER: builtins.int - MODE_FIELD_NUMBER: builtins.int - OVERRIDE_CONSOLE_SERIAL_PORT_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Preferences for the SerialModule - """ - echo: builtins.bool - """ - TODO: REPLACE - """ - rxd: builtins.int - """ - RX pin (should match Arduino gpio pin number) - """ - txd: builtins.int - """ - TX pin (should match Arduino gpio pin number) - """ - baud: global___ModuleConfig.SerialConfig.Serial_Baud.ValueType - """ - Serial baud rate - """ - timeout: builtins.int - """ - TODO: REPLACE - """ - mode: global___ModuleConfig.SerialConfig.Serial_Mode.ValueType - """ - Mode for serial module operation - """ - override_console_serial_port: builtins.bool - """ - Overrides the platform's defacto Serial port instance to use with Serial module config settings - This is currently only usable in output modes like NMEA / CalTopo and may behave strangely or not work at all in other modes - Existing logging over the Serial Console will still be present - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - echo: builtins.bool = ..., - rxd: builtins.int = ..., - txd: builtins.int = ..., - baud: global___ModuleConfig.SerialConfig.Serial_Baud.ValueType = ..., - timeout: builtins.int = ..., - mode: global___ModuleConfig.SerialConfig.Serial_Mode.ValueType = ..., - override_console_serial_port: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["baud", b"baud", "echo", b"echo", "enabled", b"enabled", "mode", b"mode", "override_console_serial_port", b"override_console_serial_port", "rxd", b"rxd", "timeout", b"timeout", "txd", b"txd"]) -> None: ... - - @typing_extensions.final - class ExternalNotificationConfig(google.protobuf.message.Message): - """ - External Notifications Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - OUTPUT_MS_FIELD_NUMBER: builtins.int - OUTPUT_FIELD_NUMBER: builtins.int - OUTPUT_VIBRA_FIELD_NUMBER: builtins.int - OUTPUT_BUZZER_FIELD_NUMBER: builtins.int - ACTIVE_FIELD_NUMBER: builtins.int - ALERT_MESSAGE_FIELD_NUMBER: builtins.int - ALERT_MESSAGE_VIBRA_FIELD_NUMBER: builtins.int - ALERT_MESSAGE_BUZZER_FIELD_NUMBER: builtins.int - ALERT_BELL_FIELD_NUMBER: builtins.int - ALERT_BELL_VIBRA_FIELD_NUMBER: builtins.int - ALERT_BELL_BUZZER_FIELD_NUMBER: builtins.int - USE_PWM_FIELD_NUMBER: builtins.int - NAG_TIMEOUT_FIELD_NUMBER: builtins.int - USE_I2S_AS_BUZZER_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Enable the ExternalNotificationModule - """ - output_ms: builtins.int - """ - When using in On/Off mode, keep the output on for this many - milliseconds. Default 1000ms (1 second). - """ - output: builtins.int - """ - Define the output pin GPIO setting Defaults to - EXT_NOTIFY_OUT if set for the board. - In standalone devices this pin should drive the LED to match the UI. - """ - output_vibra: builtins.int - """ - Optional: Define a secondary output pin for a vibra motor - This is used in standalone devices to match the UI. - """ - output_buzzer: builtins.int - """ - Optional: Define a tertiary output pin for an active buzzer - This is used in standalone devices to to match the UI. - """ - active: builtins.bool - """ - IF this is true, the 'output' Pin will be pulled active high, false - means active low. - """ - alert_message: builtins.bool - """ - True: Alert when a text message arrives (output) - """ - alert_message_vibra: builtins.bool - """ - True: Alert when a text message arrives (output_vibra) - """ - alert_message_buzzer: builtins.bool - """ - True: Alert when a text message arrives (output_buzzer) - """ - alert_bell: builtins.bool - """ - True: Alert when the bell character is received (output) - """ - alert_bell_vibra: builtins.bool - """ - True: Alert when the bell character is received (output_vibra) - """ - alert_bell_buzzer: builtins.bool - """ - True: Alert when the bell character is received (output_buzzer) - """ - use_pwm: builtins.bool - """ - use a PWM output instead of a simple on/off output. This will ignore - the 'output', 'output_ms' and 'active' settings and use the - device.buzzer_gpio instead. - """ - nag_timeout: builtins.int - """ - The notification will toggle with 'output_ms' for this time of seconds. - Default is 0 which means don't repeat at all. 60 would mean blink - and/or beep for 60 seconds - """ - use_i2s_as_buzzer: builtins.bool - """ - When true, enables devices with native I2S audio output to use the RTTTL over speaker like a buzzer - T-Watch S3 and T-Deck for example have this capability - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - output_ms: builtins.int = ..., - output: builtins.int = ..., - output_vibra: builtins.int = ..., - output_buzzer: builtins.int = ..., - active: builtins.bool = ..., - alert_message: builtins.bool = ..., - alert_message_vibra: builtins.bool = ..., - alert_message_buzzer: builtins.bool = ..., - alert_bell: builtins.bool = ..., - alert_bell_vibra: builtins.bool = ..., - alert_bell_buzzer: builtins.bool = ..., - use_pwm: builtins.bool = ..., - nag_timeout: builtins.int = ..., - use_i2s_as_buzzer: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "alert_bell", b"alert_bell", "alert_bell_buzzer", b"alert_bell_buzzer", "alert_bell_vibra", b"alert_bell_vibra", "alert_message", b"alert_message", "alert_message_buzzer", b"alert_message_buzzer", "alert_message_vibra", b"alert_message_vibra", "enabled", b"enabled", "nag_timeout", b"nag_timeout", "output", b"output", "output_buzzer", b"output_buzzer", "output_ms", b"output_ms", "output_vibra", b"output_vibra", "use_i2s_as_buzzer", b"use_i2s_as_buzzer", "use_pwm", b"use_pwm"]) -> None: ... - - @typing_extensions.final - class StoreForwardConfig(google.protobuf.message.Message): - """ - Store and Forward Module Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - HEARTBEAT_FIELD_NUMBER: builtins.int - RECORDS_FIELD_NUMBER: builtins.int - HISTORY_RETURN_MAX_FIELD_NUMBER: builtins.int - HISTORY_RETURN_WINDOW_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Enable the Store and Forward Module - """ - heartbeat: builtins.bool - """ - TODO: REPLACE - """ - records: builtins.int - """ - TODO: REPLACE - """ - history_return_max: builtins.int - """ - TODO: REPLACE - """ - history_return_window: builtins.int - """ - TODO: REPLACE - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - heartbeat: builtins.bool = ..., - records: builtins.int = ..., - history_return_max: builtins.int = ..., - history_return_window: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "heartbeat", b"heartbeat", "history_return_max", b"history_return_max", "history_return_window", b"history_return_window", "records", b"records"]) -> None: ... - - @typing_extensions.final - class RangeTestConfig(google.protobuf.message.Message): - """ - Preferences for the RangeTestModule - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ENABLED_FIELD_NUMBER: builtins.int - SENDER_FIELD_NUMBER: builtins.int - SAVE_FIELD_NUMBER: builtins.int - enabled: builtins.bool - """ - Enable the Range Test Module - """ - sender: builtins.int - """ - Send out range test messages from this node - """ - save: builtins.bool - """ - Bool value indicating that this node should save a RangeTest.csv file. - ESP32 Only - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - sender: builtins.int = ..., - save: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "save", b"save", "sender", b"sender"]) -> None: ... - - @typing_extensions.final - class TelemetryConfig(google.protobuf.message.Message): - """ - Configuration for both device and environment metrics - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - DEVICE_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int - ENVIRONMENT_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int - ENVIRONMENT_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int - ENVIRONMENT_SCREEN_ENABLED_FIELD_NUMBER: builtins.int - ENVIRONMENT_DISPLAY_FAHRENHEIT_FIELD_NUMBER: builtins.int - AIR_QUALITY_ENABLED_FIELD_NUMBER: builtins.int - AIR_QUALITY_INTERVAL_FIELD_NUMBER: builtins.int - POWER_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int - POWER_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int - POWER_SCREEN_ENABLED_FIELD_NUMBER: builtins.int - device_update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - device metrics to the mesh - """ - environment_update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - environment measurements to the mesh - """ - environment_measurement_enabled: builtins.bool - """ - Preferences for the Telemetry Module (Environment) - Enable/Disable the telemetry measurement module measurement collection - """ - environment_screen_enabled: builtins.bool - """ - Enable/Disable the telemetry measurement module on-device display - """ - environment_display_fahrenheit: builtins.bool - """ - We'll always read the sensor in Celsius, but sometimes we might want to - display the results in Fahrenheit as a "user preference". - """ - air_quality_enabled: builtins.bool - """ - Enable/Disable the air quality metrics - """ - air_quality_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - air quality metrics to the mesh - """ - power_measurement_enabled: builtins.bool - """ - Interval in seconds of how often we should try to send our - air quality metrics to the mesh - """ - power_update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - air quality metrics to the mesh - """ - power_screen_enabled: builtins.bool - """ - Interval in seconds of how often we should try to send our - air quality metrics to the mesh - """ - def __init__( - self, - *, - device_update_interval: builtins.int = ..., - environment_update_interval: builtins.int = ..., - environment_measurement_enabled: builtins.bool = ..., - environment_screen_enabled: builtins.bool = ..., - environment_display_fahrenheit: builtins.bool = ..., - air_quality_enabled: builtins.bool = ..., - air_quality_interval: builtins.int = ..., - power_measurement_enabled: builtins.bool = ..., - power_update_interval: builtins.int = ..., - power_screen_enabled: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["air_quality_enabled", b"air_quality_enabled", "air_quality_interval", b"air_quality_interval", "device_update_interval", b"device_update_interval", "environment_display_fahrenheit", b"environment_display_fahrenheit", "environment_measurement_enabled", b"environment_measurement_enabled", "environment_screen_enabled", b"environment_screen_enabled", "environment_update_interval", b"environment_update_interval", "power_measurement_enabled", b"power_measurement_enabled", "power_screen_enabled", b"power_screen_enabled", "power_update_interval", b"power_update_interval"]) -> None: ... - - @typing_extensions.final - class CannedMessageConfig(google.protobuf.message.Message): - """ - TODO: REPLACE - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _InputEventChar: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _InputEventCharEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.CannedMessageConfig._InputEventChar.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NONE: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 0 - """ - TODO: REPLACE - """ - UP: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 17 - """ - TODO: REPLACE - """ - DOWN: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 18 - """ - TODO: REPLACE - """ - LEFT: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 19 - """ - TODO: REPLACE - """ - RIGHT: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 20 - """ - TODO: REPLACE - """ - SELECT: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 10 - """ - '\\n' - """ - BACK: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 27 - """ - TODO: REPLACE - """ - CANCEL: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 24 - """ - TODO: REPLACE - """ - - class InputEventChar(_InputEventChar, metaclass=_InputEventCharEnumTypeWrapper): - """ - TODO: REPLACE - """ - - NONE: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 0 - """ - TODO: REPLACE - """ - UP: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 17 - """ - TODO: REPLACE - """ - DOWN: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 18 - """ - TODO: REPLACE - """ - LEFT: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 19 - """ - TODO: REPLACE - """ - RIGHT: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 20 - """ - TODO: REPLACE - """ - SELECT: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 10 - """ - '\\n' - """ - BACK: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 27 - """ - TODO: REPLACE - """ - CANCEL: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 24 - """ - TODO: REPLACE - """ - - ROTARY1_ENABLED_FIELD_NUMBER: builtins.int - INPUTBROKER_PIN_A_FIELD_NUMBER: builtins.int - INPUTBROKER_PIN_B_FIELD_NUMBER: builtins.int - INPUTBROKER_PIN_PRESS_FIELD_NUMBER: builtins.int - INPUTBROKER_EVENT_CW_FIELD_NUMBER: builtins.int - INPUTBROKER_EVENT_CCW_FIELD_NUMBER: builtins.int - INPUTBROKER_EVENT_PRESS_FIELD_NUMBER: builtins.int - UPDOWN1_ENABLED_FIELD_NUMBER: builtins.int - ENABLED_FIELD_NUMBER: builtins.int - ALLOW_INPUT_SOURCE_FIELD_NUMBER: builtins.int - SEND_BELL_FIELD_NUMBER: builtins.int - rotary1_enabled: builtins.bool - """ - Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. - """ - inputbroker_pin_a: builtins.int - """ - GPIO pin for rotary encoder A port. - """ - inputbroker_pin_b: builtins.int - """ - GPIO pin for rotary encoder B port. - """ - inputbroker_pin_press: builtins.int - """ - GPIO pin for rotary encoder Press port. - """ - inputbroker_event_cw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType - """ - Generate input event on CW of this kind. - """ - inputbroker_event_ccw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType - """ - Generate input event on CCW of this kind. - """ - inputbroker_event_press: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType - """ - Generate input event on Press of this kind. - """ - updown1_enabled: builtins.bool - """ - Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. - """ - enabled: builtins.bool - """ - Enable/disable CannedMessageModule. - """ - allow_input_source: builtins.str - """ - Input event origin accepted by the canned message module. - Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any" - """ - send_bell: builtins.bool - """ - CannedMessageModule also sends a bell character with the messages. - ExternalNotificationModule can benefit from this feature. - """ - def __init__( - self, - *, - rotary1_enabled: builtins.bool = ..., - inputbroker_pin_a: builtins.int = ..., - inputbroker_pin_b: builtins.int = ..., - inputbroker_pin_press: builtins.int = ..., - inputbroker_event_cw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType = ..., - inputbroker_event_ccw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType = ..., - inputbroker_event_press: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType = ..., - updown1_enabled: builtins.bool = ..., - enabled: builtins.bool = ..., - allow_input_source: builtins.str = ..., - send_bell: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["allow_input_source", b"allow_input_source", "enabled", b"enabled", "inputbroker_event_ccw", b"inputbroker_event_ccw", "inputbroker_event_cw", b"inputbroker_event_cw", "inputbroker_event_press", b"inputbroker_event_press", "inputbroker_pin_a", b"inputbroker_pin_a", "inputbroker_pin_b", b"inputbroker_pin_b", "inputbroker_pin_press", b"inputbroker_pin_press", "rotary1_enabled", b"rotary1_enabled", "send_bell", b"send_bell", "updown1_enabled", b"updown1_enabled"]) -> None: ... - - @typing_extensions.final - class AmbientLightingConfig(google.protobuf.message.Message): - """ - Ambient Lighting Module - Settings for control of onboard LEDs to allow users to adjust the brightness levels and respective color levels. - Initially created for the RAK14001 RGB LED module. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LED_STATE_FIELD_NUMBER: builtins.int - CURRENT_FIELD_NUMBER: builtins.int - RED_FIELD_NUMBER: builtins.int - GREEN_FIELD_NUMBER: builtins.int - BLUE_FIELD_NUMBER: builtins.int - led_state: builtins.bool - """ - Sets LED to on or off. - """ - current: builtins.int - """ - Sets the current for the LED output. Default is 10. - """ - red: builtins.int - """ - Sets the red LED level. Values are 0-255. - """ - green: builtins.int - """ - Sets the green LED level. Values are 0-255. - """ - blue: builtins.int - """ - Sets the blue LED level. Values are 0-255. - """ - def __init__( - self, - *, - led_state: builtins.bool = ..., - current: builtins.int = ..., - red: builtins.int = ..., - green: builtins.int = ..., - blue: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["blue", b"blue", "current", b"current", "green", b"green", "led_state", b"led_state", "red", b"red"]) -> None: ... - - MQTT_FIELD_NUMBER: builtins.int - SERIAL_FIELD_NUMBER: builtins.int - EXTERNAL_NOTIFICATION_FIELD_NUMBER: builtins.int - STORE_FORWARD_FIELD_NUMBER: builtins.int - RANGE_TEST_FIELD_NUMBER: builtins.int - TELEMETRY_FIELD_NUMBER: builtins.int - CANNED_MESSAGE_FIELD_NUMBER: builtins.int - AUDIO_FIELD_NUMBER: builtins.int - REMOTE_HARDWARE_FIELD_NUMBER: builtins.int - NEIGHBOR_INFO_FIELD_NUMBER: builtins.int - AMBIENT_LIGHTING_FIELD_NUMBER: builtins.int - DETECTION_SENSOR_FIELD_NUMBER: builtins.int - PAXCOUNTER_FIELD_NUMBER: builtins.int - @property - def mqtt(self) -> global___ModuleConfig.MQTTConfig: - """ - TODO: REPLACE - """ - @property - def serial(self) -> global___ModuleConfig.SerialConfig: - """ - TODO: REPLACE - """ - @property - def external_notification(self) -> global___ModuleConfig.ExternalNotificationConfig: - """ - TODO: REPLACE - """ - @property - def store_forward(self) -> global___ModuleConfig.StoreForwardConfig: - """ - TODO: REPLACE - """ - @property - def range_test(self) -> global___ModuleConfig.RangeTestConfig: - """ - TODO: REPLACE - """ - @property - def telemetry(self) -> global___ModuleConfig.TelemetryConfig: - """ - TODO: REPLACE - """ - @property - def canned_message(self) -> global___ModuleConfig.CannedMessageConfig: - """ - TODO: REPLACE - """ - @property - def audio(self) -> global___ModuleConfig.AudioConfig: - """ - TODO: REPLACE - """ - @property - def remote_hardware(self) -> global___ModuleConfig.RemoteHardwareConfig: - """ - TODO: REPLACE - """ - @property - def neighbor_info(self) -> global___ModuleConfig.NeighborInfoConfig: - """ - TODO: REPLACE - """ - @property - def ambient_lighting(self) -> global___ModuleConfig.AmbientLightingConfig: - """ - TODO: REPLACE - """ - @property - def detection_sensor(self) -> global___ModuleConfig.DetectionSensorConfig: - """ - TODO: REPLACE - """ - @property - def paxcounter(self) -> global___ModuleConfig.PaxcounterConfig: - """ - TODO: REPLACE - """ - def __init__( - self, - *, - mqtt: global___ModuleConfig.MQTTConfig | None = ..., - serial: global___ModuleConfig.SerialConfig | None = ..., - external_notification: global___ModuleConfig.ExternalNotificationConfig | None = ..., - store_forward: global___ModuleConfig.StoreForwardConfig | None = ..., - range_test: global___ModuleConfig.RangeTestConfig | None = ..., - telemetry: global___ModuleConfig.TelemetryConfig | None = ..., - canned_message: global___ModuleConfig.CannedMessageConfig | None = ..., - audio: global___ModuleConfig.AudioConfig | None = ..., - remote_hardware: global___ModuleConfig.RemoteHardwareConfig | None = ..., - neighbor_info: global___ModuleConfig.NeighborInfoConfig | None = ..., - ambient_lighting: global___ModuleConfig.AmbientLightingConfig | None = ..., - detection_sensor: global___ModuleConfig.DetectionSensorConfig | None = ..., - paxcounter: global___ModuleConfig.PaxcounterConfig | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.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", "store_forward", b"store_forward", "telemetry", b"telemetry"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.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", "store_forward", b"store_forward", "telemetry", b"telemetry"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["payload_variant", b"payload_variant"]) -> typing_extensions.Literal["mqtt", "serial", "external_notification", "store_forward", "range_test", "telemetry", "canned_message", "audio", "remote_hardware", "neighbor_info", "ambient_lighting", "detection_sensor", "paxcounter"] | None: ... - -global___ModuleConfig = ModuleConfig - -@typing_extensions.final -class RemoteHardwarePin(google.protobuf.message.Message): - """ - A GPIO pin definition for remote hardware module - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - GPIO_PIN_FIELD_NUMBER: builtins.int - NAME_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - gpio_pin: builtins.int - """ - GPIO Pin number (must match Arduino) - """ - name: builtins.str - """ - Name for the GPIO pin (i.e. Front gate, mailbox, etc) - """ - type: global___RemoteHardwarePinType.ValueType - """ - Type of GPIO access available to consumers on the mesh - """ - def __init__( - self, - *, - gpio_pin: builtins.int = ..., - name: builtins.str = ..., - type: global___RemoteHardwarePinType.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["gpio_pin", b"gpio_pin", "name", b"name", "type", b"type"]) -> None: ... - -global___RemoteHardwarePin = RemoteHardwarePin diff --git a/meshtastic/mqtt_pb2.py b/meshtastic/mqtt_pb2.py deleted file mode 100644 index e4ba9e7..0000000 --- a/meshtastic/mqtt_pb2.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/mqtt.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from meshtastic import config_pb2 as meshtastic_dot_config__pb2 -from meshtastic import mesh_pb2 as meshtastic_dot_mesh__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/mqtt.proto\x12\nmeshtastic\x1a\x17meshtastic/config.proto\x1a\x15meshtastic/mesh.proto\"a\n\x0fServiceEnvelope\x12&\n\x06packet\x18\x01 \x01(\x0b\x32\x16.meshtastic.MeshPacket\x12\x12\n\nchannel_id\x18\x02 \x01(\t\x12\x12\n\ngateway_id\x18\x03 \x01(\t\"\xbc\x03\n\tMapReport\x12\x11\n\tlong_name\x18\x01 \x01(\t\x12\x12\n\nshort_name\x18\x02 \x01(\t\x12\x32\n\x04role\x18\x03 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12+\n\x08hw_model\x18\x04 \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x18\n\x10\x66irmware_version\x18\x05 \x01(\t\x12\x38\n\x06region\x18\x06 \x01(\x0e\x32(.meshtastic.Config.LoRaConfig.RegionCode\x12?\n\x0cmodem_preset\x18\x07 \x01(\x0e\x32).meshtastic.Config.LoRaConfig.ModemPreset\x12\x1b\n\x13has_default_channel\x18\x08 \x01(\x08\x12\x12\n\nlatitude_i\x18\t \x01(\x0f\x12\x13\n\x0blongitude_i\x18\n \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x0b \x01(\x05\x12\x1a\n\x12position_precision\x18\x0c \x01(\r\x12\x1e\n\x16num_online_local_nodes\x18\r \x01(\rB_\n\x13\x63om.geeksville.meshB\nMQTTProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.mqtt_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nMQTTProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _SERVICEENVELOPE._serialized_start=85 - _SERVICEENVELOPE._serialized_end=182 - _MAPREPORT._serialized_start=185 - _MAPREPORT._serialized_end=629 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/mqtt_pb2.pyi b/meshtastic/mqtt_pb2.pyi deleted file mode 100644 index ed2b834..0000000 --- a/meshtastic/mqtt_pb2.pyi +++ /dev/null @@ -1,151 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import meshtastic.config_pb2 -import meshtastic.mesh_pb2 -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class ServiceEnvelope(google.protobuf.message.Message): - """ - This message wraps a MeshPacket with extra metadata about the sender and how it arrived. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PACKET_FIELD_NUMBER: builtins.int - CHANNEL_ID_FIELD_NUMBER: builtins.int - GATEWAY_ID_FIELD_NUMBER: builtins.int - @property - def packet(self) -> meshtastic.mesh_pb2.MeshPacket: - """ - The (probably encrypted) packet - """ - channel_id: builtins.str - """ - The global channel ID it was sent on - """ - gateway_id: builtins.str - """ - The sending gateway node ID. Can we use this to authenticate/prevent fake - nodeid impersonation for senders? - i.e. use gateway/mesh id (which is authenticated) + local node id as - the globally trusted nodenum - """ - def __init__( - self, - *, - packet: meshtastic.mesh_pb2.MeshPacket | None = ..., - channel_id: builtins.str = ..., - gateway_id: builtins.str = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["packet", b"packet"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel_id", b"channel_id", "gateway_id", b"gateway_id", "packet", b"packet"]) -> None: ... - -global___ServiceEnvelope = ServiceEnvelope - -@typing_extensions.final -class MapReport(google.protobuf.message.Message): - """ - Information about a node intended to be reported unencrypted to a map using MQTT. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - LONG_NAME_FIELD_NUMBER: builtins.int - SHORT_NAME_FIELD_NUMBER: builtins.int - ROLE_FIELD_NUMBER: builtins.int - HW_MODEL_FIELD_NUMBER: builtins.int - FIRMWARE_VERSION_FIELD_NUMBER: builtins.int - REGION_FIELD_NUMBER: builtins.int - MODEM_PRESET_FIELD_NUMBER: builtins.int - HAS_DEFAULT_CHANNEL_FIELD_NUMBER: builtins.int - LATITUDE_I_FIELD_NUMBER: builtins.int - LONGITUDE_I_FIELD_NUMBER: builtins.int - ALTITUDE_FIELD_NUMBER: builtins.int - POSITION_PRECISION_FIELD_NUMBER: builtins.int - NUM_ONLINE_LOCAL_NODES_FIELD_NUMBER: builtins.int - long_name: builtins.str - """ - A full name for this user, i.e. "Kevin Hester" - """ - short_name: builtins.str - """ - A VERY short name, ideally two characters. - Suitable for a tiny OLED screen - """ - role: meshtastic.config_pb2.Config.DeviceConfig.Role.ValueType - """ - Role of the node that applies specific settings for a particular use-case - """ - hw_model: meshtastic.mesh_pb2.HardwareModel.ValueType - """ - Hardware model of the node, i.e. T-Beam, Heltec V3, etc... - """ - firmware_version: builtins.str - """ - Device firmware version string - """ - region: meshtastic.config_pb2.Config.LoRaConfig.RegionCode.ValueType - """ - The region code for the radio (US, CN, EU433, etc...) - """ - modem_preset: meshtastic.config_pb2.Config.LoRaConfig.ModemPreset.ValueType - """ - Modem preset used by the radio (LongFast, MediumSlow, etc...) - """ - has_default_channel: builtins.bool - """ - Whether the node has a channel with default PSK and name (LongFast, MediumSlow, etc...) - and it uses the default frequency slot given the region and modem preset. - """ - latitude_i: builtins.int - """ - Latitude: multiply by 1e-7 to get degrees in floating point - """ - longitude_i: builtins.int - """ - Longitude: multiply by 1e-7 to get degrees in floating point - """ - altitude: builtins.int - """ - Altitude in meters above MSL - """ - position_precision: builtins.int - """ - Indicates the bits of precision for latitude and longitude set by the sending node - """ - num_online_local_nodes: builtins.int - """ - Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT) - """ - def __init__( - self, - *, - long_name: builtins.str = ..., - short_name: builtins.str = ..., - role: meshtastic.config_pb2.Config.DeviceConfig.Role.ValueType = ..., - hw_model: meshtastic.mesh_pb2.HardwareModel.ValueType = ..., - firmware_version: builtins.str = ..., - region: meshtastic.config_pb2.Config.LoRaConfig.RegionCode.ValueType = ..., - modem_preset: meshtastic.config_pb2.Config.LoRaConfig.ModemPreset.ValueType = ..., - has_default_channel: builtins.bool = ..., - latitude_i: builtins.int = ..., - longitude_i: builtins.int = ..., - altitude: builtins.int = ..., - position_precision: builtins.int = ..., - num_online_local_nodes: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["altitude", b"altitude", "firmware_version", b"firmware_version", "has_default_channel", b"has_default_channel", "hw_model", b"hw_model", "latitude_i", b"latitude_i", "long_name", b"long_name", "longitude_i", b"longitude_i", "modem_preset", b"modem_preset", "num_online_local_nodes", b"num_online_local_nodes", "position_precision", b"position_precision", "region", b"region", "role", b"role", "short_name", b"short_name"]) -> None: ... - -global___MapReport = MapReport diff --git a/meshtastic/nanopb_pb2.py b/meshtastic/nanopb_pb2.py deleted file mode 100644 index eea6b3e..0000000 --- a/meshtastic/nanopb_pb2.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: nanopb.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cnanopb.proto\x1a google/protobuf/descriptor.proto\"\xa4\x07\n\rNanoPBOptions\x12\x10\n\x08max_size\x18\x01 \x01(\x05\x12\x12\n\nmax_length\x18\x0e \x01(\x05\x12\x11\n\tmax_count\x18\x02 \x01(\x05\x12&\n\x08int_size\x18\x07 \x01(\x0e\x32\x08.IntSize:\nIS_DEFAULT\x12$\n\x04type\x18\x03 \x01(\x0e\x32\n.FieldType:\nFT_DEFAULT\x12\x18\n\nlong_names\x18\x04 \x01(\x08:\x04true\x12\x1c\n\rpacked_struct\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0bpacked_enum\x18\n \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0cskip_message\x18\x06 \x01(\x08:\x05\x66\x61lse\x12\x18\n\tno_unions\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\r\n\x05msgid\x18\t \x01(\r\x12\x1e\n\x0f\x61nonymous_oneof\x18\x0b \x01(\x08:\x05\x66\x61lse\x12\x15\n\x06proto3\x18\x0c \x01(\x08:\x05\x66\x61lse\x12#\n\x14proto3_singular_msgs\x18\x15 \x01(\x08:\x05\x66\x61lse\x12\x1d\n\x0e\x65num_to_string\x18\r \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0c\x66ixed_length\x18\x0f \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0b\x66ixed_count\x18\x10 \x01(\x08:\x05\x66\x61lse\x12\x1e\n\x0fsubmsg_callback\x18\x16 \x01(\x08:\x05\x66\x61lse\x12/\n\x0cmangle_names\x18\x11 \x01(\x0e\x32\x11.TypenameMangling:\x06M_NONE\x12(\n\x11\x63\x61llback_datatype\x18\x12 \x01(\t:\rpb_callback_t\x12\x34\n\x11\x63\x61llback_function\x18\x13 \x01(\t:\x19pb_default_field_callback\x12\x30\n\x0e\x64\x65scriptorsize\x18\x14 \x01(\x0e\x32\x0f.DescriptorSize:\x07\x44S_AUTO\x12\x1a\n\x0b\x64\x65\x66\x61ult_has\x18\x17 \x01(\x08:\x05\x66\x61lse\x12\x0f\n\x07include\x18\x18 \x03(\t\x12\x0f\n\x07\x65xclude\x18\x1a \x03(\t\x12\x0f\n\x07package\x18\x19 \x01(\t\x12\x41\n\rtype_override\x18\x1b \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.Type\x12\x19\n\x0bsort_by_tag\x18\x1c \x01(\x08:\x04true\x12.\n\rfallback_type\x18\x1d \x01(\x0e\x32\n.FieldType:\x0b\x46T_CALLBACK*i\n\tFieldType\x12\x0e\n\nFT_DEFAULT\x10\x00\x12\x0f\n\x0b\x46T_CALLBACK\x10\x01\x12\x0e\n\nFT_POINTER\x10\x04\x12\r\n\tFT_STATIC\x10\x02\x12\r\n\tFT_IGNORE\x10\x03\x12\r\n\tFT_INLINE\x10\x05*D\n\x07IntSize\x12\x0e\n\nIS_DEFAULT\x10\x00\x12\x08\n\x04IS_8\x10\x08\x12\t\n\x05IS_16\x10\x10\x12\t\n\x05IS_32\x10 \x12\t\n\x05IS_64\x10@*Z\n\x10TypenameMangling\x12\n\n\x06M_NONE\x10\x00\x12\x13\n\x0fM_STRIP_PACKAGE\x10\x01\x12\r\n\tM_FLATTEN\x10\x02\x12\x16\n\x12M_PACKAGE_INITIALS\x10\x03*E\n\x0e\x44\x65scriptorSize\x12\x0b\n\x07\x44S_AUTO\x10\x00\x12\x08\n\x04\x44S_1\x10\x01\x12\x08\n\x04\x44S_2\x10\x02\x12\x08\n\x04\x44S_4\x10\x04\x12\x08\n\x04\x44S_8\x10\x08:E\n\x0enanopb_fileopt\x12\x1c.google.protobuf.FileOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:G\n\rnanopb_msgopt\x12\x1f.google.protobuf.MessageOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:E\n\x0enanopb_enumopt\x12\x1c.google.protobuf.EnumOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:>\n\x06nanopb\x12\x1d.google.protobuf.FieldOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptionsB\x1a\n\x18\x66i.kapsi.koti.jpa.nanopb') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'nanopb_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - google_dot_protobuf_dot_descriptor__pb2.FileOptions.RegisterExtension(nanopb_fileopt) - google_dot_protobuf_dot_descriptor__pb2.MessageOptions.RegisterExtension(nanopb_msgopt) - google_dot_protobuf_dot_descriptor__pb2.EnumOptions.RegisterExtension(nanopb_enumopt) - google_dot_protobuf_dot_descriptor__pb2.FieldOptions.RegisterExtension(nanopb) - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\030fi.kapsi.koti.jpa.nanopb' - _FIELDTYPE._serialized_start=985 - _FIELDTYPE._serialized_end=1090 - _INTSIZE._serialized_start=1092 - _INTSIZE._serialized_end=1160 - _TYPENAMEMANGLING._serialized_start=1162 - _TYPENAMEMANGLING._serialized_end=1252 - _DESCRIPTORSIZE._serialized_start=1254 - _DESCRIPTORSIZE._serialized_end=1323 - _NANOPBOPTIONS._serialized_start=51 - _NANOPBOPTIONS._serialized_end=983 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/nanopb_pb2.pyi b/meshtastic/nanopb_pb2.pyi deleted file mode 100644 index 840d1e6..0000000 --- a/meshtastic/nanopb_pb2.pyi +++ /dev/null @@ -1,321 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -Custom options for defining: -- Maximum size of string/bytes -- Maximum number of elements in array - -These are used by nanopb to generate statically allocable structures -for memory-limited environments. -""" -import builtins -import collections.abc -import google.protobuf.descriptor -import google.protobuf.descriptor_pb2 -import google.protobuf.internal.containers -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.internal.extension_dict -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 - -class _FieldType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _FieldTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FieldType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - FT_DEFAULT: _FieldType.ValueType # 0 - """Automatically decide field type, generate static field if possible.""" - FT_CALLBACK: _FieldType.ValueType # 1 - """Always generate a callback field.""" - FT_POINTER: _FieldType.ValueType # 4 - """Always generate a dynamically allocated field.""" - FT_STATIC: _FieldType.ValueType # 2 - """Generate a static field or raise an exception if not possible.""" - FT_IGNORE: _FieldType.ValueType # 3 - """Ignore the field completely.""" - FT_INLINE: _FieldType.ValueType # 5 - """Legacy option, use the separate 'fixed_length' option instead""" - -class FieldType(_FieldType, metaclass=_FieldTypeEnumTypeWrapper): ... - -FT_DEFAULT: FieldType.ValueType # 0 -"""Automatically decide field type, generate static field if possible.""" -FT_CALLBACK: FieldType.ValueType # 1 -"""Always generate a callback field.""" -FT_POINTER: FieldType.ValueType # 4 -"""Always generate a dynamically allocated field.""" -FT_STATIC: FieldType.ValueType # 2 -"""Generate a static field or raise an exception if not possible.""" -FT_IGNORE: FieldType.ValueType # 3 -"""Ignore the field completely.""" -FT_INLINE: FieldType.ValueType # 5 -"""Legacy option, use the separate 'fixed_length' option instead""" -global___FieldType = FieldType - -class _IntSize: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _IntSizeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_IntSize.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - IS_DEFAULT: _IntSize.ValueType # 0 - """Default, 32/64bit based on type in .proto""" - IS_8: _IntSize.ValueType # 8 - IS_16: _IntSize.ValueType # 16 - IS_32: _IntSize.ValueType # 32 - IS_64: _IntSize.ValueType # 64 - -class IntSize(_IntSize, metaclass=_IntSizeEnumTypeWrapper): ... - -IS_DEFAULT: IntSize.ValueType # 0 -"""Default, 32/64bit based on type in .proto""" -IS_8: IntSize.ValueType # 8 -IS_16: IntSize.ValueType # 16 -IS_32: IntSize.ValueType # 32 -IS_64: IntSize.ValueType # 64 -global___IntSize = IntSize - -class _TypenameMangling: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _TypenameManglingEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TypenameMangling.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - M_NONE: _TypenameMangling.ValueType # 0 - """Default, no typename mangling""" - M_STRIP_PACKAGE: _TypenameMangling.ValueType # 1 - """Strip current package name""" - M_FLATTEN: _TypenameMangling.ValueType # 2 - """Only use last path component""" - M_PACKAGE_INITIALS: _TypenameMangling.ValueType # 3 - """Replace the package name by the initials""" - -class TypenameMangling(_TypenameMangling, metaclass=_TypenameManglingEnumTypeWrapper): ... - -M_NONE: TypenameMangling.ValueType # 0 -"""Default, no typename mangling""" -M_STRIP_PACKAGE: TypenameMangling.ValueType # 1 -"""Strip current package name""" -M_FLATTEN: TypenameMangling.ValueType # 2 -"""Only use last path component""" -M_PACKAGE_INITIALS: TypenameMangling.ValueType # 3 -"""Replace the package name by the initials""" -global___TypenameMangling = TypenameMangling - -class _DescriptorSize: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _DescriptorSizeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DescriptorSize.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DS_AUTO: _DescriptorSize.ValueType # 0 - """Select minimal size based on field type""" - DS_1: _DescriptorSize.ValueType # 1 - """1 word; up to 15 byte fields, no arrays""" - DS_2: _DescriptorSize.ValueType # 2 - """2 words; up to 4095 byte fields, 4095 entry arrays""" - DS_4: _DescriptorSize.ValueType # 4 - """4 words; up to 2^32-1 byte fields, 2^16-1 entry arrays""" - DS_8: _DescriptorSize.ValueType # 8 - """8 words; up to 2^32-1 entry arrays""" - -class DescriptorSize(_DescriptorSize, metaclass=_DescriptorSizeEnumTypeWrapper): ... - -DS_AUTO: DescriptorSize.ValueType # 0 -"""Select minimal size based on field type""" -DS_1: DescriptorSize.ValueType # 1 -"""1 word; up to 15 byte fields, no arrays""" -DS_2: DescriptorSize.ValueType # 2 -"""2 words; up to 4095 byte fields, 4095 entry arrays""" -DS_4: DescriptorSize.ValueType # 4 -"""4 words; up to 2^32-1 byte fields, 2^16-1 entry arrays""" -DS_8: DescriptorSize.ValueType # 8 -"""8 words; up to 2^32-1 entry arrays""" -global___DescriptorSize = DescriptorSize - -@typing_extensions.final -class NanoPBOptions(google.protobuf.message.Message): - """This is the inner options message, which basically defines options for - a field. When it is used in message or file scope, it applies to all - fields. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MAX_SIZE_FIELD_NUMBER: builtins.int - MAX_LENGTH_FIELD_NUMBER: builtins.int - MAX_COUNT_FIELD_NUMBER: builtins.int - INT_SIZE_FIELD_NUMBER: builtins.int - TYPE_FIELD_NUMBER: builtins.int - LONG_NAMES_FIELD_NUMBER: builtins.int - PACKED_STRUCT_FIELD_NUMBER: builtins.int - PACKED_ENUM_FIELD_NUMBER: builtins.int - SKIP_MESSAGE_FIELD_NUMBER: builtins.int - NO_UNIONS_FIELD_NUMBER: builtins.int - MSGID_FIELD_NUMBER: builtins.int - ANONYMOUS_ONEOF_FIELD_NUMBER: builtins.int - PROTO3_FIELD_NUMBER: builtins.int - PROTO3_SINGULAR_MSGS_FIELD_NUMBER: builtins.int - ENUM_TO_STRING_FIELD_NUMBER: builtins.int - FIXED_LENGTH_FIELD_NUMBER: builtins.int - FIXED_COUNT_FIELD_NUMBER: builtins.int - SUBMSG_CALLBACK_FIELD_NUMBER: builtins.int - MANGLE_NAMES_FIELD_NUMBER: builtins.int - CALLBACK_DATATYPE_FIELD_NUMBER: builtins.int - CALLBACK_FUNCTION_FIELD_NUMBER: builtins.int - DESCRIPTORSIZE_FIELD_NUMBER: builtins.int - DEFAULT_HAS_FIELD_NUMBER: builtins.int - INCLUDE_FIELD_NUMBER: builtins.int - EXCLUDE_FIELD_NUMBER: builtins.int - PACKAGE_FIELD_NUMBER: builtins.int - TYPE_OVERRIDE_FIELD_NUMBER: builtins.int - SORT_BY_TAG_FIELD_NUMBER: builtins.int - FALLBACK_TYPE_FIELD_NUMBER: builtins.int - max_size: builtins.int - """Allocated size for 'bytes' and 'string' fields. - For string fields, this should include the space for null terminator. - """ - max_length: builtins.int - """Maximum length for 'string' fields. Setting this is equivalent - to setting max_size to a value of length+1. - """ - max_count: builtins.int - """Allocated number of entries in arrays ('repeated' fields)""" - int_size: global___IntSize.ValueType - """Size of integer fields. Can save some memory if you don't need - full 32 bits for the value. - """ - type: global___FieldType.ValueType - """Force type of field (callback or static allocation)""" - long_names: builtins.bool - """Use long names for enums, i.e. EnumName_EnumValue.""" - packed_struct: builtins.bool - """Add 'packed' attribute to generated structs. - Note: this cannot be used on CPUs that break on unaligned - accesses to variables. - """ - packed_enum: builtins.bool - """Add 'packed' attribute to generated enums.""" - skip_message: builtins.bool - """Skip this message""" - no_unions: builtins.bool - """Generate oneof fields as normal optional fields instead of union.""" - msgid: builtins.int - """integer type tag for a message""" - anonymous_oneof: builtins.bool - """decode oneof as anonymous union""" - proto3: builtins.bool - """Proto3 singular field does not generate a "has_" flag""" - proto3_singular_msgs: builtins.bool - """Force proto3 messages to have no "has_" flag. - This was default behavior until nanopb-0.4.0. - """ - enum_to_string: builtins.bool - """Generate an enum->string mapping function (can take up lots of space).""" - fixed_length: builtins.bool - """Generate bytes arrays with fixed length""" - fixed_count: builtins.bool - """Generate repeated field with fixed count""" - submsg_callback: builtins.bool - """Generate message-level callback that is called before decoding submessages. - This can be used to set callback fields for submsgs inside oneofs. - """ - mangle_names: global___TypenameMangling.ValueType - """Shorten or remove package names from type names. - This option applies only on the file level. - """ - callback_datatype: builtins.str - """Data type for storage associated with callback fields.""" - callback_function: builtins.str - """Callback function used for encoding and decoding. - Prior to nanopb-0.4.0, the callback was specified in per-field pb_callback_t - structure. This is still supported, but does not work inside e.g. oneof or pointer - fields. Instead, a new method allows specifying a per-message callback that - will be called for all callback fields in a message type. - """ - descriptorsize: global___DescriptorSize.ValueType - """Select the size of field descriptors. This option has to be defined - for the whole message, not per-field. Usually automatic selection is - ok, but if it results in compilation errors you can increase the field - size here. - """ - default_has: builtins.bool - """Set default value for has_ fields.""" - @property - def include(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """Extra files to include in generated `.pb.h`""" - @property - def exclude(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """Automatic includes to exclude from generated `.pb.h` - Same as nanopb_generator.py command line flag -x. - """ - package: builtins.str - """Package name that applies only for nanopb.""" - type_override: google.protobuf.descriptor_pb2.FieldDescriptorProto.Type.ValueType - """Override type of the field in generated C code. Only to be used with related field types""" - sort_by_tag: builtins.bool - """Due to historical reasons, nanopb orders fields in structs by their tag number - instead of the order in .proto. Set this to false to keep the .proto order. - The default value will probably change to false in nanopb-0.5.0. - """ - fallback_type: global___FieldType.ValueType - """Set the FT_DEFAULT field conversion strategy. - A field that can become a static member of a c struct (e.g. int, bool, etc) - will be a a static field. - Fields with dynamic length are converted to either a pointer or a callback. - """ - def __init__( - self, - *, - max_size: builtins.int | None = ..., - max_length: builtins.int | None = ..., - max_count: builtins.int | None = ..., - int_size: global___IntSize.ValueType | None = ..., - type: global___FieldType.ValueType | None = ..., - long_names: builtins.bool | None = ..., - packed_struct: builtins.bool | None = ..., - packed_enum: builtins.bool | None = ..., - skip_message: builtins.bool | None = ..., - no_unions: builtins.bool | None = ..., - msgid: builtins.int | None = ..., - anonymous_oneof: builtins.bool | None = ..., - proto3: builtins.bool | None = ..., - proto3_singular_msgs: builtins.bool | None = ..., - enum_to_string: builtins.bool | None = ..., - fixed_length: builtins.bool | None = ..., - fixed_count: builtins.bool | None = ..., - submsg_callback: builtins.bool | None = ..., - mangle_names: global___TypenameMangling.ValueType | None = ..., - callback_datatype: builtins.str | None = ..., - callback_function: builtins.str | None = ..., - descriptorsize: global___DescriptorSize.ValueType | None = ..., - default_has: builtins.bool | None = ..., - include: collections.abc.Iterable[builtins.str] | None = ..., - exclude: collections.abc.Iterable[builtins.str] | None = ..., - package: builtins.str | None = ..., - type_override: google.protobuf.descriptor_pb2.FieldDescriptorProto.Type.ValueType | None = ..., - sort_by_tag: builtins.bool | None = ..., - fallback_type: global___FieldType.ValueType | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["anonymous_oneof", b"anonymous_oneof", "callback_datatype", b"callback_datatype", "callback_function", b"callback_function", "default_has", b"default_has", "descriptorsize", b"descriptorsize", "enum_to_string", b"enum_to_string", "fallback_type", b"fallback_type", "fixed_count", b"fixed_count", "fixed_length", b"fixed_length", "int_size", b"int_size", "long_names", b"long_names", "mangle_names", b"mangle_names", "max_count", b"max_count", "max_length", b"max_length", "max_size", b"max_size", "msgid", b"msgid", "no_unions", b"no_unions", "package", b"package", "packed_enum", b"packed_enum", "packed_struct", b"packed_struct", "proto3", b"proto3", "proto3_singular_msgs", b"proto3_singular_msgs", "skip_message", b"skip_message", "sort_by_tag", b"sort_by_tag", "submsg_callback", b"submsg_callback", "type", b"type", "type_override", b"type_override"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["anonymous_oneof", b"anonymous_oneof", "callback_datatype", b"callback_datatype", "callback_function", b"callback_function", "default_has", b"default_has", "descriptorsize", b"descriptorsize", "enum_to_string", b"enum_to_string", "exclude", b"exclude", "fallback_type", b"fallback_type", "fixed_count", b"fixed_count", "fixed_length", b"fixed_length", "include", b"include", "int_size", b"int_size", "long_names", b"long_names", "mangle_names", b"mangle_names", "max_count", b"max_count", "max_length", b"max_length", "max_size", b"max_size", "msgid", b"msgid", "no_unions", b"no_unions", "package", b"package", "packed_enum", b"packed_enum", "packed_struct", b"packed_struct", "proto3", b"proto3", "proto3_singular_msgs", b"proto3_singular_msgs", "skip_message", b"skip_message", "sort_by_tag", b"sort_by_tag", "submsg_callback", b"submsg_callback", "type", b"type", "type_override", b"type_override"]) -> None: ... - -global___NanoPBOptions = NanoPBOptions - -NANOPB_FILEOPT_FIELD_NUMBER: builtins.int -NANOPB_MSGOPT_FIELD_NUMBER: builtins.int -NANOPB_ENUMOPT_FIELD_NUMBER: builtins.int -NANOPB_FIELD_NUMBER: builtins.int -nanopb_fileopt: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FileOptions, global___NanoPBOptions] -nanopb_msgopt: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MessageOptions, global___NanoPBOptions] -nanopb_enumopt: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.EnumOptions, global___NanoPBOptions] -nanopb: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, global___NanoPBOptions] diff --git a/meshtastic/paxcount_pb2.py b/meshtastic/paxcount_pb2.py deleted file mode 100644 index 890258f..0000000 --- a/meshtastic/paxcount_pb2.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/paxcount.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19meshtastic/paxcount.proto\x12\nmeshtastic\"5\n\x08Paxcount\x12\x0c\n\x04wifi\x18\x01 \x01(\r\x12\x0b\n\x03\x62le\x18\x02 \x01(\r\x12\x0e\n\x06uptime\x18\x03 \x01(\rBc\n\x13\x63om.geeksville.meshB\x0ePaxcountProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.paxcount_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016PaxcountProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _PAXCOUNT._serialized_start=41 - _PAXCOUNT._serialized_end=94 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/paxcount_pb2.pyi b/meshtastic/paxcount_pb2.pyi deleted file mode 100644 index f4377a1..0000000 --- a/meshtastic/paxcount_pb2.pyi +++ /dev/null @@ -1,49 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class Paxcount(google.protobuf.message.Message): - """ - TODO: REPLACE - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - WIFI_FIELD_NUMBER: builtins.int - BLE_FIELD_NUMBER: builtins.int - UPTIME_FIELD_NUMBER: builtins.int - wifi: builtins.int - """ - seen Wifi devices - """ - ble: builtins.int - """ - Seen BLE devices - """ - uptime: builtins.int - """ - Uptime in seconds - """ - def __init__( - self, - *, - wifi: builtins.int = ..., - ble: builtins.int = ..., - uptime: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ble", b"ble", "uptime", b"uptime", "wifi", b"wifi"]) -> None: ... - -global___Paxcount = Paxcount diff --git a/meshtastic/portnums_pb2.py b/meshtastic/portnums_pb2.py deleted file mode 100644 index 77b164a..0000000 --- a/meshtastic/portnums_pb2.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/portnums.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19meshtastic/portnums.proto\x12\nmeshtastic*\x8d\x04\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\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_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\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\x13\x63om.geeksville.meshB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.portnums_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _PORTNUM._serialized_start=42 - _PORTNUM._serialized_end=567 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/portnums_pb2.pyi b/meshtastic/portnums_pb2.pyi deleted file mode 100644 index a546cfa..0000000 --- a/meshtastic/portnums_pb2.pyi +++ /dev/null @@ -1,369 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import sys -import typing - -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -class _PortNum: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _PortNumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PortNum.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNKNOWN_APP: _PortNum.ValueType # 0 - """ - Deprecated: do not use in new code (formerly called OPAQUE) - A message sent from a device outside of the mesh, in a form the mesh does not understand - NOTE: This must be 0, because it is documented in IMeshService.aidl to be so - ENCODING: binary undefined - """ - TEXT_MESSAGE_APP: _PortNum.ValueType # 1 - """ - A simple UTF-8 text message, which even the little micros in the mesh - can understand and show on their screen eventually in some circumstances - even signal might send messages in this form (see below) - ENCODING: UTF-8 Plaintext (?) - """ - REMOTE_HARDWARE_APP: _PortNum.ValueType # 2 - """ - Reserved for built-in GPIO/example app. - See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number - ENCODING: Protobuf - """ - POSITION_APP: _PortNum.ValueType # 3 - """ - The built-in position messaging app. - Payload is a Position message. - ENCODING: Protobuf - """ - NODEINFO_APP: _PortNum.ValueType # 4 - """ - The built-in user info app. - Payload is a User message. - ENCODING: Protobuf - """ - ROUTING_APP: _PortNum.ValueType # 5 - """ - Protocol control packets for mesh protocol use. - Payload is a Routing message. - ENCODING: Protobuf - """ - ADMIN_APP: _PortNum.ValueType # 6 - """ - Admin control packets. - Payload is a AdminMessage message. - ENCODING: Protobuf - """ - TEXT_MESSAGE_COMPRESSED_APP: _PortNum.ValueType # 7 - """ - Compressed TEXT_MESSAGE payloads. - ENCODING: UTF-8 Plaintext (?) with Unishox2 Compression - NOTE: The Device Firmware converts a TEXT_MESSAGE_APP to TEXT_MESSAGE_COMPRESSED_APP if the compressed - payload is shorter. There's no need for app developers to do this themselves. Also the firmware will decompress - any incoming TEXT_MESSAGE_COMPRESSED_APP payload and convert to TEXT_MESSAGE_APP. - """ - WAYPOINT_APP: _PortNum.ValueType # 8 - """ - Waypoint payloads. - Payload is a Waypoint message. - ENCODING: Protobuf - """ - AUDIO_APP: _PortNum.ValueType # 9 - """ - Audio Payloads. - Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now - ENCODING: codec2 audio frames - NOTE: audio frames contain a 3 byte header (0xc0 0xde 0xc2) and a one byte marker for the decompressed bitrate. - This marker comes from the 'moduleConfig.audio.bitrate' enum minus one. - """ - DETECTION_SENSOR_APP: _PortNum.ValueType # 10 - """ - Same as Text Message but originating from Detection Sensor Module. - NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 - """ - REPLY_APP: _PortNum.ValueType # 32 - """ - Provides a 'ping' service that replies to any packet it receives. - Also serves as a small example module. - ENCODING: ASCII Plaintext - """ - IP_TUNNEL_APP: _PortNum.ValueType # 33 - """ - Used for the python IP tunnel feature - ENCODING: IP Packet. Handled by the python API, firmware ignores this one and pases on. - """ - PAXCOUNTER_APP: _PortNum.ValueType # 34 - """ - Paxcounter lib included in the firmware - ENCODING: protobuf - """ - SERIAL_APP: _PortNum.ValueType # 64 - """ - Provides a hardware serial interface to send and receive from the Meshtastic network. - Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic - network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. - Maximum packet size of 240 bytes. - Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. - ENCODING: binary undefined - """ - STORE_FORWARD_APP: _PortNum.ValueType # 65 - """ - STORE_FORWARD_APP (Work in Progress) - Maintained by Jm Casler (MC Hamster) : jm@casler.org - ENCODING: Protobuf - """ - RANGE_TEST_APP: _PortNum.ValueType # 66 - """ - Optional port for messages for the range test module. - ENCODING: ASCII Plaintext - NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 - """ - TELEMETRY_APP: _PortNum.ValueType # 67 - """ - Provides a format to send and receive telemetry data from the Meshtastic network. - Maintained by Charles Crossan (crossan007) : crossan007@gmail.com - ENCODING: Protobuf - """ - ZPS_APP: _PortNum.ValueType # 68 - """ - Experimental tools for estimating node position without a GPS - Maintained by Github user a-f-G-U-C (a Meshtastic contributor) - Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS - ENCODING: arrays of int64 fields - """ - SIMULATOR_APP: _PortNum.ValueType # 69 - """ - Used to let multiple instances of Linux native applications communicate - as if they did using their LoRa chip. - Maintained by GitHub user GUVWAF. - Project files at https://github.com/GUVWAF/Meshtasticator - ENCODING: Protobuf (?) - """ - TRACEROUTE_APP: _PortNum.ValueType # 70 - """ - Provides a traceroute functionality to show the route a packet towards - a certain destination would take on the mesh. - ENCODING: Protobuf - """ - NEIGHBORINFO_APP: _PortNum.ValueType # 71 - """ - Aggregates edge info for the network by sending out a list of each node's neighbors - ENCODING: Protobuf - """ - ATAK_PLUGIN: _PortNum.ValueType # 72 - """ - ATAK Plugin - Portnum for payloads from the official Meshtastic ATAK plugin - """ - MAP_REPORT_APP: _PortNum.ValueType # 73 - """ - Provides unencrypted information about a node for consumption by a map via MQTT - """ - PRIVATE_APP: _PortNum.ValueType # 256 - """ - Private applications should use portnums >= 256. - To simplify initial development and testing you can use "PRIVATE_APP" - in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) - """ - ATAK_FORWARDER: _PortNum.ValueType # 257 - """ - ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder - ENCODING: libcotshrink - """ - MAX: _PortNum.ValueType # 511 - """ - Currently we limit port nums to no higher than this value - """ - -class PortNum(_PortNum, metaclass=_PortNumEnumTypeWrapper): - """ - For any new 'apps' that run on the device or via sister apps on phones/PCs they should pick and use a - unique 'portnum' for their application. - If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to this - master table. - PortNums should be assigned in the following range: - 0-63 Core Meshtastic use, do not use for third party apps - 64-127 Registered 3rd party apps, send in a pull request that adds a new entry to portnums.proto to register your application - 256-511 Use one of these portnums for your private applications that you don't want to register publically - All other values are reserved. - Note: This was formerly a Type enum named 'typ' with the same id # - We have change to this 'portnum' based scheme for specifying app handlers for particular payloads. - This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically. - """ - -UNKNOWN_APP: PortNum.ValueType # 0 -""" -Deprecated: do not use in new code (formerly called OPAQUE) -A message sent from a device outside of the mesh, in a form the mesh does not understand -NOTE: This must be 0, because it is documented in IMeshService.aidl to be so -ENCODING: binary undefined -""" -TEXT_MESSAGE_APP: PortNum.ValueType # 1 -""" -A simple UTF-8 text message, which even the little micros in the mesh -can understand and show on their screen eventually in some circumstances -even signal might send messages in this form (see below) -ENCODING: UTF-8 Plaintext (?) -""" -REMOTE_HARDWARE_APP: PortNum.ValueType # 2 -""" -Reserved for built-in GPIO/example app. -See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number -ENCODING: Protobuf -""" -POSITION_APP: PortNum.ValueType # 3 -""" -The built-in position messaging app. -Payload is a Position message. -ENCODING: Protobuf -""" -NODEINFO_APP: PortNum.ValueType # 4 -""" -The built-in user info app. -Payload is a User message. -ENCODING: Protobuf -""" -ROUTING_APP: PortNum.ValueType # 5 -""" -Protocol control packets for mesh protocol use. -Payload is a Routing message. -ENCODING: Protobuf -""" -ADMIN_APP: PortNum.ValueType # 6 -""" -Admin control packets. -Payload is a AdminMessage message. -ENCODING: Protobuf -""" -TEXT_MESSAGE_COMPRESSED_APP: PortNum.ValueType # 7 -""" -Compressed TEXT_MESSAGE payloads. -ENCODING: UTF-8 Plaintext (?) with Unishox2 Compression -NOTE: The Device Firmware converts a TEXT_MESSAGE_APP to TEXT_MESSAGE_COMPRESSED_APP if the compressed -payload is shorter. There's no need for app developers to do this themselves. Also the firmware will decompress -any incoming TEXT_MESSAGE_COMPRESSED_APP payload and convert to TEXT_MESSAGE_APP. -""" -WAYPOINT_APP: PortNum.ValueType # 8 -""" -Waypoint payloads. -Payload is a Waypoint message. -ENCODING: Protobuf -""" -AUDIO_APP: PortNum.ValueType # 9 -""" -Audio Payloads. -Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now -ENCODING: codec2 audio frames -NOTE: audio frames contain a 3 byte header (0xc0 0xde 0xc2) and a one byte marker for the decompressed bitrate. -This marker comes from the 'moduleConfig.audio.bitrate' enum minus one. -""" -DETECTION_SENSOR_APP: PortNum.ValueType # 10 -""" -Same as Text Message but originating from Detection Sensor Module. -NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 -""" -REPLY_APP: PortNum.ValueType # 32 -""" -Provides a 'ping' service that replies to any packet it receives. -Also serves as a small example module. -ENCODING: ASCII Plaintext -""" -IP_TUNNEL_APP: PortNum.ValueType # 33 -""" -Used for the python IP tunnel feature -ENCODING: IP Packet. Handled by the python API, firmware ignores this one and pases on. -""" -PAXCOUNTER_APP: PortNum.ValueType # 34 -""" -Paxcounter lib included in the firmware -ENCODING: protobuf -""" -SERIAL_APP: PortNum.ValueType # 64 -""" -Provides a hardware serial interface to send and receive from the Meshtastic network. -Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic -network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. -Maximum packet size of 240 bytes. -Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. -ENCODING: binary undefined -""" -STORE_FORWARD_APP: PortNum.ValueType # 65 -""" -STORE_FORWARD_APP (Work in Progress) -Maintained by Jm Casler (MC Hamster) : jm@casler.org -ENCODING: Protobuf -""" -RANGE_TEST_APP: PortNum.ValueType # 66 -""" -Optional port for messages for the range test module. -ENCODING: ASCII Plaintext -NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 -""" -TELEMETRY_APP: PortNum.ValueType # 67 -""" -Provides a format to send and receive telemetry data from the Meshtastic network. -Maintained by Charles Crossan (crossan007) : crossan007@gmail.com -ENCODING: Protobuf -""" -ZPS_APP: PortNum.ValueType # 68 -""" -Experimental tools for estimating node position without a GPS -Maintained by Github user a-f-G-U-C (a Meshtastic contributor) -Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS -ENCODING: arrays of int64 fields -""" -SIMULATOR_APP: PortNum.ValueType # 69 -""" -Used to let multiple instances of Linux native applications communicate -as if they did using their LoRa chip. -Maintained by GitHub user GUVWAF. -Project files at https://github.com/GUVWAF/Meshtasticator -ENCODING: Protobuf (?) -""" -TRACEROUTE_APP: PortNum.ValueType # 70 -""" -Provides a traceroute functionality to show the route a packet towards -a certain destination would take on the mesh. -ENCODING: Protobuf -""" -NEIGHBORINFO_APP: PortNum.ValueType # 71 -""" -Aggregates edge info for the network by sending out a list of each node's neighbors -ENCODING: Protobuf -""" -ATAK_PLUGIN: PortNum.ValueType # 72 -""" -ATAK Plugin -Portnum for payloads from the official Meshtastic ATAK plugin -""" -MAP_REPORT_APP: PortNum.ValueType # 73 -""" -Provides unencrypted information about a node for consumption by a map via MQTT -""" -PRIVATE_APP: PortNum.ValueType # 256 -""" -Private applications should use portnums >= 256. -To simplify initial development and testing you can use "PRIVATE_APP" -in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) -""" -ATAK_FORWARDER: PortNum.ValueType # 257 -""" -ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder -ENCODING: libcotshrink -""" -MAX: PortNum.ValueType # 511 -""" -Currently we limit port nums to no higher than this value -""" -global___PortNum = PortNum diff --git a/meshtastic/remote_hardware_pb2.py b/meshtastic/remote_hardware_pb2.py deleted file mode 100644 index c1365ff..0000000 --- a/meshtastic/remote_hardware_pb2.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/remote_hardware.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/remote_hardware.proto\x12\nmeshtastic\"\xd6\x01\n\x0fHardwareMessage\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .meshtastic.HardwareMessage.Type\x12\x11\n\tgpio_mask\x18\x02 \x01(\x04\x12\x12\n\ngpio_value\x18\x03 \x01(\x04\"l\n\x04Type\x12\t\n\x05UNSET\x10\x00\x12\x0f\n\x0bWRITE_GPIOS\x10\x01\x12\x0f\n\x0bWATCH_GPIOS\x10\x02\x12\x11\n\rGPIOS_CHANGED\x10\x03\x12\x0e\n\nREAD_GPIOS\x10\x04\x12\x14\n\x10READ_GPIOS_REPLY\x10\x05\x42\x63\n\x13\x63om.geeksville.meshB\x0eRemoteHardwareZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.remote_hardware_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016RemoteHardwareZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _HARDWAREMESSAGE._serialized_start=49 - _HARDWAREMESSAGE._serialized_end=263 - _HARDWAREMESSAGE_TYPE._serialized_start=155 - _HARDWAREMESSAGE_TYPE._serialized_end=263 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/remote_hardware_pb2.pyi b/meshtastic/remote_hardware_pb2.pyi deleted file mode 100644 index ff4fd83..0000000 --- a/meshtastic/remote_hardware_pb2.pyi +++ /dev/null @@ -1,125 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -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 HardwareMessage(google.protobuf.message.Message): - """ - An example app to show off the module system. This message is used for - REMOTE_HARDWARE_APP PortNums. - Also provides easy remote access to any GPIO. - In the future other remote hardware operations can be added based on user interest - (i.e. serial output, spi/i2c input/output). - FIXME - currently this feature is turned on by default which is dangerous - because no security yet (beyond the channel mechanism). - It should be off by default and then protected based on some TBD mechanism - (a special channel once multichannel support is included?) - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Type: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[HardwareMessage._Type.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: HardwareMessage._Type.ValueType # 0 - """ - Unset/unused - """ - WRITE_GPIOS: HardwareMessage._Type.ValueType # 1 - """ - Set gpio gpios based on gpio_mask/gpio_value - """ - WATCH_GPIOS: HardwareMessage._Type.ValueType # 2 - """ - We are now interested in watching the gpio_mask gpios. - If the selected gpios change, please broadcast GPIOS_CHANGED. - Will implicitly change the gpios requested to be INPUT gpios. - """ - GPIOS_CHANGED: HardwareMessage._Type.ValueType # 3 - """ - The gpios listed in gpio_mask have changed, the new values are listed in gpio_value - """ - READ_GPIOS: HardwareMessage._Type.ValueType # 4 - """ - Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated - """ - READ_GPIOS_REPLY: HardwareMessage._Type.ValueType # 5 - """ - A reply to READ_GPIOS. gpio_mask and gpio_value will be populated - """ - - class Type(_Type, metaclass=_TypeEnumTypeWrapper): - """ - TODO: REPLACE - """ - - UNSET: HardwareMessage.Type.ValueType # 0 - """ - Unset/unused - """ - WRITE_GPIOS: HardwareMessage.Type.ValueType # 1 - """ - Set gpio gpios based on gpio_mask/gpio_value - """ - WATCH_GPIOS: HardwareMessage.Type.ValueType # 2 - """ - We are now interested in watching the gpio_mask gpios. - If the selected gpios change, please broadcast GPIOS_CHANGED. - Will implicitly change the gpios requested to be INPUT gpios. - """ - GPIOS_CHANGED: HardwareMessage.Type.ValueType # 3 - """ - The gpios listed in gpio_mask have changed, the new values are listed in gpio_value - """ - READ_GPIOS: HardwareMessage.Type.ValueType # 4 - """ - Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated - """ - READ_GPIOS_REPLY: HardwareMessage.Type.ValueType # 5 - """ - A reply to READ_GPIOS. gpio_mask and gpio_value will be populated - """ - - TYPE_FIELD_NUMBER: builtins.int - GPIO_MASK_FIELD_NUMBER: builtins.int - GPIO_VALUE_FIELD_NUMBER: builtins.int - type: global___HardwareMessage.Type.ValueType - """ - What type of HardwareMessage is this? - """ - gpio_mask: builtins.int - """ - What gpios are we changing. Not used for all MessageTypes, see MessageType for details - """ - gpio_value: builtins.int - """ - For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios. - Not used for all MessageTypes, see MessageType for details - """ - def __init__( - self, - *, - type: global___HardwareMessage.Type.ValueType = ..., - gpio_mask: builtins.int = ..., - gpio_value: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["gpio_mask", b"gpio_mask", "gpio_value", b"gpio_value", "type", b"type"]) -> None: ... - -global___HardwareMessage = HardwareMessage diff --git a/meshtastic/rtttl_pb2.py b/meshtastic/rtttl_pb2.py deleted file mode 100644 index a69b868..0000000 --- a/meshtastic/rtttl_pb2.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/rtttl.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16meshtastic/rtttl.proto\x12\nmeshtastic\"\x1f\n\x0bRTTTLConfig\x12\x10\n\x08ringtone\x18\x01 \x01(\tBf\n\x13\x63om.geeksville.meshB\x11RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.rtttl_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\021RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _RTTTLCONFIG._serialized_start=38 - _RTTTLCONFIG._serialized_end=69 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/rtttl_pb2.pyi b/meshtastic/rtttl_pb2.pyi deleted file mode 100644 index ddf8591..0000000 --- a/meshtastic/rtttl_pb2.pyi +++ /dev/null @@ -1,37 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import sys - -if sys.version_info >= (3, 8): - import typing as typing_extensions -else: - import typing_extensions - -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing_extensions.final -class RTTTLConfig(google.protobuf.message.Message): - """ - Canned message module configuration. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - RINGTONE_FIELD_NUMBER: builtins.int - ringtone: builtins.str - """ - Ringtone for PWM Buzzer in RTTTL Format. - """ - def __init__( - self, - *, - ringtone: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ringtone", b"ringtone"]) -> None: ... - -global___RTTTLConfig = RTTTLConfig diff --git a/meshtastic/storeforward_pb2.py b/meshtastic/storeforward_pb2.py deleted file mode 100644 index b81fd73..0000000 --- a/meshtastic/storeforward_pb2.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/storeforward.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dmeshtastic/storeforward.proto\x12\nmeshtastic\"\x9c\x07\n\x0fStoreAndForward\x12\x37\n\x02rr\x18\x01 \x01(\x0e\x32+.meshtastic.StoreAndForward.RequestResponse\x12\x37\n\x05stats\x18\x02 \x01(\x0b\x32&.meshtastic.StoreAndForward.StatisticsH\x00\x12\x36\n\x07history\x18\x03 \x01(\x0b\x32#.meshtastic.StoreAndForward.HistoryH\x00\x12:\n\theartbeat\x18\x04 \x01(\x0b\x32%.meshtastic.StoreAndForward.HeartbeatH\x00\x12\x0e\n\x04text\x18\x05 \x01(\x0cH\x00\x1a\xcd\x01\n\nStatistics\x12\x16\n\x0emessages_total\x18\x01 \x01(\r\x12\x16\n\x0emessages_saved\x18\x02 \x01(\r\x12\x14\n\x0cmessages_max\x18\x03 \x01(\r\x12\x0f\n\x07up_time\x18\x04 \x01(\r\x12\x10\n\x08requests\x18\x05 \x01(\r\x12\x18\n\x10requests_history\x18\x06 \x01(\r\x12\x11\n\theartbeat\x18\x07 \x01(\x08\x12\x12\n\nreturn_max\x18\x08 \x01(\r\x12\x15\n\rreturn_window\x18\t \x01(\r\x1aI\n\x07History\x12\x18\n\x10history_messages\x18\x01 \x01(\r\x12\x0e\n\x06window\x18\x02 \x01(\r\x12\x14\n\x0clast_request\x18\x03 \x01(\r\x1a.\n\tHeartbeat\x12\x0e\n\x06period\x18\x01 \x01(\r\x12\x11\n\tsecondary\x18\x02 \x01(\r\"\xbc\x02\n\x0fRequestResponse\x12\t\n\x05UNSET\x10\x00\x12\x10\n\x0cROUTER_ERROR\x10\x01\x12\x14\n\x10ROUTER_HEARTBEAT\x10\x02\x12\x0f\n\x0bROUTER_PING\x10\x03\x12\x0f\n\x0bROUTER_PONG\x10\x04\x12\x0f\n\x0bROUTER_BUSY\x10\x05\x12\x12\n\x0eROUTER_HISTORY\x10\x06\x12\x10\n\x0cROUTER_STATS\x10\x07\x12\x16\n\x12ROUTER_TEXT_DIRECT\x10\x08\x12\x19\n\x15ROUTER_TEXT_BROADCAST\x10\t\x12\x10\n\x0c\x43LIENT_ERROR\x10@\x12\x12\n\x0e\x43LIENT_HISTORY\x10\x41\x12\x10\n\x0c\x43LIENT_STATS\x10\x42\x12\x0f\n\x0b\x43LIENT_PING\x10\x43\x12\x0f\n\x0b\x43LIENT_PONG\x10\x44\x12\x10\n\x0c\x43LIENT_ABORT\x10jB\t\n\x07variantBj\n\x13\x63om.geeksville.meshB\x15StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.storeforward_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\025StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _STOREANDFORWARD._serialized_start=46 - _STOREANDFORWARD._serialized_end=970 - _STOREANDFORWARD_STATISTICS._serialized_start=312 - _STOREANDFORWARD_STATISTICS._serialized_end=517 - _STOREANDFORWARD_HISTORY._serialized_start=519 - _STOREANDFORWARD_HISTORY._serialized_end=592 - _STOREANDFORWARD_HEARTBEAT._serialized_start=594 - _STOREANDFORWARD_HEARTBEAT._serialized_end=640 - _STOREANDFORWARD_REQUESTRESPONSE._serialized_start=643 - _STOREANDFORWARD_REQUESTRESPONSE._serialized_end=959 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/storeforward_pb2.pyi b/meshtastic/storeforward_pb2.pyi deleted file mode 100644 index cd2d751..0000000 --- a/meshtastic/storeforward_pb2.pyi +++ /dev/null @@ -1,341 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -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 StoreAndForward(google.protobuf.message.Message): - """ - TODO: REPLACE - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _RequestResponse: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _RequestResponseEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[StoreAndForward._RequestResponse.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: StoreAndForward._RequestResponse.ValueType # 0 - """ - Unset/unused - """ - ROUTER_ERROR: StoreAndForward._RequestResponse.ValueType # 1 - """ - Router is an in error state. - """ - ROUTER_HEARTBEAT: StoreAndForward._RequestResponse.ValueType # 2 - """ - Router heartbeat - """ - ROUTER_PING: StoreAndForward._RequestResponse.ValueType # 3 - """ - Router has requested the client respond. This can work as a - "are you there" message. - """ - ROUTER_PONG: StoreAndForward._RequestResponse.ValueType # 4 - """ - The response to a "Ping" - """ - ROUTER_BUSY: StoreAndForward._RequestResponse.ValueType # 5 - """ - Router is currently busy. Please try again later. - """ - ROUTER_HISTORY: StoreAndForward._RequestResponse.ValueType # 6 - """ - Router is responding to a request for history. - """ - ROUTER_STATS: StoreAndForward._RequestResponse.ValueType # 7 - """ - Router is responding to a request for stats. - """ - ROUTER_TEXT_DIRECT: StoreAndForward._RequestResponse.ValueType # 8 - """ - Router sends a text message from its history that was a direct message. - """ - ROUTER_TEXT_BROADCAST: StoreAndForward._RequestResponse.ValueType # 9 - """ - Router sends a text message from its history that was a broadcast. - """ - CLIENT_ERROR: StoreAndForward._RequestResponse.ValueType # 64 - """ - Client is an in error state. - """ - CLIENT_HISTORY: StoreAndForward._RequestResponse.ValueType # 65 - """ - Client has requested a replay from the router. - """ - CLIENT_STATS: StoreAndForward._RequestResponse.ValueType # 66 - """ - Client has requested stats from the router. - """ - CLIENT_PING: StoreAndForward._RequestResponse.ValueType # 67 - """ - Client has requested the router respond. This can work as a - "are you there" message. - """ - CLIENT_PONG: StoreAndForward._RequestResponse.ValueType # 68 - """ - The response to a "Ping" - """ - CLIENT_ABORT: StoreAndForward._RequestResponse.ValueType # 106 - """ - Client has requested that the router abort processing the client's request - """ - - class RequestResponse(_RequestResponse, metaclass=_RequestResponseEnumTypeWrapper): - """ - 001 - 063 = From Router - 064 - 127 = From Client - """ - - UNSET: StoreAndForward.RequestResponse.ValueType # 0 - """ - Unset/unused - """ - ROUTER_ERROR: StoreAndForward.RequestResponse.ValueType # 1 - """ - Router is an in error state. - """ - ROUTER_HEARTBEAT: StoreAndForward.RequestResponse.ValueType # 2 - """ - Router heartbeat - """ - ROUTER_PING: StoreAndForward.RequestResponse.ValueType # 3 - """ - Router has requested the client respond. This can work as a - "are you there" message. - """ - ROUTER_PONG: StoreAndForward.RequestResponse.ValueType # 4 - """ - The response to a "Ping" - """ - ROUTER_BUSY: StoreAndForward.RequestResponse.ValueType # 5 - """ - Router is currently busy. Please try again later. - """ - ROUTER_HISTORY: StoreAndForward.RequestResponse.ValueType # 6 - """ - Router is responding to a request for history. - """ - ROUTER_STATS: StoreAndForward.RequestResponse.ValueType # 7 - """ - Router is responding to a request for stats. - """ - ROUTER_TEXT_DIRECT: StoreAndForward.RequestResponse.ValueType # 8 - """ - Router sends a text message from its history that was a direct message. - """ - ROUTER_TEXT_BROADCAST: StoreAndForward.RequestResponse.ValueType # 9 - """ - Router sends a text message from its history that was a broadcast. - """ - CLIENT_ERROR: StoreAndForward.RequestResponse.ValueType # 64 - """ - Client is an in error state. - """ - CLIENT_HISTORY: StoreAndForward.RequestResponse.ValueType # 65 - """ - Client has requested a replay from the router. - """ - CLIENT_STATS: StoreAndForward.RequestResponse.ValueType # 66 - """ - Client has requested stats from the router. - """ - CLIENT_PING: StoreAndForward.RequestResponse.ValueType # 67 - """ - Client has requested the router respond. This can work as a - "are you there" message. - """ - CLIENT_PONG: StoreAndForward.RequestResponse.ValueType # 68 - """ - The response to a "Ping" - """ - CLIENT_ABORT: StoreAndForward.RequestResponse.ValueType # 106 - """ - Client has requested that the router abort processing the client's request - """ - - @typing_extensions.final - class Statistics(google.protobuf.message.Message): - """ - TODO: REPLACE - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - MESSAGES_TOTAL_FIELD_NUMBER: builtins.int - MESSAGES_SAVED_FIELD_NUMBER: builtins.int - MESSAGES_MAX_FIELD_NUMBER: builtins.int - UP_TIME_FIELD_NUMBER: builtins.int - REQUESTS_FIELD_NUMBER: builtins.int - REQUESTS_HISTORY_FIELD_NUMBER: builtins.int - HEARTBEAT_FIELD_NUMBER: builtins.int - RETURN_MAX_FIELD_NUMBER: builtins.int - RETURN_WINDOW_FIELD_NUMBER: builtins.int - messages_total: builtins.int - """ - Number of messages we have ever seen - """ - messages_saved: builtins.int - """ - Number of messages we have currently saved our history. - """ - messages_max: builtins.int - """ - Maximum number of messages we will save - """ - up_time: builtins.int - """ - Router uptime in seconds - """ - requests: builtins.int - """ - Number of times any client sent a request to the S&F. - """ - requests_history: builtins.int - """ - Number of times the history was requested. - """ - heartbeat: builtins.bool - """ - Is the heartbeat enabled on the server? - """ - return_max: builtins.int - """ - Maximum number of messages the server will return. - """ - return_window: builtins.int - """ - Maximum history window in minutes the server will return messages from. - """ - def __init__( - self, - *, - messages_total: builtins.int = ..., - messages_saved: builtins.int = ..., - messages_max: builtins.int = ..., - up_time: builtins.int = ..., - requests: builtins.int = ..., - requests_history: builtins.int = ..., - heartbeat: builtins.bool = ..., - return_max: builtins.int = ..., - return_window: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["heartbeat", b"heartbeat", "messages_max", b"messages_max", "messages_saved", b"messages_saved", "messages_total", b"messages_total", "requests", b"requests", "requests_history", b"requests_history", "return_max", b"return_max", "return_window", b"return_window", "up_time", b"up_time"]) -> None: ... - - @typing_extensions.final - class History(google.protobuf.message.Message): - """ - TODO: REPLACE - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - HISTORY_MESSAGES_FIELD_NUMBER: builtins.int - WINDOW_FIELD_NUMBER: builtins.int - LAST_REQUEST_FIELD_NUMBER: builtins.int - history_messages: builtins.int - """ - Number of that will be sent to the client - """ - window: builtins.int - """ - The window of messages that was used to filter the history client requested - """ - last_request: builtins.int - """ - Index in the packet history of the last message sent in a previous request to the server. - Will be sent to the client before sending the history and can be set in a subsequent request to avoid getting packets the server already sent to the client. - """ - def __init__( - self, - *, - history_messages: builtins.int = ..., - window: builtins.int = ..., - last_request: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["history_messages", b"history_messages", "last_request", b"last_request", "window", b"window"]) -> None: ... - - @typing_extensions.final - class Heartbeat(google.protobuf.message.Message): - """ - TODO: REPLACE - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PERIOD_FIELD_NUMBER: builtins.int - SECONDARY_FIELD_NUMBER: builtins.int - period: builtins.int - """ - Period in seconds that the heartbeat is sent out that will be sent to the client - """ - secondary: builtins.int - """ - If set, this is not the primary Store & Forward router on the mesh - """ - def __init__( - self, - *, - period: builtins.int = ..., - secondary: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["period", b"period", "secondary", b"secondary"]) -> None: ... - - RR_FIELD_NUMBER: builtins.int - STATS_FIELD_NUMBER: builtins.int - HISTORY_FIELD_NUMBER: builtins.int - HEARTBEAT_FIELD_NUMBER: builtins.int - TEXT_FIELD_NUMBER: builtins.int - rr: global___StoreAndForward.RequestResponse.ValueType - """ - TODO: REPLACE - """ - @property - def stats(self) -> global___StoreAndForward.Statistics: - """ - TODO: REPLACE - """ - @property - def history(self) -> global___StoreAndForward.History: - """ - TODO: REPLACE - """ - @property - def heartbeat(self) -> global___StoreAndForward.Heartbeat: - """ - TODO: REPLACE - """ - text: builtins.bytes - """ - Text from history message. - """ - def __init__( - self, - *, - rr: global___StoreAndForward.RequestResponse.ValueType = ..., - stats: global___StoreAndForward.Statistics | None = ..., - history: global___StoreAndForward.History | None = ..., - heartbeat: global___StoreAndForward.Heartbeat | None = ..., - text: builtins.bytes = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["heartbeat", b"heartbeat", "history", b"history", "stats", b"stats", "text", b"text", "variant", b"variant"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["heartbeat", b"heartbeat", "history", b"history", "rr", b"rr", "stats", b"stats", "text", b"text", "variant", b"variant"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["variant", b"variant"]) -> typing_extensions.Literal["stats", "history", "heartbeat", "text"] | None: ... - -global___StoreAndForward = StoreAndForward diff --git a/meshtastic/telemetry_pb2.py b/meshtastic/telemetry_pb2.py deleted file mode 100644 index b3c16e8..0000000 --- a/meshtastic/telemetry_pb2.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/telemetry.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ameshtastic/telemetry.proto\x12\nmeshtastic\"\x81\x01\n\rDeviceMetrics\x12\x15\n\rbattery_level\x18\x01 \x01(\r\x12\x0f\n\x07voltage\x18\x02 \x01(\x02\x12\x1b\n\x13\x63hannel_utilization\x18\x03 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02\x12\x16\n\x0euptime_seconds\x18\x05 \x01(\r\"\xa6\x02\n\x12\x45nvironmentMetrics\x12\x13\n\x0btemperature\x18\x01 \x01(\x02\x12\x19\n\x11relative_humidity\x18\x02 \x01(\x02\x12\x1b\n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02\x12\x16\n\x0egas_resistance\x18\x04 \x01(\x02\x12\x0f\n\x07voltage\x18\x05 \x01(\x02\x12\x0f\n\x07\x63urrent\x18\x06 \x01(\x02\x12\x0b\n\x03iaq\x18\x07 \x01(\r\x12\x10\n\x08\x64istance\x18\x08 \x01(\x02\x12\x0b\n\x03lux\x18\t \x01(\x02\x12\x11\n\twhite_lux\x18\n \x01(\x02\x12\x0e\n\x06ir_lux\x18\x0b \x01(\x02\x12\x0e\n\x06uv_lux\x18\x0c \x01(\x02\x12\x16\n\x0ewind_direction\x18\r \x01(\r\x12\x12\n\nwind_speed\x18\x0e \x01(\x02\"\x8c\x01\n\x0cPowerMetrics\x12\x13\n\x0b\x63h1_voltage\x18\x01 \x01(\x02\x12\x13\n\x0b\x63h1_current\x18\x02 \x01(\x02\x12\x13\n\x0b\x63h2_voltage\x18\x03 \x01(\x02\x12\x13\n\x0b\x63h2_current\x18\x04 \x01(\x02\x12\x13\n\x0b\x63h3_voltage\x18\x05 \x01(\x02\x12\x13\n\x0b\x63h3_current\x18\x06 \x01(\x02\"\xbf\x02\n\x11\x41irQualityMetrics\x12\x15\n\rpm10_standard\x18\x01 \x01(\r\x12\x15\n\rpm25_standard\x18\x02 \x01(\r\x12\x16\n\x0epm100_standard\x18\x03 \x01(\r\x12\x1a\n\x12pm10_environmental\x18\x04 \x01(\r\x12\x1a\n\x12pm25_environmental\x18\x05 \x01(\r\x12\x1b\n\x13pm100_environmental\x18\x06 \x01(\r\x12\x16\n\x0eparticles_03um\x18\x07 \x01(\r\x12\x16\n\x0eparticles_05um\x18\x08 \x01(\r\x12\x16\n\x0eparticles_10um\x18\t \x01(\r\x12\x16\n\x0eparticles_25um\x18\n \x01(\r\x12\x16\n\x0eparticles_50um\x18\x0b \x01(\r\x12\x17\n\x0fparticles_100um\x18\x0c \x01(\r\"\x89\x02\n\tTelemetry\x12\x0c\n\x04time\x18\x01 \x01(\x07\x12\x33\n\x0e\x64\x65vice_metrics\x18\x02 \x01(\x0b\x32\x19.meshtastic.DeviceMetricsH\x00\x12=\n\x13\x65nvironment_metrics\x18\x03 \x01(\x0b\x32\x1e.meshtastic.EnvironmentMetricsH\x00\x12<\n\x13\x61ir_quality_metrics\x18\x04 \x01(\x0b\x32\x1d.meshtastic.AirQualityMetricsH\x00\x12\x31\n\rpower_metrics\x18\x05 \x01(\x0b\x32\x18.meshtastic.PowerMetricsH\x00\x42\t\n\x07variant*\xdd\x02\n\x13TelemetrySensorType\x12\x10\n\x0cSENSOR_UNSET\x10\x00\x12\n\n\x06\x42ME280\x10\x01\x12\n\n\x06\x42ME680\x10\x02\x12\x0b\n\x07MCP9808\x10\x03\x12\n\n\x06INA260\x10\x04\x12\n\n\x06INA219\x10\x05\x12\n\n\x06\x42MP280\x10\x06\x12\t\n\x05SHTC3\x10\x07\x12\t\n\x05LPS22\x10\x08\x12\x0b\n\x07QMC6310\x10\t\x12\x0b\n\x07QMI8658\x10\n\x12\x0c\n\x08QMC5883L\x10\x0b\x12\t\n\x05SHT31\x10\x0c\x12\x0c\n\x08PMSA003I\x10\r\x12\x0b\n\x07INA3221\x10\x0e\x12\n\n\x06\x42MP085\x10\x0f\x12\x0c\n\x08RCWL9620\x10\x10\x12\t\n\x05SHT4X\x10\x11\x12\x0c\n\x08VEML7700\x10\x12\x12\x0c\n\x08MLX90632\x10\x13\x12\x0b\n\x07OPT3001\x10\x14\x12\x0c\n\x08LTR390UV\x10\x15\x12\x0e\n\nTSL25911FN\x10\x16\x12\t\n\x05\x41HT10\x10\x17\x12\x10\n\x0c\x44\x46ROBOT_LARK\x10\x18\x42\x64\n\x13\x63om.geeksville.meshB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.telemetry_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\017TelemetryProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _TELEMETRYSENSORTYPE._serialized_start=1205 - _TELEMETRYSENSORTYPE._serialized_end=1554 - _DEVICEMETRICS._serialized_start=43 - _DEVICEMETRICS._serialized_end=172 - _ENVIRONMENTMETRICS._serialized_start=175 - _ENVIRONMENTMETRICS._serialized_end=469 - _POWERMETRICS._serialized_start=472 - _POWERMETRICS._serialized_end=612 - _AIRQUALITYMETRICS._serialized_start=615 - _AIRQUALITYMETRICS._serialized_end=934 - _TELEMETRY._serialized_start=937 - _TELEMETRY._serialized_end=1202 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/telemetry_pb2.pyi b/meshtastic/telemetry_pb2.pyi deleted file mode 100644 index 552d51b..0000000 --- a/meshtastic/telemetry_pb2.pyi +++ /dev/null @@ -1,571 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -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 - -class _TelemetrySensorType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TelemetrySensorType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - SENSOR_UNSET: _TelemetrySensorType.ValueType # 0 - """ - No external telemetry sensor explicitly set - """ - BME280: _TelemetrySensorType.ValueType # 1 - """ - High accuracy temperature, pressure, humidity - """ - BME680: _TelemetrySensorType.ValueType # 2 - """ - High accuracy temperature, pressure, humidity, and air resistance - """ - MCP9808: _TelemetrySensorType.ValueType # 3 - """ - Very high accuracy temperature - """ - INA260: _TelemetrySensorType.ValueType # 4 - """ - Moderate accuracy current and voltage - """ - INA219: _TelemetrySensorType.ValueType # 5 - """ - Moderate accuracy current and voltage - """ - BMP280: _TelemetrySensorType.ValueType # 6 - """ - High accuracy temperature and pressure - """ - SHTC3: _TelemetrySensorType.ValueType # 7 - """ - High accuracy temperature and humidity - """ - LPS22: _TelemetrySensorType.ValueType # 8 - """ - High accuracy pressure - """ - QMC6310: _TelemetrySensorType.ValueType # 9 - """ - 3-Axis magnetic sensor - """ - QMI8658: _TelemetrySensorType.ValueType # 10 - """ - 6-Axis inertial measurement sensor - """ - QMC5883L: _TelemetrySensorType.ValueType # 11 - """ - 3-Axis magnetic sensor - """ - SHT31: _TelemetrySensorType.ValueType # 12 - """ - High accuracy temperature and humidity - """ - PMSA003I: _TelemetrySensorType.ValueType # 13 - """ - PM2.5 air quality sensor - """ - INA3221: _TelemetrySensorType.ValueType # 14 - """ - INA3221 3 Channel Voltage / Current Sensor - """ - BMP085: _TelemetrySensorType.ValueType # 15 - """ - BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) - """ - RCWL9620: _TelemetrySensorType.ValueType # 16 - """ - RCWL-9620 Doppler Radar Distance Sensor, used for water level detection - """ - SHT4X: _TelemetrySensorType.ValueType # 17 - """ - Sensirion High accuracy temperature and humidity - """ - VEML7700: _TelemetrySensorType.ValueType # 18 - """ - VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. - """ - MLX90632: _TelemetrySensorType.ValueType # 19 - """ - MLX90632 non-contact IR temperature sensor. - """ - OPT3001: _TelemetrySensorType.ValueType # 20 - """ - TI OPT3001 Ambient Light Sensor - """ - LTR390UV: _TelemetrySensorType.ValueType # 21 - """ - Lite On LTR-390UV-01 UV Light Sensor - """ - TSL25911FN: _TelemetrySensorType.ValueType # 22 - """ - AMS TSL25911FN RGB Light Sensor - """ - AHT10: _TelemetrySensorType.ValueType # 23 - """ - AHT10 Integrated temperature and humidity sensor - """ - DFROBOT_LARK: _TelemetrySensorType.ValueType # 24 - """ - DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) - """ - -class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper): - """ - Supported I2C Sensors for telemetry in Meshtastic - """ - -SENSOR_UNSET: TelemetrySensorType.ValueType # 0 -""" -No external telemetry sensor explicitly set -""" -BME280: TelemetrySensorType.ValueType # 1 -""" -High accuracy temperature, pressure, humidity -""" -BME680: TelemetrySensorType.ValueType # 2 -""" -High accuracy temperature, pressure, humidity, and air resistance -""" -MCP9808: TelemetrySensorType.ValueType # 3 -""" -Very high accuracy temperature -""" -INA260: TelemetrySensorType.ValueType # 4 -""" -Moderate accuracy current and voltage -""" -INA219: TelemetrySensorType.ValueType # 5 -""" -Moderate accuracy current and voltage -""" -BMP280: TelemetrySensorType.ValueType # 6 -""" -High accuracy temperature and pressure -""" -SHTC3: TelemetrySensorType.ValueType # 7 -""" -High accuracy temperature and humidity -""" -LPS22: TelemetrySensorType.ValueType # 8 -""" -High accuracy pressure -""" -QMC6310: TelemetrySensorType.ValueType # 9 -""" -3-Axis magnetic sensor -""" -QMI8658: TelemetrySensorType.ValueType # 10 -""" -6-Axis inertial measurement sensor -""" -QMC5883L: TelemetrySensorType.ValueType # 11 -""" -3-Axis magnetic sensor -""" -SHT31: TelemetrySensorType.ValueType # 12 -""" -High accuracy temperature and humidity -""" -PMSA003I: TelemetrySensorType.ValueType # 13 -""" -PM2.5 air quality sensor -""" -INA3221: TelemetrySensorType.ValueType # 14 -""" -INA3221 3 Channel Voltage / Current Sensor -""" -BMP085: TelemetrySensorType.ValueType # 15 -""" -BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) -""" -RCWL9620: TelemetrySensorType.ValueType # 16 -""" -RCWL-9620 Doppler Radar Distance Sensor, used for water level detection -""" -SHT4X: TelemetrySensorType.ValueType # 17 -""" -Sensirion High accuracy temperature and humidity -""" -VEML7700: TelemetrySensorType.ValueType # 18 -""" -VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. -""" -MLX90632: TelemetrySensorType.ValueType # 19 -""" -MLX90632 non-contact IR temperature sensor. -""" -OPT3001: TelemetrySensorType.ValueType # 20 -""" -TI OPT3001 Ambient Light Sensor -""" -LTR390UV: TelemetrySensorType.ValueType # 21 -""" -Lite On LTR-390UV-01 UV Light Sensor -""" -TSL25911FN: TelemetrySensorType.ValueType # 22 -""" -AMS TSL25911FN RGB Light Sensor -""" -AHT10: TelemetrySensorType.ValueType # 23 -""" -AHT10 Integrated temperature and humidity sensor -""" -DFROBOT_LARK: TelemetrySensorType.ValueType # 24 -""" -DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) -""" -global___TelemetrySensorType = TelemetrySensorType - -@typing_extensions.final -class DeviceMetrics(google.protobuf.message.Message): - """ - Key native device metrics such as battery level - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - BATTERY_LEVEL_FIELD_NUMBER: builtins.int - VOLTAGE_FIELD_NUMBER: builtins.int - CHANNEL_UTILIZATION_FIELD_NUMBER: builtins.int - AIR_UTIL_TX_FIELD_NUMBER: builtins.int - UPTIME_SECONDS_FIELD_NUMBER: builtins.int - battery_level: builtins.int - """ - 0-100 (>100 means powered) - """ - voltage: builtins.float - """ - Voltage measured - """ - channel_utilization: builtins.float - """ - Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). - """ - air_util_tx: builtins.float - """ - Percent of airtime for transmission used within the last hour. - """ - uptime_seconds: builtins.int - """ - How long the device has been running since the last reboot (in seconds) - """ - def __init__( - self, - *, - battery_level: builtins.int = ..., - voltage: builtins.float = ..., - channel_utilization: builtins.float = ..., - air_util_tx: builtins.float = ..., - uptime_seconds: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["air_util_tx", b"air_util_tx", "battery_level", b"battery_level", "channel_utilization", b"channel_utilization", "uptime_seconds", b"uptime_seconds", "voltage", b"voltage"]) -> None: ... - -global___DeviceMetrics = DeviceMetrics - -@typing_extensions.final -class EnvironmentMetrics(google.protobuf.message.Message): - """ - Weather station or other environmental metrics - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TEMPERATURE_FIELD_NUMBER: builtins.int - RELATIVE_HUMIDITY_FIELD_NUMBER: builtins.int - BAROMETRIC_PRESSURE_FIELD_NUMBER: builtins.int - GAS_RESISTANCE_FIELD_NUMBER: builtins.int - VOLTAGE_FIELD_NUMBER: builtins.int - CURRENT_FIELD_NUMBER: builtins.int - IAQ_FIELD_NUMBER: builtins.int - DISTANCE_FIELD_NUMBER: builtins.int - LUX_FIELD_NUMBER: builtins.int - WHITE_LUX_FIELD_NUMBER: builtins.int - IR_LUX_FIELD_NUMBER: builtins.int - UV_LUX_FIELD_NUMBER: builtins.int - WIND_DIRECTION_FIELD_NUMBER: builtins.int - WIND_SPEED_FIELD_NUMBER: builtins.int - temperature: builtins.float - """ - Temperature measured - """ - relative_humidity: builtins.float - """ - Relative humidity percent measured - """ - barometric_pressure: builtins.float - """ - Barometric pressure in hPA measured - """ - gas_resistance: builtins.float - """ - Gas resistance in MOhm measured - """ - voltage: builtins.float - """ - Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) - """ - current: builtins.float - """ - Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) - """ - iaq: builtins.int - """ - relative scale IAQ value as measured by Bosch BME680 . value 0-500. - Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. - """ - distance: builtins.float - """ - RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. - """ - lux: builtins.float - """ - VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. - """ - white_lux: builtins.float - """ - VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. - """ - ir_lux: builtins.float - """ - Infrared lux - """ - uv_lux: builtins.float - """ - Ultraviolet lux - """ - wind_direction: builtins.int - """ - Wind direction in degrees - 0 degrees = North, 90 = East, etc... - """ - wind_speed: builtins.float - """ - Wind speed in m/s - """ - def __init__( - self, - *, - temperature: builtins.float = ..., - relative_humidity: builtins.float = ..., - barometric_pressure: builtins.float = ..., - gas_resistance: builtins.float = ..., - voltage: builtins.float = ..., - current: builtins.float = ..., - iaq: builtins.int = ..., - distance: builtins.float = ..., - lux: builtins.float = ..., - white_lux: builtins.float = ..., - ir_lux: builtins.float = ..., - uv_lux: builtins.float = ..., - wind_direction: builtins.int = ..., - wind_speed: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["barometric_pressure", b"barometric_pressure", "current", b"current", "distance", b"distance", "gas_resistance", b"gas_resistance", "iaq", b"iaq", "ir_lux", b"ir_lux", "lux", b"lux", "relative_humidity", b"relative_humidity", "temperature", b"temperature", "uv_lux", b"uv_lux", "voltage", b"voltage", "white_lux", b"white_lux", "wind_direction", b"wind_direction", "wind_speed", b"wind_speed"]) -> None: ... - -global___EnvironmentMetrics = EnvironmentMetrics - -@typing_extensions.final -class PowerMetrics(google.protobuf.message.Message): - """ - Power Metrics (voltage / current / etc) - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CH1_VOLTAGE_FIELD_NUMBER: builtins.int - CH1_CURRENT_FIELD_NUMBER: builtins.int - CH2_VOLTAGE_FIELD_NUMBER: builtins.int - CH2_CURRENT_FIELD_NUMBER: builtins.int - CH3_VOLTAGE_FIELD_NUMBER: builtins.int - CH3_CURRENT_FIELD_NUMBER: builtins.int - ch1_voltage: builtins.float - """ - Voltage (Ch1) - """ - ch1_current: builtins.float - """ - Current (Ch1) - """ - ch2_voltage: builtins.float - """ - Voltage (Ch2) - """ - ch2_current: builtins.float - """ - Current (Ch2) - """ - ch3_voltage: builtins.float - """ - Voltage (Ch3) - """ - ch3_current: builtins.float - """ - Current (Ch3) - """ - def __init__( - self, - *, - ch1_voltage: builtins.float = ..., - ch1_current: builtins.float = ..., - ch2_voltage: builtins.float = ..., - ch2_current: builtins.float = ..., - ch3_voltage: builtins.float = ..., - ch3_current: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ch1_current", b"ch1_current", "ch1_voltage", b"ch1_voltage", "ch2_current", b"ch2_current", "ch2_voltage", b"ch2_voltage", "ch3_current", b"ch3_current", "ch3_voltage", b"ch3_voltage"]) -> None: ... - -global___PowerMetrics = PowerMetrics - -@typing_extensions.final -class AirQualityMetrics(google.protobuf.message.Message): - """ - Air quality metrics - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PM10_STANDARD_FIELD_NUMBER: builtins.int - PM25_STANDARD_FIELD_NUMBER: builtins.int - PM100_STANDARD_FIELD_NUMBER: builtins.int - PM10_ENVIRONMENTAL_FIELD_NUMBER: builtins.int - PM25_ENVIRONMENTAL_FIELD_NUMBER: builtins.int - PM100_ENVIRONMENTAL_FIELD_NUMBER: builtins.int - PARTICLES_03UM_FIELD_NUMBER: builtins.int - PARTICLES_05UM_FIELD_NUMBER: builtins.int - PARTICLES_10UM_FIELD_NUMBER: builtins.int - PARTICLES_25UM_FIELD_NUMBER: builtins.int - PARTICLES_50UM_FIELD_NUMBER: builtins.int - PARTICLES_100UM_FIELD_NUMBER: builtins.int - pm10_standard: builtins.int - """ - Concentration Units Standard PM1.0 - """ - pm25_standard: builtins.int - """ - Concentration Units Standard PM2.5 - """ - pm100_standard: builtins.int - """ - Concentration Units Standard PM10.0 - """ - pm10_environmental: builtins.int - """ - Concentration Units Environmental PM1.0 - """ - pm25_environmental: builtins.int - """ - Concentration Units Environmental PM2.5 - """ - pm100_environmental: builtins.int - """ - Concentration Units Environmental PM10.0 - """ - particles_03um: builtins.int - """ - 0.3um Particle Count - """ - particles_05um: builtins.int - """ - 0.5um Particle Count - """ - particles_10um: builtins.int - """ - 1.0um Particle Count - """ - particles_25um: builtins.int - """ - 2.5um Particle Count - """ - particles_50um: builtins.int - """ - 5.0um Particle Count - """ - particles_100um: builtins.int - """ - 10.0um Particle Count - """ - def __init__( - self, - *, - pm10_standard: builtins.int = ..., - pm25_standard: builtins.int = ..., - pm100_standard: builtins.int = ..., - pm10_environmental: builtins.int = ..., - pm25_environmental: builtins.int = ..., - pm100_environmental: builtins.int = ..., - particles_03um: builtins.int = ..., - particles_05um: builtins.int = ..., - particles_10um: builtins.int = ..., - particles_25um: builtins.int = ..., - particles_50um: builtins.int = ..., - particles_100um: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["particles_03um", b"particles_03um", "particles_05um", b"particles_05um", "particles_100um", b"particles_100um", "particles_10um", b"particles_10um", "particles_25um", b"particles_25um", "particles_50um", b"particles_50um", "pm100_environmental", b"pm100_environmental", "pm100_standard", b"pm100_standard", "pm10_environmental", b"pm10_environmental", "pm10_standard", b"pm10_standard", "pm25_environmental", b"pm25_environmental", "pm25_standard", b"pm25_standard"]) -> None: ... - -global___AirQualityMetrics = AirQualityMetrics - -@typing_extensions.final -class Telemetry(google.protobuf.message.Message): - """ - Types of Measurements the telemetry module is equipped to handle - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TIME_FIELD_NUMBER: builtins.int - DEVICE_METRICS_FIELD_NUMBER: builtins.int - ENVIRONMENT_METRICS_FIELD_NUMBER: builtins.int - AIR_QUALITY_METRICS_FIELD_NUMBER: builtins.int - POWER_METRICS_FIELD_NUMBER: builtins.int - time: builtins.int - """ - Seconds since 1970 - or 0 for unknown/unset - """ - @property - def device_metrics(self) -> global___DeviceMetrics: - """ - Key native device metrics such as battery level - """ - @property - def environment_metrics(self) -> global___EnvironmentMetrics: - """ - Weather station or other environmental metrics - """ - @property - def air_quality_metrics(self) -> global___AirQualityMetrics: - """ - Air quality metrics - """ - @property - def power_metrics(self) -> global___PowerMetrics: - """ - Power Metrics - """ - def __init__( - self, - *, - time: builtins.int = ..., - device_metrics: global___DeviceMetrics | None = ..., - environment_metrics: global___EnvironmentMetrics | None = ..., - air_quality_metrics: global___AirQualityMetrics | None = ..., - power_metrics: global___PowerMetrics | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["air_quality_metrics", b"air_quality_metrics", "device_metrics", b"device_metrics", "environment_metrics", b"environment_metrics", "power_metrics", b"power_metrics", "variant", b"variant"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["air_quality_metrics", b"air_quality_metrics", "device_metrics", b"device_metrics", "environment_metrics", b"environment_metrics", "power_metrics", b"power_metrics", "time", b"time", "variant", b"variant"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["variant", b"variant"]) -> typing_extensions.Literal["device_metrics", "environment_metrics", "air_quality_metrics", "power_metrics"] | None: ... - -global___Telemetry = Telemetry diff --git a/meshtastic/xmodem_pb2.py b/meshtastic/xmodem_pb2.py deleted file mode 100644 index a352c63..0000000 --- a/meshtastic/xmodem_pb2.py +++ /dev/null @@ -1,28 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: meshtastic/xmodem.proto -"""Generated protocol buffer code.""" -from google.protobuf.internal import builder as _builder -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17meshtastic/xmodem.proto\x12\nmeshtastic\"\xb6\x01\n\x06XModem\x12+\n\x07\x63ontrol\x18\x01 \x01(\x0e\x32\x1a.meshtastic.XModem.Control\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\r\n\x05\x63rc16\x18\x03 \x01(\r\x12\x0e\n\x06\x62uffer\x18\x04 \x01(\x0c\"S\n\x07\x43ontrol\x12\x07\n\x03NUL\x10\x00\x12\x07\n\x03SOH\x10\x01\x12\x07\n\x03STX\x10\x02\x12\x07\n\x03\x45OT\x10\x04\x12\x07\n\x03\x41\x43K\x10\x06\x12\x07\n\x03NAK\x10\x15\x12\x07\n\x03\x43\x41N\x10\x18\x12\t\n\x05\x43TRLZ\x10\x1a\x42\x61\n\x13\x63om.geeksville.meshB\x0cXmodemProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') - -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.xmodem_pb2', globals()) -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\014XmodemProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _XMODEM._serialized_start=40 - _XMODEM._serialized_end=222 - _XMODEM_CONTROL._serialized_start=139 - _XMODEM_CONTROL._serialized_end=222 -# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/xmodem_pb2.pyi b/meshtastic/xmodem_pb2.pyi deleted file mode 100644 index 07d76bd..0000000 --- a/meshtastic/xmodem_pb2.pyi +++ /dev/null @@ -1,66 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" -import builtins -import google.protobuf.descriptor -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 XModem(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Control: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _ControlEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[XModem._Control.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NUL: XModem._Control.ValueType # 0 - SOH: XModem._Control.ValueType # 1 - STX: XModem._Control.ValueType # 2 - EOT: XModem._Control.ValueType # 4 - ACK: XModem._Control.ValueType # 6 - NAK: XModem._Control.ValueType # 21 - CAN: XModem._Control.ValueType # 24 - CTRLZ: XModem._Control.ValueType # 26 - - class Control(_Control, metaclass=_ControlEnumTypeWrapper): ... - NUL: XModem.Control.ValueType # 0 - SOH: XModem.Control.ValueType # 1 - STX: XModem.Control.ValueType # 2 - EOT: XModem.Control.ValueType # 4 - ACK: XModem.Control.ValueType # 6 - NAK: XModem.Control.ValueType # 21 - CAN: XModem.Control.ValueType # 24 - CTRLZ: XModem.Control.ValueType # 26 - - CONTROL_FIELD_NUMBER: builtins.int - SEQ_FIELD_NUMBER: builtins.int - CRC16_FIELD_NUMBER: builtins.int - BUFFER_FIELD_NUMBER: builtins.int - control: global___XModem.Control.ValueType - seq: builtins.int - crc16: builtins.int - buffer: builtins.bytes - def __init__( - self, - *, - control: global___XModem.Control.ValueType = ..., - seq: builtins.int = ..., - crc16: builtins.int = ..., - buffer: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["buffer", b"buffer", "control", b"control", "crc16", b"crc16", "seq", b"seq"]) -> None: ... - -global___XModem = XModem From 88b73611f0f085e9413b7ed982a00b1f98e239a9 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Wed, 26 Jun 2024 09:43:56 -0700 Subject: [PATCH 2/4] Move protobufs to meshtastic.protobuf python namespace --- .github/workflows/update_protobufs.yml | 2 +- bin/regen-protobufs.sh | 48 ++++++++++++++++++----- meshtastic/__init__.py | 9 +++-- meshtastic/__main__.py | 3 +- meshtastic/mesh_interface.py | 5 ++- meshtastic/node.py | 2 +- meshtastic/remote_hardware.py | 2 +- meshtastic/tests/test_main.py | 2 +- meshtastic/tests/test_mesh_interface.py | 3 +- meshtastic/tests/test_node.py | 4 +- meshtastic/tests/test_serial_interface.py | 2 +- meshtastic/tests/test_tcp_interface.py | 2 +- meshtastic/tests/test_util.py | 4 +- meshtastic/tunnel.py | 3 +- 14 files changed, 65 insertions(+), 26 deletions(-) diff --git a/.github/workflows/update_protobufs.yml b/.github/workflows/update_protobufs.yml index 5cec898..c7b9375 100644 --- a/.github/workflows/update_protobufs.yml +++ b/.github/workflows/update_protobufs.yml @@ -37,5 +37,5 @@ jobs: git config --global user.email 'bot@noreply.github.com' git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} git add protobufs - git add meshtastic + git add meshtastic/protobuf git commit -m "Update protobuf submodule" && git push || echo "No changes to commit" diff --git a/bin/regen-protobufs.sh b/bin/regen-protobufs.sh index 6b993c8..a41f7ba 100755 --- a/bin/regen-protobufs.sh +++ b/bin/regen-protobufs.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + #Uncomment to run hack #gsed -i 's/import "\//import ".\//g' ./protobufs/meshtastic/* #gsed -i 's/package meshtastic;//g' ./protobufs/meshtastic/* @@ -7,17 +9,45 @@ # protoc looks for mypy plugin in the python path source $(poetry env info --path)/bin/activate -./nanopb-0.4.8/generator-bin/protoc -I=protobufs --python_out ./ --mypy_out ./ ./protobufs/meshtastic/*.proto -./nanopb-0.4.8/generator-bin/protoc -I=protobufs --python_out ./meshtastic/ --mypy_out ./meshtastic/ ./protobufs/nanopb.proto +# Put our temp files in the poetry build directory +TMPDIR=./build/meshtastic/protofixup +echo "Fixing up protobuf paths in ${TMPDIR} temp directory" -# workaround for import bug in protoc https://github.com/protocolbuffers/protobuf/issues/1491#issuecomment-690618628 +# Ensure a clean build +rm -r "${TMPDIR}" + +INDIR=${TMPDIR}/in/meshtastic/protobuf +OUTDIR=${TMPDIR}/out +PYIDIR=${TMPDIR}/out +mkdir -p "${OUTDIR}" "${INDIR}" "${PYIDIR}" +cp ./protobufs/meshtastic/*.proto "${INDIR}" + +# OS-X sed is apparently a little different and expects an arg for -i if [[ $OSTYPE == 'darwin'* ]]; then - sed -i '' -E 's/^(import.*_pb2)/from . \1/' meshtastic/*.py - # automate the current workaround (may be related to Meshtastic-protobufs issue #27 https://github.com/meshtastic/protobufs/issues/27) - sed -i '' -E "s/^None = 0/globals()['None'] = 0/" meshtastic/mesh_pb2.py + SEDCMD="sed -i '' -E" else - sed -i -e 's/^import.*_pb2/from . \0/' meshtastic/*.py - # automate the current workaround (may be related to Meshtastic-protobufs issue #27 https://github.com/meshtastic/protobufs/issues/27) - sed -i -e "s/^None = 0/globals()['None'] = 0/" meshtastic/mesh_pb2.py + SEDCMD="sed -i -E" fi + + +# change the package names to meshtastic.protobuf +$SEDCMD 's/^package meshtastic;/package meshtastic.protobuf;/' "${INDIR}/"*.proto +# fix the imports to match +$SEDCMD 's/^import "meshtastic\//import "meshtastic\/protobuf\//' "${INDIR}/"*.proto + +# Generate the python files +./nanopb-0.4.8/generator-bin/protoc -I=$TMPDIR/in --python_out "${OUTDIR}" "--mypy_out=${PYIDIR}" $INDIR/*.proto + +# Change "from meshtastic.protobuf import" to "from . import" +$SEDCMD 's/^from meshtastic.protobuf import/from . import/' "${OUTDIR}"/meshtastic/protobuf/*pb2*.py[i] + +# Create a __init__.py in the out directory +touch "${OUTDIR}/meshtastic/protobuf/__init__.py" + +# Copy to the source controlled tree +mkdir -p meshtastic/protobuf +rm -rf meshtastic/protobuf/*pb2*.py +cp "${OUTDIR}/meshtastic/protobuf"/* meshtastic/protobuf + +exit 0 diff --git a/meshtastic/__init__.py b/meshtastic/__init__.py index 313cb42..e445aa7 100644 --- a/meshtastic/__init__.py +++ b/meshtastic/__init__.py @@ -81,7 +81,10 @@ from google.protobuf.json_format import MessageToJson from pubsub import pub # type: ignore[import-untyped] from tabulate import tabulate -from meshtastic import ( +from meshtastic.node import Node +from meshtastic.util import DeferredExecution, Timeout, catchAndIgnore, fixme, stripnl + +from .protobuf import ( admin_pb2, apponly_pb2, channel_pb2, @@ -93,10 +96,10 @@ from meshtastic import ( remote_hardware_pb2, storeforward_pb2, telemetry_pb2, +) +from . import ( util, ) -from meshtastic.node import Node -from meshtastic.util import DeferredExecution, Timeout, catchAndIgnore, fixme, stripnl # Note: To follow PEP224, comments should be after the module variable. diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index fa71adc..781f6bf 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -17,7 +17,8 @@ from pubsub import pub # type: ignore[import-untyped] import meshtastic.test import meshtastic.util from meshtastic import mt_config -from meshtastic import channel_pb2, config_pb2, portnums_pb2, remote_hardware, BROADCAST_ADDR +from meshtastic.protobuf import channel_pb2, config_pb2, portnums_pb2 +from meshtastic import remote_hardware, BROADCAST_ADDR from meshtastic.version import get_active_version from meshtastic.ble_interface import BLEInterface from meshtastic.mesh_interface import MeshInterface diff --git a/meshtastic/mesh_interface.py b/meshtastic/mesh_interface.py index 66ce7f2..49e87fd 100644 --- a/meshtastic/mesh_interface.py +++ b/meshtastic/mesh_interface.py @@ -18,10 +18,13 @@ from pubsub import pub # type: ignore[import-untyped] from tabulate import tabulate import meshtastic.node -from meshtastic import ( + +from meshtastic.protobuf import ( mesh_pb2, portnums_pb2, telemetry_pb2, +) +from meshtastic import ( BROADCAST_ADDR, BROADCAST_NUM, LOCAL_ADDR, diff --git a/meshtastic/node.py b/meshtastic/node.py index 419b712..31a5b03 100644 --- a/meshtastic/node.py +++ b/meshtastic/node.py @@ -7,7 +7,7 @@ import time from typing import Union -from meshtastic import admin_pb2, apponly_pb2, channel_pb2, localonly_pb2, mesh_pb2, portnums_pb2 +from meshtastic.protobuf import admin_pb2, apponly_pb2, channel_pb2, localonly_pb2, mesh_pb2, portnums_pb2 from meshtastic.util import ( Timeout, camel_to_snake, diff --git a/meshtastic/remote_hardware.py b/meshtastic/remote_hardware.py index 55c8c18..73836f3 100644 --- a/meshtastic/remote_hardware.py +++ b/meshtastic/remote_hardware.py @@ -4,7 +4,7 @@ import logging from pubsub import pub # type: ignore[import-untyped] -from meshtastic import portnums_pb2, remote_hardware_pb2 +from meshtastic.protobuf import portnums_pb2, remote_hardware_pb2 from meshtastic.util import our_exit diff --git a/meshtastic/tests/test_main.py b/meshtastic/tests/test_main.py index 18fa497..6f2dd26 100644 --- a/meshtastic/tests/test_main.py +++ b/meshtastic/tests/test_main.py @@ -21,7 +21,7 @@ from meshtastic.__main__ import ( ) from meshtastic import mt_config -from ..channel_pb2 import Channel # pylint: disable=E0611 +from ..protobuf.channel_pb2 import Channel # pylint: disable=E0611 # from ..ble_interface import BLEInterface from ..node import Node diff --git a/meshtastic/tests/test_mesh_interface.py b/meshtastic/tests/test_mesh_interface.py index 5e8441c..2f8dc83 100644 --- a/meshtastic/tests/test_mesh_interface.py +++ b/meshtastic/tests/test_mesh_interface.py @@ -7,7 +7,8 @@ from unittest.mock import MagicMock, patch import pytest from hypothesis import given, strategies as st -from .. import mesh_pb2, config_pb2, BROADCAST_ADDR, LOCAL_ADDR +from ..protobuf import mesh_pb2, config_pb2 +from .. import BROADCAST_ADDR, LOCAL_ADDR from ..mesh_interface import MeshInterface, _timeago from ..node import Node diff --git a/meshtastic/tests/test_node.py b/meshtastic/tests/test_node.py index 5bacd9d..df3dffb 100644 --- a/meshtastic/tests/test_node.py +++ b/meshtastic/tests/test_node.py @@ -6,8 +6,8 @@ from unittest.mock import MagicMock, patch import pytest -from .. import localonly_pb2, config_pb2 -from ..channel_pb2 import Channel # pylint: disable=E0611 +from ..protobuf import localonly_pb2, config_pb2 +from ..protobuf.channel_pb2 import Channel # pylint: disable=E0611 from ..node import Node from ..serial_interface import SerialInterface from ..mesh_interface import MeshInterface diff --git a/meshtastic/tests/test_serial_interface.py b/meshtastic/tests/test_serial_interface.py index 739380c..797c6d7 100644 --- a/meshtastic/tests/test_serial_interface.py +++ b/meshtastic/tests/test_serial_interface.py @@ -6,7 +6,7 @@ from unittest.mock import mock_open, patch import pytest from ..serial_interface import SerialInterface -from .. import config_pb2 +from ..protobuf import config_pb2 @pytest.mark.unit diff --git a/meshtastic/tests/test_tcp_interface.py b/meshtastic/tests/test_tcp_interface.py index 03d317c..44e79de 100644 --- a/meshtastic/tests/test_tcp_interface.py +++ b/meshtastic/tests/test_tcp_interface.py @@ -5,7 +5,7 @@ from unittest.mock import patch import pytest -from .. import config_pb2 +from ..protobuf import config_pb2 from ..tcp_interface import TCPInterface diff --git a/meshtastic/tests/test_util.py b/meshtastic/tests/test_util.py index 74f66d9..1ea80da 100644 --- a/meshtastic/tests/test_util.py +++ b/meshtastic/tests/test_util.py @@ -9,7 +9,7 @@ import pytest from hypothesis import given, strategies as st from meshtastic.supported_device import SupportedDevice -from meshtastic.mesh_pb2 import MyNodeInfo +from meshtastic.protobuf import mesh_pb2 from meshtastic.util import ( Timeout, active_ports_on_supported_devices, @@ -555,7 +555,7 @@ def test_active_ports_on_supported_devices_mac_duplicates_check(mock_platform, m @pytest.mark.unit def test_message_to_json_shows_all(): """Test that message_to_json prints fields that aren't included in data passed in""" - actual = json.loads(message_to_json(MyNodeInfo())) + actual = json.loads(message_to_json(mesh_pb2.MyNodeInfo())) expected = { "myNodeNum": 0, "rebootCount": 0, "minAppVersion": 0 } assert actual == expected diff --git a/meshtastic/tunnel.py b/meshtastic/tunnel.py index 40a1c2e..409e3d4 100644 --- a/meshtastic/tunnel.py +++ b/meshtastic/tunnel.py @@ -22,7 +22,8 @@ import threading from pubsub import pub # type: ignore[import-untyped] from pytap2 import TapDevice -from meshtastic import portnums_pb2, mt_config +from meshtastic.protobuf import portnums_pb2 +from meshtastic import mt_config from meshtastic.util import ipstr, readnet_u16 From 6d846c3a63305597328eb723cf56e025b241204d Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Wed, 26 Jun 2024 10:12:24 -0700 Subject: [PATCH 3/4] manually rebuild the protobuf glue files for now... (see PR for info) --- meshtastic/protobuf/__init__.py | 0 meshtastic/protobuf/admin_pb2.py | 39 + meshtastic/protobuf/admin_pb2.pyi | 572 ++++ meshtastic/protobuf/apponly_pb2.py | 28 + meshtastic/protobuf/apponly_pb2.pyi | 52 + meshtastic/protobuf/atak_pb2.py | 40 + meshtastic/protobuf/atak_pb2.pyi | 470 +++ meshtastic/protobuf/cannedmessages_pb2.py | 26 + meshtastic/protobuf/cannedmessages_pb2.pyi | 33 + meshtastic/protobuf/channel_pb2.py | 34 + meshtastic/protobuf/channel_pb2.pyi | 234 ++ meshtastic/protobuf/clientonly_pb2.py | 27 + meshtastic/protobuf/clientonly_pb2.pyi | 74 + meshtastic/protobuf/config_pb2.py | 70 + meshtastic/protobuf/config_pb2.pyi | 1511 ++++++++++ meshtastic/protobuf/connection_status_pb2.py | 36 + meshtastic/protobuf/connection_status_pb2.pyi | 228 ++ meshtastic/protobuf/deviceonly_pb2.py | 46 + meshtastic/protobuf/deviceonly_pb2.pyi | 400 +++ meshtastic/protobuf/localonly_pb2.py | 30 + meshtastic/protobuf/localonly_pb2.pyi | 220 ++ meshtastic/protobuf/mesh_pb2.py | 98 + meshtastic/protobuf/mesh_pb2.pyi | 2552 +++++++++++++++++ meshtastic/protobuf/module_config_pb2.py | 66 + meshtastic/protobuf/module_config_pb2.pyi | 1200 ++++++++ meshtastic/protobuf/mqtt_pb2.py | 30 + meshtastic/protobuf/mqtt_pb2.pyi | 148 + meshtastic/protobuf/paxcount_pb2.py | 26 + meshtastic/protobuf/paxcount_pb2.pyi | 45 + meshtastic/protobuf/portnums_pb2.py | 26 + meshtastic/protobuf/portnums_pb2.pyi | 370 +++ meshtastic/protobuf/remote_hardware_pb2.py | 28 + meshtastic/protobuf/remote_hardware_pb2.pyi | 126 + meshtastic/protobuf/rtttl_pb2.py | 26 + meshtastic/protobuf/rtttl_pb2.pyi | 33 + meshtastic/protobuf/storeforward_pb2.py | 34 + meshtastic/protobuf/storeforward_pb2.pyi | 345 +++ meshtastic/protobuf/telemetry_pb2.py | 36 + meshtastic/protobuf/telemetry_pb2.pyi | 576 ++++ meshtastic/protobuf/xmodem_pb2.py | 28 + meshtastic/protobuf/xmodem_pb2.pyi | 67 + 41 files changed, 10030 insertions(+) create mode 100644 meshtastic/protobuf/__init__.py create mode 100644 meshtastic/protobuf/admin_pb2.py create mode 100644 meshtastic/protobuf/admin_pb2.pyi create mode 100644 meshtastic/protobuf/apponly_pb2.py create mode 100644 meshtastic/protobuf/apponly_pb2.pyi create mode 100644 meshtastic/protobuf/atak_pb2.py create mode 100644 meshtastic/protobuf/atak_pb2.pyi create mode 100644 meshtastic/protobuf/cannedmessages_pb2.py create mode 100644 meshtastic/protobuf/cannedmessages_pb2.pyi create mode 100644 meshtastic/protobuf/channel_pb2.py create mode 100644 meshtastic/protobuf/channel_pb2.pyi create mode 100644 meshtastic/protobuf/clientonly_pb2.py create mode 100644 meshtastic/protobuf/clientonly_pb2.pyi create mode 100644 meshtastic/protobuf/config_pb2.py create mode 100644 meshtastic/protobuf/config_pb2.pyi create mode 100644 meshtastic/protobuf/connection_status_pb2.py create mode 100644 meshtastic/protobuf/connection_status_pb2.pyi create mode 100644 meshtastic/protobuf/deviceonly_pb2.py create mode 100644 meshtastic/protobuf/deviceonly_pb2.pyi create mode 100644 meshtastic/protobuf/localonly_pb2.py create mode 100644 meshtastic/protobuf/localonly_pb2.pyi create mode 100644 meshtastic/protobuf/mesh_pb2.py create mode 100644 meshtastic/protobuf/mesh_pb2.pyi create mode 100644 meshtastic/protobuf/module_config_pb2.py create mode 100644 meshtastic/protobuf/module_config_pb2.pyi create mode 100644 meshtastic/protobuf/mqtt_pb2.py create mode 100644 meshtastic/protobuf/mqtt_pb2.pyi create mode 100644 meshtastic/protobuf/paxcount_pb2.py create mode 100644 meshtastic/protobuf/paxcount_pb2.pyi create mode 100644 meshtastic/protobuf/portnums_pb2.py create mode 100644 meshtastic/protobuf/portnums_pb2.pyi create mode 100644 meshtastic/protobuf/remote_hardware_pb2.py create mode 100644 meshtastic/protobuf/remote_hardware_pb2.pyi create mode 100644 meshtastic/protobuf/rtttl_pb2.py create mode 100644 meshtastic/protobuf/rtttl_pb2.pyi create mode 100644 meshtastic/protobuf/storeforward_pb2.py create mode 100644 meshtastic/protobuf/storeforward_pb2.pyi create mode 100644 meshtastic/protobuf/telemetry_pb2.py create mode 100644 meshtastic/protobuf/telemetry_pb2.pyi create mode 100644 meshtastic/protobuf/xmodem_pb2.py create mode 100644 meshtastic/protobuf/xmodem_pb2.pyi diff --git a/meshtastic/protobuf/__init__.py b/meshtastic/protobuf/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/meshtastic/protobuf/admin_pb2.py b/meshtastic/protobuf/admin_pb2.py new file mode 100644 index 0000000..1429f1e --- /dev/null +++ b/meshtastic/protobuf/admin_pb2.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/admin.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import channel_pb2 as meshtastic_dot_protobuf_dot_channel__pb2 +from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2 +from meshtastic.protobuf import connection_status_pb2 as meshtastic_dot_protobuf_dot_connection__status__pb2 +from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2 +from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/admin.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a+meshtastic/protobuf/connection_status.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xd5\x12\n\x0c\x41\x64minMessage\x12\x1d\n\x13get_channel_request\x18\x01 \x01(\rH\x00\x12<\n\x14get_channel_response\x18\x02 \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x1b\n\x11get_owner_request\x18\x03 \x01(\x08H\x00\x12\x37\n\x12get_owner_response\x18\x04 \x01(\x0b\x32\x19.meshtastic.protobuf.UserH\x00\x12J\n\x12get_config_request\x18\x05 \x01(\x0e\x32,.meshtastic.protobuf.AdminMessage.ConfigTypeH\x00\x12:\n\x13get_config_response\x18\x06 \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12W\n\x19get_module_config_request\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.AdminMessage.ModuleConfigTypeH\x00\x12G\n\x1aget_module_config_response\x18\x08 \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12\x34\n*get_canned_message_module_messages_request\x18\n \x01(\x08H\x00\x12\x35\n+get_canned_message_module_messages_response\x18\x0b \x01(\tH\x00\x12%\n\x1bget_device_metadata_request\x18\x0c \x01(\x08H\x00\x12K\n\x1cget_device_metadata_response\x18\r \x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12\x1e\n\x14get_ringtone_request\x18\x0e \x01(\x08H\x00\x12\x1f\n\x15get_ringtone_response\x18\x0f \x01(\tH\x00\x12.\n$get_device_connection_status_request\x18\x10 \x01(\x08H\x00\x12\\\n%get_device_connection_status_response\x18\x11 \x01(\x0b\x32+.meshtastic.protobuf.DeviceConnectionStatusH\x00\x12:\n\x0cset_ham_mode\x18\x12 \x01(\x0b\x32\".meshtastic.protobuf.HamParametersH\x00\x12/\n%get_node_remote_hardware_pins_request\x18\x13 \x01(\x08H\x00\x12\x65\n&get_node_remote_hardware_pins_response\x18\x14 \x01(\x0b\x32\x33.meshtastic.protobuf.NodeRemoteHardwarePinsResponseH\x00\x12 \n\x16\x65nter_dfu_mode_request\x18\x15 \x01(\x08H\x00\x12\x1d\n\x13\x64\x65lete_file_request\x18\x16 \x01(\tH\x00\x12.\n\tset_owner\x18 \x01(\x0b\x32\x19.meshtastic.protobuf.UserH\x00\x12\x33\n\x0bset_channel\x18! \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x31\n\nset_config\x18\" \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12>\n\x11set_module_config\x18# \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12,\n\"set_canned_message_module_messages\x18$ \x01(\tH\x00\x12\x1e\n\x14set_ringtone_message\x18% \x01(\tH\x00\x12\x1b\n\x11remove_by_nodenum\x18& \x01(\rH\x00\x12\x1b\n\x11set_favorite_node\x18\' \x01(\rH\x00\x12\x1e\n\x14remove_favorite_node\x18( \x01(\rH\x00\x12;\n\x12set_fixed_position\x18) \x01(\x0b\x32\x1d.meshtastic.protobuf.PositionH\x00\x12\x1f\n\x15remove_fixed_position\x18* \x01(\x08H\x00\x12\x1d\n\x13\x62\x65gin_edit_settings\x18@ \x01(\x08H\x00\x12\x1e\n\x14\x63ommit_edit_settings\x18\x41 \x01(\x08H\x00\x12\x1c\n\x12reboot_ota_seconds\x18_ \x01(\x05H\x00\x12\x18\n\x0e\x65xit_simulator\x18` \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18\x61 \x01(\x05H\x00\x12\x1a\n\x10shutdown_seconds\x18\x62 \x01(\x05H\x00\x12\x17\n\rfactory_reset\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x05H\x00\"\x95\x01\n\nConfigType\x12\x11\n\rDEVICE_CONFIG\x10\x00\x12\x13\n\x0fPOSITION_CONFIG\x10\x01\x12\x10\n\x0cPOWER_CONFIG\x10\x02\x12\x12\n\x0eNETWORK_CONFIG\x10\x03\x12\x12\n\x0e\x44ISPLAY_CONFIG\x10\x04\x12\x0f\n\x0bLORA_CONFIG\x10\x05\x12\x14\n\x10\x42LUETOOTH_CONFIG\x10\x06\"\xbb\x02\n\x10ModuleConfigType\x12\x0f\n\x0bMQTT_CONFIG\x10\x00\x12\x11\n\rSERIAL_CONFIG\x10\x01\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x02\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x03\x12\x14\n\x10RANGETEST_CONFIG\x10\x04\x12\x14\n\x10TELEMETRY_CONFIG\x10\x05\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10\x06\x12\x10\n\x0c\x41UDIO_CONFIG\x10\x07\x12\x19\n\x15REMOTEHARDWARE_CONFIG\x10\x08\x12\x17\n\x13NEIGHBORINFO_CONFIG\x10\t\x12\x1a\n\x16\x41MBIENTLIGHTING_CONFIG\x10\n\x12\x1a\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x0b\x12\x15\n\x11PAXCOUNTER_CONFIG\x10\x0c\x42\x11\n\x0fpayload_variant\"[\n\rHamParameters\x12\x11\n\tcall_sign\x18\x01 \x01(\t\x12\x10\n\x08tx_power\x18\x02 \x01(\x05\x12\x11\n\tfrequency\x18\x03 \x01(\x02\x12\x12\n\nshort_name\x18\x04 \x01(\t\"o\n\x1eNodeRemoteHardwarePinsResponse\x12M\n\x19node_remote_hardware_pins\x18\x01 \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePinB`\n\x13\x63om.geeksville.meshB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.admin_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\013AdminProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_ADMINMESSAGE']._serialized_start=244 + _globals['_ADMINMESSAGE']._serialized_end=2633 + _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_start=2147 + _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_end=2296 + _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_start=2299 + _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_end=2614 + _globals['_HAMPARAMETERS']._serialized_start=2635 + _globals['_HAMPARAMETERS']._serialized_end=2726 + _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_start=2728 + _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_end=2839 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/admin_pb2.pyi b/meshtastic/protobuf/admin_pb2.pyi new file mode 100644 index 0000000..cdfc6b7 --- /dev/null +++ b/meshtastic/protobuf/admin_pb2.pyi @@ -0,0 +1,572 @@ +""" +@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 meshtastic.protobuf.channel_pb2 +import meshtastic.protobuf.config_pb2 +import meshtastic.protobuf.connection_status_pb2 +import meshtastic.protobuf.mesh_pb2 +import meshtastic.protobuf.module_config_pb2 +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.final +class AdminMessage(google.protobuf.message.Message): + """ + This message is handled by the Admin module and is responsible for all settings/channel read/write operations. + This message is used to do settings operations to both remote AND local nodes. + (Prior to 1.2 these operations were done via special ToRadio operations) + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _ConfigType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ConfigTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AdminMessage._ConfigType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DEVICE_CONFIG: AdminMessage._ConfigType.ValueType # 0 + """ + TODO: REPLACE + """ + POSITION_CONFIG: AdminMessage._ConfigType.ValueType # 1 + """ + TODO: REPLACE + """ + POWER_CONFIG: AdminMessage._ConfigType.ValueType # 2 + """ + TODO: REPLACE + """ + NETWORK_CONFIG: AdminMessage._ConfigType.ValueType # 3 + """ + TODO: REPLACE + """ + DISPLAY_CONFIG: AdminMessage._ConfigType.ValueType # 4 + """ + TODO: REPLACE + """ + LORA_CONFIG: AdminMessage._ConfigType.ValueType # 5 + """ + TODO: REPLACE + """ + BLUETOOTH_CONFIG: AdminMessage._ConfigType.ValueType # 6 + """ + TODO: REPLACE + """ + + class ConfigType(_ConfigType, metaclass=_ConfigTypeEnumTypeWrapper): + """ + TODO: REPLACE + """ + + DEVICE_CONFIG: AdminMessage.ConfigType.ValueType # 0 + """ + TODO: REPLACE + """ + POSITION_CONFIG: AdminMessage.ConfigType.ValueType # 1 + """ + TODO: REPLACE + """ + POWER_CONFIG: AdminMessage.ConfigType.ValueType # 2 + """ + TODO: REPLACE + """ + NETWORK_CONFIG: AdminMessage.ConfigType.ValueType # 3 + """ + TODO: REPLACE + """ + DISPLAY_CONFIG: AdminMessage.ConfigType.ValueType # 4 + """ + TODO: REPLACE + """ + LORA_CONFIG: AdminMessage.ConfigType.ValueType # 5 + """ + TODO: REPLACE + """ + BLUETOOTH_CONFIG: AdminMessage.ConfigType.ValueType # 6 + """ + TODO: REPLACE + """ + + class _ModuleConfigType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ModuleConfigTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AdminMessage._ModuleConfigType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + MQTT_CONFIG: AdminMessage._ModuleConfigType.ValueType # 0 + """ + TODO: REPLACE + """ + SERIAL_CONFIG: AdminMessage._ModuleConfigType.ValueType # 1 + """ + TODO: REPLACE + """ + EXTNOTIF_CONFIG: AdminMessage._ModuleConfigType.ValueType # 2 + """ + TODO: REPLACE + """ + STOREFORWARD_CONFIG: AdminMessage._ModuleConfigType.ValueType # 3 + """ + TODO: REPLACE + """ + RANGETEST_CONFIG: AdminMessage._ModuleConfigType.ValueType # 4 + """ + TODO: REPLACE + """ + TELEMETRY_CONFIG: AdminMessage._ModuleConfigType.ValueType # 5 + """ + TODO: REPLACE + """ + CANNEDMSG_CONFIG: AdminMessage._ModuleConfigType.ValueType # 6 + """ + TODO: REPLACE + """ + AUDIO_CONFIG: AdminMessage._ModuleConfigType.ValueType # 7 + """ + TODO: REPLACE + """ + REMOTEHARDWARE_CONFIG: AdminMessage._ModuleConfigType.ValueType # 8 + """ + TODO: REPLACE + """ + NEIGHBORINFO_CONFIG: AdminMessage._ModuleConfigType.ValueType # 9 + """ + TODO: REPLACE + """ + AMBIENTLIGHTING_CONFIG: AdminMessage._ModuleConfigType.ValueType # 10 + """ + TODO: REPLACE + """ + DETECTIONSENSOR_CONFIG: AdminMessage._ModuleConfigType.ValueType # 11 + """ + TODO: REPLACE + """ + PAXCOUNTER_CONFIG: AdminMessage._ModuleConfigType.ValueType # 12 + """ + TODO: REPLACE + """ + + class ModuleConfigType(_ModuleConfigType, metaclass=_ModuleConfigTypeEnumTypeWrapper): + """ + TODO: REPLACE + """ + + MQTT_CONFIG: AdminMessage.ModuleConfigType.ValueType # 0 + """ + TODO: REPLACE + """ + SERIAL_CONFIG: AdminMessage.ModuleConfigType.ValueType # 1 + """ + TODO: REPLACE + """ + EXTNOTIF_CONFIG: AdminMessage.ModuleConfigType.ValueType # 2 + """ + TODO: REPLACE + """ + STOREFORWARD_CONFIG: AdminMessage.ModuleConfigType.ValueType # 3 + """ + TODO: REPLACE + """ + RANGETEST_CONFIG: AdminMessage.ModuleConfigType.ValueType # 4 + """ + TODO: REPLACE + """ + TELEMETRY_CONFIG: AdminMessage.ModuleConfigType.ValueType # 5 + """ + TODO: REPLACE + """ + CANNEDMSG_CONFIG: AdminMessage.ModuleConfigType.ValueType # 6 + """ + TODO: REPLACE + """ + AUDIO_CONFIG: AdminMessage.ModuleConfigType.ValueType # 7 + """ + TODO: REPLACE + """ + REMOTEHARDWARE_CONFIG: AdminMessage.ModuleConfigType.ValueType # 8 + """ + TODO: REPLACE + """ + NEIGHBORINFO_CONFIG: AdminMessage.ModuleConfigType.ValueType # 9 + """ + TODO: REPLACE + """ + AMBIENTLIGHTING_CONFIG: AdminMessage.ModuleConfigType.ValueType # 10 + """ + TODO: REPLACE + """ + DETECTIONSENSOR_CONFIG: AdminMessage.ModuleConfigType.ValueType # 11 + """ + TODO: REPLACE + """ + PAXCOUNTER_CONFIG: AdminMessage.ModuleConfigType.ValueType # 12 + """ + TODO: REPLACE + """ + + GET_CHANNEL_REQUEST_FIELD_NUMBER: builtins.int + GET_CHANNEL_RESPONSE_FIELD_NUMBER: builtins.int + GET_OWNER_REQUEST_FIELD_NUMBER: builtins.int + GET_OWNER_RESPONSE_FIELD_NUMBER: builtins.int + GET_CONFIG_REQUEST_FIELD_NUMBER: builtins.int + GET_CONFIG_RESPONSE_FIELD_NUMBER: builtins.int + GET_MODULE_CONFIG_REQUEST_FIELD_NUMBER: builtins.int + GET_MODULE_CONFIG_RESPONSE_FIELD_NUMBER: builtins.int + GET_CANNED_MESSAGE_MODULE_MESSAGES_REQUEST_FIELD_NUMBER: builtins.int + GET_CANNED_MESSAGE_MODULE_MESSAGES_RESPONSE_FIELD_NUMBER: builtins.int + GET_DEVICE_METADATA_REQUEST_FIELD_NUMBER: builtins.int + GET_DEVICE_METADATA_RESPONSE_FIELD_NUMBER: builtins.int + GET_RINGTONE_REQUEST_FIELD_NUMBER: builtins.int + GET_RINGTONE_RESPONSE_FIELD_NUMBER: builtins.int + GET_DEVICE_CONNECTION_STATUS_REQUEST_FIELD_NUMBER: builtins.int + GET_DEVICE_CONNECTION_STATUS_RESPONSE_FIELD_NUMBER: builtins.int + SET_HAM_MODE_FIELD_NUMBER: builtins.int + GET_NODE_REMOTE_HARDWARE_PINS_REQUEST_FIELD_NUMBER: builtins.int + GET_NODE_REMOTE_HARDWARE_PINS_RESPONSE_FIELD_NUMBER: builtins.int + ENTER_DFU_MODE_REQUEST_FIELD_NUMBER: builtins.int + DELETE_FILE_REQUEST_FIELD_NUMBER: builtins.int + SET_OWNER_FIELD_NUMBER: builtins.int + SET_CHANNEL_FIELD_NUMBER: builtins.int + SET_CONFIG_FIELD_NUMBER: builtins.int + SET_MODULE_CONFIG_FIELD_NUMBER: builtins.int + SET_CANNED_MESSAGE_MODULE_MESSAGES_FIELD_NUMBER: builtins.int + SET_RINGTONE_MESSAGE_FIELD_NUMBER: builtins.int + REMOVE_BY_NODENUM_FIELD_NUMBER: builtins.int + SET_FAVORITE_NODE_FIELD_NUMBER: builtins.int + REMOVE_FAVORITE_NODE_FIELD_NUMBER: builtins.int + SET_FIXED_POSITION_FIELD_NUMBER: builtins.int + REMOVE_FIXED_POSITION_FIELD_NUMBER: builtins.int + BEGIN_EDIT_SETTINGS_FIELD_NUMBER: builtins.int + COMMIT_EDIT_SETTINGS_FIELD_NUMBER: builtins.int + REBOOT_OTA_SECONDS_FIELD_NUMBER: builtins.int + EXIT_SIMULATOR_FIELD_NUMBER: builtins.int + REBOOT_SECONDS_FIELD_NUMBER: builtins.int + SHUTDOWN_SECONDS_FIELD_NUMBER: builtins.int + FACTORY_RESET_FIELD_NUMBER: builtins.int + NODEDB_RESET_FIELD_NUMBER: builtins.int + get_channel_request: builtins.int + """ + Send the specified channel in the response to this message + NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) + """ + get_owner_request: builtins.bool + """ + Send the current owner data in the response to this message. + """ + get_config_request: global___AdminMessage.ConfigType.ValueType + """ + Ask for the following config data to be sent + """ + get_module_config_request: global___AdminMessage.ModuleConfigType.ValueType + """ + Ask for the following config data to be sent + """ + get_canned_message_module_messages_request: builtins.bool + """ + Get the Canned Message Module messages in the response to this message. + """ + get_canned_message_module_messages_response: builtins.str + """ + Get the Canned Message Module messages in the response to this message. + """ + get_device_metadata_request: builtins.bool + """ + Request the node to send device metadata (firmware, protobuf version, etc) + """ + get_ringtone_request: builtins.bool + """ + Get the Ringtone in the response to this message. + """ + get_ringtone_response: builtins.str + """ + Get the Ringtone in the response to this message. + """ + get_device_connection_status_request: builtins.bool + """ + Request the node to send it's connection status + """ + get_node_remote_hardware_pins_request: builtins.bool + """ + Get the mesh's nodes with their available gpio pins for RemoteHardware module use + """ + enter_dfu_mode_request: builtins.bool + """ + Enter (UF2) DFU mode + Only implemented on NRF52 currently + """ + delete_file_request: builtins.str + """ + Delete the file by the specified path from the device + """ + set_canned_message_module_messages: builtins.str + """ + Set the Canned Message Module messages text. + """ + set_ringtone_message: builtins.str + """ + Set the ringtone for ExternalNotification. + """ + remove_by_nodenum: builtins.int + """ + Remove the node by the specified node-num from the NodeDB on the device + """ + set_favorite_node: builtins.int + """ + Set specified node-num to be favorited on the NodeDB on the device + """ + remove_favorite_node: builtins.int + """ + Set specified node-num to be un-favorited on the NodeDB on the device + """ + remove_fixed_position: builtins.bool + """ + Clear fixed position coordinates and then set position.fixed_position = false + """ + begin_edit_settings: builtins.bool + """ + Begins an edit transaction for config, module config, owner, and channel settings changes + This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) + """ + commit_edit_settings: builtins.bool + """ + Commits an open transaction for any edits made to config, module config, owner, and channel settings + """ + reboot_ota_seconds: builtins.int + """ + Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) + Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. + """ + exit_simulator: builtins.bool + """ + This message is only supported for the simulator Portduino build. + If received the simulator will exit successfully. + """ + reboot_seconds: builtins.int + """ + Tell the node to reboot in this many seconds (or <0 to cancel reboot) + """ + shutdown_seconds: builtins.int + """ + Tell the node to shutdown in this many seconds (or <0 to cancel shutdown) + """ + factory_reset: builtins.int + """ + Tell the node to factory reset, all device settings will be returned to factory defaults. + """ + nodedb_reset: builtins.int + """ + Tell the node to reset the nodedb. + """ + @property + def get_channel_response(self) -> meshtastic.protobuf.channel_pb2.Channel: + """ + TODO: REPLACE + """ + + @property + def get_owner_response(self) -> meshtastic.protobuf.mesh_pb2.User: + """ + TODO: REPLACE + """ + + @property + def get_config_response(self) -> meshtastic.protobuf.config_pb2.Config: + """ + Send the current Config in the response to this message. + """ + + @property + def get_module_config_response(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig: + """ + Send the current Config in the response to this message. + """ + + @property + def get_device_metadata_response(self) -> meshtastic.protobuf.mesh_pb2.DeviceMetadata: + """ + Device metadata response + """ + + @property + def get_device_connection_status_response(self) -> meshtastic.protobuf.connection_status_pb2.DeviceConnectionStatus: + """ + Device connection status response + """ + + @property + def set_ham_mode(self) -> global___HamParameters: + """ + Setup a node for licensed amateur (ham) radio operation + """ + + @property + def get_node_remote_hardware_pins_response(self) -> global___NodeRemoteHardwarePinsResponse: + """ + Respond with the mesh's nodes with their available gpio pins for RemoteHardware module use + """ + + @property + def set_owner(self) -> meshtastic.protobuf.mesh_pb2.User: + """ + Set the owner for this node + """ + + @property + def set_channel(self) -> meshtastic.protobuf.channel_pb2.Channel: + """ + Set channels (using the new API). + A special channel is the "primary channel". + The other records are secondary channels. + Note: only one channel can be marked as primary. + If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. + """ + + @property + def set_config(self) -> meshtastic.protobuf.config_pb2.Config: + """ + Set the current Config + """ + + @property + def set_module_config(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig: + """ + Set the current Config + """ + + @property + def set_fixed_position(self) -> meshtastic.protobuf.mesh_pb2.Position: + """ + Set fixed position data on the node and then set the position.fixed_position = true + """ + + def __init__( + self, + *, + get_channel_request: builtins.int = ..., + get_channel_response: meshtastic.protobuf.channel_pb2.Channel | None = ..., + get_owner_request: builtins.bool = ..., + get_owner_response: meshtastic.protobuf.mesh_pb2.User | None = ..., + get_config_request: global___AdminMessage.ConfigType.ValueType = ..., + get_config_response: meshtastic.protobuf.config_pb2.Config | None = ..., + get_module_config_request: global___AdminMessage.ModuleConfigType.ValueType = ..., + get_module_config_response: meshtastic.protobuf.module_config_pb2.ModuleConfig | None = ..., + get_canned_message_module_messages_request: builtins.bool = ..., + get_canned_message_module_messages_response: builtins.str = ..., + get_device_metadata_request: builtins.bool = ..., + get_device_metadata_response: meshtastic.protobuf.mesh_pb2.DeviceMetadata | None = ..., + get_ringtone_request: builtins.bool = ..., + get_ringtone_response: builtins.str = ..., + get_device_connection_status_request: builtins.bool = ..., + get_device_connection_status_response: meshtastic.protobuf.connection_status_pb2.DeviceConnectionStatus | None = ..., + set_ham_mode: global___HamParameters | None = ..., + get_node_remote_hardware_pins_request: builtins.bool = ..., + get_node_remote_hardware_pins_response: global___NodeRemoteHardwarePinsResponse | None = ..., + enter_dfu_mode_request: builtins.bool = ..., + delete_file_request: builtins.str = ..., + set_owner: meshtastic.protobuf.mesh_pb2.User | None = ..., + set_channel: meshtastic.protobuf.channel_pb2.Channel | None = ..., + set_config: meshtastic.protobuf.config_pb2.Config | None = ..., + set_module_config: meshtastic.protobuf.module_config_pb2.ModuleConfig | None = ..., + set_canned_message_module_messages: builtins.str = ..., + set_ringtone_message: builtins.str = ..., + remove_by_nodenum: builtins.int = ..., + set_favorite_node: builtins.int = ..., + remove_favorite_node: builtins.int = ..., + set_fixed_position: meshtastic.protobuf.mesh_pb2.Position | None = ..., + remove_fixed_position: builtins.bool = ..., + begin_edit_settings: builtins.bool = ..., + commit_edit_settings: builtins.bool = ..., + reboot_ota_seconds: builtins.int = ..., + exit_simulator: builtins.bool = ..., + reboot_seconds: builtins.int = ..., + shutdown_seconds: builtins.int = ..., + factory_reset: builtins.int = ..., + nodedb_reset: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset", b"factory_reset", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "shutdown_seconds", b"shutdown_seconds"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset", b"factory_reset", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "shutdown_seconds", b"shutdown_seconds"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["get_channel_request", "get_channel_response", "get_owner_request", "get_owner_response", "get_config_request", "get_config_response", "get_module_config_request", "get_module_config_response", "get_canned_message_module_messages_request", "get_canned_message_module_messages_response", "get_device_metadata_request", "get_device_metadata_response", "get_ringtone_request", "get_ringtone_response", "get_device_connection_status_request", "get_device_connection_status_response", "set_ham_mode", "get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", "enter_dfu_mode_request", "delete_file_request", "set_owner", "set_channel", "set_config", "set_module_config", "set_canned_message_module_messages", "set_ringtone_message", "remove_by_nodenum", "set_favorite_node", "remove_favorite_node", "set_fixed_position", "remove_fixed_position", "begin_edit_settings", "commit_edit_settings", "reboot_ota_seconds", "exit_simulator", "reboot_seconds", "shutdown_seconds", "factory_reset", "nodedb_reset"] | None: ... + +global___AdminMessage = AdminMessage + +@typing.final +class HamParameters(google.protobuf.message.Message): + """ + Parameters for setting up Meshtastic for ameteur radio usage + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CALL_SIGN_FIELD_NUMBER: builtins.int + TX_POWER_FIELD_NUMBER: builtins.int + FREQUENCY_FIELD_NUMBER: builtins.int + SHORT_NAME_FIELD_NUMBER: builtins.int + call_sign: builtins.str + """ + Amateur radio call sign, eg. KD2ABC + """ + tx_power: builtins.int + """ + Transmit power in dBm at the LoRA transceiver, not including any amplification + """ + frequency: builtins.float + """ + The selected frequency of LoRA operation + Please respect your local laws, regulations, and band plans. + Ensure your radio is capable of operating of the selected frequency before setting this. + """ + short_name: builtins.str + """ + Optional short name of user + """ + def __init__( + self, + *, + call_sign: builtins.str = ..., + tx_power: builtins.int = ..., + frequency: builtins.float = ..., + short_name: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["call_sign", b"call_sign", "frequency", b"frequency", "short_name", b"short_name", "tx_power", b"tx_power"]) -> None: ... + +global___HamParameters = HamParameters + +@typing.final +class NodeRemoteHardwarePinsResponse(google.protobuf.message.Message): + """ + Response envelope for node_remote_hardware_pins + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NODE_REMOTE_HARDWARE_PINS_FIELD_NUMBER: builtins.int + @property + def node_remote_hardware_pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.protobuf.mesh_pb2.NodeRemoteHardwarePin]: + """ + Nodes and their respective remote hardware GPIO pins + """ + + def __init__( + self, + *, + node_remote_hardware_pins: collections.abc.Iterable[meshtastic.protobuf.mesh_pb2.NodeRemoteHardwarePin] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["node_remote_hardware_pins", b"node_remote_hardware_pins"]) -> None: ... + +global___NodeRemoteHardwarePinsResponse = NodeRemoteHardwarePinsResponse diff --git a/meshtastic/protobuf/apponly_pb2.py b/meshtastic/protobuf/apponly_pb2.py new file mode 100644 index 0000000..151fbf6 --- /dev/null +++ b/meshtastic/protobuf/apponly_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/apponly.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import channel_pb2 as meshtastic_dot_protobuf_dot_channel__pb2 +from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/apponly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\"\x81\x01\n\nChannelSet\x12\x36\n\x08settings\x18\x01 \x03(\x0b\x32$.meshtastic.protobuf.ChannelSettings\x12;\n\x0blora_config\x18\x02 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigBb\n\x13\x63om.geeksville.meshB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.apponly_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_CHANNELSET']._serialized_start=128 + _globals['_CHANNELSET']._serialized_end=257 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/apponly_pb2.pyi b/meshtastic/protobuf/apponly_pb2.pyi new file mode 100644 index 0000000..c8a34bc --- /dev/null +++ b/meshtastic/protobuf/apponly_pb2.pyi @@ -0,0 +1,52 @@ +""" +@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.message +import meshtastic.protobuf.channel_pb2 +import meshtastic.protobuf.config_pb2 +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class ChannelSet(google.protobuf.message.Message): + """ + This is the most compact possible representation for a set of channels. + It includes only one PRIMARY channel (which must be first) and + any SECONDARY channels. + No DISABLED channels are included. + This abstraction is used only on the the 'app side' of the world (ie python, javascript and android etc) to show a group of Channels as a (long) URL + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SETTINGS_FIELD_NUMBER: builtins.int + LORA_CONFIG_FIELD_NUMBER: builtins.int + @property + def settings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.protobuf.channel_pb2.ChannelSettings]: + """ + Channel list with settings + """ + + @property + def lora_config(self) -> meshtastic.protobuf.config_pb2.Config.LoRaConfig: + """ + LoRa config + """ + + def __init__( + self, + *, + settings: collections.abc.Iterable[meshtastic.protobuf.channel_pb2.ChannelSettings] | None = ..., + lora_config: meshtastic.protobuf.config_pb2.Config.LoRaConfig | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["lora_config", b"lora_config"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["lora_config", b"lora_config", "settings", b"settings"]) -> None: ... + +global___ChannelSet = ChannelSet diff --git a/meshtastic/protobuf/atak_pb2.py b/meshtastic/protobuf/atak_pb2.py new file mode 100644 index 0000000..aec03c3 --- /dev/null +++ b/meshtastic/protobuf/atak_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/atak.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/atak.proto\x12\x13meshtastic.protobuf\"\x93\x02\n\tTAKPacket\x12\x15\n\ris_compressed\x18\x01 \x01(\x08\x12-\n\x07\x63ontact\x18\x02 \x01(\x0b\x32\x1c.meshtastic.protobuf.Contact\x12)\n\x05group\x18\x03 \x01(\x0b\x32\x1a.meshtastic.protobuf.Group\x12+\n\x06status\x18\x04 \x01(\x0b\x32\x1b.meshtastic.protobuf.Status\x12\'\n\x03pli\x18\x05 \x01(\x0b\x32\x18.meshtastic.protobuf.PLIH\x00\x12,\n\x04\x63hat\x18\x06 \x01(\x0b\x32\x1c.meshtastic.protobuf.GeoChatH\x00\x42\x11\n\x0fpayload_variant\"\\\n\x07GeoChat\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x02to\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bto_callsign\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_toB\x0e\n\x0c_to_callsign\"_\n\x05Group\x12-\n\x04role\x18\x01 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRole\x12\'\n\x04team\x18\x02 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\"\x19\n\x06Status\x12\x0f\n\x07\x62\x61ttery\x18\x01 \x01(\r\"4\n\x07\x43ontact\x12\x10\n\x08\x63\x61llsign\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\t\"_\n\x03PLI\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x12\x0e\n\x06\x63ourse\x18\x05 \x01(\r*\xc0\x01\n\x04Team\x12\x14\n\x10Unspecifed_Color\x10\x00\x12\t\n\x05White\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\n\n\x06Orange\x10\x03\x12\x0b\n\x07Magenta\x10\x04\x12\x07\n\x03Red\x10\x05\x12\n\n\x06Maroon\x10\x06\x12\n\n\x06Purple\x10\x07\x12\r\n\tDark_Blue\x10\x08\x12\x08\n\x04\x42lue\x10\t\x12\x08\n\x04\x43yan\x10\n\x12\x08\n\x04Teal\x10\x0b\x12\t\n\x05Green\x10\x0c\x12\x0e\n\nDark_Green\x10\r\x12\t\n\x05\x42rown\x10\x0e*\x7f\n\nMemberRole\x12\x0e\n\nUnspecifed\x10\x00\x12\x0e\n\nTeamMember\x10\x01\x12\x0c\n\x08TeamLead\x10\x02\x12\x06\n\x02HQ\x10\x03\x12\n\n\x06Sniper\x10\x04\x12\t\n\x05Medic\x10\x05\x12\x13\n\x0f\x46orwardObserver\x10\x06\x12\x07\n\x03RTO\x10\x07\x12\x06\n\x02K9\x10\x08\x42_\n\x13\x63om.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.atak_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_TEAM']._serialized_start=703 + _globals['_TEAM']._serialized_end=895 + _globals['_MEMBERROLE']._serialized_start=897 + _globals['_MEMBERROLE']._serialized_end=1024 + _globals['_TAKPACKET']._serialized_start=56 + _globals['_TAKPACKET']._serialized_end=331 + _globals['_GEOCHAT']._serialized_start=333 + _globals['_GEOCHAT']._serialized_end=425 + _globals['_GROUP']._serialized_start=427 + _globals['_GROUP']._serialized_end=522 + _globals['_STATUS']._serialized_start=524 + _globals['_STATUS']._serialized_end=549 + _globals['_CONTACT']._serialized_start=551 + _globals['_CONTACT']._serialized_end=603 + _globals['_PLI']._serialized_start=605 + _globals['_PLI']._serialized_end=700 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/atak_pb2.pyi b/meshtastic/protobuf/atak_pb2.pyi new file mode 100644 index 0000000..4471e17 --- /dev/null +++ b/meshtastic/protobuf/atak_pb2.pyi @@ -0,0 +1,470 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +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 + +class _Team: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _TeamEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Team.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Unspecifed_Color: _Team.ValueType # 0 + """ + Unspecifed + """ + White: _Team.ValueType # 1 + """ + White + """ + Yellow: _Team.ValueType # 2 + """ + Yellow + """ + Orange: _Team.ValueType # 3 + """ + Orange + """ + Magenta: _Team.ValueType # 4 + """ + Magenta + """ + Red: _Team.ValueType # 5 + """ + Red + """ + Maroon: _Team.ValueType # 6 + """ + Maroon + """ + Purple: _Team.ValueType # 7 + """ + Purple + """ + Dark_Blue: _Team.ValueType # 8 + """ + Dark Blue + """ + Blue: _Team.ValueType # 9 + """ + Blue + """ + Cyan: _Team.ValueType # 10 + """ + Cyan + """ + Teal: _Team.ValueType # 11 + """ + Teal + """ + Green: _Team.ValueType # 12 + """ + Green + """ + Dark_Green: _Team.ValueType # 13 + """ + Dark Green + """ + Brown: _Team.ValueType # 14 + """ + Brown + """ + +class Team(_Team, metaclass=_TeamEnumTypeWrapper): ... + +Unspecifed_Color: Team.ValueType # 0 +""" +Unspecifed +""" +White: Team.ValueType # 1 +""" +White +""" +Yellow: Team.ValueType # 2 +""" +Yellow +""" +Orange: Team.ValueType # 3 +""" +Orange +""" +Magenta: Team.ValueType # 4 +""" +Magenta +""" +Red: Team.ValueType # 5 +""" +Red +""" +Maroon: Team.ValueType # 6 +""" +Maroon +""" +Purple: Team.ValueType # 7 +""" +Purple +""" +Dark_Blue: Team.ValueType # 8 +""" +Dark Blue +""" +Blue: Team.ValueType # 9 +""" +Blue +""" +Cyan: Team.ValueType # 10 +""" +Cyan +""" +Teal: Team.ValueType # 11 +""" +Teal +""" +Green: Team.ValueType # 12 +""" +Green +""" +Dark_Green: Team.ValueType # 13 +""" +Dark Green +""" +Brown: Team.ValueType # 14 +""" +Brown +""" +global___Team = Team + +class _MemberRole: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _MemberRoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MemberRole.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Unspecifed: _MemberRole.ValueType # 0 + """ + Unspecifed + """ + TeamMember: _MemberRole.ValueType # 1 + """ + Team Member + """ + TeamLead: _MemberRole.ValueType # 2 + """ + Team Lead + """ + HQ: _MemberRole.ValueType # 3 + """ + Headquarters + """ + Sniper: _MemberRole.ValueType # 4 + """ + Airsoft enthusiast + """ + Medic: _MemberRole.ValueType # 5 + """ + Medic + """ + ForwardObserver: _MemberRole.ValueType # 6 + """ + ForwardObserver + """ + RTO: _MemberRole.ValueType # 7 + """ + Radio Telephone Operator + """ + K9: _MemberRole.ValueType # 8 + """ + Doggo + """ + +class MemberRole(_MemberRole, metaclass=_MemberRoleEnumTypeWrapper): + """ + Role of the group member + """ + +Unspecifed: MemberRole.ValueType # 0 +""" +Unspecifed +""" +TeamMember: MemberRole.ValueType # 1 +""" +Team Member +""" +TeamLead: MemberRole.ValueType # 2 +""" +Team Lead +""" +HQ: MemberRole.ValueType # 3 +""" +Headquarters +""" +Sniper: MemberRole.ValueType # 4 +""" +Airsoft enthusiast +""" +Medic: MemberRole.ValueType # 5 +""" +Medic +""" +ForwardObserver: MemberRole.ValueType # 6 +""" +ForwardObserver +""" +RTO: MemberRole.ValueType # 7 +""" +Radio Telephone Operator +""" +K9: MemberRole.ValueType # 8 +""" +Doggo +""" +global___MemberRole = MemberRole + +@typing.final +class TAKPacket(google.protobuf.message.Message): + """ + Packets for the official ATAK Plugin + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + IS_COMPRESSED_FIELD_NUMBER: builtins.int + CONTACT_FIELD_NUMBER: builtins.int + GROUP_FIELD_NUMBER: builtins.int + STATUS_FIELD_NUMBER: builtins.int + PLI_FIELD_NUMBER: builtins.int + CHAT_FIELD_NUMBER: builtins.int + is_compressed: builtins.bool + """ + Are the payloads strings compressed for LoRA transport? + """ + @property + def contact(self) -> global___Contact: + """ + The contact / callsign for ATAK user + """ + + @property + def group(self) -> global___Group: + """ + The group for ATAK user + """ + + @property + def status(self) -> global___Status: + """ + The status of the ATAK EUD + """ + + @property + def pli(self) -> global___PLI: + """ + TAK position report + """ + + @property + def chat(self) -> global___GeoChat: + """ + ATAK GeoChat message + """ + + def __init__( + self, + *, + is_compressed: builtins.bool = ..., + contact: global___Contact | None = ..., + group: global___Group | None = ..., + status: global___Status | None = ..., + pli: global___PLI | None = ..., + chat: global___GeoChat | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["chat", b"chat", "contact", b"contact", "group", b"group", "payload_variant", b"payload_variant", "pli", b"pli", "status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["chat", b"chat", "contact", b"contact", "group", b"group", "is_compressed", b"is_compressed", "payload_variant", b"payload_variant", "pli", b"pli", "status", b"status"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["pli", "chat"] | None: ... + +global___TAKPacket = TAKPacket + +@typing.final +class GeoChat(google.protobuf.message.Message): + """ + ATAK GeoChat message + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MESSAGE_FIELD_NUMBER: builtins.int + TO_FIELD_NUMBER: builtins.int + TO_CALLSIGN_FIELD_NUMBER: builtins.int + message: builtins.str + """ + The text message + """ + to: builtins.str + """ + Uid recipient of the message + """ + to_callsign: builtins.str + """ + Callsign of the recipient for the message + """ + def __init__( + self, + *, + message: builtins.str = ..., + to: builtins.str | None = ..., + to_callsign: builtins.str | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_to", b"_to", "_to_callsign", b"_to_callsign", "to", b"to", "to_callsign", b"to_callsign"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_to", b"_to", "_to_callsign", b"_to_callsign", "message", b"message", "to", b"to", "to_callsign", b"to_callsign"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_to", b"_to"]) -> typing.Literal["to"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_to_callsign", b"_to_callsign"]) -> typing.Literal["to_callsign"] | None: ... + +global___GeoChat = GeoChat + +@typing.final +class Group(google.protobuf.message.Message): + """ + ATAK Group + <__group role='Team Member' name='Cyan'/> + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ROLE_FIELD_NUMBER: builtins.int + TEAM_FIELD_NUMBER: builtins.int + role: global___MemberRole.ValueType + """ + Role of the group member + """ + team: global___Team.ValueType + """ + Team (color) + Default Cyan + """ + def __init__( + self, + *, + role: global___MemberRole.ValueType = ..., + team: global___Team.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["role", b"role", "team", b"team"]) -> None: ... + +global___Group = Group + +@typing.final +class Status(google.protobuf.message.Message): + """ + ATAK EUD Status + + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BATTERY_FIELD_NUMBER: builtins.int + battery: builtins.int + """ + Battery level + """ + def __init__( + self, + *, + battery: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["battery", b"battery"]) -> None: ... + +global___Status = Status + +@typing.final +class Contact(google.protobuf.message.Message): + """ + ATAK Contact + + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CALLSIGN_FIELD_NUMBER: builtins.int + DEVICE_CALLSIGN_FIELD_NUMBER: builtins.int + callsign: builtins.str + """ + Callsign + """ + device_callsign: builtins.str + """ + Device callsign + + IP address of endpoint in integer form (0.0.0.0 default) + """ + def __init__( + self, + *, + callsign: builtins.str = ..., + device_callsign: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["callsign", b"callsign", "device_callsign", b"device_callsign"]) -> None: ... + +global___Contact = Contact + +@typing.final +class PLI(google.protobuf.message.Message): + """ + Position Location Information from ATAK + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LATITUDE_I_FIELD_NUMBER: builtins.int + LONGITUDE_I_FIELD_NUMBER: builtins.int + ALTITUDE_FIELD_NUMBER: builtins.int + SPEED_FIELD_NUMBER: builtins.int + COURSE_FIELD_NUMBER: builtins.int + latitude_i: builtins.int + """ + The new preferred location encoding, multiply by 1e-7 to get degrees + in floating point + """ + longitude_i: builtins.int + """ + The new preferred location encoding, multiply by 1e-7 to get degrees + in floating point + """ + altitude: builtins.int + """ + Altitude (ATAK prefers HAE) + """ + speed: builtins.int + """ + Speed + """ + course: builtins.int + """ + Course in degrees + """ + def __init__( + self, + *, + latitude_i: builtins.int = ..., + longitude_i: builtins.int = ..., + altitude: builtins.int = ..., + speed: builtins.int = ..., + course: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["altitude", b"altitude", "course", b"course", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i", "speed", b"speed"]) -> None: ... + +global___PLI = PLI diff --git a/meshtastic/protobuf/cannedmessages_pb2.py b/meshtastic/protobuf/cannedmessages_pb2.py new file mode 100644 index 0000000..2b32b47 --- /dev/null +++ b/meshtastic/protobuf/cannedmessages_pb2.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/cannedmessages.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(meshtastic/protobuf/cannedmessages.proto\x12\x13meshtastic.protobuf\"-\n\x19\x43\x61nnedMessageModuleConfig\x12\x10\n\x08messages\x18\x01 \x01(\tBn\n\x13\x63om.geeksville.meshB\x19\x43\x61nnedMessageConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.cannedmessages_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\031CannedMessageConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_CANNEDMESSAGEMODULECONFIG']._serialized_start=65 + _globals['_CANNEDMESSAGEMODULECONFIG']._serialized_end=110 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/cannedmessages_pb2.pyi b/meshtastic/protobuf/cannedmessages_pb2.pyi new file mode 100644 index 0000000..33c5e2b --- /dev/null +++ b/meshtastic/protobuf/cannedmessages_pb2.pyi @@ -0,0 +1,33 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class CannedMessageModuleConfig(google.protobuf.message.Message): + """ + Canned message module configuration. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MESSAGES_FIELD_NUMBER: builtins.int + messages: builtins.str + """ + Predefined messages for canned message module separated by '|' characters. + """ + def __init__( + self, + *, + messages: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["messages", b"messages"]) -> None: ... + +global___CannedMessageModuleConfig = CannedMessageModuleConfig diff --git a/meshtastic/protobuf/channel_pb2.py b/meshtastic/protobuf/channel_pb2.py new file mode 100644 index 0000000..0980137 --- /dev/null +++ b/meshtastic/protobuf/channel_pb2.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/channel.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/channel.proto\x12\x13meshtastic.protobuf\"\xc1\x01\n\x0f\x43hannelSettings\x12\x17\n\x0b\x63hannel_num\x18\x01 \x01(\rB\x02\x18\x01\x12\x0b\n\x03psk\x18\x02 \x01(\x0c\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\n\n\x02id\x18\x04 \x01(\x07\x12\x16\n\x0euplink_enabled\x18\x05 \x01(\x08\x12\x18\n\x10\x64ownlink_enabled\x18\x06 \x01(\x08\x12<\n\x0fmodule_settings\x18\x07 \x01(\x0b\x32#.meshtastic.protobuf.ModuleSettings\"E\n\x0eModuleSettings\x12\x1a\n\x12position_precision\x18\x01 \x01(\r\x12\x17\n\x0fis_client_muted\x18\x02 \x01(\x08\"\xb3\x01\n\x07\x43hannel\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x36\n\x08settings\x18\x02 \x01(\x0b\x32$.meshtastic.protobuf.ChannelSettings\x12/\n\x04role\x18\x03 \x01(\x0e\x32!.meshtastic.protobuf.Channel.Role\"0\n\x04Role\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07PRIMARY\x10\x01\x12\r\n\tSECONDARY\x10\x02\x42\x62\n\x13\x63om.geeksville.meshB\rChannelProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.channel_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\rChannelProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _CHANNELSETTINGS.fields_by_name['channel_num']._options = None + _CHANNELSETTINGS.fields_by_name['channel_num']._serialized_options = b'\030\001' + _globals['_CHANNELSETTINGS']._serialized_start=59 + _globals['_CHANNELSETTINGS']._serialized_end=252 + _globals['_MODULESETTINGS']._serialized_start=254 + _globals['_MODULESETTINGS']._serialized_end=323 + _globals['_CHANNEL']._serialized_start=326 + _globals['_CHANNEL']._serialized_end=505 + _globals['_CHANNEL_ROLE']._serialized_start=457 + _globals['_CHANNEL_ROLE']._serialized_end=505 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/channel_pb2.pyi b/meshtastic/protobuf/channel_pb2.pyi new file mode 100644 index 0000000..208ed7b --- /dev/null +++ b/meshtastic/protobuf/channel_pb2.pyi @@ -0,0 +1,234 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +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.final +class ChannelSettings(google.protobuf.message.Message): + """ + This information can be encoded as a QRcode/url so that other users can configure + their radio to join the same channel. + A note about how channel names are shown to users: channelname-X + poundsymbol is a prefix used to indicate this is a channel name (idea from @professr). + Where X is a letter from A-Z (base 26) representing a hash of the PSK for this + channel - so that if the user changes anything about the channel (which does + force a new PSK) this letter will also change. Thus preventing user confusion if + two friends try to type in a channel name of "BobsChan" and then can't talk + because their PSKs will be different. + The PSK is hashed into this letter by "0x41 + [xor all bytes of the psk ] modulo 26" + This also allows the option of someday if people have the PSK off (zero), the + users COULD type in a channel name and be able to talk. + FIXME: Add description of multi-channel support and how primary vs secondary channels are used. + FIXME: explain how apps use channels for security. + explain how remote settings and remote gpio are managed as an example + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CHANNEL_NUM_FIELD_NUMBER: builtins.int + PSK_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + ID_FIELD_NUMBER: builtins.int + UPLINK_ENABLED_FIELD_NUMBER: builtins.int + DOWNLINK_ENABLED_FIELD_NUMBER: builtins.int + MODULE_SETTINGS_FIELD_NUMBER: builtins.int + channel_num: builtins.int + """ + Deprecated in favor of LoraConfig.channel_num + """ + psk: builtins.bytes + """ + A simple pre-shared key for now for crypto. + Must be either 0 bytes (no crypto), 16 bytes (AES128), or 32 bytes (AES256). + A special shorthand is used for 1 byte long psks. + These psks should be treated as only minimally secure, + because they are listed in this source code. + Those bytes are mapped using the following scheme: + `0` = No crypto + `1` = The special "default" channel key: {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0x01} + `2` through 10 = The default channel key, except with 1 through 9 added to the last byte. + Shown to user as simple1 through 10 + """ + name: builtins.str + """ + A SHORT name that will be packed into the URL. + Less than 12 bytes. + Something for end users to call the channel + If this is the empty string it is assumed that this channel + is the special (minimally secure) "Default"channel. + In user interfaces it should be rendered as a local language translation of "X". + For channel_num hashing empty string will be treated as "X". + Where "X" is selected based on the English words listed above for ModemPreset + """ + id: builtins.int + """ + Used to construct a globally unique channel ID. + The full globally unique ID will be: "name.id" where ID is shown as base36. + Assuming that the number of meshtastic users is below 20K (true for a long time) + the chance of this 64 bit random number colliding with anyone else is super low. + And the penalty for collision is low as well, it just means that anyone trying to decrypt channel messages might need to + try multiple candidate channels. + Any time a non wire compatible change is made to a channel, this field should be regenerated. + There are a small number of 'special' globally known (and fairly) insecure standard channels. + Those channels do not have a numeric id included in the settings, but instead it is pulled from + a table of well known IDs. + (see Well Known Channels FIXME) + """ + uplink_enabled: builtins.bool + """ + If true, messages on the mesh will be sent to the *public* internet by any gateway ndoe + """ + downlink_enabled: builtins.bool + """ + If true, messages seen on the internet will be forwarded to the local mesh. + """ + @property + def module_settings(self) -> global___ModuleSettings: + """ + Per-channel module settings. + """ + + def __init__( + self, + *, + channel_num: builtins.int = ..., + psk: builtins.bytes = ..., + name: builtins.str = ..., + id: builtins.int = ..., + uplink_enabled: builtins.bool = ..., + downlink_enabled: builtins.bool = ..., + module_settings: global___ModuleSettings | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["module_settings", b"module_settings"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel_num", b"channel_num", "downlink_enabled", b"downlink_enabled", "id", b"id", "module_settings", b"module_settings", "name", b"name", "psk", b"psk", "uplink_enabled", b"uplink_enabled"]) -> None: ... + +global___ChannelSettings = ChannelSettings + +@typing.final +class ModuleSettings(google.protobuf.message.Message): + """ + This message is specifically for modules to store per-channel configuration data. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POSITION_PRECISION_FIELD_NUMBER: builtins.int + IS_CLIENT_MUTED_FIELD_NUMBER: builtins.int + position_precision: builtins.int + """ + Bits of precision for the location sent in position packets. + """ + is_client_muted: builtins.bool + """ + Controls whether or not the phone / clients should mute the current channel + Useful for noisy public channels you don't necessarily want to disable + """ + def __init__( + self, + *, + position_precision: builtins.int = ..., + is_client_muted: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["is_client_muted", b"is_client_muted", "position_precision", b"position_precision"]) -> None: ... + +global___ModuleSettings = ModuleSettings + +@typing.final +class Channel(google.protobuf.message.Message): + """ + A pair of a channel number, mode and the (sharable) settings for that channel + """ + + 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[Channel._Role.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DISABLED: Channel._Role.ValueType # 0 + """ + This channel is not in use right now + """ + PRIMARY: Channel._Role.ValueType # 1 + """ + This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY + """ + SECONDARY: Channel._Role.ValueType # 2 + """ + Secondary channels are only used for encryption/decryption/authentication purposes. + Their radio settings (freq etc) are ignored, only psk is used. + """ + + class Role(_Role, metaclass=_RoleEnumTypeWrapper): + """ + How this channel is being used (or not). + Note: this field is an enum to give us options for the future. + In particular, someday we might make a 'SCANNING' option. + SCANNING channels could have different frequencies and the radio would + occasionally check that freq to see if anything is being transmitted. + For devices that have multiple physical radios attached, we could keep multiple PRIMARY/SCANNING channels active at once to allow + cross band routing as needed. + If a device has only a single radio (the common case) only one channel can be PRIMARY at a time + (but any number of SECONDARY channels can't be sent received on that common frequency) + """ + + DISABLED: Channel.Role.ValueType # 0 + """ + This channel is not in use right now + """ + PRIMARY: Channel.Role.ValueType # 1 + """ + This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY + """ + SECONDARY: Channel.Role.ValueType # 2 + """ + Secondary channels are only used for encryption/decryption/authentication purposes. + Their radio settings (freq etc) are ignored, only psk is used. + """ + + INDEX_FIELD_NUMBER: builtins.int + SETTINGS_FIELD_NUMBER: builtins.int + ROLE_FIELD_NUMBER: builtins.int + index: builtins.int + """ + The index of this channel in the channel table (from 0 to MAX_NUM_CHANNELS-1) + (Someday - not currently implemented) An index of -1 could be used to mean "set by name", + in which case the target node will find and set the channel by settings.name. + """ + role: global___Channel.Role.ValueType + """ + TODO: REPLACE + """ + @property + def settings(self) -> global___ChannelSettings: + """ + The new settings, or NULL to disable that channel + """ + + def __init__( + self, + *, + index: builtins.int = ..., + settings: global___ChannelSettings | None = ..., + role: global___Channel.Role.ValueType = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["settings", b"settings"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["index", b"index", "role", b"role", "settings", b"settings"]) -> None: ... + +global___Channel = Channel diff --git a/meshtastic/protobuf/clientonly_pb2.py b/meshtastic/protobuf/clientonly_pb2.py new file mode 100644 index 0000000..702bca7 --- /dev/null +++ b/meshtastic/protobuf/clientonly_pb2.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/clientonly.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import localonly_pb2 as meshtastic_dot_protobuf_dot_localonly__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/clientonly.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/localonly.proto\"\x9f\x02\n\rDeviceProfile\x12\x16\n\tlong_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nshort_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x63hannel_url\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x06\x63onfig\x18\x04 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfigH\x03\x88\x01\x01\x12\x42\n\rmodule_config\x18\x05 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfigH\x04\x88\x01\x01\x42\x0c\n\n_long_nameB\r\n\x0b_short_nameB\x0e\n\x0c_channel_urlB\t\n\x07_configB\x10\n\x0e_module_configBe\n\x13\x63om.geeksville.meshB\x10\x43lientOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.clientonly_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\020ClientOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_DEVICEPROFILE']._serialized_start=99 + _globals['_DEVICEPROFILE']._serialized_end=386 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/clientonly_pb2.pyi b/meshtastic/protobuf/clientonly_pb2.pyi new file mode 100644 index 0000000..7b3028c --- /dev/null +++ b/meshtastic/protobuf/clientonly_pb2.pyi @@ -0,0 +1,74 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import meshtastic.protobuf.localonly_pb2 +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class DeviceProfile(google.protobuf.message.Message): + """ + This abstraction is used to contain any configuration for provisioning a node on any client. + It is useful for importing and exporting configurations. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LONG_NAME_FIELD_NUMBER: builtins.int + SHORT_NAME_FIELD_NUMBER: builtins.int + CHANNEL_URL_FIELD_NUMBER: builtins.int + CONFIG_FIELD_NUMBER: builtins.int + MODULE_CONFIG_FIELD_NUMBER: builtins.int + long_name: builtins.str + """ + Long name for the node + """ + short_name: builtins.str + """ + Short name of the node + """ + channel_url: builtins.str + """ + The url of the channels from our node + """ + @property + def config(self) -> meshtastic.protobuf.localonly_pb2.LocalConfig: + """ + The Config of the node + """ + + @property + def module_config(self) -> meshtastic.protobuf.localonly_pb2.LocalModuleConfig: + """ + The ModuleConfig of the node + """ + + def __init__( + self, + *, + long_name: builtins.str | None = ..., + short_name: builtins.str | None = ..., + channel_url: builtins.str | None = ..., + config: meshtastic.protobuf.localonly_pb2.LocalConfig | None = ..., + module_config: meshtastic.protobuf.localonly_pb2.LocalModuleConfig | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_channel_url", b"_channel_url", "_config", b"_config", "_long_name", b"_long_name", "_module_config", b"_module_config", "_short_name", b"_short_name", "channel_url", b"channel_url", "config", b"config", "long_name", b"long_name", "module_config", b"module_config", "short_name", b"short_name"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_channel_url", b"_channel_url", "_config", b"_config", "_long_name", b"_long_name", "_module_config", b"_module_config", "_short_name", b"_short_name", "channel_url", b"channel_url", "config", b"config", "long_name", b"long_name", "module_config", b"module_config", "short_name", b"short_name"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_channel_url", b"_channel_url"]) -> typing.Literal["channel_url"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_config", b"_config"]) -> typing.Literal["config"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_long_name", b"_long_name"]) -> typing.Literal["long_name"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_module_config", b"_module_config"]) -> typing.Literal["module_config"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_short_name", b"_short_name"]) -> typing.Literal["short_name"] | None: ... + +global___DeviceProfile = DeviceProfile diff --git a/meshtastic/protobuf/config_pb2.py b/meshtastic/protobuf/config_pb2.py new file mode 100644 index 0000000..c385527 --- /dev/null +++ b/meshtastic/protobuf/config_pb2.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/config.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\"\xed \n\x06\x43onfig\x12:\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfigH\x00\x12>\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfigH\x00\x12\x38\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfigH\x00\x12<\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfigH\x00\x12<\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfigH\x00\x12\x36\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigH\x00\x12@\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfigH\x00\x1a\xa3\x05\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x16\n\x0eserial_enabled\x18\x02 \x01(\x08\x12\x19\n\x11\x64\x65\x62ug_log_enabled\x18\x03 \x01(\x08\x12\x13\n\x0b\x62utton_gpio\x18\x04 \x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 \x01(\r\x12R\n\x10rebroadcast_mode\x18\x06 \x01(\x0e\x32\x38.meshtastic.protobuf.Config.DeviceConfig.RebroadcastMode\x12 \n\x18node_info_broadcast_secs\x18\x07 \x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 \x01(\x08\x12\x12\n\nis_managed\x18\t \x01(\x08\x12\x1c\n\x14\x64isable_triple_click\x18\n \x01(\x08\x12\r\n\x05tzdef\x18\x0b \x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c \x01(\x08\"\xaa\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x11\n\rROUTER_CLIENT\x10\x03\x12\x0c\n\x08REPEATER\x10\x04\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x12\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\"Q\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x1a\x9a\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 \x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 \x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 \x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 \x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t \x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n \x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b \x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x0c \x01(\r\x12\x44\n\x08gps_mode\x18\r \x01(\x0e\x32\x32.meshtastic.protobuf.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10 \x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\xea\x01\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 \x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 \x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 \x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 \x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 \x01(\r\x12\"\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\r\x1a\x90\x03\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 \x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 \x01(\t\x12\x12\n\nntp_server\x18\x05 \x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 \x01(\x08\x12K\n\x0c\x61\x64\x64ress_mode\x18\x07 \x01(\x0e\x32\x35.meshtastic.protobuf.Config.NetworkConfig.AddressMode\x12I\n\x0bipv4_config\x18\x08 \x01(\x0b\x32\x34.meshtastic.protobuf.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t \x01(\t\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 \x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 \x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 \x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\x1a\xe2\x05\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12Q\n\ngps_format\x18\x02 \x01(\x0e\x32=.meshtastic.protobuf.Config.DisplayConfig.GpsCoordinateFormat\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x19\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x12\x13\n\x0b\x66lip_screen\x18\x05 \x01(\x08\x12\x45\n\x05units\x18\x06 \x01(\x0e\x32\x36.meshtastic.protobuf.Config.DisplayConfig.DisplayUnits\x12@\n\x04oled\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.DisplayConfig.OledType\x12J\n\x0b\x64isplaymode\x18\x08 \x01(\x0e\x32\x35.meshtastic.protobuf.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n \x01(\x08\"M\n\x13GpsCoordinateFormat\x12\x07\n\x03\x44\x45\x43\x10\x00\x12\x07\n\x03\x44MS\x10\x01\x12\x07\n\x03UTM\x10\x02\x12\x08\n\x04MGRS\x10\x03\x12\x07\n\x03OLC\x10\x04\x12\x08\n\x04OSGR\x10\x05\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"M\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\x1a\xc2\x06\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01 \x01(\x08\x12H\n\x0cmodem_preset\x18\x02 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03 \x01(\r\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x05 \x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 \x01(\x02\x12\x41\n\x06region\x18\x07 \x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n \x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b \x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c \x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r \x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e \x01(\x02\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\"\xcd\x01\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\"\x94\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x12\n\x0eVERY_LONG_SLOW\x10\x02\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x1a\xb6\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x45\n\x04mode\x18\x02 \x01(\x0e\x32\x37.meshtastic.protobuf.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03 \x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x42\x11\n\x0fpayload_variantBa\n\x13\x63om.geeksville.meshB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.config_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\014ConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._options = None + _CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._serialized_options = b'\030\001' + _CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._options = None + _CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._serialized_options = b'\030\001' + _globals['_CONFIG']._serialized_start=58 + _globals['_CONFIG']._serialized_end=4263 + _globals['_CONFIG_DEVICECONFIG']._serialized_start=497 + _globals['_CONFIG_DEVICECONFIG']._serialized_end=1172 + _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_start=919 + _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_end=1089 + _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_start=1091 + _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_end=1172 + _globals['_CONFIG_POSITIONCONFIG']._serialized_start=1175 + _globals['_CONFIG_POSITIONCONFIG']._serialized_end=1841 + _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_start=1615 + _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_end=1786 + _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_start=1788 + _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_end=1841 + _globals['_CONFIG_POWERCONFIG']._serialized_start=1844 + _globals['_CONFIG_POWERCONFIG']._serialized_end=2078 + _globals['_CONFIG_NETWORKCONFIG']._serialized_start=2081 + _globals['_CONFIG_NETWORKCONFIG']._serialized_end=2481 + _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_start=2374 + _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_end=2444 + _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_start=2446 + _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_end=2481 + _globals['_CONFIG_DISPLAYCONFIG']._serialized_start=2484 + _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=3222 + _globals['_CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT']._serialized_start=2957 + _globals['_CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT']._serialized_end=3034 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_start=3036 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_end=3076 + _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_start=3078 + _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3155 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3157 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=3222 + _globals['_CONFIG_LORACONFIG']._serialized_start=3225 + _globals['_CONFIG_LORACONFIG']._serialized_end=4059 + _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=3703 + _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=3908 + _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=3911 + _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=4059 + _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=4062 + _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=4244 + _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=4188 + _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=4244 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/config_pb2.pyi b/meshtastic/protobuf/config_pb2.pyi new file mode 100644 index 0000000..49d64de --- /dev/null +++ b/meshtastic/protobuf/config_pb2.pyi @@ -0,0 +1,1511 @@ +""" +@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.final +class Config(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.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 + LED_HEARTBEAT_DISABLED_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. + """ + led_heartbeat_disabled: builtins.bool + """ + If true, disable the default blinking LED (LED_PIN) behavior on the device + """ + 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 = ..., + led_heartbeat_disabled: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.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", "led_heartbeat_disabled", b"led_heartbeat_disabled", "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.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.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.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.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.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.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.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 + """ + rsyslog_server: builtins.str + """ + rsyslog Server and Port + """ + @property + def ipv4_config(self) -> global___Config.NetworkConfig.IpV4Config: + """ + struct to keep static address + """ + + 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.Literal["ipv4_config", b"ipv4_config"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.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.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.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.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< 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. + """ + 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. + """ + @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) + """ + + 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.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.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.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.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.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.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["device", "position", "power", "network", "display", "lora", "bluetooth"] | None: ... + +global___Config = Config diff --git a/meshtastic/protobuf/connection_status_pb2.py b/meshtastic/protobuf/connection_status_pb2.py new file mode 100644 index 0000000..f5dfa33 --- /dev/null +++ b/meshtastic/protobuf/connection_status_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/connection_status.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+meshtastic/protobuf/connection_status.proto\x12\x13meshtastic.protobuf\"\xd5\x02\n\x16\x44\x65viceConnectionStatus\x12<\n\x04wifi\x18\x01 \x01(\x0b\x32).meshtastic.protobuf.WifiConnectionStatusH\x00\x88\x01\x01\x12\x44\n\x08\x65thernet\x18\x02 \x01(\x0b\x32-.meshtastic.protobuf.EthernetConnectionStatusH\x01\x88\x01\x01\x12\x46\n\tbluetooth\x18\x03 \x01(\x0b\x32..meshtastic.protobuf.BluetoothConnectionStatusH\x02\x88\x01\x01\x12@\n\x06serial\x18\x04 \x01(\x0b\x32+.meshtastic.protobuf.SerialConnectionStatusH\x03\x88\x01\x01\x42\x07\n\x05_wifiB\x0b\n\t_ethernetB\x0c\n\n_bluetoothB\t\n\x07_serial\"p\n\x14WifiConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x0c\n\x04rssi\x18\x03 \x01(\x05\"X\n\x18\x45thernetConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\"{\n\x17NetworkConnectionStatus\x12\x12\n\nip_address\x18\x01 \x01(\x07\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x12\x19\n\x11is_mqtt_connected\x18\x03 \x01(\x08\x12\x1b\n\x13is_syslog_connected\x18\x04 \x01(\x08\"L\n\x19\x42luetoothConnectionStatus\x12\x0b\n\x03pin\x18\x01 \x01(\r\x12\x0c\n\x04rssi\x18\x02 \x01(\x05\x12\x14\n\x0cis_connected\x18\x03 \x01(\x08\"<\n\x16SerialConnectionStatus\x12\x0c\n\x04\x62\x61ud\x18\x01 \x01(\r\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x42\x65\n\x13\x63om.geeksville.meshB\x10\x43onnStatusProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.connection_status_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\020ConnStatusProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_DEVICECONNECTIONSTATUS']._serialized_start=69 + _globals['_DEVICECONNECTIONSTATUS']._serialized_end=410 + _globals['_WIFICONNECTIONSTATUS']._serialized_start=412 + _globals['_WIFICONNECTIONSTATUS']._serialized_end=524 + _globals['_ETHERNETCONNECTIONSTATUS']._serialized_start=526 + _globals['_ETHERNETCONNECTIONSTATUS']._serialized_end=614 + _globals['_NETWORKCONNECTIONSTATUS']._serialized_start=616 + _globals['_NETWORKCONNECTIONSTATUS']._serialized_end=739 + _globals['_BLUETOOTHCONNECTIONSTATUS']._serialized_start=741 + _globals['_BLUETOOTHCONNECTIONSTATUS']._serialized_end=817 + _globals['_SERIALCONNECTIONSTATUS']._serialized_start=819 + _globals['_SERIALCONNECTIONSTATUS']._serialized_end=879 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/connection_status_pb2.pyi b/meshtastic/protobuf/connection_status_pb2.pyi new file mode 100644 index 0000000..7b69140 --- /dev/null +++ b/meshtastic/protobuf/connection_status_pb2.pyi @@ -0,0 +1,228 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class DeviceConnectionStatus(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WIFI_FIELD_NUMBER: builtins.int + ETHERNET_FIELD_NUMBER: builtins.int + BLUETOOTH_FIELD_NUMBER: builtins.int + SERIAL_FIELD_NUMBER: builtins.int + @property + def wifi(self) -> global___WifiConnectionStatus: + """ + WiFi Status + """ + + @property + def ethernet(self) -> global___EthernetConnectionStatus: + """ + WiFi Status + """ + + @property + def bluetooth(self) -> global___BluetoothConnectionStatus: + """ + Bluetooth Status + """ + + @property + def serial(self) -> global___SerialConnectionStatus: + """ + Serial Status + """ + + def __init__( + self, + *, + wifi: global___WifiConnectionStatus | None = ..., + ethernet: global___EthernetConnectionStatus | None = ..., + bluetooth: global___BluetoothConnectionStatus | None = ..., + serial: global___SerialConnectionStatus | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_bluetooth", b"_bluetooth", "_ethernet", b"_ethernet", "_serial", b"_serial", "_wifi", b"_wifi", "bluetooth", b"bluetooth", "ethernet", b"ethernet", "serial", b"serial", "wifi", b"wifi"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_bluetooth", b"_bluetooth", "_ethernet", b"_ethernet", "_serial", b"_serial", "_wifi", b"_wifi", "bluetooth", b"bluetooth", "ethernet", b"ethernet", "serial", b"serial", "wifi", b"wifi"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_bluetooth", b"_bluetooth"]) -> typing.Literal["bluetooth"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_ethernet", b"_ethernet"]) -> typing.Literal["ethernet"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_serial", b"_serial"]) -> typing.Literal["serial"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_wifi", b"_wifi"]) -> typing.Literal["wifi"] | None: ... + +global___DeviceConnectionStatus = DeviceConnectionStatus + +@typing.final +class WifiConnectionStatus(google.protobuf.message.Message): + """ + WiFi connection status + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STATUS_FIELD_NUMBER: builtins.int + SSID_FIELD_NUMBER: builtins.int + RSSI_FIELD_NUMBER: builtins.int + ssid: builtins.str + """ + WiFi access point SSID + """ + rssi: builtins.int + """ + RSSI of wireless connection + """ + @property + def status(self) -> global___NetworkConnectionStatus: + """ + Connection status + """ + + def __init__( + self, + *, + status: global___NetworkConnectionStatus | None = ..., + ssid: builtins.str = ..., + rssi: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["rssi", b"rssi", "ssid", b"ssid", "status", b"status"]) -> None: ... + +global___WifiConnectionStatus = WifiConnectionStatus + +@typing.final +class EthernetConnectionStatus(google.protobuf.message.Message): + """ + Ethernet connection status + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STATUS_FIELD_NUMBER: builtins.int + @property + def status(self) -> global___NetworkConnectionStatus: + """ + Connection status + """ + + def __init__( + self, + *, + status: global___NetworkConnectionStatus | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["status", b"status"]) -> None: ... + +global___EthernetConnectionStatus = EthernetConnectionStatus + +@typing.final +class NetworkConnectionStatus(google.protobuf.message.Message): + """ + Ethernet or WiFi connection status + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + IP_ADDRESS_FIELD_NUMBER: builtins.int + IS_CONNECTED_FIELD_NUMBER: builtins.int + IS_MQTT_CONNECTED_FIELD_NUMBER: builtins.int + IS_SYSLOG_CONNECTED_FIELD_NUMBER: builtins.int + ip_address: builtins.int + """ + IP address of device + """ + is_connected: builtins.bool + """ + Whether the device has an active connection or not + """ + is_mqtt_connected: builtins.bool + """ + Whether the device has an active connection to an MQTT broker or not + """ + is_syslog_connected: builtins.bool + """ + Whether the device is actively remote syslogging or not + """ + def __init__( + self, + *, + ip_address: builtins.int = ..., + is_connected: builtins.bool = ..., + is_mqtt_connected: builtins.bool = ..., + is_syslog_connected: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ip_address", b"ip_address", "is_connected", b"is_connected", "is_mqtt_connected", b"is_mqtt_connected", "is_syslog_connected", b"is_syslog_connected"]) -> None: ... + +global___NetworkConnectionStatus = NetworkConnectionStatus + +@typing.final +class BluetoothConnectionStatus(google.protobuf.message.Message): + """ + Bluetooth connection status + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PIN_FIELD_NUMBER: builtins.int + RSSI_FIELD_NUMBER: builtins.int + IS_CONNECTED_FIELD_NUMBER: builtins.int + pin: builtins.int + """ + The pairing PIN for bluetooth + """ + rssi: builtins.int + """ + RSSI of bluetooth connection + """ + is_connected: builtins.bool + """ + Whether the device has an active connection or not + """ + def __init__( + self, + *, + pin: builtins.int = ..., + rssi: builtins.int = ..., + is_connected: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["is_connected", b"is_connected", "pin", b"pin", "rssi", b"rssi"]) -> None: ... + +global___BluetoothConnectionStatus = BluetoothConnectionStatus + +@typing.final +class SerialConnectionStatus(google.protobuf.message.Message): + """ + Serial connection status + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BAUD_FIELD_NUMBER: builtins.int + IS_CONNECTED_FIELD_NUMBER: builtins.int + baud: builtins.int + """ + Serial baud rate + """ + is_connected: builtins.bool + """ + Whether the device has an active connection or not + """ + def __init__( + self, + *, + baud: builtins.int = ..., + is_connected: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["baud", b"baud", "is_connected", b"is_connected"]) -> None: ... + +global___SerialConnectionStatus = SerialConnectionStatus diff --git a/meshtastic/protobuf/deviceonly_pb2.py b/meshtastic/protobuf/deviceonly_pb2.py new file mode 100644 index 0000000..9e7f9d4 --- /dev/null +++ b/meshtastic/protobuf/deviceonly_pb2.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/deviceonly.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import channel_pb2 as meshtastic_dot_protobuf_dot_channel__pb2 +from meshtastic.protobuf import localonly_pb2 as meshtastic_dot_protobuf_dot_localonly__pb2 +from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2 +from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2 +from meshtastic.protobuf import telemetry_pb2 as meshtastic_dot_protobuf_dot_telemetry__pb2 +import nanopb_pb2 as nanopb__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/deviceonly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a\x0cnanopb.proto\"\x99\x01\n\x0cPositionLite\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12@\n\x0flocation_source\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\"\xa1\x02\n\x0cNodeInfoLite\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x33\n\x08position\x18\x03 \x01(\x0b\x32!.meshtastic.protobuf.PositionLite\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x11\n\thops_away\x18\t \x01(\r\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\"\x82\x04\n\x0b\x44\x65viceState\x12\x30\n\x07my_node\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfo\x12(\n\x05owner\x18\x03 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x36\n\rreceive_queue\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x0f\n\x07version\x18\x08 \x01(\r\x12\x38\n\x0frx_text_message\x18\x07 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x13\n\x07no_save\x18\t \x01(\x08\x42\x02\x18\x01\x12\x15\n\rdid_gps_reset\x18\x0b \x01(\x08\x12\x34\n\x0brx_waypoint\x18\x0c \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12M\n\x19node_remote_hardware_pins\x18\r \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePin\x12\x63\n\x0cnode_db_lite\x18\x0e \x03(\x0b\x32!.meshtastic.protobuf.NodeInfoLiteB*\x92?\'\x92\x01$std::vector\"N\n\x0b\x43hannelFile\x12.\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1c.meshtastic.protobuf.Channel\x12\x0f\n\x07version\x18\x02 \x01(\r\"\xb2\x02\n\x08OEMStore\x12\x16\n\x0eoem_icon_width\x18\x01 \x01(\r\x12\x17\n\x0foem_icon_height\x18\x02 \x01(\r\x12\x15\n\roem_icon_bits\x18\x03 \x01(\x0c\x12\x32\n\x08oem_font\x18\x04 \x01(\x0e\x32 .meshtastic.protobuf.ScreenFonts\x12\x10\n\x08oem_text\x18\x05 \x01(\t\x12\x13\n\x0boem_aes_key\x18\x06 \x01(\x0c\x12:\n\x10oem_local_config\x18\x07 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfig\x12G\n\x17oem_local_module_config\x18\x08 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfig*>\n\x0bScreenFonts\x12\x0e\n\nFONT_SMALL\x10\x00\x12\x0f\n\x0b\x46ONT_MEDIUM\x10\x01\x12\x0e\n\nFONT_LARGE\x10\x02\x42m\n\x13\x63om.geeksville.meshB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x92?\x0b\xc2\x01\x08b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.deviceonly_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000\222?\013\302\001\010' + _DEVICESTATE.fields_by_name['no_save']._options = None + _DEVICESTATE.fields_by_name['no_save']._serialized_options = b'\030\001' + _DEVICESTATE.fields_by_name['node_db_lite']._options = None + _DEVICESTATE.fields_by_name['node_db_lite']._serialized_options = b'\222?\'\222\001$std::vector' + _globals['_SCREENFONTS']._serialized_start=1611 + _globals['_SCREENFONTS']._serialized_end=1673 + _globals['_POSITIONLITE']._serialized_start=258 + _globals['_POSITIONLITE']._serialized_end=411 + _globals['_NODEINFOLITE']._serialized_start=414 + _globals['_NODEINFOLITE']._serialized_end=703 + _globals['_DEVICESTATE']._serialized_start=706 + _globals['_DEVICESTATE']._serialized_end=1220 + _globals['_CHANNELFILE']._serialized_start=1222 + _globals['_CHANNELFILE']._serialized_end=1300 + _globals['_OEMSTORE']._serialized_start=1303 + _globals['_OEMSTORE']._serialized_end=1609 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/deviceonly_pb2.pyi b/meshtastic/protobuf/deviceonly_pb2.pyi new file mode 100644 index 0000000..c0ca537 --- /dev/null +++ b/meshtastic/protobuf/deviceonly_pb2.pyi @@ -0,0 +1,400 @@ +""" +@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 meshtastic.protobuf.channel_pb2 +import meshtastic.protobuf.localonly_pb2 +import meshtastic.protobuf.mesh_pb2 +import meshtastic.protobuf.telemetry_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _ScreenFonts: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _ScreenFontsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ScreenFonts.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + FONT_SMALL: _ScreenFonts.ValueType # 0 + """ + TODO: REPLACE + """ + FONT_MEDIUM: _ScreenFonts.ValueType # 1 + """ + TODO: REPLACE + """ + FONT_LARGE: _ScreenFonts.ValueType # 2 + """ + TODO: REPLACE + """ + +class ScreenFonts(_ScreenFonts, metaclass=_ScreenFontsEnumTypeWrapper): + """ + Font sizes for the device screen + """ + +FONT_SMALL: ScreenFonts.ValueType # 0 +""" +TODO: REPLACE +""" +FONT_MEDIUM: ScreenFonts.ValueType # 1 +""" +TODO: REPLACE +""" +FONT_LARGE: ScreenFonts.ValueType # 2 +""" +TODO: REPLACE +""" +global___ScreenFonts = ScreenFonts + +@typing.final +class PositionLite(google.protobuf.message.Message): + """ + Position with static location information only for NodeDBLite + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LATITUDE_I_FIELD_NUMBER: builtins.int + LONGITUDE_I_FIELD_NUMBER: builtins.int + ALTITUDE_FIELD_NUMBER: builtins.int + TIME_FIELD_NUMBER: builtins.int + LOCATION_SOURCE_FIELD_NUMBER: builtins.int + latitude_i: builtins.int + """ + The new preferred location encoding, multiply by 1e-7 to get degrees + in floating point + """ + longitude_i: builtins.int + """ + TODO: REPLACE + """ + altitude: builtins.int + """ + In meters above MSL (but see issue #359) + """ + time: builtins.int + """ + This is usually not sent over the mesh (to save space), but it is sent + from the phone so that the local device can set its RTC If it is sent over + the mesh (because there are devices on the mesh without GPS), it will only + be sent by devices which has a hardware GPS clock. + seconds since 1970 + """ + location_source: meshtastic.protobuf.mesh_pb2.Position.LocSource.ValueType + """ + TODO: REPLACE + """ + def __init__( + self, + *, + latitude_i: builtins.int = ..., + longitude_i: builtins.int = ..., + altitude: builtins.int = ..., + time: builtins.int = ..., + location_source: meshtastic.protobuf.mesh_pb2.Position.LocSource.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["altitude", b"altitude", "latitude_i", b"latitude_i", "location_source", b"location_source", "longitude_i", b"longitude_i", "time", b"time"]) -> None: ... + +global___PositionLite = PositionLite + +@typing.final +class NodeInfoLite(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NUM_FIELD_NUMBER: builtins.int + USER_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + SNR_FIELD_NUMBER: builtins.int + LAST_HEARD_FIELD_NUMBER: builtins.int + DEVICE_METRICS_FIELD_NUMBER: builtins.int + CHANNEL_FIELD_NUMBER: builtins.int + VIA_MQTT_FIELD_NUMBER: builtins.int + HOPS_AWAY_FIELD_NUMBER: builtins.int + IS_FAVORITE_FIELD_NUMBER: builtins.int + num: builtins.int + """ + The node number + """ + snr: builtins.float + """ + Returns the Signal-to-noise ratio (SNR) of the last received message, + as measured by the receiver. Return SNR of the last received message in dB + """ + last_heard: builtins.int + """ + Set to indicate the last time we received a packet from this node + """ + channel: builtins.int + """ + local channel index we heard that node on. Only populated if its not the default channel. + """ + via_mqtt: builtins.bool + """ + True if we witnessed the node over MQTT instead of LoRA transport + """ + hops_away: builtins.int + """ + Number of hops away from us this node is (0 if adjacent) + """ + is_favorite: builtins.bool + """ + True if node is in our favorites list + Persists between NodeDB internal clean ups + """ + @property + def user(self) -> meshtastic.protobuf.mesh_pb2.User: + """ + The user info for this node + """ + + @property + def position(self) -> global___PositionLite: + """ + This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. + Position.time now indicates the last time we received a POSITION from that node. + """ + + @property + def device_metrics(self) -> meshtastic.protobuf.telemetry_pb2.DeviceMetrics: + """ + The latest device metrics for the node. + """ + + def __init__( + self, + *, + num: builtins.int = ..., + user: meshtastic.protobuf.mesh_pb2.User | None = ..., + position: global___PositionLite | None = ..., + snr: builtins.float = ..., + last_heard: builtins.int = ..., + device_metrics: meshtastic.protobuf.telemetry_pb2.DeviceMetrics | None = ..., + channel: builtins.int = ..., + via_mqtt: builtins.bool = ..., + hops_away: builtins.int = ..., + is_favorite: builtins.bool = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["device_metrics", b"device_metrics", "position", b"position", "user", b"user"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel", b"channel", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "is_favorite", b"is_favorite", "last_heard", b"last_heard", "num", b"num", "position", b"position", "snr", b"snr", "user", b"user", "via_mqtt", b"via_mqtt"]) -> None: ... + +global___NodeInfoLite = NodeInfoLite + +@typing.final +class DeviceState(google.protobuf.message.Message): + """ + This message is never sent over the wire, but it is used for serializing DB + state to flash in the device code + FIXME, since we write this each time we enter deep sleep (and have infinite + flash) it would be better to use some sort of append only data structure for + the receive queue and use the preferences store for the other stuff + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MY_NODE_FIELD_NUMBER: builtins.int + OWNER_FIELD_NUMBER: builtins.int + RECEIVE_QUEUE_FIELD_NUMBER: builtins.int + VERSION_FIELD_NUMBER: builtins.int + RX_TEXT_MESSAGE_FIELD_NUMBER: builtins.int + NO_SAVE_FIELD_NUMBER: builtins.int + DID_GPS_RESET_FIELD_NUMBER: builtins.int + RX_WAYPOINT_FIELD_NUMBER: builtins.int + NODE_REMOTE_HARDWARE_PINS_FIELD_NUMBER: builtins.int + NODE_DB_LITE_FIELD_NUMBER: builtins.int + version: builtins.int + """ + A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. + """ + no_save: builtins.bool + """ + Used only during development. + Indicates developer is testing and changes should never be saved to flash. + Deprecated in 2.3.1 + """ + did_gps_reset: builtins.bool + """ + Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset. + """ + @property + def my_node(self) -> meshtastic.protobuf.mesh_pb2.MyNodeInfo: + """ + Read only settings/info about this node + """ + + @property + def owner(self) -> meshtastic.protobuf.mesh_pb2.User: + """ + My owner info + """ + + @property + def receive_queue(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.protobuf.mesh_pb2.MeshPacket]: + """ + Received packets saved for delivery to the phone + """ + + @property + def rx_text_message(self) -> meshtastic.protobuf.mesh_pb2.MeshPacket: + """ + We keep the last received text message (only) stored in the device flash, + so we can show it on the screen. + Might be null + """ + + @property + def rx_waypoint(self) -> meshtastic.protobuf.mesh_pb2.MeshPacket: + """ + We keep the last received waypoint stored in the device flash, + so we can show it on the screen. + Might be null + """ + + @property + def node_remote_hardware_pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.protobuf.mesh_pb2.NodeRemoteHardwarePin]: + """ + The mesh's nodes with their available gpio pins for RemoteHardware module + """ + + @property + def node_db_lite(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NodeInfoLite]: + """ + New lite version of NodeDB to decrease memory footprint + """ + + def __init__( + self, + *, + my_node: meshtastic.protobuf.mesh_pb2.MyNodeInfo | None = ..., + owner: meshtastic.protobuf.mesh_pb2.User | None = ..., + receive_queue: collections.abc.Iterable[meshtastic.protobuf.mesh_pb2.MeshPacket] | None = ..., + version: builtins.int = ..., + rx_text_message: meshtastic.protobuf.mesh_pb2.MeshPacket | None = ..., + no_save: builtins.bool = ..., + did_gps_reset: builtins.bool = ..., + rx_waypoint: meshtastic.protobuf.mesh_pb2.MeshPacket | None = ..., + node_remote_hardware_pins: collections.abc.Iterable[meshtastic.protobuf.mesh_pb2.NodeRemoteHardwarePin] | None = ..., + node_db_lite: collections.abc.Iterable[global___NodeInfoLite] | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["my_node", b"my_node", "owner", b"owner", "rx_text_message", b"rx_text_message", "rx_waypoint", b"rx_waypoint"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["did_gps_reset", b"did_gps_reset", "my_node", b"my_node", "no_save", b"no_save", "node_db_lite", b"node_db_lite", "node_remote_hardware_pins", b"node_remote_hardware_pins", "owner", b"owner", "receive_queue", b"receive_queue", "rx_text_message", b"rx_text_message", "rx_waypoint", b"rx_waypoint", "version", b"version"]) -> None: ... + +global___DeviceState = DeviceState + +@typing.final +class ChannelFile(google.protobuf.message.Message): + """ + The on-disk saved channels + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CHANNELS_FIELD_NUMBER: builtins.int + VERSION_FIELD_NUMBER: builtins.int + version: builtins.int + """ + A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. + """ + @property + def channels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[meshtastic.protobuf.channel_pb2.Channel]: + """ + The channels our node knows about + """ + + def __init__( + self, + *, + channels: collections.abc.Iterable[meshtastic.protobuf.channel_pb2.Channel] | None = ..., + version: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["channels", b"channels", "version", b"version"]) -> None: ... + +global___ChannelFile = ChannelFile + +@typing.final +class OEMStore(google.protobuf.message.Message): + """ + This can be used for customizing the firmware distribution. If populated, + show a secondary bootup screen with custom logo and text for 2.5 seconds. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OEM_ICON_WIDTH_FIELD_NUMBER: builtins.int + OEM_ICON_HEIGHT_FIELD_NUMBER: builtins.int + OEM_ICON_BITS_FIELD_NUMBER: builtins.int + OEM_FONT_FIELD_NUMBER: builtins.int + OEM_TEXT_FIELD_NUMBER: builtins.int + OEM_AES_KEY_FIELD_NUMBER: builtins.int + OEM_LOCAL_CONFIG_FIELD_NUMBER: builtins.int + OEM_LOCAL_MODULE_CONFIG_FIELD_NUMBER: builtins.int + oem_icon_width: builtins.int + """ + The Logo width in Px + """ + oem_icon_height: builtins.int + """ + The Logo height in Px + """ + oem_icon_bits: builtins.bytes + """ + The Logo in XBM bytechar format + """ + oem_font: global___ScreenFonts.ValueType + """ + Use this font for the OEM text. + """ + oem_text: builtins.str + """ + Use this font for the OEM text. + """ + oem_aes_key: builtins.bytes + """ + The default device encryption key, 16 or 32 byte + """ + @property + def oem_local_config(self) -> meshtastic.protobuf.localonly_pb2.LocalConfig: + """ + A Preset LocalConfig to apply during factory reset + """ + + @property + def oem_local_module_config(self) -> meshtastic.protobuf.localonly_pb2.LocalModuleConfig: + """ + A Preset LocalModuleConfig to apply during factory reset + """ + + def __init__( + self, + *, + oem_icon_width: builtins.int = ..., + oem_icon_height: builtins.int = ..., + oem_icon_bits: builtins.bytes = ..., + oem_font: global___ScreenFonts.ValueType = ..., + oem_text: builtins.str = ..., + oem_aes_key: builtins.bytes = ..., + oem_local_config: meshtastic.protobuf.localonly_pb2.LocalConfig | None = ..., + oem_local_module_config: meshtastic.protobuf.localonly_pb2.LocalModuleConfig | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["oem_local_config", b"oem_local_config", "oem_local_module_config", b"oem_local_module_config"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["oem_aes_key", b"oem_aes_key", "oem_font", b"oem_font", "oem_icon_bits", b"oem_icon_bits", "oem_icon_height", b"oem_icon_height", "oem_icon_width", b"oem_icon_width", "oem_local_config", b"oem_local_config", "oem_local_module_config", b"oem_local_module_config", "oem_text", b"oem_text"]) -> None: ... + +global___OEMStore = OEMStore diff --git a/meshtastic/protobuf/localonly_pb2.py b/meshtastic/protobuf/localonly_pb2.py new file mode 100644 index 0000000..f4e4d71 --- /dev/null +++ b/meshtastic/protobuf/localonly_pb2.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/localonly.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_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\"\xbc\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\"\xf0\x07\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\x12\x0f\n\x07version\x18\x08 \x01(\rBd\n\x13\x63om.geeksville.meshB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.localonly_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\017LocalOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_LOCALCONFIG']._serialized_start=136 + _globals['_LOCALCONFIG']._serialized_end=580 + _globals['_LOCALMODULECONFIG']._serialized_start=583 + _globals['_LOCALMODULECONFIG']._serialized_end=1591 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/localonly_pb2.pyi b/meshtastic/protobuf/localonly_pb2.pyi new file mode 100644 index 0000000..ca62f18 --- /dev/null +++ b/meshtastic/protobuf/localonly_pb2.pyi @@ -0,0 +1,220 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import meshtastic.protobuf.config_pb2 +import meshtastic.protobuf.module_config_pb2 +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class LocalConfig(google.protobuf.message.Message): + """ + Protobuf structures common to apponly.proto and deviceonly.proto + This is never sent over the wire, only for local use + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + 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 + VERSION_FIELD_NUMBER: builtins.int + version: builtins.int + """ + A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. + """ + @property + def device(self) -> meshtastic.protobuf.config_pb2.Config.DeviceConfig: + """ + The part of the config that is specific to the Device + """ + + @property + def position(self) -> meshtastic.protobuf.config_pb2.Config.PositionConfig: + """ + The part of the config that is specific to the GPS Position + """ + + @property + def power(self) -> meshtastic.protobuf.config_pb2.Config.PowerConfig: + """ + The part of the config that is specific to the Power settings + """ + + @property + def network(self) -> meshtastic.protobuf.config_pb2.Config.NetworkConfig: + """ + The part of the config that is specific to the Wifi Settings + """ + + @property + def display(self) -> meshtastic.protobuf.config_pb2.Config.DisplayConfig: + """ + The part of the config that is specific to the Display + """ + + @property + def lora(self) -> meshtastic.protobuf.config_pb2.Config.LoRaConfig: + """ + The part of the config that is specific to the Lora Radio + """ + + @property + def bluetooth(self) -> meshtastic.protobuf.config_pb2.Config.BluetoothConfig: + """ + The part of the config that is specific to the Bluetooth settings + """ + + def __init__( + self, + *, + device: meshtastic.protobuf.config_pb2.Config.DeviceConfig | None = ..., + position: meshtastic.protobuf.config_pb2.Config.PositionConfig | None = ..., + power: meshtastic.protobuf.config_pb2.Config.PowerConfig | None = ..., + network: meshtastic.protobuf.config_pb2.Config.NetworkConfig | None = ..., + display: meshtastic.protobuf.config_pb2.Config.DisplayConfig | None = ..., + lora: meshtastic.protobuf.config_pb2.Config.LoRaConfig | None = ..., + bluetooth: meshtastic.protobuf.config_pb2.Config.BluetoothConfig | None = ..., + version: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["bluetooth", b"bluetooth", "device", b"device", "display", b"display", "lora", b"lora", "network", b"network", "position", b"position", "power", b"power"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["bluetooth", b"bluetooth", "device", b"device", "display", b"display", "lora", b"lora", "network", b"network", "position", b"position", "power", b"power", "version", b"version"]) -> None: ... + +global___LocalConfig = LocalConfig + +@typing.final +class LocalModuleConfig(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MQTT_FIELD_NUMBER: builtins.int + SERIAL_FIELD_NUMBER: builtins.int + EXTERNAL_NOTIFICATION_FIELD_NUMBER: builtins.int + STORE_FORWARD_FIELD_NUMBER: builtins.int + RANGE_TEST_FIELD_NUMBER: builtins.int + TELEMETRY_FIELD_NUMBER: builtins.int + CANNED_MESSAGE_FIELD_NUMBER: builtins.int + AUDIO_FIELD_NUMBER: builtins.int + REMOTE_HARDWARE_FIELD_NUMBER: builtins.int + NEIGHBOR_INFO_FIELD_NUMBER: builtins.int + AMBIENT_LIGHTING_FIELD_NUMBER: builtins.int + DETECTION_SENSOR_FIELD_NUMBER: builtins.int + PAXCOUNTER_FIELD_NUMBER: builtins.int + VERSION_FIELD_NUMBER: builtins.int + version: builtins.int + """ + A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. + """ + @property + def mqtt(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.MQTTConfig: + """ + The part of the config that is specific to the MQTT module + """ + + @property + def serial(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.SerialConfig: + """ + The part of the config that is specific to the Serial module + """ + + @property + def external_notification(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.ExternalNotificationConfig: + """ + The part of the config that is specific to the ExternalNotification module + """ + + @property + def store_forward(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.StoreForwardConfig: + """ + The part of the config that is specific to the Store & Forward module + """ + + @property + def range_test(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.RangeTestConfig: + """ + The part of the config that is specific to the RangeTest module + """ + + @property + def telemetry(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.TelemetryConfig: + """ + The part of the config that is specific to the Telemetry module + """ + + @property + def canned_message(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.CannedMessageConfig: + """ + The part of the config that is specific to the Canned Message module + """ + + @property + def audio(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.AudioConfig: + """ + The part of the config that is specific to the Audio module + """ + + @property + def remote_hardware(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.RemoteHardwareConfig: + """ + The part of the config that is specific to the Remote Hardware module + """ + + @property + def neighbor_info(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.NeighborInfoConfig: + """ + The part of the config that is specific to the Neighbor Info module + """ + + @property + def ambient_lighting(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.AmbientLightingConfig: + """ + The part of the config that is specific to the Ambient Lighting module + """ + + @property + def detection_sensor(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.DetectionSensorConfig: + """ + The part of the config that is specific to the Detection Sensor module + """ + + @property + def paxcounter(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig.PaxcounterConfig: + """ + Paxcounter Config + """ + + def __init__( + self, + *, + mqtt: meshtastic.protobuf.module_config_pb2.ModuleConfig.MQTTConfig | None = ..., + serial: meshtastic.protobuf.module_config_pb2.ModuleConfig.SerialConfig | None = ..., + external_notification: meshtastic.protobuf.module_config_pb2.ModuleConfig.ExternalNotificationConfig | None = ..., + store_forward: meshtastic.protobuf.module_config_pb2.ModuleConfig.StoreForwardConfig | None = ..., + range_test: meshtastic.protobuf.module_config_pb2.ModuleConfig.RangeTestConfig | None = ..., + telemetry: meshtastic.protobuf.module_config_pb2.ModuleConfig.TelemetryConfig | None = ..., + canned_message: meshtastic.protobuf.module_config_pb2.ModuleConfig.CannedMessageConfig | None = ..., + audio: meshtastic.protobuf.module_config_pb2.ModuleConfig.AudioConfig | None = ..., + remote_hardware: meshtastic.protobuf.module_config_pb2.ModuleConfig.RemoteHardwareConfig | None = ..., + neighbor_info: meshtastic.protobuf.module_config_pb2.ModuleConfig.NeighborInfoConfig | None = ..., + ambient_lighting: meshtastic.protobuf.module_config_pb2.ModuleConfig.AmbientLightingConfig | None = ..., + detection_sensor: meshtastic.protobuf.module_config_pb2.ModuleConfig.DetectionSensorConfig | None = ..., + paxcounter: meshtastic.protobuf.module_config_pb2.ModuleConfig.PaxcounterConfig | None = ..., + version: builtins.int = ..., + ) -> 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", "store_forward", b"store_forward", "telemetry", b"telemetry"]) -> 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", "store_forward", b"store_forward", "telemetry", b"telemetry", "version", b"version"]) -> None: ... + +global___LocalModuleConfig = LocalModuleConfig diff --git a/meshtastic/protobuf/mesh_pb2.py b/meshtastic/protobuf/mesh_pb2.py new file mode 100644 index 0000000..684b513 --- /dev/null +++ b/meshtastic/protobuf/mesh_pb2.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/mesh.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import channel_pb2 as meshtastic_dot_protobuf_dot_channel__pb2 +from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2 +from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2 +from meshtastic.protobuf import portnums_pb2 as meshtastic_dot_protobuf_dot_portnums__pb2 +from meshtastic.protobuf import telemetry_pb2 as meshtastic_dot_protobuf_dot_telemetry__pb2 +from meshtastic.protobuf import xmodem_pb2 as meshtastic_dot_protobuf_dot_xmodem__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mesh.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/xmodem.proto\"\xf7\x05\n\x08Position\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12@\n\x0flocation_source\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\x12@\n\x0f\x61ltitude_source\x18\x06 \x01(\x0e\x32\'.meshtastic.protobuf.Position.AltSource\x12\x11\n\ttimestamp\x18\x07 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 \x01(\x05\x12\x14\n\x0c\x61ltitude_hae\x18\t \x01(\x11\x12#\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11\x12\x0c\n\x04PDOP\x18\x0b \x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e \x01(\r\x12\x14\n\x0cground_speed\x18\x0f \x01(\r\x12\x14\n\x0cground_track\x18\x10 \x01(\r\x12\x13\n\x0b\x66ix_quality\x18\x11 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 \x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 \x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 \x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 \x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\"\xd6\x01\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x13\n\x07macaddr\x18\x04 \x01(\x0c\x42\x02\x18\x01\x12\x34\n\x08hw_model\x18\x05 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\"\x1f\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\"\x97\x03\n\x07Routing\x12<\n\rroute_request\x18\x01 \x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0broute_reply\x18\x02 \x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\".meshtastic.protobuf.Routing.ErrorH\x00\"\xca\x01\n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!B\t\n\x07variant\"\xb0\x01\n\x04\x44\x61ta\x12-\n\x07portnum\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x15\n\rwant_response\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 \x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 \x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\"\x93\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x12\n\nlatitude_i\x18\x02 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x03 \x01(\x0f\x12\x0e\n\x06\x65xpire\x18\x04 \x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\x07\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 \x01(\tH\x00\x12\x10\n\x08retained\x18\x04 \x01(\x08\x42\x11\n\x0fpayload_variant\"\xb0\x04\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\r\x12,\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x19.meshtastic.protobuf.DataH\x00\x12\x13\n\tencrypted\x18\x05 \x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 \x01(\x07\x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t \x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12:\n\x08priority\x18\x0b \x01(\x0e\x32(.meshtastic.protobuf.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c \x01(\x05\x12<\n\x07\x64\x65layed\x18\r \x01(\x0e\x32\'.meshtastic.protobuf.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\"[\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x12\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\x42\x11\n\x0fpayload_variant\"\x99\x02\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12/\n\x08position\x18\x03 \x01(\x0b\x32\x1d.meshtastic.protobuf.Position\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x11\n\thops_away\x18\t \x01(\r\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\"P\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b \x01(\r\"\xc9\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x33\n\x05level\x18\x04 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 \x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 \x01(\r\"\xbe\x05\n\tFromRadio\x12\n\n\x02id\x18\x01 \x01(\r\x12\x31\n\x06packet\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x32\n\x07my_info\x18\x03 \x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfoH\x00\x12\x32\n\tnode_info\x18\x04 \x01(\x0b\x32\x1d.meshtastic.protobuf.NodeInfoH\x00\x12-\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12\x34\n\nlog_record\x18\x06 \x01(\x0b\x32\x1e.meshtastic.protobuf.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x39\n\x0cmoduleConfig\x18\t \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12/\n\x07\x63hannel\x18\n \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x37\n\x0bqueueStatus\x18\x0b \x01(\x0b\x32 .meshtastic.protobuf.QueueStatusH\x00\x12\x33\n\x0cxmodemPacket\x18\x0c \x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12\x37\n\x08metadata\x18\r \x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12M\n\x16mqttClientProxyMessage\x18\x0e \x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x42\x11\n\x0fpayload_variant\"\xb8\x02\n\x07ToRadio\x12\x31\n\x06packet\x18\x01 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 \x01(\x08H\x00\x12\x33\n\x0cxmodemPacket\x18\x05 \x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12M\n\x16mqttClientProxyMessage\x18\x06 \x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x33\n\theartbeat\x18\x07 \x01(\x0b\x32\x1e.meshtastic.protobuf.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"I\n\nCompressed\x12-\n\x07portnum\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x90\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_interval_secs\x18\x03 \x01(\r\x12\x30\n\tneighbors\x18\x04 \x03(\x0b\x32\x1d.meshtastic.protobuf.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 \x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 \x01(\r\"\xbf\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 \x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 \x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 \x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 \x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08 \x01(\r\x12\x34\n\x08hw_model\x18\t \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n \x01(\x08\"\x0b\n\tHeartbeat\"^\n\x15NodeRemoteHardwarePin\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\x33\n\x03pin\x18\x02 \x01(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\"e\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x13\n\x0b\x63hunk_count\x18\x02 \x01(\r\x12\x13\n\x0b\x63hunk_index\x18\x03 \x01(\r\x12\x15\n\rpayload_chunk\x18\x04 \x01(\x0c\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 \x03(\r\"\xb3\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x1a\n\x10request_transfer\x18\x02 \x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 \x01(\x08H\x00\x12;\n\rresend_chunks\x18\x04 \x01(\x0b\x32\".meshtastic.protobuf.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xeb\x08\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK4631\x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nWIO_WM1110\x10\x15\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10 \x12\x0e\n\nNRF52840DK\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12 \n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xed\x01*\xee\x01\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x42_\n\x13\x63om.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.mesh_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _USER.fields_by_name['macaddr']._options = None + _USER.fields_by_name['macaddr']._serialized_options = b'\030\001' + _MESHPACKET.fields_by_name['delayed']._options = None + _MESHPACKET.fields_by_name['delayed']._serialized_options = b'\030\001' + _globals['_HARDWAREMODEL']._serialized_start=5442 + _globals['_HARDWAREMODEL']._serialized_end=6573 + _globals['_CONSTANTS']._serialized_start=6575 + _globals['_CONSTANTS']._serialized_end=6619 + _globals['_CRITICALERRORCODE']._serialized_start=6622 + _globals['_CRITICALERRORCODE']._serialized_end=6860 + _globals['_POSITION']._serialized_start=273 + _globals['_POSITION']._serialized_end=1032 + _globals['_POSITION_LOCSOURCE']._serialized_start=854 + _globals['_POSITION_LOCSOURCE']._serialized_end=932 + _globals['_POSITION_ALTSOURCE']._serialized_start=934 + _globals['_POSITION_ALTSOURCE']._serialized_end=1032 + _globals['_USER']._serialized_start=1035 + _globals['_USER']._serialized_end=1249 + _globals['_ROUTEDISCOVERY']._serialized_start=1251 + _globals['_ROUTEDISCOVERY']._serialized_end=1282 + _globals['_ROUTING']._serialized_start=1285 + _globals['_ROUTING']._serialized_end=1692 + _globals['_ROUTING_ERROR']._serialized_start=1479 + _globals['_ROUTING_ERROR']._serialized_end=1681 + _globals['_DATA']._serialized_start=1695 + _globals['_DATA']._serialized_end=1871 + _globals['_WAYPOINT']._serialized_start=1874 + _globals['_WAYPOINT']._serialized_end=2021 + _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_start=2023 + _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_end=2131 + _globals['_MESHPACKET']._serialized_start=2134 + _globals['_MESHPACKET']._serialized_end=2694 + _globals['_MESHPACKET_PRIORITY']._serialized_start=2516 + _globals['_MESHPACKET_PRIORITY']._serialized_end=2607 + _globals['_MESHPACKET_DELAYED']._serialized_start=2609 + _globals['_MESHPACKET_DELAYED']._serialized_end=2675 + _globals['_NODEINFO']._serialized_start=2697 + _globals['_NODEINFO']._serialized_end=2978 + _globals['_MYNODEINFO']._serialized_start=2980 + _globals['_MYNODEINFO']._serialized_end=3060 + _globals['_LOGRECORD']._serialized_start=3063 + _globals['_LOGRECORD']._serialized_end=3264 + _globals['_LOGRECORD_LEVEL']._serialized_start=3176 + _globals['_LOGRECORD_LEVEL']._serialized_end=3264 + _globals['_QUEUESTATUS']._serialized_start=3266 + _globals['_QUEUESTATUS']._serialized_end=3346 + _globals['_FROMRADIO']._serialized_start=3349 + _globals['_FROMRADIO']._serialized_end=4051 + _globals['_TORADIO']._serialized_start=4054 + _globals['_TORADIO']._serialized_end=4366 + _globals['_COMPRESSED']._serialized_start=4368 + _globals['_COMPRESSED']._serialized_end=4441 + _globals['_NEIGHBORINFO']._serialized_start=4444 + _globals['_NEIGHBORINFO']._serialized_end=4588 + _globals['_NEIGHBOR']._serialized_start=4590 + _globals['_NEIGHBOR']._serialized_end=4690 + _globals['_DEVICEMETADATA']._serialized_start=4693 + _globals['_DEVICEMETADATA']._serialized_end=5012 + _globals['_HEARTBEAT']._serialized_start=5014 + _globals['_HEARTBEAT']._serialized_end=5025 + _globals['_NODEREMOTEHARDWAREPIN']._serialized_start=5027 + _globals['_NODEREMOTEHARDWAREPIN']._serialized_end=5121 + _globals['_CHUNKEDPAYLOAD']._serialized_start=5123 + _globals['_CHUNKEDPAYLOAD']._serialized_end=5224 + _globals['_RESEND_CHUNKS']._serialized_start=5226 + _globals['_RESEND_CHUNKS']._serialized_end=5257 + _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_start=5260 + _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_end=5439 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mesh_pb2.pyi b/meshtastic/protobuf/mesh_pb2.pyi new file mode 100644 index 0000000..89b0a75 --- /dev/null +++ b/meshtastic/protobuf/mesh_pb2.pyi @@ -0,0 +1,2552 @@ +""" +@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 meshtastic.protobuf.channel_pb2 +import meshtastic.protobuf.config_pb2 +import meshtastic.protobuf.module_config_pb2 +import meshtastic.protobuf.portnums_pb2 +import meshtastic.protobuf.telemetry_pb2 +import meshtastic.protobuf.xmodem_pb2 +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _HardwareModel: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_HardwareModel.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNSET: _HardwareModel.ValueType # 0 + """ + TODO: REPLACE + """ + TLORA_V2: _HardwareModel.ValueType # 1 + """ + TODO: REPLACE + """ + TLORA_V1: _HardwareModel.ValueType # 2 + """ + TODO: REPLACE + """ + TLORA_V2_1_1P6: _HardwareModel.ValueType # 3 + """ + TODO: REPLACE + """ + TBEAM: _HardwareModel.ValueType # 4 + """ + TODO: REPLACE + """ + HELTEC_V2_0: _HardwareModel.ValueType # 5 + """ + The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13 + (see HELTEC_V2 for the new version). + """ + TBEAM_V0P7: _HardwareModel.ValueType # 6 + """ + TODO: REPLACE + """ + T_ECHO: _HardwareModel.ValueType # 7 + """ + TODO: REPLACE + """ + TLORA_V1_1P3: _HardwareModel.ValueType # 8 + """ + TODO: REPLACE + """ + RAK4631: _HardwareModel.ValueType # 9 + """ + TODO: REPLACE + """ + HELTEC_V2_1: _HardwareModel.ValueType # 10 + """ + The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37. + Sadly they did not update anything on the silkscreen to identify this board + """ + HELTEC_V1: _HardwareModel.ValueType # 11 + """ + Ancient heltec WiFi_Lora_32 board + """ + LILYGO_TBEAM_S3_CORE: _HardwareModel.ValueType # 12 + """ + New T-BEAM with ESP32-S3 CPU + """ + RAK11200: _HardwareModel.ValueType # 13 + """ + RAK WisBlock ESP32 core: https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/ + """ + NANO_G1: _HardwareModel.ValueType # 14 + """ + B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano + """ + TLORA_V2_1_1P8: _HardwareModel.ValueType # 15 + """ + TODO: REPLACE + """ + TLORA_T3_S3: _HardwareModel.ValueType # 16 + """ + TODO: REPLACE + """ + NANO_G1_EXPLORER: _HardwareModel.ValueType # 17 + """ + B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer + """ + NANO_G2_ULTRA: _HardwareModel.ValueType # 18 + """ + B&Q Consulting Nano G2 Ultra: https://wiki.uniteng.com/en/meshtastic/nano-g2-ultra + """ + LORA_TYPE: _HardwareModel.ValueType # 19 + """ + LoRAType device: https://loratype.org/ + """ + WIPHONE: _HardwareModel.ValueType # 20 + """ + wiphone https://www.wiphone.io/ + """ + WIO_WM1110: _HardwareModel.ValueType # 21 + """ + WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk + """ + STATION_G1: _HardwareModel.ValueType # 25 + """ + B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station + """ + RAK11310: _HardwareModel.ValueType # 26 + """ + RAK11310 (RP2040 + SX1262) + """ + SENSELORA_RP2040: _HardwareModel.ValueType # 27 + """ + Makerfabs SenseLoRA Receiver (RP2040 + RFM96) + """ + SENSELORA_S3: _HardwareModel.ValueType # 28 + """ + Makerfabs SenseLoRA Industrial Monitor (ESP32-S3 + RFM96) + """ + CANARYONE: _HardwareModel.ValueType # 29 + """ + Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone + """ + RP2040_LORA: _HardwareModel.ValueType # 30 + """ + Waveshare RP2040 LoRa - https://www.waveshare.com/rp2040-lora.htm + """ + STATION_G2: _HardwareModel.ValueType # 31 + """ + B&Q Consulting Station G2: https://wiki.uniteng.com/en/meshtastic/station-g2 + """ + LORA_RELAY_V1: _HardwareModel.ValueType # 32 + """ + --------------------------------------------------------------------------- + Less common/prototype boards listed here (needs one more byte over the air) + --------------------------------------------------------------------------- + """ + NRF52840DK: _HardwareModel.ValueType # 33 + """ + TODO: REPLACE + """ + PPR: _HardwareModel.ValueType # 34 + """ + TODO: REPLACE + """ + GENIEBLOCKS: _HardwareModel.ValueType # 35 + """ + TODO: REPLACE + """ + NRF52_UNKNOWN: _HardwareModel.ValueType # 36 + """ + TODO: REPLACE + """ + PORTDUINO: _HardwareModel.ValueType # 37 + """ + TODO: REPLACE + """ + ANDROID_SIM: _HardwareModel.ValueType # 38 + """ + The simulator built into the android app + """ + DIY_V1: _HardwareModel.ValueType # 39 + """ + Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics + """ + NRF52840_PCA10059: _HardwareModel.ValueType # 40 + """ + nRF52840 Dongle : https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle/ + """ + DR_DEV: _HardwareModel.ValueType # 41 + """ + Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3 + """ + M5STACK: _HardwareModel.ValueType # 42 + """ + M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ + """ + HELTEC_V3: _HardwareModel.ValueType # 43 + """ + New Heltec LoRA32 with ESP32-S3 CPU + """ + HELTEC_WSL_V3: _HardwareModel.ValueType # 44 + """ + New Heltec Wireless Stick Lite with ESP32-S3 CPU + """ + BETAFPV_2400_TX: _HardwareModel.ValueType # 45 + """ + New BETAFPV ELRS Micro TX Module 2.4G with ESP32 CPU + """ + BETAFPV_900_NANO_TX: _HardwareModel.ValueType # 46 + """ + BetaFPV ExpressLRS "Nano" TX Module 900MHz with ESP32 CPU + """ + RPI_PICO: _HardwareModel.ValueType # 47 + """ + Raspberry Pi Pico (W) with Waveshare SX1262 LoRa Node Module + """ + HELTEC_WIRELESS_TRACKER: _HardwareModel.ValueType # 48 + """ + Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT + Newer V1.1, version is written on the PCB near the display. + """ + HELTEC_WIRELESS_PAPER: _HardwareModel.ValueType # 49 + """ + Heltec Wireless Paper with ESP32-S3 CPU and E-Ink display + """ + T_DECK: _HardwareModel.ValueType # 50 + """ + LilyGo T-Deck with ESP32-S3 CPU, Keyboard and IPS display + """ + T_WATCH_S3: _HardwareModel.ValueType # 51 + """ + LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display + """ + PICOMPUTER_S3: _HardwareModel.ValueType # 52 + """ + Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display + """ + HELTEC_HT62: _HardwareModel.ValueType # 53 + """ + Heltec HT-CT62 with ESP32-C3 CPU and SX1262 LoRa + """ + EBYTE_ESP32_S3: _HardwareModel.ValueType # 54 + """ + EBYTE SPI LoRa module and ESP32-S3 + """ + ESP32_S3_PICO: _HardwareModel.ValueType # 55 + """ + Waveshare ESP32-S3-PICO with PICO LoRa HAT and 2.9inch e-Ink + """ + CHATTER_2: _HardwareModel.ValueType # 56 + """ + CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom + Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible + with one cut and one jumper Meshtastic works + """ + HELTEC_WIRELESS_PAPER_V1_0: _HardwareModel.ValueType # 57 + """ + Heltec Wireless Paper, With ESP32-S3 CPU and E-Ink display + Older "V1.0" Variant, has no "version sticker" + E-Ink model is DEPG0213BNS800 + Tab on the screen protector is RED + Flex connector marking is FPC-7528B + """ + HELTEC_WIRELESS_TRACKER_V1_0: _HardwareModel.ValueType # 58 + """ + Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT + Older "V1.0" Variant + """ + UNPHONE: _HardwareModel.ValueType # 59 + """ + unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope + """ + TD_LORAC: _HardwareModel.ValueType # 60 + """ + Teledatics TD-LORAC NRF52840 based M.2 LoRA module + Compatible with the TD-WRLS development board + """ + CDEBYTE_EORA_S3: _HardwareModel.ValueType # 61 + """ + CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3 + """ + TWC_MESH_V4: _HardwareModel.ValueType # 62 + """ + TWC_MESH_V4 + Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS + """ + NRF52_PROMICRO_DIY: _HardwareModel.ValueType # 63 + """ + NRF52_PROMICRO_DIY + Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS + """ + RADIOMASTER_900_BANDIT_NANO: _HardwareModel.ValueType # 64 + """ + RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module + ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS + """ + PRIVATE_HW: _HardwareModel.ValueType # 255 + """ + ------------------------------------------------------------------------------------------------------------------------------------------ + Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. + ------------------------------------------------------------------------------------------------------------------------------------------ + """ + +class HardwareModel(_HardwareModel, metaclass=_HardwareModelEnumTypeWrapper): + """ + Note: these enum names must EXACTLY match the string used in the device + bin/build-all.sh script. + Because they will be used to find firmware filenames in the android app for OTA updates. + To match the old style filenames, _ is converted to -, p is converted to . + """ + +UNSET: HardwareModel.ValueType # 0 +""" +TODO: REPLACE +""" +TLORA_V2: HardwareModel.ValueType # 1 +""" +TODO: REPLACE +""" +TLORA_V1: HardwareModel.ValueType # 2 +""" +TODO: REPLACE +""" +TLORA_V2_1_1P6: HardwareModel.ValueType # 3 +""" +TODO: REPLACE +""" +TBEAM: HardwareModel.ValueType # 4 +""" +TODO: REPLACE +""" +HELTEC_V2_0: HardwareModel.ValueType # 5 +""" +The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13 +(see HELTEC_V2 for the new version). +""" +TBEAM_V0P7: HardwareModel.ValueType # 6 +""" +TODO: REPLACE +""" +T_ECHO: HardwareModel.ValueType # 7 +""" +TODO: REPLACE +""" +TLORA_V1_1P3: HardwareModel.ValueType # 8 +""" +TODO: REPLACE +""" +RAK4631: HardwareModel.ValueType # 9 +""" +TODO: REPLACE +""" +HELTEC_V2_1: HardwareModel.ValueType # 10 +""" +The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37. +Sadly they did not update anything on the silkscreen to identify this board +""" +HELTEC_V1: HardwareModel.ValueType # 11 +""" +Ancient heltec WiFi_Lora_32 board +""" +LILYGO_TBEAM_S3_CORE: HardwareModel.ValueType # 12 +""" +New T-BEAM with ESP32-S3 CPU +""" +RAK11200: HardwareModel.ValueType # 13 +""" +RAK WisBlock ESP32 core: https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/ +""" +NANO_G1: HardwareModel.ValueType # 14 +""" +B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano +""" +TLORA_V2_1_1P8: HardwareModel.ValueType # 15 +""" +TODO: REPLACE +""" +TLORA_T3_S3: HardwareModel.ValueType # 16 +""" +TODO: REPLACE +""" +NANO_G1_EXPLORER: HardwareModel.ValueType # 17 +""" +B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer +""" +NANO_G2_ULTRA: HardwareModel.ValueType # 18 +""" +B&Q Consulting Nano G2 Ultra: https://wiki.uniteng.com/en/meshtastic/nano-g2-ultra +""" +LORA_TYPE: HardwareModel.ValueType # 19 +""" +LoRAType device: https://loratype.org/ +""" +WIPHONE: HardwareModel.ValueType # 20 +""" +wiphone https://www.wiphone.io/ +""" +WIO_WM1110: HardwareModel.ValueType # 21 +""" +WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk +""" +STATION_G1: HardwareModel.ValueType # 25 +""" +B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station +""" +RAK11310: HardwareModel.ValueType # 26 +""" +RAK11310 (RP2040 + SX1262) +""" +SENSELORA_RP2040: HardwareModel.ValueType # 27 +""" +Makerfabs SenseLoRA Receiver (RP2040 + RFM96) +""" +SENSELORA_S3: HardwareModel.ValueType # 28 +""" +Makerfabs SenseLoRA Industrial Monitor (ESP32-S3 + RFM96) +""" +CANARYONE: HardwareModel.ValueType # 29 +""" +Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone +""" +RP2040_LORA: HardwareModel.ValueType # 30 +""" +Waveshare RP2040 LoRa - https://www.waveshare.com/rp2040-lora.htm +""" +STATION_G2: HardwareModel.ValueType # 31 +""" +B&Q Consulting Station G2: https://wiki.uniteng.com/en/meshtastic/station-g2 +""" +LORA_RELAY_V1: HardwareModel.ValueType # 32 +""" +--------------------------------------------------------------------------- +Less common/prototype boards listed here (needs one more byte over the air) +--------------------------------------------------------------------------- +""" +NRF52840DK: HardwareModel.ValueType # 33 +""" +TODO: REPLACE +""" +PPR: HardwareModel.ValueType # 34 +""" +TODO: REPLACE +""" +GENIEBLOCKS: HardwareModel.ValueType # 35 +""" +TODO: REPLACE +""" +NRF52_UNKNOWN: HardwareModel.ValueType # 36 +""" +TODO: REPLACE +""" +PORTDUINO: HardwareModel.ValueType # 37 +""" +TODO: REPLACE +""" +ANDROID_SIM: HardwareModel.ValueType # 38 +""" +The simulator built into the android app +""" +DIY_V1: HardwareModel.ValueType # 39 +""" +Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics +""" +NRF52840_PCA10059: HardwareModel.ValueType # 40 +""" +nRF52840 Dongle : https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle/ +""" +DR_DEV: HardwareModel.ValueType # 41 +""" +Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3 +""" +M5STACK: HardwareModel.ValueType # 42 +""" +M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ +""" +HELTEC_V3: HardwareModel.ValueType # 43 +""" +New Heltec LoRA32 with ESP32-S3 CPU +""" +HELTEC_WSL_V3: HardwareModel.ValueType # 44 +""" +New Heltec Wireless Stick Lite with ESP32-S3 CPU +""" +BETAFPV_2400_TX: HardwareModel.ValueType # 45 +""" +New BETAFPV ELRS Micro TX Module 2.4G with ESP32 CPU +""" +BETAFPV_900_NANO_TX: HardwareModel.ValueType # 46 +""" +BetaFPV ExpressLRS "Nano" TX Module 900MHz with ESP32 CPU +""" +RPI_PICO: HardwareModel.ValueType # 47 +""" +Raspberry Pi Pico (W) with Waveshare SX1262 LoRa Node Module +""" +HELTEC_WIRELESS_TRACKER: HardwareModel.ValueType # 48 +""" +Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT +Newer V1.1, version is written on the PCB near the display. +""" +HELTEC_WIRELESS_PAPER: HardwareModel.ValueType # 49 +""" +Heltec Wireless Paper with ESP32-S3 CPU and E-Ink display +""" +T_DECK: HardwareModel.ValueType # 50 +""" +LilyGo T-Deck with ESP32-S3 CPU, Keyboard and IPS display +""" +T_WATCH_S3: HardwareModel.ValueType # 51 +""" +LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display +""" +PICOMPUTER_S3: HardwareModel.ValueType # 52 +""" +Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display +""" +HELTEC_HT62: HardwareModel.ValueType # 53 +""" +Heltec HT-CT62 with ESP32-C3 CPU and SX1262 LoRa +""" +EBYTE_ESP32_S3: HardwareModel.ValueType # 54 +""" +EBYTE SPI LoRa module and ESP32-S3 +""" +ESP32_S3_PICO: HardwareModel.ValueType # 55 +""" +Waveshare ESP32-S3-PICO with PICO LoRa HAT and 2.9inch e-Ink +""" +CHATTER_2: HardwareModel.ValueType # 56 +""" +CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom +Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible +with one cut and one jumper Meshtastic works +""" +HELTEC_WIRELESS_PAPER_V1_0: HardwareModel.ValueType # 57 +""" +Heltec Wireless Paper, With ESP32-S3 CPU and E-Ink display +Older "V1.0" Variant, has no "version sticker" +E-Ink model is DEPG0213BNS800 +Tab on the screen protector is RED +Flex connector marking is FPC-7528B +""" +HELTEC_WIRELESS_TRACKER_V1_0: HardwareModel.ValueType # 58 +""" +Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT +Older "V1.0" Variant +""" +UNPHONE: HardwareModel.ValueType # 59 +""" +unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope +""" +TD_LORAC: HardwareModel.ValueType # 60 +""" +Teledatics TD-LORAC NRF52840 based M.2 LoRA module +Compatible with the TD-WRLS development board +""" +CDEBYTE_EORA_S3: HardwareModel.ValueType # 61 +""" +CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3 +""" +TWC_MESH_V4: HardwareModel.ValueType # 62 +""" +TWC_MESH_V4 +Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS +""" +NRF52_PROMICRO_DIY: HardwareModel.ValueType # 63 +""" +NRF52_PROMICRO_DIY +Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS +""" +RADIOMASTER_900_BANDIT_NANO: HardwareModel.ValueType # 64 +""" +RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module +ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS +""" +PRIVATE_HW: HardwareModel.ValueType # 255 +""" +------------------------------------------------------------------------------------------------------------------------------------------ +Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. +------------------------------------------------------------------------------------------------------------------------------------------ +""" +global___HardwareModel = HardwareModel + +class _Constants: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _ConstantsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Constants.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ZERO: _Constants.ValueType # 0 + """ + First enum must be zero, and we are just using this enum to + pass int constants between two very different environments + """ + DATA_PAYLOAD_LEN: _Constants.ValueType # 237 + """ + From mesh.options + note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is + outside of this envelope + """ + +class Constants(_Constants, metaclass=_ConstantsEnumTypeWrapper): + """ + Shared constants between device and phone + """ + +ZERO: Constants.ValueType # 0 +""" +First enum must be zero, and we are just using this enum to +pass int constants between two very different environments +""" +DATA_PAYLOAD_LEN: Constants.ValueType # 237 +""" +From mesh.options +note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is +outside of this envelope +""" +global___Constants = Constants + +class _CriticalErrorCode: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _CriticalErrorCodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CriticalErrorCode.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NONE: _CriticalErrorCode.ValueType # 0 + """ + TODO: REPLACE + """ + TX_WATCHDOG: _CriticalErrorCode.ValueType # 1 + """ + A software bug was detected while trying to send lora + """ + SLEEP_ENTER_WAIT: _CriticalErrorCode.ValueType # 2 + """ + A software bug was detected on entry to sleep + """ + NO_RADIO: _CriticalErrorCode.ValueType # 3 + """ + No Lora radio hardware could be found + """ + UNSPECIFIED: _CriticalErrorCode.ValueType # 4 + """ + Not normally used + """ + UBLOX_UNIT_FAILED: _CriticalErrorCode.ValueType # 5 + """ + We failed while configuring a UBlox GPS + """ + NO_AXP192: _CriticalErrorCode.ValueType # 6 + """ + This board was expected to have a power management chip and it is missing or broken + """ + INVALID_RADIO_SETTING: _CriticalErrorCode.ValueType # 7 + """ + The channel tried to set a radio setting which is not supported by this chipset, + radio comms settings are now undefined. + """ + TRANSMIT_FAILED: _CriticalErrorCode.ValueType # 8 + """ + Radio transmit hardware failure. We sent data to the radio chip, but it didn't + reply with an interrupt. + """ + BROWNOUT: _CriticalErrorCode.ValueType # 9 + """ + We detected that the main CPU voltage dropped below the minimum acceptable value + """ + SX1262_FAILURE: _CriticalErrorCode.ValueType # 10 + """Selftest of SX1262 radio chip failed""" + RADIO_SPI_BUG: _CriticalErrorCode.ValueType # 11 + """ + A (likely software but possibly hardware) failure was detected while trying to send packets. + If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug + """ + +class CriticalErrorCode(_CriticalErrorCode, metaclass=_CriticalErrorCodeEnumTypeWrapper): + """ + Error codes for critical errors + The device might report these fault codes on the screen. + If you encounter a fault code, please post on the meshtastic.discourse.group + and we'll try to help. + """ + +NONE: CriticalErrorCode.ValueType # 0 +""" +TODO: REPLACE +""" +TX_WATCHDOG: CriticalErrorCode.ValueType # 1 +""" +A software bug was detected while trying to send lora +""" +SLEEP_ENTER_WAIT: CriticalErrorCode.ValueType # 2 +""" +A software bug was detected on entry to sleep +""" +NO_RADIO: CriticalErrorCode.ValueType # 3 +""" +No Lora radio hardware could be found +""" +UNSPECIFIED: CriticalErrorCode.ValueType # 4 +""" +Not normally used +""" +UBLOX_UNIT_FAILED: CriticalErrorCode.ValueType # 5 +""" +We failed while configuring a UBlox GPS +""" +NO_AXP192: CriticalErrorCode.ValueType # 6 +""" +This board was expected to have a power management chip and it is missing or broken +""" +INVALID_RADIO_SETTING: CriticalErrorCode.ValueType # 7 +""" +The channel tried to set a radio setting which is not supported by this chipset, +radio comms settings are now undefined. +""" +TRANSMIT_FAILED: CriticalErrorCode.ValueType # 8 +""" +Radio transmit hardware failure. We sent data to the radio chip, but it didn't +reply with an interrupt. +""" +BROWNOUT: CriticalErrorCode.ValueType # 9 +""" +We detected that the main CPU voltage dropped below the minimum acceptable value +""" +SX1262_FAILURE: CriticalErrorCode.ValueType # 10 +"""Selftest of SX1262 radio chip failed""" +RADIO_SPI_BUG: CriticalErrorCode.ValueType # 11 +""" +A (likely software but possibly hardware) failure was detected while trying to send packets. +If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug +""" +global___CriticalErrorCode = CriticalErrorCode + +@typing.final +class Position(google.protobuf.message.Message): + """ + a gps position + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _LocSource: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _LocSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Position._LocSource.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + LOC_UNSET: Position._LocSource.ValueType # 0 + """ + TODO: REPLACE + """ + LOC_MANUAL: Position._LocSource.ValueType # 1 + """ + TODO: REPLACE + """ + LOC_INTERNAL: Position._LocSource.ValueType # 2 + """ + TODO: REPLACE + """ + LOC_EXTERNAL: Position._LocSource.ValueType # 3 + """ + TODO: REPLACE + """ + + class LocSource(_LocSource, metaclass=_LocSourceEnumTypeWrapper): + """ + How the location was acquired: manual, onboard GPS, external (EUD) GPS + """ + + LOC_UNSET: Position.LocSource.ValueType # 0 + """ + TODO: REPLACE + """ + LOC_MANUAL: Position.LocSource.ValueType # 1 + """ + TODO: REPLACE + """ + LOC_INTERNAL: Position.LocSource.ValueType # 2 + """ + TODO: REPLACE + """ + LOC_EXTERNAL: Position.LocSource.ValueType # 3 + """ + TODO: REPLACE + """ + + class _AltSource: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _AltSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Position._AltSource.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ALT_UNSET: Position._AltSource.ValueType # 0 + """ + TODO: REPLACE + """ + ALT_MANUAL: Position._AltSource.ValueType # 1 + """ + TODO: REPLACE + """ + ALT_INTERNAL: Position._AltSource.ValueType # 2 + """ + TODO: REPLACE + """ + ALT_EXTERNAL: Position._AltSource.ValueType # 3 + """ + TODO: REPLACE + """ + ALT_BAROMETRIC: Position._AltSource.ValueType # 4 + """ + TODO: REPLACE + """ + + class AltSource(_AltSource, metaclass=_AltSourceEnumTypeWrapper): + """ + How the altitude was acquired: manual, GPS int/ext, etc + Default: same as location_source if present + """ + + ALT_UNSET: Position.AltSource.ValueType # 0 + """ + TODO: REPLACE + """ + ALT_MANUAL: Position.AltSource.ValueType # 1 + """ + TODO: REPLACE + """ + ALT_INTERNAL: Position.AltSource.ValueType # 2 + """ + TODO: REPLACE + """ + ALT_EXTERNAL: Position.AltSource.ValueType # 3 + """ + TODO: REPLACE + """ + ALT_BAROMETRIC: Position.AltSource.ValueType # 4 + """ + TODO: REPLACE + """ + + LATITUDE_I_FIELD_NUMBER: builtins.int + LONGITUDE_I_FIELD_NUMBER: builtins.int + ALTITUDE_FIELD_NUMBER: builtins.int + TIME_FIELD_NUMBER: builtins.int + LOCATION_SOURCE_FIELD_NUMBER: builtins.int + ALTITUDE_SOURCE_FIELD_NUMBER: builtins.int + TIMESTAMP_FIELD_NUMBER: builtins.int + TIMESTAMP_MILLIS_ADJUST_FIELD_NUMBER: builtins.int + ALTITUDE_HAE_FIELD_NUMBER: builtins.int + ALTITUDE_GEOIDAL_SEPARATION_FIELD_NUMBER: builtins.int + PDOP_FIELD_NUMBER: builtins.int + HDOP_FIELD_NUMBER: builtins.int + VDOP_FIELD_NUMBER: builtins.int + GPS_ACCURACY_FIELD_NUMBER: builtins.int + GROUND_SPEED_FIELD_NUMBER: builtins.int + GROUND_TRACK_FIELD_NUMBER: builtins.int + FIX_QUALITY_FIELD_NUMBER: builtins.int + FIX_TYPE_FIELD_NUMBER: builtins.int + SATS_IN_VIEW_FIELD_NUMBER: builtins.int + SENSOR_ID_FIELD_NUMBER: builtins.int + NEXT_UPDATE_FIELD_NUMBER: builtins.int + SEQ_NUMBER_FIELD_NUMBER: builtins.int + PRECISION_BITS_FIELD_NUMBER: builtins.int + latitude_i: builtins.int + """ + The new preferred location encoding, multiply by 1e-7 to get degrees + in floating point + """ + longitude_i: builtins.int + """ + TODO: REPLACE + """ + altitude: builtins.int + """ + In meters above MSL (but see issue #359) + """ + time: builtins.int + """ + This is usually not sent over the mesh (to save space), but it is sent + from the phone so that the local device can set its time if it is sent over + the mesh (because there are devices on the mesh without GPS or RTC). + seconds since 1970 + """ + location_source: global___Position.LocSource.ValueType + """ + TODO: REPLACE + """ + altitude_source: global___Position.AltSource.ValueType + """ + TODO: REPLACE + """ + timestamp: builtins.int + """ + Positional timestamp (actual timestamp of GPS solution) in integer epoch seconds + """ + timestamp_millis_adjust: builtins.int + """ + Pos. timestamp milliseconds adjustment (rarely available or required) + """ + altitude_hae: builtins.int + """ + HAE altitude in meters - can be used instead of MSL altitude + """ + altitude_geoidal_separation: builtins.int + """ + Geoidal separation in meters + """ + PDOP: builtins.int + """ + Horizontal, Vertical and Position Dilution of Precision, in 1/100 units + - PDOP is sufficient for most cases + - for higher precision scenarios, HDOP and VDOP can be used instead, + in which case PDOP becomes redundant (PDOP=sqrt(HDOP^2 + VDOP^2)) + TODO: REMOVE/INTEGRATE + """ + HDOP: builtins.int + """ + TODO: REPLACE + """ + VDOP: builtins.int + """ + TODO: REPLACE + """ + gps_accuracy: builtins.int + """ + GPS accuracy (a hardware specific constant) in mm + multiplied with DOP to calculate positional accuracy + Default: "'bout three meters-ish" :) + """ + ground_speed: builtins.int + """ + Ground speed in m/s and True North TRACK in 1/100 degrees + Clarification of terms: + - "track" is the direction of motion (measured in horizontal plane) + - "heading" is where the fuselage points (measured in horizontal plane) + - "yaw" indicates a relative rotation about the vertical axis + TODO: REMOVE/INTEGRATE + """ + ground_track: builtins.int + """ + TODO: REPLACE + """ + fix_quality: builtins.int + """ + GPS fix quality (from NMEA GxGGA statement or similar) + """ + fix_type: builtins.int + """ + GPS fix type 2D/3D (from NMEA GxGSA statement) + """ + sats_in_view: builtins.int + """ + GPS "Satellites in View" number + """ + sensor_id: builtins.int + """ + Sensor ID - in case multiple positioning sensors are being used + """ + next_update: builtins.int + """ + Estimated/expected time (in seconds) until next update: + - if we update at fixed intervals of X seconds, use X + - if we update at dynamic intervals (based on relative movement etc), + but "AT LEAST every Y seconds", use Y + """ + seq_number: builtins.int + """ + A sequence number, incremented with each Position message to help + detect lost updates if needed + """ + precision_bits: builtins.int + """ + Indicates the bits of precision set by the sending node + """ + def __init__( + self, + *, + latitude_i: builtins.int = ..., + longitude_i: builtins.int = ..., + altitude: builtins.int = ..., + time: builtins.int = ..., + location_source: global___Position.LocSource.ValueType = ..., + altitude_source: global___Position.AltSource.ValueType = ..., + timestamp: builtins.int = ..., + timestamp_millis_adjust: builtins.int = ..., + altitude_hae: builtins.int = ..., + altitude_geoidal_separation: builtins.int = ..., + PDOP: builtins.int = ..., + HDOP: builtins.int = ..., + VDOP: builtins.int = ..., + gps_accuracy: builtins.int = ..., + ground_speed: builtins.int = ..., + ground_track: builtins.int = ..., + fix_quality: builtins.int = ..., + fix_type: builtins.int = ..., + sats_in_view: builtins.int = ..., + sensor_id: builtins.int = ..., + next_update: builtins.int = ..., + seq_number: builtins.int = ..., + precision_bits: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["HDOP", b"HDOP", "PDOP", b"PDOP", "VDOP", b"VDOP", "altitude", b"altitude", "altitude_geoidal_separation", b"altitude_geoidal_separation", "altitude_hae", b"altitude_hae", "altitude_source", b"altitude_source", "fix_quality", b"fix_quality", "fix_type", b"fix_type", "gps_accuracy", b"gps_accuracy", "ground_speed", b"ground_speed", "ground_track", b"ground_track", "latitude_i", b"latitude_i", "location_source", b"location_source", "longitude_i", b"longitude_i", "next_update", b"next_update", "precision_bits", b"precision_bits", "sats_in_view", b"sats_in_view", "sensor_id", b"sensor_id", "seq_number", b"seq_number", "time", b"time", "timestamp", b"timestamp", "timestamp_millis_adjust", b"timestamp_millis_adjust"]) -> None: ... + +global___Position = Position + +@typing.final +class User(google.protobuf.message.Message): + """ + Broadcast when a newly powered mesh node wants to find a node num it can use + Sent from the phone over bluetooth to set the user id for the owner of this node. + Also sent from nodes to each other when a new node signs on (so all clients can have this info) + The algorithm is as follows: + when a node starts up, it broadcasts their user and the normal flow is for all + other nodes to reply with their User as well (so the new node can build its nodedb) + If a node ever receives a User (not just the first broadcast) message where + the sender node number equals our node number, that indicates a collision has + occurred and the following steps should happen: + If the receiving node (that was already in the mesh)'s macaddr is LOWER than the + new User who just tried to sign in: it gets to keep its nodenum. + We send a broadcast message of OUR User (we use a broadcast so that the other node can + receive our message, considering we have the same id - it also serves to let + observers correct their nodedb) - this case is rare so it should be okay. + If any node receives a User where the macaddr is GTE than their local macaddr, + they have been vetoed and should pick a new random nodenum (filtering against + whatever it knows about the nodedb) and rebroadcast their User. + A few nodenums are reserved and will never be requested: + 0xff - broadcast + 0 through 3 - for future use + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + LONG_NAME_FIELD_NUMBER: builtins.int + SHORT_NAME_FIELD_NUMBER: builtins.int + MACADDR_FIELD_NUMBER: builtins.int + HW_MODEL_FIELD_NUMBER: builtins.int + IS_LICENSED_FIELD_NUMBER: builtins.int + ROLE_FIELD_NUMBER: builtins.int + id: builtins.str + """ + A globally unique ID string for this user. + In the case of Signal that would mean +16504442323, for the default macaddr derived id it would be !<8 hexidecimal bytes>. + Note: app developers are encouraged to also use the following standard + node IDs "^all" (for broadcast), "^local" (for the locally connected node) + """ + long_name: builtins.str + """ + A full name for this user, i.e. "Kevin Hester" + """ + short_name: builtins.str + """ + A VERY short name, ideally two characters. + Suitable for a tiny OLED screen + """ + macaddr: builtins.bytes + """ + Deprecated in Meshtastic 2.1.x + This is the addr of the radio. + Not populated by the phone, but added by the esp32 when broadcasting + """ + hw_model: global___HardwareModel.ValueType + """ + TBEAM, HELTEC, etc... + Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. + Apps will still need the string here for older builds + (so OTA update can find the right image), but if the enum is available it will be used instead. + """ + is_licensed: builtins.bool + """ + In some regions Ham radio operators have different bandwidth limitations than others. + If this user is a licensed operator, set this flag. + Also, "long_name" should be their licence number. + """ + role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType + """ + Indicates that the user's role in the mesh + """ + def __init__( + self, + *, + id: builtins.str = ..., + long_name: builtins.str = ..., + short_name: builtins.str = ..., + macaddr: builtins.bytes = ..., + hw_model: global___HardwareModel.ValueType = ..., + is_licensed: builtins.bool = ..., + role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["hw_model", b"hw_model", "id", b"id", "is_licensed", b"is_licensed", "long_name", b"long_name", "macaddr", b"macaddr", "role", b"role", "short_name", b"short_name"]) -> None: ... + +global___User = User + +@typing.final +class RouteDiscovery(google.protobuf.message.Message): + """ + A message used in our Dynamic Source Routing protocol (RFC 4728 based) + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ROUTE_FIELD_NUMBER: builtins.int + @property + def route(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + """ + The list of nodenums this packet has visited so far + """ + + def __init__( + self, + *, + route: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["route", b"route"]) -> None: ... + +global___RouteDiscovery = RouteDiscovery + +@typing.final +class Routing(google.protobuf.message.Message): + """ + A Routing control Data packet handled by the routing module + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Error: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ErrorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Routing._Error.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NONE: Routing._Error.ValueType # 0 + """ + This message is not a failure + """ + NO_ROUTE: Routing._Error.ValueType # 1 + """ + Our node doesn't have a route to the requested destination anymore. + """ + GOT_NAK: Routing._Error.ValueType # 2 + """ + We received a nak while trying to forward on your behalf + """ + TIMEOUT: Routing._Error.ValueType # 3 + """ + TODO: REPLACE + """ + NO_INTERFACE: Routing._Error.ValueType # 4 + """ + No suitable interface could be found for delivering this packet + """ + MAX_RETRANSMIT: Routing._Error.ValueType # 5 + """ + We reached the max retransmission count (typically for naive flood routing) + """ + NO_CHANNEL: Routing._Error.ValueType # 6 + """ + No suitable channel was found for sending this packet (i.e. was requested channel index disabled?) + """ + TOO_LARGE: Routing._Error.ValueType # 7 + """ + The packet was too big for sending (exceeds interface MTU after encoding) + """ + NO_RESPONSE: Routing._Error.ValueType # 8 + """ + The request had want_response set, the request reached the destination node, but no service on that node wants to send a response + (possibly due to bad channel permissions) + """ + DUTY_CYCLE_LIMIT: Routing._Error.ValueType # 9 + """ + Cannot send currently because duty cycle regulations will be violated. + """ + BAD_REQUEST: Routing._Error.ValueType # 32 + """ + The application layer service on the remote node received your request, but considered your request somehow invalid + """ + NOT_AUTHORIZED: Routing._Error.ValueType # 33 + """ + The application layer service on the remote node received your request, but considered your request not authorized + (i.e you did not send the request on the required bound channel) + """ + + class Error(_Error, metaclass=_ErrorEnumTypeWrapper): + """ + A failure in delivering a message (usually used for routing control messages, but might be provided in addition to ack.fail_id to provide + details on the type of failure). + """ + + NONE: Routing.Error.ValueType # 0 + """ + This message is not a failure + """ + NO_ROUTE: Routing.Error.ValueType # 1 + """ + Our node doesn't have a route to the requested destination anymore. + """ + GOT_NAK: Routing.Error.ValueType # 2 + """ + We received a nak while trying to forward on your behalf + """ + TIMEOUT: Routing.Error.ValueType # 3 + """ + TODO: REPLACE + """ + NO_INTERFACE: Routing.Error.ValueType # 4 + """ + No suitable interface could be found for delivering this packet + """ + MAX_RETRANSMIT: Routing.Error.ValueType # 5 + """ + We reached the max retransmission count (typically for naive flood routing) + """ + NO_CHANNEL: Routing.Error.ValueType # 6 + """ + No suitable channel was found for sending this packet (i.e. was requested channel index disabled?) + """ + TOO_LARGE: Routing.Error.ValueType # 7 + """ + The packet was too big for sending (exceeds interface MTU after encoding) + """ + NO_RESPONSE: Routing.Error.ValueType # 8 + """ + The request had want_response set, the request reached the destination node, but no service on that node wants to send a response + (possibly due to bad channel permissions) + """ + DUTY_CYCLE_LIMIT: Routing.Error.ValueType # 9 + """ + Cannot send currently because duty cycle regulations will be violated. + """ + BAD_REQUEST: Routing.Error.ValueType # 32 + """ + The application layer service on the remote node received your request, but considered your request somehow invalid + """ + NOT_AUTHORIZED: Routing.Error.ValueType # 33 + """ + The application layer service on the remote node received your request, but considered your request not authorized + (i.e you did not send the request on the required bound channel) + """ + + ROUTE_REQUEST_FIELD_NUMBER: builtins.int + ROUTE_REPLY_FIELD_NUMBER: builtins.int + ERROR_REASON_FIELD_NUMBER: builtins.int + error_reason: global___Routing.Error.ValueType + """ + A failure in delivering a message (usually used for routing control messages, but might be provided + in addition to ack.fail_id to provide details on the type of failure). + """ + @property + def route_request(self) -> global___RouteDiscovery: + """ + A route request going from the requester + """ + + @property + def route_reply(self) -> global___RouteDiscovery: + """ + A route reply + """ + + def __init__( + self, + *, + route_request: global___RouteDiscovery | None = ..., + route_reply: global___RouteDiscovery | None = ..., + error_reason: global___Routing.Error.ValueType = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["error_reason", b"error_reason", "route_reply", b"route_reply", "route_request", b"route_request", "variant", b"variant"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["error_reason", b"error_reason", "route_reply", b"route_reply", "route_request", b"route_request", "variant", b"variant"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["variant", b"variant"]) -> typing.Literal["route_request", "route_reply", "error_reason"] | None: ... + +global___Routing = Routing + +@typing.final +class Data(google.protobuf.message.Message): + """ + (Formerly called SubPacket) + The payload portion fo a packet, this is the actual bytes that are sent + inside a radio packet (because from/to are broken out by the comms library) + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PORTNUM_FIELD_NUMBER: builtins.int + PAYLOAD_FIELD_NUMBER: builtins.int + WANT_RESPONSE_FIELD_NUMBER: builtins.int + DEST_FIELD_NUMBER: builtins.int + SOURCE_FIELD_NUMBER: builtins.int + REQUEST_ID_FIELD_NUMBER: builtins.int + REPLY_ID_FIELD_NUMBER: builtins.int + EMOJI_FIELD_NUMBER: builtins.int + portnum: meshtastic.protobuf.portnums_pb2.PortNum.ValueType + """ + Formerly named typ and of type Type + """ + payload: builtins.bytes + """ + TODO: REPLACE + """ + want_response: builtins.bool + """ + Not normally used, but for testing a sender can request that recipient + responds in kind (i.e. if it received a position, it should unicast back it's position). + Note: that if you set this on a broadcast you will receive many replies. + """ + dest: builtins.int + """ + The address of the destination node. + This field is is filled in by the mesh radio device software, application + layer software should never need it. + RouteDiscovery messages _must_ populate this. + Other message types might need to if they are doing multihop routing. + """ + source: builtins.int + """ + The address of the original sender for this message. + This field should _only_ be populated for reliable multihop packets (to keep + packets small). + """ + request_id: builtins.int + """ + Only used in routing or response messages. + Indicates the original message ID that this message is reporting failure on. (formerly called original_id) + """ + reply_id: builtins.int + """ + If set, this message is intened to be a reply to a previously sent message with the defined id. + """ + emoji: builtins.int + """ + Defaults to false. If true, then what is in the payload should be treated as an emoji like giving + a message a heart or poop emoji. + """ + def __init__( + self, + *, + portnum: meshtastic.protobuf.portnums_pb2.PortNum.ValueType = ..., + payload: builtins.bytes = ..., + want_response: builtins.bool = ..., + dest: builtins.int = ..., + source: builtins.int = ..., + request_id: builtins.int = ..., + reply_id: builtins.int = ..., + emoji: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["dest", b"dest", "emoji", b"emoji", "payload", b"payload", "portnum", b"portnum", "reply_id", b"reply_id", "request_id", b"request_id", "source", b"source", "want_response", b"want_response"]) -> None: ... + +global___Data = Data + +@typing.final +class Waypoint(google.protobuf.message.Message): + """ + Waypoint message, used to share arbitrary locations across the mesh + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + LATITUDE_I_FIELD_NUMBER: builtins.int + LONGITUDE_I_FIELD_NUMBER: builtins.int + EXPIRE_FIELD_NUMBER: builtins.int + LOCKED_TO_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + DESCRIPTION_FIELD_NUMBER: builtins.int + ICON_FIELD_NUMBER: builtins.int + id: builtins.int + """ + Id of the waypoint + """ + latitude_i: builtins.int + """ + latitude_i + """ + longitude_i: builtins.int + """ + longitude_i + """ + expire: builtins.int + """ + Time the waypoint is to expire (epoch) + """ + locked_to: builtins.int + """ + If greater than zero, treat the value as a nodenum only allowing them to update the waypoint. + If zero, the waypoint is open to be edited by any member of the mesh. + """ + name: builtins.str + """ + Name of the waypoint - max 30 chars + """ + description: builtins.str + """ + Description of the waypoint - max 100 chars + """ + icon: builtins.int + """ + Designator icon for the waypoint in the form of a unicode emoji + """ + def __init__( + self, + *, + id: builtins.int = ..., + latitude_i: builtins.int = ..., + longitude_i: builtins.int = ..., + expire: builtins.int = ..., + locked_to: builtins.int = ..., + name: builtins.str = ..., + description: builtins.str = ..., + icon: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["description", b"description", "expire", b"expire", "icon", b"icon", "id", b"id", "latitude_i", b"latitude_i", "locked_to", b"locked_to", "longitude_i", b"longitude_i", "name", b"name"]) -> None: ... + +global___Waypoint = Waypoint + +@typing.final +class MqttClientProxyMessage(google.protobuf.message.Message): + """ + This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TOPIC_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + TEXT_FIELD_NUMBER: builtins.int + RETAINED_FIELD_NUMBER: builtins.int + topic: builtins.str + """ + The MQTT topic this message will be sent /received on + """ + data: builtins.bytes + """ + Bytes + """ + text: builtins.str + """ + Text + """ + retained: builtins.bool + """ + Whether the message should be retained (or not) + """ + def __init__( + self, + *, + topic: builtins.str = ..., + data: builtins.bytes = ..., + text: builtins.str = ..., + retained: builtins.bool = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["data", b"data", "payload_variant", b"payload_variant", "text", b"text"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "payload_variant", b"payload_variant", "retained", b"retained", "text", b"text", "topic", b"topic"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["data", "text"] | None: ... + +global___MqttClientProxyMessage = MqttClientProxyMessage + +@typing.final +class MeshPacket(google.protobuf.message.Message): + """ + A packet envelope sent/received over the mesh + only payload_variant is sent in the payload portion of the LORA packet. + The other fields are either not sent at all, or sent in the special 16 byte LORA header. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Priority: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _PriorityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MeshPacket._Priority.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNSET: MeshPacket._Priority.ValueType # 0 + """ + Treated as Priority.DEFAULT + """ + MIN: MeshPacket._Priority.ValueType # 1 + """ + TODO: REPLACE + """ + BACKGROUND: MeshPacket._Priority.ValueType # 10 + """ + Background position updates are sent with very low priority - + if the link is super congested they might not go out at all + """ + DEFAULT: MeshPacket._Priority.ValueType # 64 + """ + This priority is used for most messages that don't have a priority set + """ + RELIABLE: MeshPacket._Priority.ValueType # 70 + """ + If priority is unset but the message is marked as want_ack, + assume it is important and use a slightly higher priority + """ + ACK: MeshPacket._Priority.ValueType # 120 + """ + Ack/naks are sent with very high priority to ensure that retransmission + stops as soon as possible + """ + MAX: MeshPacket._Priority.ValueType # 127 + """ + TODO: REPLACE + """ + + class Priority(_Priority, metaclass=_PriorityEnumTypeWrapper): + """ + The priority of this message for sending. + Higher priorities are sent first (when managing the transmit queue). + This field is never sent over the air, it is only used internally inside of a local device node. + API clients (either on the local node or connected directly to the node) + can set this parameter if necessary. + (values must be <= 127 to keep protobuf field to one byte in size. + Detailed background on this field: + I noticed a funny side effect of lora being so slow: Usually when making + a protocol there isn’t much need to use message priority to change the order + of transmission (because interfaces are fairly fast). + But for lora where packets can take a few seconds each, it is very important + to make sure that critical packets are sent ASAP. + In the case of meshtastic that means we want to send protocol acks as soon as possible + (to prevent unneeded retransmissions), we want routing messages to be sent next, + then messages marked as reliable and finally 'background' packets like periodic position updates. + So I bit the bullet and implemented a new (internal - not sent over the air) + field in MeshPacket called 'priority'. + And the transmission queue in the router object is now a priority queue. + """ + + UNSET: MeshPacket.Priority.ValueType # 0 + """ + Treated as Priority.DEFAULT + """ + MIN: MeshPacket.Priority.ValueType # 1 + """ + TODO: REPLACE + """ + BACKGROUND: MeshPacket.Priority.ValueType # 10 + """ + Background position updates are sent with very low priority - + if the link is super congested they might not go out at all + """ + DEFAULT: MeshPacket.Priority.ValueType # 64 + """ + This priority is used for most messages that don't have a priority set + """ + RELIABLE: MeshPacket.Priority.ValueType # 70 + """ + If priority is unset but the message is marked as want_ack, + assume it is important and use a slightly higher priority + """ + ACK: MeshPacket.Priority.ValueType # 120 + """ + Ack/naks are sent with very high priority to ensure that retransmission + stops as soon as possible + """ + MAX: MeshPacket.Priority.ValueType # 127 + """ + TODO: REPLACE + """ + + class _Delayed: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _DelayedEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MeshPacket._Delayed.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NO_DELAY: MeshPacket._Delayed.ValueType # 0 + """ + If unset, the message is being sent in real time. + """ + DELAYED_BROADCAST: MeshPacket._Delayed.ValueType # 1 + """ + The message is delayed and was originally a broadcast + """ + DELAYED_DIRECT: MeshPacket._Delayed.ValueType # 2 + """ + The message is delayed and was originally a direct message + """ + + class Delayed(_Delayed, metaclass=_DelayedEnumTypeWrapper): + """ + Identify if this is a delayed packet + """ + + NO_DELAY: MeshPacket.Delayed.ValueType # 0 + """ + If unset, the message is being sent in real time. + """ + DELAYED_BROADCAST: MeshPacket.Delayed.ValueType # 1 + """ + The message is delayed and was originally a broadcast + """ + DELAYED_DIRECT: MeshPacket.Delayed.ValueType # 2 + """ + The message is delayed and was originally a direct message + """ + + FROM_FIELD_NUMBER: builtins.int + TO_FIELD_NUMBER: builtins.int + CHANNEL_FIELD_NUMBER: builtins.int + DECODED_FIELD_NUMBER: builtins.int + ENCRYPTED_FIELD_NUMBER: builtins.int + ID_FIELD_NUMBER: builtins.int + RX_TIME_FIELD_NUMBER: builtins.int + RX_SNR_FIELD_NUMBER: builtins.int + HOP_LIMIT_FIELD_NUMBER: builtins.int + WANT_ACK_FIELD_NUMBER: builtins.int + PRIORITY_FIELD_NUMBER: builtins.int + RX_RSSI_FIELD_NUMBER: builtins.int + DELAYED_FIELD_NUMBER: builtins.int + VIA_MQTT_FIELD_NUMBER: builtins.int + HOP_START_FIELD_NUMBER: builtins.int + to: builtins.int + """ + The (immediate) destination for this packet + """ + channel: builtins.int + """ + (Usually) If set, this indicates the index in the secondary_channels table that this packet was sent/received on. + If unset, packet was on the primary channel. + A particular node might know only a subset of channels in use on the mesh. + Therefore channel_index is inherently a local concept and meaningless to send between nodes. + Very briefly, while sending and receiving deep inside the device Router code, this field instead + contains the 'channel hash' instead of the index. + This 'trick' is only used while the payload_variant is an 'encrypted'. + """ + encrypted: builtins.bytes + """ + TODO: REPLACE + """ + id: builtins.int + """ + A unique ID for this packet. + Always 0 for no-ack packets or non broadcast packets (and therefore take zero bytes of space). + Otherwise a unique ID for this packet, useful for flooding algorithms. + ID only needs to be unique on a _per sender_ basis, and it only + needs to be unique for a few minutes (long enough to last for the length of + any ACK or the completion of a mesh broadcast flood). + Note: Our crypto implementation uses this id as well. + See [crypto](/docs/overview/encryption) for details. + """ + rx_time: builtins.int + """ + The time this message was received by the esp32 (secs since 1970). + Note: this field is _never_ sent on the radio link itself (to save space) Times + are typically not sent over the mesh, but they will be added to any Packet + (chain of SubPacket) sent to the phone (so the phone can know exact time of reception) + """ + rx_snr: builtins.float + """ + *Never* sent over the radio links. + Set during reception to indicate the SNR of this packet. + Used to collect statistics on current link quality. + """ + hop_limit: builtins.int + """ + If unset treated as zero (no forwarding, send to adjacent nodes only) + if 1, allow hopping through one node, etc... + For our usecase real world topologies probably have a max of about 3. + This field is normally placed into a few of bits in the header. + """ + want_ack: builtins.bool + """ + This packet is being sent as a reliable message, we would prefer it to arrive at the destination. + We would like to receive a ack packet in response. + Broadcasts messages treat this flag specially: Since acks for broadcasts would + rapidly flood the channel, the normal ack behavior is suppressed. + Instead, the original sender listens to see if at least one node is rebroadcasting this packet (because naive flooding algorithm). + If it hears that the odds (given typical LoRa topologies) the odds are very high that every node should eventually receive the message. + So FloodingRouter.cpp generates an implicit ack which is delivered to the original sender. + If after some time we don't hear anyone rebroadcast our packet, we will timeout and retransmit, using the regular resend logic. + Note: This flag is normally sent in a flag bit in the header when sent over the wire + """ + priority: global___MeshPacket.Priority.ValueType + """ + The priority of this message for sending. + See MeshPacket.Priority description for more details. + """ + rx_rssi: builtins.int + """ + rssi of received packet. Only sent to phone for dispay purposes. + """ + delayed: global___MeshPacket.Delayed.ValueType + """ + Describe if this message is delayed + """ + via_mqtt: builtins.bool + """ + Describes whether this packet passed via MQTT somewhere along the path it currently took. + """ + hop_start: builtins.int + """ + Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header. + When receiving a packet, the difference between hop_start and hop_limit gives how many hops it traveled. + """ + @property + def decoded(self) -> global___Data: + """ + TODO: REPLACE + """ + + def __init__( + self, + *, + to: builtins.int = ..., + channel: builtins.int = ..., + decoded: global___Data | None = ..., + encrypted: builtins.bytes = ..., + id: builtins.int = ..., + rx_time: builtins.int = ..., + rx_snr: builtins.float = ..., + hop_limit: builtins.int = ..., + want_ack: builtins.bool = ..., + priority: global___MeshPacket.Priority.ValueType = ..., + rx_rssi: builtins.int = ..., + delayed: global___MeshPacket.Delayed.ValueType = ..., + via_mqtt: builtins.bool = ..., + hop_start: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["decoded", b"decoded", "encrypted", b"encrypted", "payload_variant", b"payload_variant"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel", b"channel", "decoded", b"decoded", "delayed", b"delayed", "encrypted", b"encrypted", "from", b"from", "hop_limit", b"hop_limit", "hop_start", b"hop_start", "id", b"id", "payload_variant", b"payload_variant", "priority", b"priority", "rx_rssi", b"rx_rssi", "rx_snr", b"rx_snr", "rx_time", b"rx_time", "to", b"to", "via_mqtt", b"via_mqtt", "want_ack", b"want_ack"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["decoded", "encrypted"] | None: ... + +global___MeshPacket = MeshPacket + +@typing.final +class NodeInfo(google.protobuf.message.Message): + """ + The bluetooth to device link: + Old BTLE protocol docs from TODO, merge in above and make real docs... + use protocol buffers, and NanoPB + messages from device to phone: + POSITION_UPDATE (..., time) + TEXT_RECEIVED(from, text, time) + OPAQUE_RECEIVED(from, payload, time) (for signal messages or other applications) + messages from phone to device: + SET_MYID(id, human readable long, human readable short) (send down the unique ID + string used for this node, a human readable string shown for that id, and a very + short human readable string suitable for oled screen) SEND_OPAQUE(dest, payload) + (for signal messages or other applications) SEND_TEXT(dest, text) Get all + nodes() (returns list of nodes, with full info, last time seen, loc, battery + level etc) SET_CONFIG (switches device to a new set of radio params and + preshared key, drops all existing nodes, force our node to rejoin this new group) + Full information about a node on the mesh + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NUM_FIELD_NUMBER: builtins.int + USER_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + SNR_FIELD_NUMBER: builtins.int + LAST_HEARD_FIELD_NUMBER: builtins.int + DEVICE_METRICS_FIELD_NUMBER: builtins.int + CHANNEL_FIELD_NUMBER: builtins.int + VIA_MQTT_FIELD_NUMBER: builtins.int + HOPS_AWAY_FIELD_NUMBER: builtins.int + IS_FAVORITE_FIELD_NUMBER: builtins.int + num: builtins.int + """ + The node number + """ + snr: builtins.float + """ + Returns the Signal-to-noise ratio (SNR) of the last received message, + as measured by the receiver. Return SNR of the last received message in dB + """ + last_heard: builtins.int + """ + TODO: REMOVE/INTEGRATE + Not currently used (till full DSR deployment?) Our current preferred node node for routing - might be the same as num if + we are adjacent Or zero if we don't yet know a route to this node. + fixed32 next_hop = 5; + + + Set to indicate the last time we received a packet from this node + """ + channel: builtins.int + """ + local channel index we heard that node on. Only populated if its not the default channel. + """ + via_mqtt: builtins.bool + """ + True if we witnessed the node over MQTT instead of LoRA transport + """ + hops_away: builtins.int + """ + Number of hops away from us this node is (0 if adjacent) + """ + is_favorite: builtins.bool + """ + True if node is in our favorites list + Persists between NodeDB internal clean ups + """ + @property + def user(self) -> global___User: + """ + The user info for this node + """ + + @property + def position(self) -> global___Position: + """ + This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. + Position.time now indicates the last time we received a POSITION from that node. + """ + + @property + def device_metrics(self) -> meshtastic.protobuf.telemetry_pb2.DeviceMetrics: + """ + The latest device metrics for the node. + """ + + def __init__( + self, + *, + num: builtins.int = ..., + user: global___User | None = ..., + position: global___Position | None = ..., + snr: builtins.float = ..., + last_heard: builtins.int = ..., + device_metrics: meshtastic.protobuf.telemetry_pb2.DeviceMetrics | None = ..., + channel: builtins.int = ..., + via_mqtt: builtins.bool = ..., + hops_away: builtins.int = ..., + is_favorite: builtins.bool = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["device_metrics", b"device_metrics", "position", b"position", "user", b"user"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel", b"channel", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "is_favorite", b"is_favorite", "last_heard", b"last_heard", "num", b"num", "position", b"position", "snr", b"snr", "user", b"user", "via_mqtt", b"via_mqtt"]) -> None: ... + +global___NodeInfo = NodeInfo + +@typing.final +class MyNodeInfo(google.protobuf.message.Message): + """ + Unique local debugging info for this node + Note: we don't include position or the user info, because that will come in the + Sent to the phone in response to WantNodes. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MY_NODE_NUM_FIELD_NUMBER: builtins.int + REBOOT_COUNT_FIELD_NUMBER: builtins.int + MIN_APP_VERSION_FIELD_NUMBER: builtins.int + my_node_num: builtins.int + """ + Tells the phone what our node number is, default starting value is + lowbyte of macaddr, but it will be fixed if that is already in use + """ + reboot_count: builtins.int + """ + The total number of reboots this node has ever encountered + (well - since the last time we discarded preferences) + """ + min_app_version: builtins.int + """ + The minimum app version that can talk to this device. + Phone/PC apps should compare this to their build number and if too low tell the user they must update their app + """ + def __init__( + self, + *, + my_node_num: builtins.int = ..., + reboot_count: builtins.int = ..., + min_app_version: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["min_app_version", b"min_app_version", "my_node_num", b"my_node_num", "reboot_count", b"reboot_count"]) -> None: ... + +global___MyNodeInfo = MyNodeInfo + +@typing.final +class LogRecord(google.protobuf.message.Message): + """ + Debug output from the device. + To minimize the size of records inside the device code, if a time/source/level is not set + on the message it is assumed to be a continuation of the previously sent message. + This allows the device code to use fixed maxlen 64 byte strings for messages, + and then extend as needed by emitting multiple records. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Level: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _LevelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[LogRecord._Level.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNSET: LogRecord._Level.ValueType # 0 + """ + Log levels, chosen to match python logging conventions. + """ + CRITICAL: LogRecord._Level.ValueType # 50 + """ + Log levels, chosen to match python logging conventions. + """ + ERROR: LogRecord._Level.ValueType # 40 + """ + Log levels, chosen to match python logging conventions. + """ + WARNING: LogRecord._Level.ValueType # 30 + """ + Log levels, chosen to match python logging conventions. + """ + INFO: LogRecord._Level.ValueType # 20 + """ + Log levels, chosen to match python logging conventions. + """ + DEBUG: LogRecord._Level.ValueType # 10 + """ + Log levels, chosen to match python logging conventions. + """ + TRACE: LogRecord._Level.ValueType # 5 + """ + Log levels, chosen to match python logging conventions. + """ + + class Level(_Level, metaclass=_LevelEnumTypeWrapper): + """ + Log levels, chosen to match python logging conventions. + """ + + UNSET: LogRecord.Level.ValueType # 0 + """ + Log levels, chosen to match python logging conventions. + """ + CRITICAL: LogRecord.Level.ValueType # 50 + """ + Log levels, chosen to match python logging conventions. + """ + ERROR: LogRecord.Level.ValueType # 40 + """ + Log levels, chosen to match python logging conventions. + """ + WARNING: LogRecord.Level.ValueType # 30 + """ + Log levels, chosen to match python logging conventions. + """ + INFO: LogRecord.Level.ValueType # 20 + """ + Log levels, chosen to match python logging conventions. + """ + DEBUG: LogRecord.Level.ValueType # 10 + """ + Log levels, chosen to match python logging conventions. + """ + TRACE: LogRecord.Level.ValueType # 5 + """ + Log levels, chosen to match python logging conventions. + """ + + MESSAGE_FIELD_NUMBER: builtins.int + TIME_FIELD_NUMBER: builtins.int + SOURCE_FIELD_NUMBER: builtins.int + LEVEL_FIELD_NUMBER: builtins.int + message: builtins.str + """ + Log levels, chosen to match python logging conventions. + """ + time: builtins.int + """ + Seconds since 1970 - or 0 for unknown/unset + """ + source: builtins.str + """ + Usually based on thread name - if known + """ + level: global___LogRecord.Level.ValueType + """ + Not yet set + """ + def __init__( + self, + *, + message: builtins.str = ..., + time: builtins.int = ..., + source: builtins.str = ..., + level: global___LogRecord.Level.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["level", b"level", "message", b"message", "source", b"source", "time", b"time"]) -> None: ... + +global___LogRecord = LogRecord + +@typing.final +class QueueStatus(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RES_FIELD_NUMBER: builtins.int + FREE_FIELD_NUMBER: builtins.int + MAXLEN_FIELD_NUMBER: builtins.int + MESH_PACKET_ID_FIELD_NUMBER: builtins.int + res: builtins.int + """Last attempt to queue status, ErrorCode""" + free: builtins.int + """Free entries in the outgoing queue""" + maxlen: builtins.int + """Maximum entries in the outgoing queue""" + mesh_packet_id: builtins.int + """What was mesh packet id that generated this response?""" + def __init__( + self, + *, + res: builtins.int = ..., + free: builtins.int = ..., + maxlen: builtins.int = ..., + mesh_packet_id: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["free", b"free", "maxlen", b"maxlen", "mesh_packet_id", b"mesh_packet_id", "res", b"res"]) -> None: ... + +global___QueueStatus = QueueStatus + +@typing.final +class FromRadio(google.protobuf.message.Message): + """ + Packets from the radio to the phone will appear on the fromRadio characteristic. + It will support READ and NOTIFY. When a new packet arrives the device will BLE notify? + It will sit in that descriptor until consumed by the phone, + at which point the next item in the FIFO will be populated. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ID_FIELD_NUMBER: builtins.int + PACKET_FIELD_NUMBER: builtins.int + MY_INFO_FIELD_NUMBER: builtins.int + NODE_INFO_FIELD_NUMBER: builtins.int + CONFIG_FIELD_NUMBER: builtins.int + LOG_RECORD_FIELD_NUMBER: builtins.int + CONFIG_COMPLETE_ID_FIELD_NUMBER: builtins.int + REBOOTED_FIELD_NUMBER: builtins.int + MODULECONFIG_FIELD_NUMBER: builtins.int + CHANNEL_FIELD_NUMBER: builtins.int + QUEUESTATUS_FIELD_NUMBER: builtins.int + XMODEMPACKET_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER: builtins.int + id: builtins.int + """ + The packet id, used to allow the phone to request missing read packets from the FIFO, + see our bluetooth docs + """ + config_complete_id: builtins.int + """ + Sent as true once the device has finished sending all of the responses to want_config + recipient should check if this ID matches our original request nonce, if + not, it means your config responses haven't started yet. + NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. + """ + rebooted: builtins.bool + """ + Sent to tell clients the radio has just rebooted. + Set to true if present. + Not used on all transports, currently just used for the serial console. + NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. + """ + @property + def packet(self) -> global___MeshPacket: + """ + Log levels, chosen to match python logging conventions. + """ + + @property + def my_info(self) -> global___MyNodeInfo: + """ + Tells the phone what our node number is, can be -1 if we've not yet joined a mesh. + NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. + """ + + @property + def node_info(self) -> global___NodeInfo: + """ + One packet is sent for each node in the on radio DB + starts over with the first node in our DB + """ + + @property + def config(self) -> meshtastic.protobuf.config_pb2.Config: + """ + Include a part of the config (was: RadioConfig radio) + """ + + @property + def log_record(self) -> global___LogRecord: + """ + Set to send debug console output over our protobuf stream + """ + + @property + def moduleConfig(self) -> meshtastic.protobuf.module_config_pb2.ModuleConfig: + """ + Include module config + """ + + @property + def channel(self) -> meshtastic.protobuf.channel_pb2.Channel: + """ + One packet is sent for each channel + """ + + @property + def queueStatus(self) -> global___QueueStatus: + """ + Queue status info + """ + + @property + def xmodemPacket(self) -> meshtastic.protobuf.xmodem_pb2.XModem: + """ + File Transfer Chunk + """ + + @property + def metadata(self) -> global___DeviceMetadata: + """ + Device metadata message + """ + + @property + def mqttClientProxyMessage(self) -> global___MqttClientProxyMessage: + """ + MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT) + """ + + def __init__( + self, + *, + id: builtins.int = ..., + packet: global___MeshPacket | None = ..., + my_info: global___MyNodeInfo | None = ..., + node_info: global___NodeInfo | None = ..., + config: meshtastic.protobuf.config_pb2.Config | None = ..., + log_record: global___LogRecord | None = ..., + config_complete_id: builtins.int = ..., + rebooted: builtins.bool = ..., + moduleConfig: meshtastic.protobuf.module_config_pb2.ModuleConfig | None = ..., + channel: meshtastic.protobuf.channel_pb2.Channel | None = ..., + queueStatus: global___QueueStatus | None = ..., + xmodemPacket: meshtastic.protobuf.xmodem_pb2.XModem | None = ..., + metadata: global___DeviceMetadata | None = ..., + mqttClientProxyMessage: global___MqttClientProxyMessage | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["channel", b"channel", "config", b"config", "config_complete_id", b"config_complete_id", "log_record", b"log_record", "metadata", b"metadata", "moduleConfig", b"moduleConfig", "mqttClientProxyMessage", b"mqttClientProxyMessage", "my_info", b"my_info", "node_info", b"node_info", "packet", b"packet", "payload_variant", b"payload_variant", "queueStatus", b"queueStatus", "rebooted", b"rebooted", "xmodemPacket", b"xmodemPacket"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel", b"channel", "config", b"config", "config_complete_id", b"config_complete_id", "id", b"id", "log_record", b"log_record", "metadata", b"metadata", "moduleConfig", b"moduleConfig", "mqttClientProxyMessage", b"mqttClientProxyMessage", "my_info", b"my_info", "node_info", b"node_info", "packet", b"packet", "payload_variant", b"payload_variant", "queueStatus", b"queueStatus", "rebooted", b"rebooted", "xmodemPacket", b"xmodemPacket"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["packet", "my_info", "node_info", "config", "log_record", "config_complete_id", "rebooted", "moduleConfig", "channel", "queueStatus", "xmodemPacket", "metadata", "mqttClientProxyMessage"] | None: ... + +global___FromRadio = FromRadio + +@typing.final +class ToRadio(google.protobuf.message.Message): + """ + Packets/commands to the radio will be written (reliably) to the toRadio characteristic. + Once the write completes the phone can assume it is handled. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PACKET_FIELD_NUMBER: builtins.int + WANT_CONFIG_ID_FIELD_NUMBER: builtins.int + DISCONNECT_FIELD_NUMBER: builtins.int + XMODEMPACKET_FIELD_NUMBER: builtins.int + MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER: builtins.int + HEARTBEAT_FIELD_NUMBER: builtins.int + want_config_id: builtins.int + """ + Phone wants radio to send full node db to the phone, This is + typically the first packet sent to the radio when the phone gets a + bluetooth connection. The radio will respond by sending back a + MyNodeInfo, a owner, a radio config and a series of + FromRadio.node_infos, and config_complete + the integer you write into this field will be reported back in the + config_complete_id response this allows clients to never be confused by + a stale old partially sent config. + """ + disconnect: builtins.bool + """ + Tell API server we are disconnecting now. + This is useful for serial links where there is no hardware/protocol based notification that the client has dropped the link. + (Sending this message is optional for clients) + """ + @property + def packet(self) -> global___MeshPacket: + """ + Send this packet on the mesh + """ + + @property + def xmodemPacket(self) -> meshtastic.protobuf.xmodem_pb2.XModem: + """ + File Transfer Chunk + """ + + @property + def mqttClientProxyMessage(self) -> global___MqttClientProxyMessage: + """ + MQTT Client Proxy Message (for client / phone subscribed to MQTT sending to device) + """ + + @property + def heartbeat(self) -> global___Heartbeat: + """ + Heartbeat message (used to keep the device connection awake on serial) + """ + + def __init__( + self, + *, + packet: global___MeshPacket | None = ..., + want_config_id: builtins.int = ..., + disconnect: builtins.bool = ..., + xmodemPacket: meshtastic.protobuf.xmodem_pb2.XModem | None = ..., + mqttClientProxyMessage: global___MqttClientProxyMessage | None = ..., + heartbeat: global___Heartbeat | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["disconnect", b"disconnect", "heartbeat", b"heartbeat", "mqttClientProxyMessage", b"mqttClientProxyMessage", "packet", b"packet", "payload_variant", b"payload_variant", "want_config_id", b"want_config_id", "xmodemPacket", b"xmodemPacket"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["disconnect", b"disconnect", "heartbeat", b"heartbeat", "mqttClientProxyMessage", b"mqttClientProxyMessage", "packet", b"packet", "payload_variant", b"payload_variant", "want_config_id", b"want_config_id", "xmodemPacket", b"xmodemPacket"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["packet", "want_config_id", "disconnect", "xmodemPacket", "mqttClientProxyMessage", "heartbeat"] | None: ... + +global___ToRadio = ToRadio + +@typing.final +class Compressed(google.protobuf.message.Message): + """ + Compressed message payload + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PORTNUM_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + portnum: meshtastic.protobuf.portnums_pb2.PortNum.ValueType + """ + PortNum to determine the how to handle the compressed payload. + """ + data: builtins.bytes + """ + Compressed data. + """ + def __init__( + self, + *, + portnum: meshtastic.protobuf.portnums_pb2.PortNum.ValueType = ..., + data: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "portnum", b"portnum"]) -> None: ... + +global___Compressed = Compressed + +@typing.final +class NeighborInfo(google.protobuf.message.Message): + """ + Full info on edges for a single node + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NODE_ID_FIELD_NUMBER: builtins.int + LAST_SENT_BY_ID_FIELD_NUMBER: builtins.int + NODE_BROADCAST_INTERVAL_SECS_FIELD_NUMBER: builtins.int + NEIGHBORS_FIELD_NUMBER: builtins.int + node_id: builtins.int + """ + The node ID of the node sending info on its neighbors + """ + last_sent_by_id: builtins.int + """ + Field to pass neighbor info for the next sending cycle + """ + node_broadcast_interval_secs: builtins.int + """ + Broadcast interval of the represented node (in seconds) + """ + @property + def neighbors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Neighbor]: + """ + The list of out edges from this node + """ + + def __init__( + self, + *, + node_id: builtins.int = ..., + last_sent_by_id: builtins.int = ..., + node_broadcast_interval_secs: builtins.int = ..., + neighbors: collections.abc.Iterable[global___Neighbor] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["last_sent_by_id", b"last_sent_by_id", "neighbors", b"neighbors", "node_broadcast_interval_secs", b"node_broadcast_interval_secs", "node_id", b"node_id"]) -> None: ... + +global___NeighborInfo = NeighborInfo + +@typing.final +class Neighbor(google.protobuf.message.Message): + """ + A single edge in the mesh + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NODE_ID_FIELD_NUMBER: builtins.int + SNR_FIELD_NUMBER: builtins.int + LAST_RX_TIME_FIELD_NUMBER: builtins.int + NODE_BROADCAST_INTERVAL_SECS_FIELD_NUMBER: builtins.int + node_id: builtins.int + """ + Node ID of neighbor + """ + snr: builtins.float + """ + SNR of last heard message + """ + last_rx_time: builtins.int + """ + Reception time (in secs since 1970) of last message that was last sent by this ID. + Note: this is for local storage only and will not be sent out over the mesh. + """ + node_broadcast_interval_secs: builtins.int + """ + Broadcast interval of this neighbor (in seconds). + Note: this is for local storage only and will not be sent out over the mesh. + """ + def __init__( + self, + *, + node_id: builtins.int = ..., + snr: builtins.float = ..., + last_rx_time: builtins.int = ..., + node_broadcast_interval_secs: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["last_rx_time", b"last_rx_time", "node_broadcast_interval_secs", b"node_broadcast_interval_secs", "node_id", b"node_id", "snr", b"snr"]) -> None: ... + +global___Neighbor = Neighbor + +@typing.final +class DeviceMetadata(google.protobuf.message.Message): + """ + Device metadata response + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + FIRMWARE_VERSION_FIELD_NUMBER: builtins.int + DEVICE_STATE_VERSION_FIELD_NUMBER: builtins.int + CANSHUTDOWN_FIELD_NUMBER: builtins.int + HASWIFI_FIELD_NUMBER: builtins.int + HASBLUETOOTH_FIELD_NUMBER: builtins.int + HASETHERNET_FIELD_NUMBER: builtins.int + ROLE_FIELD_NUMBER: builtins.int + POSITION_FLAGS_FIELD_NUMBER: builtins.int + HW_MODEL_FIELD_NUMBER: builtins.int + HASREMOTEHARDWARE_FIELD_NUMBER: builtins.int + firmware_version: builtins.str + """ + Device firmware version string + """ + device_state_version: builtins.int + """ + Device state version + """ + canShutdown: builtins.bool + """ + Indicates whether the device can shutdown CPU natively or via power management chip + """ + hasWifi: builtins.bool + """ + Indicates that the device has native wifi capability + """ + hasBluetooth: builtins.bool + """ + Indicates that the device has native bluetooth capability + """ + hasEthernet: builtins.bool + """ + Indicates that the device has an ethernet peripheral + """ + role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType + """ + Indicates that the device's role in the mesh + """ + position_flags: builtins.int + """ + Indicates the device's current enabled position flags + """ + hw_model: global___HardwareModel.ValueType + """ + Device hardware model + """ + hasRemoteHardware: builtins.bool + """ + Has Remote Hardware enabled + """ + def __init__( + self, + *, + firmware_version: builtins.str = ..., + device_state_version: builtins.int = ..., + canShutdown: builtins.bool = ..., + hasWifi: builtins.bool = ..., + hasBluetooth: builtins.bool = ..., + hasEthernet: builtins.bool = ..., + role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType = ..., + position_flags: builtins.int = ..., + hw_model: global___HardwareModel.ValueType = ..., + hasRemoteHardware: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["canShutdown", b"canShutdown", "device_state_version", b"device_state_version", "firmware_version", b"firmware_version", "hasBluetooth", b"hasBluetooth", "hasEthernet", b"hasEthernet", "hasRemoteHardware", b"hasRemoteHardware", "hasWifi", b"hasWifi", "hw_model", b"hw_model", "position_flags", b"position_flags", "role", b"role"]) -> None: ... + +global___DeviceMetadata = DeviceMetadata + +@typing.final +class Heartbeat(google.protobuf.message.Message): + """ + A heartbeat message is sent to the node from the client to keep the connection alive. + This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___Heartbeat = Heartbeat + +@typing.final +class NodeRemoteHardwarePin(google.protobuf.message.Message): + """ + RemoteHardwarePins associated with a node + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NODE_NUM_FIELD_NUMBER: builtins.int + PIN_FIELD_NUMBER: builtins.int + node_num: builtins.int + """ + The node_num exposing the available gpio pin + """ + @property + def pin(self) -> meshtastic.protobuf.module_config_pb2.RemoteHardwarePin: + """ + The the available gpio pin for usage with RemoteHardware module + """ + + def __init__( + self, + *, + node_num: builtins.int = ..., + pin: meshtastic.protobuf.module_config_pb2.RemoteHardwarePin | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["pin", b"pin"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["node_num", b"node_num", "pin", b"pin"]) -> None: ... + +global___NodeRemoteHardwarePin = NodeRemoteHardwarePin + +@typing.final +class ChunkedPayload(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAYLOAD_ID_FIELD_NUMBER: builtins.int + CHUNK_COUNT_FIELD_NUMBER: builtins.int + CHUNK_INDEX_FIELD_NUMBER: builtins.int + PAYLOAD_CHUNK_FIELD_NUMBER: builtins.int + payload_id: builtins.int + """ + The ID of the entire payload + """ + chunk_count: builtins.int + """ + The total number of chunks in the payload + """ + chunk_index: builtins.int + """ + The current chunk index in the total + """ + payload_chunk: builtins.bytes + """ + The binary data of the current chunk + """ + def __init__( + self, + *, + payload_id: builtins.int = ..., + chunk_count: builtins.int = ..., + chunk_index: builtins.int = ..., + payload_chunk: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["chunk_count", b"chunk_count", "chunk_index", b"chunk_index", "payload_chunk", b"payload_chunk", "payload_id", b"payload_id"]) -> None: ... + +global___ChunkedPayload = ChunkedPayload + +@typing.final +class resend_chunks(google.protobuf.message.Message): + """ + Wrapper message for broken repeated oneof support + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CHUNKS_FIELD_NUMBER: builtins.int + @property + def chunks(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + chunks: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["chunks", b"chunks"]) -> None: ... + +global___resend_chunks = resend_chunks + +@typing.final +class ChunkedPayloadResponse(google.protobuf.message.Message): + """ + Responses to a ChunkedPayload request + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PAYLOAD_ID_FIELD_NUMBER: builtins.int + REQUEST_TRANSFER_FIELD_NUMBER: builtins.int + ACCEPT_TRANSFER_FIELD_NUMBER: builtins.int + RESEND_CHUNKS_FIELD_NUMBER: builtins.int + payload_id: builtins.int + """ + The ID of the entire payload + """ + request_transfer: builtins.bool + """ + Request to transfer chunked payload + """ + accept_transfer: builtins.bool + """ + Accept the transfer chunked payload + """ + @property + def resend_chunks(self) -> global___resend_chunks: + """ + Request missing indexes in the chunked payload + """ + + def __init__( + self, + *, + payload_id: builtins.int = ..., + request_transfer: builtins.bool = ..., + accept_transfer: builtins.bool = ..., + resend_chunks: global___resend_chunks | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["accept_transfer", b"accept_transfer", "payload_variant", b"payload_variant", "request_transfer", b"request_transfer", "resend_chunks", b"resend_chunks"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["accept_transfer", b"accept_transfer", "payload_id", b"payload_id", "payload_variant", b"payload_variant", "request_transfer", b"request_transfer", "resend_chunks", b"resend_chunks"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["request_transfer", "accept_transfer", "resend_chunks"] | None: ... + +global___ChunkedPayloadResponse = ChunkedPayloadResponse diff --git a/meshtastic/protobuf/module_config_pb2.py b/meshtastic/protobuf/module_config_pb2.py new file mode 100644 index 0000000..b75bbfa --- /dev/null +++ b/meshtastic/protobuf/module_config_pb2.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/module_config.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtastic/protobuf/module_config.proto\x12\x13meshtastic.protobuf\"\x90$\n\x0cModuleConfig\x12<\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfigH\x00\x12@\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfigH\x00\x12]\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfigH\x00\x12M\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfigH\x00\x12G\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfigH\x00\x12\x46\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfigH\x00\x12O\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfigH\x00\x12>\n\x05\x61udio\x18\x08 \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfigH\x00\x12Q\n\x0fremote_hardware\x18\t \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfigH\x00\x12M\n\rneighbor_info\x18\n \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfigH\x00\x12S\n\x10\x61mbient_lighting\x18\x0b \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfigH\x00\x12S\n\x10\x64\x65tection_sensor\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfigH\x00\x12H\n\npaxcounter\x18\r \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfigH\x00\x1a\xb9\x02\n\nMQTTConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x10\n\x08username\x18\x03 \x01(\t\x12\x10\n\x08password\x18\x04 \x01(\t\x12\x1a\n\x12\x65ncryption_enabled\x18\x05 \x01(\x08\x12\x14\n\x0cjson_enabled\x18\x06 \x01(\x08\x12\x13\n\x0btls_enabled\x18\x07 \x01(\x08\x12\x0c\n\x04root\x18\x08 \x01(\t\x12\x1f\n\x17proxy_to_client_enabled\x18\t \x01(\x08\x12\x1d\n\x15map_reporting_enabled\x18\n \x01(\x08\x12P\n\x13map_report_settings\x18\x0b \x01(\x0b\x32\x33.meshtastic.protobuf.ModuleConfig.MapReportSettings\x1aN\n\x11MapReportSettings\x12\x1d\n\x15publish_interval_secs\x18\x01 \x01(\r\x12\x1a\n\x12position_precision\x18\x02 \x01(\r\x1a\x8b\x01\n\x14RemoteHardwareConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1a\x61llow_undefined_pin_access\x18\x02 \x01(\x08\x12>\n\x0e\x61vailable_pins\x18\x03 \x03(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\x1a>\n\x12NeighborInfoConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0fupdate_interval\x18\x02 \x01(\r\x1a\xd2\x01\n\x15\x44\x65tectionSensorConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16minimum_broadcast_secs\x18\x02 \x01(\r\x12\x1c\n\x14state_broadcast_secs\x18\x03 \x01(\r\x12\x11\n\tsend_bell\x18\x04 \x01(\x08\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x13\n\x0bmonitor_pin\x18\x06 \x01(\r\x12 \n\x18\x64\x65tection_triggered_high\x18\x07 \x01(\x08\x12\x12\n\nuse_pullup\x18\x08 \x01(\x08\x1a\xed\x02\n\x0b\x41udioConfig\x12\x16\n\x0e\x63odec2_enabled\x18\x01 \x01(\x08\x12\x0f\n\x07ptt_pin\x18\x02 \x01(\r\x12I\n\x07\x62itrate\x18\x03 \x01(\x0e\x32\x38.meshtastic.protobuf.ModuleConfig.AudioConfig.Audio_Baud\x12\x0e\n\x06i2s_ws\x18\x04 \x01(\r\x12\x0e\n\x06i2s_sd\x18\x05 \x01(\r\x12\x0f\n\x07i2s_din\x18\x06 \x01(\r\x12\x0f\n\x07i2s_sck\x18\x07 \x01(\r\"\xa7\x01\n\nAudio_Baud\x12\x12\n\x0e\x43ODEC2_DEFAULT\x10\x00\x12\x0f\n\x0b\x43ODEC2_3200\x10\x01\x12\x0f\n\x0b\x43ODEC2_2400\x10\x02\x12\x0f\n\x0b\x43ODEC2_1600\x10\x03\x12\x0f\n\x0b\x43ODEC2_1400\x10\x04\x12\x0f\n\x0b\x43ODEC2_1300\x10\x05\x12\x0f\n\x0b\x43ODEC2_1200\x10\x06\x12\x0e\n\nCODEC2_700\x10\x07\x12\x0f\n\x0b\x43ODEC2_700B\x10\x08\x1av\n\x10PaxcounterConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1apaxcounter_update_interval\x18\x02 \x01(\r\x12\x16\n\x0ewifi_threshold\x18\x03 \x01(\x05\x12\x15\n\rble_threshold\x18\x04 \x01(\x05\x1a\xf6\x04\n\x0cSerialConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0c\n\x04\x65\x63ho\x18\x02 \x01(\x08\x12\x0b\n\x03rxd\x18\x03 \x01(\r\x12\x0b\n\x03txd\x18\x04 \x01(\r\x12H\n\x04\x62\x61ud\x18\x05 \x01(\x0e\x32:.meshtastic.protobuf.ModuleConfig.SerialConfig.Serial_Baud\x12\x0f\n\x07timeout\x18\x06 \x01(\r\x12H\n\x04mode\x18\x07 \x01(\x0e\x32:.meshtastic.protobuf.ModuleConfig.SerialConfig.Serial_Mode\x12$\n\x1coverride_console_serial_port\x18\x08 \x01(\x08\"\x8a\x02\n\x0bSerial_Baud\x12\x10\n\x0c\x42\x41UD_DEFAULT\x10\x00\x12\x0c\n\x08\x42\x41UD_110\x10\x01\x12\x0c\n\x08\x42\x41UD_300\x10\x02\x12\x0c\n\x08\x42\x41UD_600\x10\x03\x12\r\n\tBAUD_1200\x10\x04\x12\r\n\tBAUD_2400\x10\x05\x12\r\n\tBAUD_4800\x10\x06\x12\r\n\tBAUD_9600\x10\x07\x12\x0e\n\nBAUD_19200\x10\x08\x12\x0e\n\nBAUD_38400\x10\t\x12\x0e\n\nBAUD_57600\x10\n\x12\x0f\n\x0b\x42\x41UD_115200\x10\x0b\x12\x0f\n\x0b\x42\x41UD_230400\x10\x0c\x12\x0f\n\x0b\x42\x41UD_460800\x10\r\x12\x0f\n\x0b\x42\x41UD_576000\x10\x0e\x12\x0f\n\x0b\x42\x41UD_921600\x10\x0f\"U\n\x0bSerial_Mode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\n\n\x06SIMPLE\x10\x01\x12\t\n\x05PROTO\x10\x02\x12\x0b\n\x07TEXTMSG\x10\x03\x12\x08\n\x04NMEA\x10\x04\x12\x0b\n\x07\x43\x41LTOPO\x10\x05\x1a\xe9\x02\n\x1a\x45xternalNotificationConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\toutput_ms\x18\x02 \x01(\r\x12\x0e\n\x06output\x18\x03 \x01(\r\x12\x14\n\x0coutput_vibra\x18\x08 \x01(\r\x12\x15\n\routput_buzzer\x18\t \x01(\r\x12\x0e\n\x06\x61\x63tive\x18\x04 \x01(\x08\x12\x15\n\ralert_message\x18\x05 \x01(\x08\x12\x1b\n\x13\x61lert_message_vibra\x18\n \x01(\x08\x12\x1c\n\x14\x61lert_message_buzzer\x18\x0b \x01(\x08\x12\x12\n\nalert_bell\x18\x06 \x01(\x08\x12\x18\n\x10\x61lert_bell_vibra\x18\x0c \x01(\x08\x12\x19\n\x11\x61lert_bell_buzzer\x18\r \x01(\x08\x12\x0f\n\x07use_pwm\x18\x07 \x01(\x08\x12\x13\n\x0bnag_timeout\x18\x0e \x01(\r\x12\x19\n\x11use_i2s_as_buzzer\x18\x0f \x01(\x08\x1a\x84\x01\n\x12StoreForwardConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\theartbeat\x18\x02 \x01(\x08\x12\x0f\n\x07records\x18\x03 \x01(\r\x12\x1a\n\x12history_return_max\x18\x04 \x01(\r\x12\x1d\n\x15history_return_window\x18\x05 \x01(\r\x1a@\n\x0fRangeTestConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06sender\x18\x02 \x01(\r\x12\x0c\n\x04save\x18\x03 \x01(\x08\x1a\xe6\x02\n\x0fTelemetryConfig\x12\x1e\n\x16\x64\x65vice_update_interval\x18\x01 \x01(\r\x12#\n\x1b\x65nvironment_update_interval\x18\x02 \x01(\r\x12\'\n\x1f\x65nvironment_measurement_enabled\x18\x03 \x01(\x08\x12\"\n\x1a\x65nvironment_screen_enabled\x18\x04 \x01(\x08\x12&\n\x1e\x65nvironment_display_fahrenheit\x18\x05 \x01(\x08\x12\x1b\n\x13\x61ir_quality_enabled\x18\x06 \x01(\x08\x12\x1c\n\x14\x61ir_quality_interval\x18\x07 \x01(\r\x12!\n\x19power_measurement_enabled\x18\x08 \x01(\x08\x12\x1d\n\x15power_update_interval\x18\t \x01(\r\x12\x1c\n\x14power_screen_enabled\x18\n \x01(\x08\x1a\xf1\x04\n\x13\x43\x61nnedMessageConfig\x12\x17\n\x0frotary1_enabled\x18\x01 \x01(\x08\x12\x19\n\x11inputbroker_pin_a\x18\x02 \x01(\r\x12\x19\n\x11inputbroker_pin_b\x18\x03 \x01(\r\x12\x1d\n\x15inputbroker_pin_press\x18\x04 \x01(\r\x12\x62\n\x14inputbroker_event_cw\x18\x05 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x63\n\x15inputbroker_event_ccw\x18\x06 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x65\n\x17inputbroker_event_press\x18\x07 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x17\n\x0fupdown1_enabled\x18\x08 \x01(\x08\x12\x0f\n\x07\x65nabled\x18\t \x01(\x08\x12\x1a\n\x12\x61llow_input_source\x18\n \x01(\t\x12\x11\n\tsend_bell\x18\x0b \x01(\x08\"c\n\x0eInputEventChar\x12\x08\n\x04NONE\x10\x00\x12\x06\n\x02UP\x10\x11\x12\x08\n\x04\x44OWN\x10\x12\x12\x08\n\x04LEFT\x10\x13\x12\t\n\x05RIGHT\x10\x14\x12\n\n\x06SELECT\x10\n\x12\x08\n\x04\x42\x41\x43K\x10\x1b\x12\n\n\x06\x43\x41NCEL\x10\x18\x1a\x65\n\x15\x41mbientLightingConfig\x12\x11\n\tled_state\x18\x01 \x01(\x08\x12\x0f\n\x07\x63urrent\x18\x02 \x01(\r\x12\x0b\n\x03red\x18\x03 \x01(\r\x12\r\n\x05green\x18\x04 \x01(\r\x12\x0c\n\x04\x62lue\x18\x05 \x01(\rB\x11\n\x0fpayload_variant\"m\n\x11RemoteHardwarePin\x12\x10\n\x08gpio_pin\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x38\n\x04type\x18\x03 \x01(\x0e\x32*.meshtastic.protobuf.RemoteHardwarePinType*I\n\x15RemoteHardwarePinType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0c\x44IGITAL_READ\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x42g\n\x13\x63om.geeksville.meshB\x12ModuleConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.module_config_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\022ModuleConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_REMOTEHARDWAREPINTYPE']._serialized_start=4802 + _globals['_REMOTEHARDWAREPINTYPE']._serialized_end=4875 + _globals['_MODULECONFIG']._serialized_start=65 + _globals['_MODULECONFIG']._serialized_end=4689 + _globals['_MODULECONFIG_MQTTCONFIG']._serialized_start=1080 + _globals['_MODULECONFIG_MQTTCONFIG']._serialized_end=1393 + _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_start=1395 + _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_end=1473 + _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_start=1476 + _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_end=1615 + _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_start=1617 + _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_end=1679 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_start=1682 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_end=1892 + _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_start=1895 + _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_end=2260 + _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_start=2093 + _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_end=2260 + _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_start=2262 + _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_end=2380 + _globals['_MODULECONFIG_SERIALCONFIG']._serialized_start=2383 + _globals['_MODULECONFIG_SERIALCONFIG']._serialized_end=3013 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_start=2660 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_end=2926 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_start=2928 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_end=3013 + _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_start=3016 + _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_end=3377 + _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_start=3380 + _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_end=3512 + _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_start=3514 + _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_end=3578 + _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_start=3581 + _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_end=3939 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_start=3942 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_end=4567 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_start=4468 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_end=4567 + _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_start=4569 + _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_end=4670 + _globals['_REMOTEHARDWAREPIN']._serialized_start=4691 + _globals['_REMOTEHARDWAREPIN']._serialized_end=4800 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/module_config_pb2.pyi b/meshtastic/protobuf/module_config_pb2.pyi new file mode 100644 index 0000000..eb4f986 --- /dev/null +++ b/meshtastic/protobuf/module_config_pb2.pyi @@ -0,0 +1,1200 @@ +""" +@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 + +class _RemoteHardwarePinType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _RemoteHardwarePinTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_RemoteHardwarePinType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNKNOWN: _RemoteHardwarePinType.ValueType # 0 + """ + Unset/unused + """ + DIGITAL_READ: _RemoteHardwarePinType.ValueType # 1 + """ + GPIO pin can be read (if it is high / low) + """ + DIGITAL_WRITE: _RemoteHardwarePinType.ValueType # 2 + """ + GPIO pin can be written to (high / low) + """ + +class RemoteHardwarePinType(_RemoteHardwarePinType, metaclass=_RemoteHardwarePinTypeEnumTypeWrapper): ... + +UNKNOWN: RemoteHardwarePinType.ValueType # 0 +""" +Unset/unused +""" +DIGITAL_READ: RemoteHardwarePinType.ValueType # 1 +""" +GPIO pin can be read (if it is high / low) +""" +DIGITAL_WRITE: RemoteHardwarePinType.ValueType # 2 +""" +GPIO pin can be written to (high / low) +""" +global___RemoteHardwarePinType = RemoteHardwarePinType + +@typing.final +class ModuleConfig(google.protobuf.message.Message): + """ + Module Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing.final + class MQTTConfig(google.protobuf.message.Message): + """ + MQTT Client Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + ADDRESS_FIELD_NUMBER: builtins.int + USERNAME_FIELD_NUMBER: builtins.int + PASSWORD_FIELD_NUMBER: builtins.int + ENCRYPTION_ENABLED_FIELD_NUMBER: builtins.int + JSON_ENABLED_FIELD_NUMBER: builtins.int + TLS_ENABLED_FIELD_NUMBER: builtins.int + ROOT_FIELD_NUMBER: builtins.int + PROXY_TO_CLIENT_ENABLED_FIELD_NUMBER: builtins.int + MAP_REPORTING_ENABLED_FIELD_NUMBER: builtins.int + MAP_REPORT_SETTINGS_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as + is_uplink_enabled or is_downlink_enabled. + """ + address: builtins.str + """ + The server to use for our MQTT global message gateway feature. + If not set, the default server will be used + """ + username: builtins.str + """ + MQTT username to use (most useful for a custom MQTT server). + If using a custom server, this will be honoured even if empty. + If using the default server, this will only be honoured if set, otherwise the device will use the default username + """ + password: builtins.str + """ + MQTT password to use (most useful for a custom MQTT server). + If using a custom server, this will be honoured even if empty. + If using the default server, this will only be honoured if set, otherwise the device will use the default password + """ + encryption_enabled: builtins.bool + """ + Whether to send encrypted or decrypted packets to MQTT. + This parameter is only honoured if you also set server + (the default official mqtt.meshtastic.org server can handle encrypted packets) + Decrypted packets may be useful for external systems that want to consume meshtastic packets + """ + json_enabled: builtins.bool + """ + Whether to send / consume json packets on MQTT + """ + tls_enabled: builtins.bool + """ + If true, we attempt to establish a secure connection using TLS + """ + root: builtins.str + """ + The root topic to use for MQTT messages. Default is "msh". + This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs + """ + proxy_to_client_enabled: builtins.bool + """ + If true, we can use the connected phone / client to proxy messages to MQTT instead of a direct connection + """ + map_reporting_enabled: builtins.bool + """ + If true, we will periodically report unencrypted information about our node to a map via MQTT + """ + @property + def map_report_settings(self) -> global___ModuleConfig.MapReportSettings: + """ + Settings for reporting information about our node to a map via MQTT + """ + + def __init__( + self, + *, + enabled: builtins.bool = ..., + address: builtins.str = ..., + username: builtins.str = ..., + password: builtins.str = ..., + encryption_enabled: builtins.bool = ..., + json_enabled: builtins.bool = ..., + tls_enabled: builtins.bool = ..., + root: builtins.str = ..., + proxy_to_client_enabled: builtins.bool = ..., + map_reporting_enabled: builtins.bool = ..., + map_report_settings: global___ModuleConfig.MapReportSettings | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["map_report_settings", b"map_report_settings"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["address", b"address", "enabled", b"enabled", "encryption_enabled", b"encryption_enabled", "json_enabled", b"json_enabled", "map_report_settings", b"map_report_settings", "map_reporting_enabled", b"map_reporting_enabled", "password", b"password", "proxy_to_client_enabled", b"proxy_to_client_enabled", "root", b"root", "tls_enabled", b"tls_enabled", "username", b"username"]) -> None: ... + + @typing.final + class MapReportSettings(google.protobuf.message.Message): + """ + Settings for reporting unencrypted information about our node to a map via MQTT + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PUBLISH_INTERVAL_SECS_FIELD_NUMBER: builtins.int + POSITION_PRECISION_FIELD_NUMBER: builtins.int + publish_interval_secs: builtins.int + """ + How often we should report our info to the map (in seconds) + """ + position_precision: builtins.int + """ + Bits of precision for the location sent (default of 32 is full precision). + """ + def __init__( + self, + *, + publish_interval_secs: builtins.int = ..., + position_precision: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["position_precision", b"position_precision", "publish_interval_secs", b"publish_interval_secs"]) -> None: ... + + @typing.final + class RemoteHardwareConfig(google.protobuf.message.Message): + """ + RemoteHardwareModule Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + ALLOW_UNDEFINED_PIN_ACCESS_FIELD_NUMBER: builtins.int + AVAILABLE_PINS_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Whether the Module is enabled + """ + allow_undefined_pin_access: builtins.bool + """ + Whether the Module allows consumers to read / write to pins not defined in available_pins + """ + @property + def available_pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RemoteHardwarePin]: + """ + Exposes the available pins to the mesh for reading and writing + """ + + def __init__( + self, + *, + enabled: builtins.bool = ..., + allow_undefined_pin_access: builtins.bool = ..., + available_pins: collections.abc.Iterable[global___RemoteHardwarePin] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_undefined_pin_access", b"allow_undefined_pin_access", "available_pins", b"available_pins", "enabled", b"enabled"]) -> None: ... + + @typing.final + class NeighborInfoConfig(google.protobuf.message.Message): + """ + NeighborInfoModule Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + UPDATE_INTERVAL_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Whether the Module is enabled + """ + update_interval: builtins.int + """ + Interval in seconds of how often we should try to send our + Neighbor Info to the mesh + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + update_interval: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["enabled", b"enabled", "update_interval", b"update_interval"]) -> None: ... + + @typing.final + class DetectionSensorConfig(google.protobuf.message.Message): + """ + Detection Sensor Module Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + MINIMUM_BROADCAST_SECS_FIELD_NUMBER: builtins.int + STATE_BROADCAST_SECS_FIELD_NUMBER: builtins.int + SEND_BELL_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + MONITOR_PIN_FIELD_NUMBER: builtins.int + DETECTION_TRIGGERED_HIGH_FIELD_NUMBER: builtins.int + USE_PULLUP_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Whether the Module is enabled + """ + minimum_broadcast_secs: builtins.int + """ + Interval in seconds of how often we can send a message to the mesh when a state change is detected + """ + state_broadcast_secs: builtins.int + """ + Interval in seconds of how often we should send a message to the mesh with the current state regardless of changes + When set to 0, only state changes will be broadcasted + Works as a sort of status heartbeat for peace of mind + """ + send_bell: builtins.bool + """ + Send ASCII bell with alert message + Useful for triggering ext. notification on bell + """ + name: builtins.str + """ + Friendly name used to format message sent to mesh + Example: A name "Motion" would result in a message "Motion detected" + Maximum length of 20 characters + """ + monitor_pin: builtins.int + """ + GPIO pin to monitor for state changes + """ + detection_triggered_high: builtins.bool + """ + Whether or not the GPIO pin state detection is triggered on HIGH (1) + Otherwise LOW (0) + """ + use_pullup: builtins.bool + """ + Whether or not use INPUT_PULLUP mode for GPIO pin + Only applicable if the board uses pull-up resistors on the pin + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + minimum_broadcast_secs: builtins.int = ..., + state_broadcast_secs: builtins.int = ..., + send_bell: builtins.bool = ..., + name: builtins.str = ..., + monitor_pin: builtins.int = ..., + detection_triggered_high: builtins.bool = ..., + use_pullup: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["detection_triggered_high", b"detection_triggered_high", "enabled", b"enabled", "minimum_broadcast_secs", b"minimum_broadcast_secs", "monitor_pin", b"monitor_pin", "name", b"name", "send_bell", b"send_bell", "state_broadcast_secs", b"state_broadcast_secs", "use_pullup", b"use_pullup"]) -> None: ... + + @typing.final + class AudioConfig(google.protobuf.message.Message): + """ + Audio Config for codec2 voice + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Audio_Baud: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _Audio_BaudEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.AudioConfig._Audio_Baud.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + CODEC2_DEFAULT: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 0 + CODEC2_3200: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 1 + CODEC2_2400: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 2 + CODEC2_1600: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 3 + CODEC2_1400: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 4 + CODEC2_1300: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 5 + CODEC2_1200: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 6 + CODEC2_700: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 7 + CODEC2_700B: ModuleConfig.AudioConfig._Audio_Baud.ValueType # 8 + + class Audio_Baud(_Audio_Baud, metaclass=_Audio_BaudEnumTypeWrapper): + """ + Baudrate for codec2 voice + """ + + CODEC2_DEFAULT: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 0 + CODEC2_3200: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 1 + CODEC2_2400: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 2 + CODEC2_1600: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 3 + CODEC2_1400: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 4 + CODEC2_1300: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 5 + CODEC2_1200: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 6 + CODEC2_700: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 7 + CODEC2_700B: ModuleConfig.AudioConfig.Audio_Baud.ValueType # 8 + + CODEC2_ENABLED_FIELD_NUMBER: builtins.int + PTT_PIN_FIELD_NUMBER: builtins.int + BITRATE_FIELD_NUMBER: builtins.int + I2S_WS_FIELD_NUMBER: builtins.int + I2S_SD_FIELD_NUMBER: builtins.int + I2S_DIN_FIELD_NUMBER: builtins.int + I2S_SCK_FIELD_NUMBER: builtins.int + codec2_enabled: builtins.bool + """ + Whether Audio is enabled + """ + ptt_pin: builtins.int + """ + PTT Pin + """ + bitrate: global___ModuleConfig.AudioConfig.Audio_Baud.ValueType + """ + The audio sample rate to use for codec2 + """ + i2s_ws: builtins.int + """ + I2S Word Select + """ + i2s_sd: builtins.int + """ + I2S Data IN + """ + i2s_din: builtins.int + """ + I2S Data OUT + """ + i2s_sck: builtins.int + """ + I2S Clock + """ + def __init__( + self, + *, + codec2_enabled: builtins.bool = ..., + ptt_pin: builtins.int = ..., + bitrate: global___ModuleConfig.AudioConfig.Audio_Baud.ValueType = ..., + i2s_ws: builtins.int = ..., + i2s_sd: builtins.int = ..., + i2s_din: builtins.int = ..., + i2s_sck: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["bitrate", b"bitrate", "codec2_enabled", b"codec2_enabled", "i2s_din", b"i2s_din", "i2s_sck", b"i2s_sck", "i2s_sd", b"i2s_sd", "i2s_ws", b"i2s_ws", "ptt_pin", b"ptt_pin"]) -> None: ... + + @typing.final + class PaxcounterConfig(google.protobuf.message.Message): + """ + Config for the Paxcounter Module + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + PAXCOUNTER_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int + WIFI_THRESHOLD_FIELD_NUMBER: builtins.int + BLE_THRESHOLD_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Enable the Paxcounter Module + """ + paxcounter_update_interval: builtins.int + """ + Interval in seconds of how often we should try to send our + metrics to the mesh + """ + wifi_threshold: builtins.int + """ + WiFi RSSI threshold. Defaults to -80 + """ + ble_threshold: builtins.int + """ + BLE RSSI threshold. Defaults to -80 + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + paxcounter_update_interval: builtins.int = ..., + wifi_threshold: builtins.int = ..., + ble_threshold: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ble_threshold", b"ble_threshold", "enabled", b"enabled", "paxcounter_update_interval", b"paxcounter_update_interval", "wifi_threshold", b"wifi_threshold"]) -> None: ... + + @typing.final + class SerialConfig(google.protobuf.message.Message): + """ + Serial Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Serial_Baud: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _Serial_BaudEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.SerialConfig._Serial_Baud.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + BAUD_DEFAULT: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 0 + BAUD_110: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 1 + BAUD_300: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 2 + BAUD_600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 3 + BAUD_1200: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 4 + BAUD_2400: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 5 + BAUD_4800: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 6 + BAUD_9600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 7 + BAUD_19200: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 8 + BAUD_38400: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 9 + BAUD_57600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 10 + BAUD_115200: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 11 + BAUD_230400: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 12 + BAUD_460800: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 13 + BAUD_576000: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 14 + BAUD_921600: ModuleConfig.SerialConfig._Serial_Baud.ValueType # 15 + + class Serial_Baud(_Serial_Baud, metaclass=_Serial_BaudEnumTypeWrapper): + """ + TODO: REPLACE + """ + + BAUD_DEFAULT: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 0 + BAUD_110: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 1 + BAUD_300: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 2 + BAUD_600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 3 + BAUD_1200: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 4 + BAUD_2400: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 5 + BAUD_4800: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 6 + BAUD_9600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 7 + BAUD_19200: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 8 + BAUD_38400: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 9 + BAUD_57600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 10 + BAUD_115200: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 11 + BAUD_230400: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 12 + BAUD_460800: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 13 + BAUD_576000: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 14 + BAUD_921600: ModuleConfig.SerialConfig.Serial_Baud.ValueType # 15 + + class _Serial_Mode: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _Serial_ModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.SerialConfig._Serial_Mode.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + DEFAULT: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 0 + SIMPLE: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 1 + PROTO: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 2 + TEXTMSG: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 3 + NMEA: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 4 + CALTOPO: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 5 + """NMEA messages specifically tailored for CalTopo""" + + class Serial_Mode(_Serial_Mode, metaclass=_Serial_ModeEnumTypeWrapper): + """ + TODO: REPLACE + """ + + DEFAULT: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 0 + SIMPLE: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 1 + PROTO: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 2 + TEXTMSG: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 3 + NMEA: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 4 + CALTOPO: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 5 + """NMEA messages specifically tailored for CalTopo""" + + ENABLED_FIELD_NUMBER: builtins.int + ECHO_FIELD_NUMBER: builtins.int + RXD_FIELD_NUMBER: builtins.int + TXD_FIELD_NUMBER: builtins.int + BAUD_FIELD_NUMBER: builtins.int + TIMEOUT_FIELD_NUMBER: builtins.int + MODE_FIELD_NUMBER: builtins.int + OVERRIDE_CONSOLE_SERIAL_PORT_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Preferences for the SerialModule + """ + echo: builtins.bool + """ + TODO: REPLACE + """ + rxd: builtins.int + """ + RX pin (should match Arduino gpio pin number) + """ + txd: builtins.int + """ + TX pin (should match Arduino gpio pin number) + """ + baud: global___ModuleConfig.SerialConfig.Serial_Baud.ValueType + """ + Serial baud rate + """ + timeout: builtins.int + """ + TODO: REPLACE + """ + mode: global___ModuleConfig.SerialConfig.Serial_Mode.ValueType + """ + Mode for serial module operation + """ + override_console_serial_port: builtins.bool + """ + Overrides the platform's defacto Serial port instance to use with Serial module config settings + This is currently only usable in output modes like NMEA / CalTopo and may behave strangely or not work at all in other modes + Existing logging over the Serial Console will still be present + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + echo: builtins.bool = ..., + rxd: builtins.int = ..., + txd: builtins.int = ..., + baud: global___ModuleConfig.SerialConfig.Serial_Baud.ValueType = ..., + timeout: builtins.int = ..., + mode: global___ModuleConfig.SerialConfig.Serial_Mode.ValueType = ..., + override_console_serial_port: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["baud", b"baud", "echo", b"echo", "enabled", b"enabled", "mode", b"mode", "override_console_serial_port", b"override_console_serial_port", "rxd", b"rxd", "timeout", b"timeout", "txd", b"txd"]) -> None: ... + + @typing.final + class ExternalNotificationConfig(google.protobuf.message.Message): + """ + External Notifications Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + OUTPUT_MS_FIELD_NUMBER: builtins.int + OUTPUT_FIELD_NUMBER: builtins.int + OUTPUT_VIBRA_FIELD_NUMBER: builtins.int + OUTPUT_BUZZER_FIELD_NUMBER: builtins.int + ACTIVE_FIELD_NUMBER: builtins.int + ALERT_MESSAGE_FIELD_NUMBER: builtins.int + ALERT_MESSAGE_VIBRA_FIELD_NUMBER: builtins.int + ALERT_MESSAGE_BUZZER_FIELD_NUMBER: builtins.int + ALERT_BELL_FIELD_NUMBER: builtins.int + ALERT_BELL_VIBRA_FIELD_NUMBER: builtins.int + ALERT_BELL_BUZZER_FIELD_NUMBER: builtins.int + USE_PWM_FIELD_NUMBER: builtins.int + NAG_TIMEOUT_FIELD_NUMBER: builtins.int + USE_I2S_AS_BUZZER_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Enable the ExternalNotificationModule + """ + output_ms: builtins.int + """ + When using in On/Off mode, keep the output on for this many + milliseconds. Default 1000ms (1 second). + """ + output: builtins.int + """ + Define the output pin GPIO setting Defaults to + EXT_NOTIFY_OUT if set for the board. + In standalone devices this pin should drive the LED to match the UI. + """ + output_vibra: builtins.int + """ + Optional: Define a secondary output pin for a vibra motor + This is used in standalone devices to match the UI. + """ + output_buzzer: builtins.int + """ + Optional: Define a tertiary output pin for an active buzzer + This is used in standalone devices to to match the UI. + """ + active: builtins.bool + """ + IF this is true, the 'output' Pin will be pulled active high, false + means active low. + """ + alert_message: builtins.bool + """ + True: Alert when a text message arrives (output) + """ + alert_message_vibra: builtins.bool + """ + True: Alert when a text message arrives (output_vibra) + """ + alert_message_buzzer: builtins.bool + """ + True: Alert when a text message arrives (output_buzzer) + """ + alert_bell: builtins.bool + """ + True: Alert when the bell character is received (output) + """ + alert_bell_vibra: builtins.bool + """ + True: Alert when the bell character is received (output_vibra) + """ + alert_bell_buzzer: builtins.bool + """ + True: Alert when the bell character is received (output_buzzer) + """ + use_pwm: builtins.bool + """ + use a PWM output instead of a simple on/off output. This will ignore + the 'output', 'output_ms' and 'active' settings and use the + device.buzzer_gpio instead. + """ + nag_timeout: builtins.int + """ + The notification will toggle with 'output_ms' for this time of seconds. + Default is 0 which means don't repeat at all. 60 would mean blink + and/or beep for 60 seconds + """ + use_i2s_as_buzzer: builtins.bool + """ + When true, enables devices with native I2S audio output to use the RTTTL over speaker like a buzzer + T-Watch S3 and T-Deck for example have this capability + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + output_ms: builtins.int = ..., + output: builtins.int = ..., + output_vibra: builtins.int = ..., + output_buzzer: builtins.int = ..., + active: builtins.bool = ..., + alert_message: builtins.bool = ..., + alert_message_vibra: builtins.bool = ..., + alert_message_buzzer: builtins.bool = ..., + alert_bell: builtins.bool = ..., + alert_bell_vibra: builtins.bool = ..., + alert_bell_buzzer: builtins.bool = ..., + use_pwm: builtins.bool = ..., + nag_timeout: builtins.int = ..., + use_i2s_as_buzzer: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["active", b"active", "alert_bell", b"alert_bell", "alert_bell_buzzer", b"alert_bell_buzzer", "alert_bell_vibra", b"alert_bell_vibra", "alert_message", b"alert_message", "alert_message_buzzer", b"alert_message_buzzer", "alert_message_vibra", b"alert_message_vibra", "enabled", b"enabled", "nag_timeout", b"nag_timeout", "output", b"output", "output_buzzer", b"output_buzzer", "output_ms", b"output_ms", "output_vibra", b"output_vibra", "use_i2s_as_buzzer", b"use_i2s_as_buzzer", "use_pwm", b"use_pwm"]) -> None: ... + + @typing.final + class StoreForwardConfig(google.protobuf.message.Message): + """ + Store and Forward Module Config + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + HEARTBEAT_FIELD_NUMBER: builtins.int + RECORDS_FIELD_NUMBER: builtins.int + HISTORY_RETURN_MAX_FIELD_NUMBER: builtins.int + HISTORY_RETURN_WINDOW_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Enable the Store and Forward Module + """ + heartbeat: builtins.bool + """ + TODO: REPLACE + """ + records: builtins.int + """ + TODO: REPLACE + """ + history_return_max: builtins.int + """ + TODO: REPLACE + """ + history_return_window: builtins.int + """ + TODO: REPLACE + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + heartbeat: builtins.bool = ..., + records: builtins.int = ..., + history_return_max: builtins.int = ..., + history_return_window: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["enabled", b"enabled", "heartbeat", b"heartbeat", "history_return_max", b"history_return_max", "history_return_window", b"history_return_window", "records", b"records"]) -> None: ... + + @typing.final + class RangeTestConfig(google.protobuf.message.Message): + """ + Preferences for the RangeTestModule + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENABLED_FIELD_NUMBER: builtins.int + SENDER_FIELD_NUMBER: builtins.int + SAVE_FIELD_NUMBER: builtins.int + enabled: builtins.bool + """ + Enable the Range Test Module + """ + sender: builtins.int + """ + Send out range test messages from this node + """ + save: builtins.bool + """ + Bool value indicating that this node should save a RangeTest.csv file. + ESP32 Only + """ + def __init__( + self, + *, + enabled: builtins.bool = ..., + sender: builtins.int = ..., + save: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["enabled", b"enabled", "save", b"save", "sender", b"sender"]) -> None: ... + + @typing.final + class TelemetryConfig(google.protobuf.message.Message): + """ + Configuration for both device and environment metrics + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEVICE_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int + ENVIRONMENT_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int + ENVIRONMENT_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int + ENVIRONMENT_SCREEN_ENABLED_FIELD_NUMBER: builtins.int + ENVIRONMENT_DISPLAY_FAHRENHEIT_FIELD_NUMBER: builtins.int + AIR_QUALITY_ENABLED_FIELD_NUMBER: builtins.int + AIR_QUALITY_INTERVAL_FIELD_NUMBER: builtins.int + POWER_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int + POWER_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int + POWER_SCREEN_ENABLED_FIELD_NUMBER: builtins.int + device_update_interval: builtins.int + """ + Interval in seconds of how often we should try to send our + device metrics to the mesh + """ + environment_update_interval: builtins.int + """ + Interval in seconds of how often we should try to send our + environment measurements to the mesh + """ + environment_measurement_enabled: builtins.bool + """ + Preferences for the Telemetry Module (Environment) + Enable/Disable the telemetry measurement module measurement collection + """ + environment_screen_enabled: builtins.bool + """ + Enable/Disable the telemetry measurement module on-device display + """ + environment_display_fahrenheit: builtins.bool + """ + We'll always read the sensor in Celsius, but sometimes we might want to + display the results in Fahrenheit as a "user preference". + """ + air_quality_enabled: builtins.bool + """ + Enable/Disable the air quality metrics + """ + air_quality_interval: builtins.int + """ + Interval in seconds of how often we should try to send our + air quality metrics to the mesh + """ + power_measurement_enabled: builtins.bool + """ + Interval in seconds of how often we should try to send our + air quality metrics to the mesh + """ + power_update_interval: builtins.int + """ + Interval in seconds of how often we should try to send our + air quality metrics to the mesh + """ + power_screen_enabled: builtins.bool + """ + Interval in seconds of how often we should try to send our + air quality metrics to the mesh + """ + def __init__( + self, + *, + device_update_interval: builtins.int = ..., + environment_update_interval: builtins.int = ..., + environment_measurement_enabled: builtins.bool = ..., + environment_screen_enabled: builtins.bool = ..., + environment_display_fahrenheit: builtins.bool = ..., + air_quality_enabled: builtins.bool = ..., + air_quality_interval: builtins.int = ..., + power_measurement_enabled: builtins.bool = ..., + power_update_interval: builtins.int = ..., + power_screen_enabled: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["air_quality_enabled", b"air_quality_enabled", "air_quality_interval", b"air_quality_interval", "device_update_interval", b"device_update_interval", "environment_display_fahrenheit", b"environment_display_fahrenheit", "environment_measurement_enabled", b"environment_measurement_enabled", "environment_screen_enabled", b"environment_screen_enabled", "environment_update_interval", b"environment_update_interval", "power_measurement_enabled", b"power_measurement_enabled", "power_screen_enabled", b"power_screen_enabled", "power_update_interval", b"power_update_interval"]) -> None: ... + + @typing.final + class CannedMessageConfig(google.protobuf.message.Message): + """ + TODO: REPLACE + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _InputEventChar: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _InputEventCharEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.CannedMessageConfig._InputEventChar.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NONE: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 0 + """ + TODO: REPLACE + """ + UP: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 17 + """ + TODO: REPLACE + """ + DOWN: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 18 + """ + TODO: REPLACE + """ + LEFT: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 19 + """ + TODO: REPLACE + """ + RIGHT: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 20 + """ + TODO: REPLACE + """ + SELECT: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 10 + """ + '\\n' + """ + BACK: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 27 + """ + TODO: REPLACE + """ + CANCEL: ModuleConfig.CannedMessageConfig._InputEventChar.ValueType # 24 + """ + TODO: REPLACE + """ + + class InputEventChar(_InputEventChar, metaclass=_InputEventCharEnumTypeWrapper): + """ + TODO: REPLACE + """ + + NONE: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 0 + """ + TODO: REPLACE + """ + UP: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 17 + """ + TODO: REPLACE + """ + DOWN: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 18 + """ + TODO: REPLACE + """ + LEFT: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 19 + """ + TODO: REPLACE + """ + RIGHT: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 20 + """ + TODO: REPLACE + """ + SELECT: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 10 + """ + '\\n' + """ + BACK: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 27 + """ + TODO: REPLACE + """ + CANCEL: ModuleConfig.CannedMessageConfig.InputEventChar.ValueType # 24 + """ + TODO: REPLACE + """ + + ROTARY1_ENABLED_FIELD_NUMBER: builtins.int + INPUTBROKER_PIN_A_FIELD_NUMBER: builtins.int + INPUTBROKER_PIN_B_FIELD_NUMBER: builtins.int + INPUTBROKER_PIN_PRESS_FIELD_NUMBER: builtins.int + INPUTBROKER_EVENT_CW_FIELD_NUMBER: builtins.int + INPUTBROKER_EVENT_CCW_FIELD_NUMBER: builtins.int + INPUTBROKER_EVENT_PRESS_FIELD_NUMBER: builtins.int + UPDOWN1_ENABLED_FIELD_NUMBER: builtins.int + ENABLED_FIELD_NUMBER: builtins.int + ALLOW_INPUT_SOURCE_FIELD_NUMBER: builtins.int + SEND_BELL_FIELD_NUMBER: builtins.int + rotary1_enabled: builtins.bool + """ + Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. + """ + inputbroker_pin_a: builtins.int + """ + GPIO pin for rotary encoder A port. + """ + inputbroker_pin_b: builtins.int + """ + GPIO pin for rotary encoder B port. + """ + inputbroker_pin_press: builtins.int + """ + GPIO pin for rotary encoder Press port. + """ + inputbroker_event_cw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType + """ + Generate input event on CW of this kind. + """ + inputbroker_event_ccw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType + """ + Generate input event on CCW of this kind. + """ + inputbroker_event_press: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType + """ + Generate input event on Press of this kind. + """ + updown1_enabled: builtins.bool + """ + Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. + """ + enabled: builtins.bool + """ + Enable/disable CannedMessageModule. + """ + allow_input_source: builtins.str + """ + Input event origin accepted by the canned message module. + Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any" + """ + send_bell: builtins.bool + """ + CannedMessageModule also sends a bell character with the messages. + ExternalNotificationModule can benefit from this feature. + """ + def __init__( + self, + *, + rotary1_enabled: builtins.bool = ..., + inputbroker_pin_a: builtins.int = ..., + inputbroker_pin_b: builtins.int = ..., + inputbroker_pin_press: builtins.int = ..., + inputbroker_event_cw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType = ..., + inputbroker_event_ccw: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType = ..., + inputbroker_event_press: global___ModuleConfig.CannedMessageConfig.InputEventChar.ValueType = ..., + updown1_enabled: builtins.bool = ..., + enabled: builtins.bool = ..., + allow_input_source: builtins.str = ..., + send_bell: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["allow_input_source", b"allow_input_source", "enabled", b"enabled", "inputbroker_event_ccw", b"inputbroker_event_ccw", "inputbroker_event_cw", b"inputbroker_event_cw", "inputbroker_event_press", b"inputbroker_event_press", "inputbroker_pin_a", b"inputbroker_pin_a", "inputbroker_pin_b", b"inputbroker_pin_b", "inputbroker_pin_press", b"inputbroker_pin_press", "rotary1_enabled", b"rotary1_enabled", "send_bell", b"send_bell", "updown1_enabled", b"updown1_enabled"]) -> None: ... + + @typing.final + class AmbientLightingConfig(google.protobuf.message.Message): + """ + Ambient Lighting Module - Settings for control of onboard LEDs to allow users to adjust the brightness levels and respective color levels. + Initially created for the RAK14001 RGB LED module. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LED_STATE_FIELD_NUMBER: builtins.int + CURRENT_FIELD_NUMBER: builtins.int + RED_FIELD_NUMBER: builtins.int + GREEN_FIELD_NUMBER: builtins.int + BLUE_FIELD_NUMBER: builtins.int + led_state: builtins.bool + """ + Sets LED to on or off. + """ + current: builtins.int + """ + Sets the current for the LED output. Default is 10. + """ + red: builtins.int + """ + Sets the red LED level. Values are 0-255. + """ + green: builtins.int + """ + Sets the green LED level. Values are 0-255. + """ + blue: builtins.int + """ + Sets the blue LED level. Values are 0-255. + """ + def __init__( + self, + *, + led_state: builtins.bool = ..., + current: builtins.int = ..., + red: builtins.int = ..., + green: builtins.int = ..., + blue: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["blue", b"blue", "current", b"current", "green", b"green", "led_state", b"led_state", "red", b"red"]) -> None: ... + + MQTT_FIELD_NUMBER: builtins.int + SERIAL_FIELD_NUMBER: builtins.int + EXTERNAL_NOTIFICATION_FIELD_NUMBER: builtins.int + STORE_FORWARD_FIELD_NUMBER: builtins.int + RANGE_TEST_FIELD_NUMBER: builtins.int + TELEMETRY_FIELD_NUMBER: builtins.int + CANNED_MESSAGE_FIELD_NUMBER: builtins.int + AUDIO_FIELD_NUMBER: builtins.int + REMOTE_HARDWARE_FIELD_NUMBER: builtins.int + NEIGHBOR_INFO_FIELD_NUMBER: builtins.int + AMBIENT_LIGHTING_FIELD_NUMBER: builtins.int + DETECTION_SENSOR_FIELD_NUMBER: builtins.int + PAXCOUNTER_FIELD_NUMBER: builtins.int + @property + def mqtt(self) -> global___ModuleConfig.MQTTConfig: + """ + TODO: REPLACE + """ + + @property + def serial(self) -> global___ModuleConfig.SerialConfig: + """ + TODO: REPLACE + """ + + @property + def external_notification(self) -> global___ModuleConfig.ExternalNotificationConfig: + """ + TODO: REPLACE + """ + + @property + def store_forward(self) -> global___ModuleConfig.StoreForwardConfig: + """ + TODO: REPLACE + """ + + @property + def range_test(self) -> global___ModuleConfig.RangeTestConfig: + """ + TODO: REPLACE + """ + + @property + def telemetry(self) -> global___ModuleConfig.TelemetryConfig: + """ + TODO: REPLACE + """ + + @property + def canned_message(self) -> global___ModuleConfig.CannedMessageConfig: + """ + TODO: REPLACE + """ + + @property + def audio(self) -> global___ModuleConfig.AudioConfig: + """ + TODO: REPLACE + """ + + @property + def remote_hardware(self) -> global___ModuleConfig.RemoteHardwareConfig: + """ + TODO: REPLACE + """ + + @property + def neighbor_info(self) -> global___ModuleConfig.NeighborInfoConfig: + """ + TODO: REPLACE + """ + + @property + def ambient_lighting(self) -> global___ModuleConfig.AmbientLightingConfig: + """ + TODO: REPLACE + """ + + @property + def detection_sensor(self) -> global___ModuleConfig.DetectionSensorConfig: + """ + TODO: REPLACE + """ + + @property + def paxcounter(self) -> global___ModuleConfig.PaxcounterConfig: + """ + TODO: REPLACE + """ + + def __init__( + self, + *, + mqtt: global___ModuleConfig.MQTTConfig | None = ..., + serial: global___ModuleConfig.SerialConfig | None = ..., + external_notification: global___ModuleConfig.ExternalNotificationConfig | None = ..., + store_forward: global___ModuleConfig.StoreForwardConfig | None = ..., + range_test: global___ModuleConfig.RangeTestConfig | None = ..., + telemetry: global___ModuleConfig.TelemetryConfig | None = ..., + canned_message: global___ModuleConfig.CannedMessageConfig | None = ..., + audio: global___ModuleConfig.AudioConfig | None = ..., + remote_hardware: global___ModuleConfig.RemoteHardwareConfig | None = ..., + neighbor_info: global___ModuleConfig.NeighborInfoConfig | None = ..., + ambient_lighting: global___ModuleConfig.AmbientLightingConfig | None = ..., + detection_sensor: global___ModuleConfig.DetectionSensorConfig | None = ..., + paxcounter: global___ModuleConfig.PaxcounterConfig | 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", "store_forward", b"store_forward", "telemetry", b"telemetry"]) -> 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", "store_forward", b"store_forward", "telemetry", b"telemetry"]) -> 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"] | None: ... + +global___ModuleConfig = ModuleConfig + +@typing.final +class RemoteHardwarePin(google.protobuf.message.Message): + """ + A GPIO pin definition for remote hardware module + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + GPIO_PIN_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + gpio_pin: builtins.int + """ + GPIO Pin number (must match Arduino) + """ + name: builtins.str + """ + Name for the GPIO pin (i.e. Front gate, mailbox, etc) + """ + type: global___RemoteHardwarePinType.ValueType + """ + Type of GPIO access available to consumers on the mesh + """ + def __init__( + self, + *, + gpio_pin: builtins.int = ..., + name: builtins.str = ..., + type: global___RemoteHardwarePinType.ValueType = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["gpio_pin", b"gpio_pin", "name", b"name", "type", b"type"]) -> None: ... + +global___RemoteHardwarePin = RemoteHardwarePin diff --git a/meshtastic/protobuf/mqtt_pb2.py b/meshtastic/protobuf/mqtt_pb2.py new file mode 100644 index 0000000..8286250 --- /dev/null +++ b/meshtastic/protobuf/mqtt_pb2.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/mqtt.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2 +from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mqtt.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\x1emeshtastic/protobuf/mesh.proto\"j\n\x0fServiceEnvelope\x12/\n\x06packet\x18\x01 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x12\n\nchannel_id\x18\x02 \x01(\t\x12\x12\n\ngateway_id\x18\x03 \x01(\t\"\xe0\x03\n\tMapReport\x12\x11\n\tlong_name\x18\x01 \x01(\t\x12\x12\n\nshort_name\x18\x02 \x01(\t\x12;\n\x04role\x18\x03 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x34\n\x08hw_model\x18\x04 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x18\n\x10\x66irmware_version\x18\x05 \x01(\t\x12\x41\n\x06region\x18\x06 \x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12H\n\x0cmodem_preset\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x1b\n\x13has_default_channel\x18\x08 \x01(\x08\x12\x12\n\nlatitude_i\x18\t \x01(\x0f\x12\x13\n\x0blongitude_i\x18\n \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x0b \x01(\x05\x12\x1a\n\x12position_precision\x18\x0c \x01(\r\x12\x1e\n\x16num_online_local_nodes\x18\r \x01(\rB_\n\x13\x63om.geeksville.meshB\nMQTTProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.mqtt_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nMQTTProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_SERVICEENVELOPE']._serialized_start=121 + _globals['_SERVICEENVELOPE']._serialized_end=227 + _globals['_MAPREPORT']._serialized_start=230 + _globals['_MAPREPORT']._serialized_end=710 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mqtt_pb2.pyi b/meshtastic/protobuf/mqtt_pb2.pyi new file mode 100644 index 0000000..7c03e6d --- /dev/null +++ b/meshtastic/protobuf/mqtt_pb2.pyi @@ -0,0 +1,148 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import meshtastic.protobuf.config_pb2 +import meshtastic.protobuf.mesh_pb2 +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class ServiceEnvelope(google.protobuf.message.Message): + """ + This message wraps a MeshPacket with extra metadata about the sender and how it arrived. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PACKET_FIELD_NUMBER: builtins.int + CHANNEL_ID_FIELD_NUMBER: builtins.int + GATEWAY_ID_FIELD_NUMBER: builtins.int + channel_id: builtins.str + """ + The global channel ID it was sent on + """ + gateway_id: builtins.str + """ + The sending gateway node ID. Can we use this to authenticate/prevent fake + nodeid impersonation for senders? - i.e. use gateway/mesh id (which is authenticated) + local node id as + the globally trusted nodenum + """ + @property + def packet(self) -> meshtastic.protobuf.mesh_pb2.MeshPacket: + """ + The (probably encrypted) packet + """ + + def __init__( + self, + *, + packet: meshtastic.protobuf.mesh_pb2.MeshPacket | None = ..., + channel_id: builtins.str = ..., + gateway_id: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["packet", b"packet"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel_id", b"channel_id", "gateway_id", b"gateway_id", "packet", b"packet"]) -> None: ... + +global___ServiceEnvelope = ServiceEnvelope + +@typing.final +class MapReport(google.protobuf.message.Message): + """ + Information about a node intended to be reported unencrypted to a map using MQTT. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LONG_NAME_FIELD_NUMBER: builtins.int + SHORT_NAME_FIELD_NUMBER: builtins.int + ROLE_FIELD_NUMBER: builtins.int + HW_MODEL_FIELD_NUMBER: builtins.int + FIRMWARE_VERSION_FIELD_NUMBER: builtins.int + REGION_FIELD_NUMBER: builtins.int + MODEM_PRESET_FIELD_NUMBER: builtins.int + HAS_DEFAULT_CHANNEL_FIELD_NUMBER: builtins.int + LATITUDE_I_FIELD_NUMBER: builtins.int + LONGITUDE_I_FIELD_NUMBER: builtins.int + ALTITUDE_FIELD_NUMBER: builtins.int + POSITION_PRECISION_FIELD_NUMBER: builtins.int + NUM_ONLINE_LOCAL_NODES_FIELD_NUMBER: builtins.int + long_name: builtins.str + """ + A full name for this user, i.e. "Kevin Hester" + """ + short_name: builtins.str + """ + A VERY short name, ideally two characters. + Suitable for a tiny OLED screen + """ + role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType + """ + Role of the node that applies specific settings for a particular use-case + """ + hw_model: meshtastic.protobuf.mesh_pb2.HardwareModel.ValueType + """ + Hardware model of the node, i.e. T-Beam, Heltec V3, etc... + """ + firmware_version: builtins.str + """ + Device firmware version string + """ + region: meshtastic.protobuf.config_pb2.Config.LoRaConfig.RegionCode.ValueType + """ + The region code for the radio (US, CN, EU433, etc...) + """ + modem_preset: meshtastic.protobuf.config_pb2.Config.LoRaConfig.ModemPreset.ValueType + """ + Modem preset used by the radio (LongFast, MediumSlow, etc...) + """ + has_default_channel: builtins.bool + """ + Whether the node has a channel with default PSK and name (LongFast, MediumSlow, etc...) + and it uses the default frequency slot given the region and modem preset. + """ + latitude_i: builtins.int + """ + Latitude: multiply by 1e-7 to get degrees in floating point + """ + longitude_i: builtins.int + """ + Longitude: multiply by 1e-7 to get degrees in floating point + """ + altitude: builtins.int + """ + Altitude in meters above MSL + """ + position_precision: builtins.int + """ + Indicates the bits of precision for latitude and longitude set by the sending node + """ + num_online_local_nodes: builtins.int + """ + Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT) + """ + def __init__( + self, + *, + long_name: builtins.str = ..., + short_name: builtins.str = ..., + role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType = ..., + hw_model: meshtastic.protobuf.mesh_pb2.HardwareModel.ValueType = ..., + firmware_version: builtins.str = ..., + region: meshtastic.protobuf.config_pb2.Config.LoRaConfig.RegionCode.ValueType = ..., + modem_preset: meshtastic.protobuf.config_pb2.Config.LoRaConfig.ModemPreset.ValueType = ..., + has_default_channel: builtins.bool = ..., + latitude_i: builtins.int = ..., + longitude_i: builtins.int = ..., + altitude: builtins.int = ..., + position_precision: builtins.int = ..., + num_online_local_nodes: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["altitude", b"altitude", "firmware_version", b"firmware_version", "has_default_channel", b"has_default_channel", "hw_model", b"hw_model", "latitude_i", b"latitude_i", "long_name", b"long_name", "longitude_i", b"longitude_i", "modem_preset", b"modem_preset", "num_online_local_nodes", b"num_online_local_nodes", "position_precision", b"position_precision", "region", b"region", "role", b"role", "short_name", b"short_name"]) -> None: ... + +global___MapReport = MapReport diff --git a/meshtastic/protobuf/paxcount_pb2.py b/meshtastic/protobuf/paxcount_pb2.py new file mode 100644 index 0000000..79353b5 --- /dev/null +++ b/meshtastic/protobuf/paxcount_pb2.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/paxcount.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/paxcount.proto\x12\x13meshtastic.protobuf\"5\n\x08Paxcount\x12\x0c\n\x04wifi\x18\x01 \x01(\r\x12\x0b\n\x03\x62le\x18\x02 \x01(\r\x12\x0e\n\x06uptime\x18\x03 \x01(\rBc\n\x13\x63om.geeksville.meshB\x0ePaxcountProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.paxcount_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016PaxcountProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_PAXCOUNT']._serialized_start=59 + _globals['_PAXCOUNT']._serialized_end=112 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/paxcount_pb2.pyi b/meshtastic/protobuf/paxcount_pb2.pyi new file mode 100644 index 0000000..cc7ed0d --- /dev/null +++ b/meshtastic/protobuf/paxcount_pb2.pyi @@ -0,0 +1,45 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class Paxcount(google.protobuf.message.Message): + """ + TODO: REPLACE + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WIFI_FIELD_NUMBER: builtins.int + BLE_FIELD_NUMBER: builtins.int + UPTIME_FIELD_NUMBER: builtins.int + wifi: builtins.int + """ + seen Wifi devices + """ + ble: builtins.int + """ + Seen BLE devices + """ + uptime: builtins.int + """ + Uptime in seconds + """ + def __init__( + self, + *, + wifi: builtins.int = ..., + ble: builtins.int = ..., + uptime: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ble", b"ble", "uptime", b"uptime", "wifi", b"wifi"]) -> None: ... + +global___Paxcount = Paxcount diff --git a/meshtastic/protobuf/portnums_pb2.py b/meshtastic/protobuf/portnums_pb2.py new file mode 100644 index 0000000..bb0cd07 --- /dev/null +++ b/meshtastic/protobuf/portnums_pb2.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/portnums.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\x8d\x04\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\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_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\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\x13\x63om.geeksville.meshB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.portnums_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_PORTNUM']._serialized_start=60 + _globals['_PORTNUM']._serialized_end=585 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/portnums_pb2.pyi b/meshtastic/protobuf/portnums_pb2.pyi new file mode 100644 index 0000000..fda2e89 --- /dev/null +++ b/meshtastic/protobuf/portnums_pb2.pyi @@ -0,0 +1,370 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _PortNum: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _PortNumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PortNum.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNKNOWN_APP: _PortNum.ValueType # 0 + """ + Deprecated: do not use in new code (formerly called OPAQUE) + A message sent from a device outside of the mesh, in a form the mesh does not understand + NOTE: This must be 0, because it is documented in IMeshService.aidl to be so + ENCODING: binary undefined + """ + TEXT_MESSAGE_APP: _PortNum.ValueType # 1 + """ + A simple UTF-8 text message, which even the little micros in the mesh + can understand and show on their screen eventually in some circumstances + even signal might send messages in this form (see below) + ENCODING: UTF-8 Plaintext (?) + """ + REMOTE_HARDWARE_APP: _PortNum.ValueType # 2 + """ + Reserved for built-in GPIO/example app. + See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number + ENCODING: Protobuf + """ + POSITION_APP: _PortNum.ValueType # 3 + """ + The built-in position messaging app. + Payload is a Position message. + ENCODING: Protobuf + """ + NODEINFO_APP: _PortNum.ValueType # 4 + """ + The built-in user info app. + Payload is a User message. + ENCODING: Protobuf + """ + ROUTING_APP: _PortNum.ValueType # 5 + """ + Protocol control packets for mesh protocol use. + Payload is a Routing message. + ENCODING: Protobuf + """ + ADMIN_APP: _PortNum.ValueType # 6 + """ + Admin control packets. + Payload is a AdminMessage message. + ENCODING: Protobuf + """ + TEXT_MESSAGE_COMPRESSED_APP: _PortNum.ValueType # 7 + """ + Compressed TEXT_MESSAGE payloads. + ENCODING: UTF-8 Plaintext (?) with Unishox2 Compression + NOTE: The Device Firmware converts a TEXT_MESSAGE_APP to TEXT_MESSAGE_COMPRESSED_APP if the compressed + payload is shorter. There's no need for app developers to do this themselves. Also the firmware will decompress + any incoming TEXT_MESSAGE_COMPRESSED_APP payload and convert to TEXT_MESSAGE_APP. + """ + WAYPOINT_APP: _PortNum.ValueType # 8 + """ + Waypoint payloads. + Payload is a Waypoint message. + ENCODING: Protobuf + """ + AUDIO_APP: _PortNum.ValueType # 9 + """ + Audio Payloads. + Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now + ENCODING: codec2 audio frames + NOTE: audio frames contain a 3 byte header (0xc0 0xde 0xc2) and a one byte marker for the decompressed bitrate. + This marker comes from the 'moduleConfig.audio.bitrate' enum minus one. + """ + DETECTION_SENSOR_APP: _PortNum.ValueType # 10 + """ + Same as Text Message but originating from Detection Sensor Module. + NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 + """ + REPLY_APP: _PortNum.ValueType # 32 + """ + Provides a 'ping' service that replies to any packet it receives. + Also serves as a small example module. + ENCODING: ASCII Plaintext + """ + IP_TUNNEL_APP: _PortNum.ValueType # 33 + """ + Used for the python IP tunnel feature + ENCODING: IP Packet. Handled by the python API, firmware ignores this one and pases on. + """ + PAXCOUNTER_APP: _PortNum.ValueType # 34 + """ + Paxcounter lib included in the firmware + ENCODING: protobuf + """ + SERIAL_APP: _PortNum.ValueType # 64 + """ + Provides a hardware serial interface to send and receive from the Meshtastic network. + Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic + network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. + Maximum packet size of 240 bytes. + Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. + ENCODING: binary undefined + """ + STORE_FORWARD_APP: _PortNum.ValueType # 65 + """ + STORE_FORWARD_APP (Work in Progress) + Maintained by Jm Casler (MC Hamster) : jm@casler.org + ENCODING: Protobuf + """ + RANGE_TEST_APP: _PortNum.ValueType # 66 + """ + Optional port for messages for the range test module. + ENCODING: ASCII Plaintext + NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 + """ + TELEMETRY_APP: _PortNum.ValueType # 67 + """ + Provides a format to send and receive telemetry data from the Meshtastic network. + Maintained by Charles Crossan (crossan007) : crossan007@gmail.com + ENCODING: Protobuf + """ + ZPS_APP: _PortNum.ValueType # 68 + """ + Experimental tools for estimating node position without a GPS + Maintained by Github user a-f-G-U-C (a Meshtastic contributor) + Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS + ENCODING: arrays of int64 fields + """ + SIMULATOR_APP: _PortNum.ValueType # 69 + """ + Used to let multiple instances of Linux native applications communicate + as if they did using their LoRa chip. + Maintained by GitHub user GUVWAF. + Project files at https://github.com/GUVWAF/Meshtasticator + ENCODING: Protobuf (?) + """ + TRACEROUTE_APP: _PortNum.ValueType # 70 + """ + Provides a traceroute functionality to show the route a packet towards + a certain destination would take on the mesh. + ENCODING: Protobuf + """ + NEIGHBORINFO_APP: _PortNum.ValueType # 71 + """ + Aggregates edge info for the network by sending out a list of each node's neighbors + ENCODING: Protobuf + """ + ATAK_PLUGIN: _PortNum.ValueType # 72 + """ + ATAK Plugin + Portnum for payloads from the official Meshtastic ATAK plugin + """ + MAP_REPORT_APP: _PortNum.ValueType # 73 + """ + Provides unencrypted information about a node for consumption by a map via MQTT + """ + PRIVATE_APP: _PortNum.ValueType # 256 + """ + Private applications should use portnums >= 256. + To simplify initial development and testing you can use "PRIVATE_APP" + in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) + """ + ATAK_FORWARDER: _PortNum.ValueType # 257 + """ + ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder + ENCODING: libcotshrink + """ + MAX: _PortNum.ValueType # 511 + """ + Currently we limit port nums to no higher than this value + """ + +class PortNum(_PortNum, metaclass=_PortNumEnumTypeWrapper): + """ + For any new 'apps' that run on the device or via sister apps on phones/PCs they should pick and use a + unique 'portnum' for their application. + If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to this + master table. + PortNums should be assigned in the following range: + 0-63 Core Meshtastic use, do not use for third party apps + 64-127 Registered 3rd party apps, send in a pull request that adds a new entry to portnums.proto to register your application + 256-511 Use one of these portnums for your private applications that you don't want to register publically + All other values are reserved. + Note: This was formerly a Type enum named 'typ' with the same id # + We have change to this 'portnum' based scheme for specifying app handlers for particular payloads. + This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically. + """ + +UNKNOWN_APP: PortNum.ValueType # 0 +""" +Deprecated: do not use in new code (formerly called OPAQUE) +A message sent from a device outside of the mesh, in a form the mesh does not understand +NOTE: This must be 0, because it is documented in IMeshService.aidl to be so +ENCODING: binary undefined +""" +TEXT_MESSAGE_APP: PortNum.ValueType # 1 +""" +A simple UTF-8 text message, which even the little micros in the mesh +can understand and show on their screen eventually in some circumstances +even signal might send messages in this form (see below) +ENCODING: UTF-8 Plaintext (?) +""" +REMOTE_HARDWARE_APP: PortNum.ValueType # 2 +""" +Reserved for built-in GPIO/example app. +See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number +ENCODING: Protobuf +""" +POSITION_APP: PortNum.ValueType # 3 +""" +The built-in position messaging app. +Payload is a Position message. +ENCODING: Protobuf +""" +NODEINFO_APP: PortNum.ValueType # 4 +""" +The built-in user info app. +Payload is a User message. +ENCODING: Protobuf +""" +ROUTING_APP: PortNum.ValueType # 5 +""" +Protocol control packets for mesh protocol use. +Payload is a Routing message. +ENCODING: Protobuf +""" +ADMIN_APP: PortNum.ValueType # 6 +""" +Admin control packets. +Payload is a AdminMessage message. +ENCODING: Protobuf +""" +TEXT_MESSAGE_COMPRESSED_APP: PortNum.ValueType # 7 +""" +Compressed TEXT_MESSAGE payloads. +ENCODING: UTF-8 Plaintext (?) with Unishox2 Compression +NOTE: The Device Firmware converts a TEXT_MESSAGE_APP to TEXT_MESSAGE_COMPRESSED_APP if the compressed +payload is shorter. There's no need for app developers to do this themselves. Also the firmware will decompress +any incoming TEXT_MESSAGE_COMPRESSED_APP payload and convert to TEXT_MESSAGE_APP. +""" +WAYPOINT_APP: PortNum.ValueType # 8 +""" +Waypoint payloads. +Payload is a Waypoint message. +ENCODING: Protobuf +""" +AUDIO_APP: PortNum.ValueType # 9 +""" +Audio Payloads. +Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now +ENCODING: codec2 audio frames +NOTE: audio frames contain a 3 byte header (0xc0 0xde 0xc2) and a one byte marker for the decompressed bitrate. +This marker comes from the 'moduleConfig.audio.bitrate' enum minus one. +""" +DETECTION_SENSOR_APP: PortNum.ValueType # 10 +""" +Same as Text Message but originating from Detection Sensor Module. +NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 +""" +REPLY_APP: PortNum.ValueType # 32 +""" +Provides a 'ping' service that replies to any packet it receives. +Also serves as a small example module. +ENCODING: ASCII Plaintext +""" +IP_TUNNEL_APP: PortNum.ValueType # 33 +""" +Used for the python IP tunnel feature +ENCODING: IP Packet. Handled by the python API, firmware ignores this one and pases on. +""" +PAXCOUNTER_APP: PortNum.ValueType # 34 +""" +Paxcounter lib included in the firmware +ENCODING: protobuf +""" +SERIAL_APP: PortNum.ValueType # 64 +""" +Provides a hardware serial interface to send and receive from the Meshtastic network. +Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic +network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. +Maximum packet size of 240 bytes. +Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. +ENCODING: binary undefined +""" +STORE_FORWARD_APP: PortNum.ValueType # 65 +""" +STORE_FORWARD_APP (Work in Progress) +Maintained by Jm Casler (MC Hamster) : jm@casler.org +ENCODING: Protobuf +""" +RANGE_TEST_APP: PortNum.ValueType # 66 +""" +Optional port for messages for the range test module. +ENCODING: ASCII Plaintext +NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9 +""" +TELEMETRY_APP: PortNum.ValueType # 67 +""" +Provides a format to send and receive telemetry data from the Meshtastic network. +Maintained by Charles Crossan (crossan007) : crossan007@gmail.com +ENCODING: Protobuf +""" +ZPS_APP: PortNum.ValueType # 68 +""" +Experimental tools for estimating node position without a GPS +Maintained by Github user a-f-G-U-C (a Meshtastic contributor) +Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS +ENCODING: arrays of int64 fields +""" +SIMULATOR_APP: PortNum.ValueType # 69 +""" +Used to let multiple instances of Linux native applications communicate +as if they did using their LoRa chip. +Maintained by GitHub user GUVWAF. +Project files at https://github.com/GUVWAF/Meshtasticator +ENCODING: Protobuf (?) +""" +TRACEROUTE_APP: PortNum.ValueType # 70 +""" +Provides a traceroute functionality to show the route a packet towards +a certain destination would take on the mesh. +ENCODING: Protobuf +""" +NEIGHBORINFO_APP: PortNum.ValueType # 71 +""" +Aggregates edge info for the network by sending out a list of each node's neighbors +ENCODING: Protobuf +""" +ATAK_PLUGIN: PortNum.ValueType # 72 +""" +ATAK Plugin +Portnum for payloads from the official Meshtastic ATAK plugin +""" +MAP_REPORT_APP: PortNum.ValueType # 73 +""" +Provides unencrypted information about a node for consumption by a map via MQTT +""" +PRIVATE_APP: PortNum.ValueType # 256 +""" +Private applications should use portnums >= 256. +To simplify initial development and testing you can use "PRIVATE_APP" +in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) +""" +ATAK_FORWARDER: PortNum.ValueType # 257 +""" +ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder +ENCODING: libcotshrink +""" +MAX: PortNum.ValueType # 511 +""" +Currently we limit port nums to no higher than this value +""" +global___PortNum = PortNum diff --git a/meshtastic/protobuf/remote_hardware_pb2.py b/meshtastic/protobuf/remote_hardware_pb2.py new file mode 100644 index 0000000..8f43c83 --- /dev/null +++ b/meshtastic/protobuf/remote_hardware_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/remote_hardware.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)meshtastic/protobuf/remote_hardware.proto\x12\x13meshtastic.protobuf\"\xdf\x01\n\x0fHardwareMessage\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.HardwareMessage.Type\x12\x11\n\tgpio_mask\x18\x02 \x01(\x04\x12\x12\n\ngpio_value\x18\x03 \x01(\x04\"l\n\x04Type\x12\t\n\x05UNSET\x10\x00\x12\x0f\n\x0bWRITE_GPIOS\x10\x01\x12\x0f\n\x0bWATCH_GPIOS\x10\x02\x12\x11\n\rGPIOS_CHANGED\x10\x03\x12\x0e\n\nREAD_GPIOS\x10\x04\x12\x14\n\x10READ_GPIOS_REPLY\x10\x05\x42\x63\n\x13\x63om.geeksville.meshB\x0eRemoteHardwareZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.remote_hardware_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016RemoteHardwareZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_HARDWAREMESSAGE']._serialized_start=67 + _globals['_HARDWAREMESSAGE']._serialized_end=290 + _globals['_HARDWAREMESSAGE_TYPE']._serialized_start=182 + _globals['_HARDWAREMESSAGE_TYPE']._serialized_end=290 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/remote_hardware_pb2.pyi b/meshtastic/protobuf/remote_hardware_pb2.pyi new file mode 100644 index 0000000..c2f7afa --- /dev/null +++ b/meshtastic/protobuf/remote_hardware_pb2.pyi @@ -0,0 +1,126 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +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.final +class HardwareMessage(google.protobuf.message.Message): + """ + An example app to show off the module system. This message is used for + REMOTE_HARDWARE_APP PortNums. + Also provides easy remote access to any GPIO. + In the future other remote hardware operations can be added based on user interest + (i.e. serial output, spi/i2c input/output). + FIXME - currently this feature is turned on by default which is dangerous + because no security yet (beyond the channel mechanism). + It should be off by default and then protected based on some TBD mechanism + (a special channel once multichannel support is included?) + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Type: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[HardwareMessage._Type.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNSET: HardwareMessage._Type.ValueType # 0 + """ + Unset/unused + """ + WRITE_GPIOS: HardwareMessage._Type.ValueType # 1 + """ + Set gpio gpios based on gpio_mask/gpio_value + """ + WATCH_GPIOS: HardwareMessage._Type.ValueType # 2 + """ + We are now interested in watching the gpio_mask gpios. + If the selected gpios change, please broadcast GPIOS_CHANGED. + Will implicitly change the gpios requested to be INPUT gpios. + """ + GPIOS_CHANGED: HardwareMessage._Type.ValueType # 3 + """ + The gpios listed in gpio_mask have changed, the new values are listed in gpio_value + """ + READ_GPIOS: HardwareMessage._Type.ValueType # 4 + """ + Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated + """ + READ_GPIOS_REPLY: HardwareMessage._Type.ValueType # 5 + """ + A reply to READ_GPIOS. gpio_mask and gpio_value will be populated + """ + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): + """ + TODO: REPLACE + """ + + UNSET: HardwareMessage.Type.ValueType # 0 + """ + Unset/unused + """ + WRITE_GPIOS: HardwareMessage.Type.ValueType # 1 + """ + Set gpio gpios based on gpio_mask/gpio_value + """ + WATCH_GPIOS: HardwareMessage.Type.ValueType # 2 + """ + We are now interested in watching the gpio_mask gpios. + If the selected gpios change, please broadcast GPIOS_CHANGED. + Will implicitly change the gpios requested to be INPUT gpios. + """ + GPIOS_CHANGED: HardwareMessage.Type.ValueType # 3 + """ + The gpios listed in gpio_mask have changed, the new values are listed in gpio_value + """ + READ_GPIOS: HardwareMessage.Type.ValueType # 4 + """ + Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated + """ + READ_GPIOS_REPLY: HardwareMessage.Type.ValueType # 5 + """ + A reply to READ_GPIOS. gpio_mask and gpio_value will be populated + """ + + TYPE_FIELD_NUMBER: builtins.int + GPIO_MASK_FIELD_NUMBER: builtins.int + GPIO_VALUE_FIELD_NUMBER: builtins.int + type: global___HardwareMessage.Type.ValueType + """ + What type of HardwareMessage is this? + """ + gpio_mask: builtins.int + """ + What gpios are we changing. Not used for all MessageTypes, see MessageType for details + """ + gpio_value: builtins.int + """ + For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios. + Not used for all MessageTypes, see MessageType for details + """ + def __init__( + self, + *, + type: global___HardwareMessage.Type.ValueType = ..., + gpio_mask: builtins.int = ..., + gpio_value: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["gpio_mask", b"gpio_mask", "gpio_value", b"gpio_value", "type", b"type"]) -> None: ... + +global___HardwareMessage = HardwareMessage diff --git a/meshtastic/protobuf/rtttl_pb2.py b/meshtastic/protobuf/rtttl_pb2.py new file mode 100644 index 0000000..07c480d --- /dev/null +++ b/meshtastic/protobuf/rtttl_pb2.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/rtttl.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/rtttl.proto\x12\x13meshtastic.protobuf\"\x1f\n\x0bRTTTLConfig\x12\x10\n\x08ringtone\x18\x01 \x01(\tBf\n\x13\x63om.geeksville.meshB\x11RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.rtttl_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\021RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_RTTTLCONFIG']._serialized_start=56 + _globals['_RTTTLCONFIG']._serialized_end=87 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/rtttl_pb2.pyi b/meshtastic/protobuf/rtttl_pb2.pyi new file mode 100644 index 0000000..fe91f94 --- /dev/null +++ b/meshtastic/protobuf/rtttl_pb2.pyi @@ -0,0 +1,33 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.message +import typing + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class RTTTLConfig(google.protobuf.message.Message): + """ + Canned message module configuration. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RINGTONE_FIELD_NUMBER: builtins.int + ringtone: builtins.str + """ + Ringtone for PWM Buzzer in RTTTL Format. + """ + def __init__( + self, + *, + ringtone: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ringtone", b"ringtone"]) -> None: ... + +global___RTTTLConfig = RTTTLConfig diff --git a/meshtastic/protobuf/storeforward_pb2.py b/meshtastic/protobuf/storeforward_pb2.py new file mode 100644 index 0000000..16a152e --- /dev/null +++ b/meshtastic/protobuf/storeforward_pb2.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/storeforward.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&meshtastic/protobuf/storeforward.proto\x12\x13meshtastic.protobuf\"\xc0\x07\n\x0fStoreAndForward\x12@\n\x02rr\x18\x01 \x01(\x0e\x32\x34.meshtastic.protobuf.StoreAndForward.RequestResponse\x12@\n\x05stats\x18\x02 \x01(\x0b\x32/.meshtastic.protobuf.StoreAndForward.StatisticsH\x00\x12?\n\x07history\x18\x03 \x01(\x0b\x32,.meshtastic.protobuf.StoreAndForward.HistoryH\x00\x12\x43\n\theartbeat\x18\x04 \x01(\x0b\x32..meshtastic.protobuf.StoreAndForward.HeartbeatH\x00\x12\x0e\n\x04text\x18\x05 \x01(\x0cH\x00\x1a\xcd\x01\n\nStatistics\x12\x16\n\x0emessages_total\x18\x01 \x01(\r\x12\x16\n\x0emessages_saved\x18\x02 \x01(\r\x12\x14\n\x0cmessages_max\x18\x03 \x01(\r\x12\x0f\n\x07up_time\x18\x04 \x01(\r\x12\x10\n\x08requests\x18\x05 \x01(\r\x12\x18\n\x10requests_history\x18\x06 \x01(\r\x12\x11\n\theartbeat\x18\x07 \x01(\x08\x12\x12\n\nreturn_max\x18\x08 \x01(\r\x12\x15\n\rreturn_window\x18\t \x01(\r\x1aI\n\x07History\x12\x18\n\x10history_messages\x18\x01 \x01(\r\x12\x0e\n\x06window\x18\x02 \x01(\r\x12\x14\n\x0clast_request\x18\x03 \x01(\r\x1a.\n\tHeartbeat\x12\x0e\n\x06period\x18\x01 \x01(\r\x12\x11\n\tsecondary\x18\x02 \x01(\r\"\xbc\x02\n\x0fRequestResponse\x12\t\n\x05UNSET\x10\x00\x12\x10\n\x0cROUTER_ERROR\x10\x01\x12\x14\n\x10ROUTER_HEARTBEAT\x10\x02\x12\x0f\n\x0bROUTER_PING\x10\x03\x12\x0f\n\x0bROUTER_PONG\x10\x04\x12\x0f\n\x0bROUTER_BUSY\x10\x05\x12\x12\n\x0eROUTER_HISTORY\x10\x06\x12\x10\n\x0cROUTER_STATS\x10\x07\x12\x16\n\x12ROUTER_TEXT_DIRECT\x10\x08\x12\x19\n\x15ROUTER_TEXT_BROADCAST\x10\t\x12\x10\n\x0c\x43LIENT_ERROR\x10@\x12\x12\n\x0e\x43LIENT_HISTORY\x10\x41\x12\x10\n\x0c\x43LIENT_STATS\x10\x42\x12\x0f\n\x0b\x43LIENT_PING\x10\x43\x12\x0f\n\x0b\x43LIENT_PONG\x10\x44\x12\x10\n\x0c\x43LIENT_ABORT\x10jB\t\n\x07variantBj\n\x13\x63om.geeksville.meshB\x15StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.storeforward_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\025StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_STOREANDFORWARD']._serialized_start=64 + _globals['_STOREANDFORWARD']._serialized_end=1024 + _globals['_STOREANDFORWARD_STATISTICS']._serialized_start=366 + _globals['_STOREANDFORWARD_STATISTICS']._serialized_end=571 + _globals['_STOREANDFORWARD_HISTORY']._serialized_start=573 + _globals['_STOREANDFORWARD_HISTORY']._serialized_end=646 + _globals['_STOREANDFORWARD_HEARTBEAT']._serialized_start=648 + _globals['_STOREANDFORWARD_HEARTBEAT']._serialized_end=694 + _globals['_STOREANDFORWARD_REQUESTRESPONSE']._serialized_start=697 + _globals['_STOREANDFORWARD_REQUESTRESPONSE']._serialized_end=1013 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/storeforward_pb2.pyi b/meshtastic/protobuf/storeforward_pb2.pyi new file mode 100644 index 0000000..aff4f74 --- /dev/null +++ b/meshtastic/protobuf/storeforward_pb2.pyi @@ -0,0 +1,345 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +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.final +class StoreAndForward(google.protobuf.message.Message): + """ + TODO: REPLACE + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _RequestResponse: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _RequestResponseEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[StoreAndForward._RequestResponse.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNSET: StoreAndForward._RequestResponse.ValueType # 0 + """ + Unset/unused + """ + ROUTER_ERROR: StoreAndForward._RequestResponse.ValueType # 1 + """ + Router is an in error state. + """ + ROUTER_HEARTBEAT: StoreAndForward._RequestResponse.ValueType # 2 + """ + Router heartbeat + """ + ROUTER_PING: StoreAndForward._RequestResponse.ValueType # 3 + """ + Router has requested the client respond. This can work as a + "are you there" message. + """ + ROUTER_PONG: StoreAndForward._RequestResponse.ValueType # 4 + """ + The response to a "Ping" + """ + ROUTER_BUSY: StoreAndForward._RequestResponse.ValueType # 5 + """ + Router is currently busy. Please try again later. + """ + ROUTER_HISTORY: StoreAndForward._RequestResponse.ValueType # 6 + """ + Router is responding to a request for history. + """ + ROUTER_STATS: StoreAndForward._RequestResponse.ValueType # 7 + """ + Router is responding to a request for stats. + """ + ROUTER_TEXT_DIRECT: StoreAndForward._RequestResponse.ValueType # 8 + """ + Router sends a text message from its history that was a direct message. + """ + ROUTER_TEXT_BROADCAST: StoreAndForward._RequestResponse.ValueType # 9 + """ + Router sends a text message from its history that was a broadcast. + """ + CLIENT_ERROR: StoreAndForward._RequestResponse.ValueType # 64 + """ + Client is an in error state. + """ + CLIENT_HISTORY: StoreAndForward._RequestResponse.ValueType # 65 + """ + Client has requested a replay from the router. + """ + CLIENT_STATS: StoreAndForward._RequestResponse.ValueType # 66 + """ + Client has requested stats from the router. + """ + CLIENT_PING: StoreAndForward._RequestResponse.ValueType # 67 + """ + Client has requested the router respond. This can work as a + "are you there" message. + """ + CLIENT_PONG: StoreAndForward._RequestResponse.ValueType # 68 + """ + The response to a "Ping" + """ + CLIENT_ABORT: StoreAndForward._RequestResponse.ValueType # 106 + """ + Client has requested that the router abort processing the client's request + """ + + class RequestResponse(_RequestResponse, metaclass=_RequestResponseEnumTypeWrapper): + """ + 001 - 063 = From Router + 064 - 127 = From Client + """ + + UNSET: StoreAndForward.RequestResponse.ValueType # 0 + """ + Unset/unused + """ + ROUTER_ERROR: StoreAndForward.RequestResponse.ValueType # 1 + """ + Router is an in error state. + """ + ROUTER_HEARTBEAT: StoreAndForward.RequestResponse.ValueType # 2 + """ + Router heartbeat + """ + ROUTER_PING: StoreAndForward.RequestResponse.ValueType # 3 + """ + Router has requested the client respond. This can work as a + "are you there" message. + """ + ROUTER_PONG: StoreAndForward.RequestResponse.ValueType # 4 + """ + The response to a "Ping" + """ + ROUTER_BUSY: StoreAndForward.RequestResponse.ValueType # 5 + """ + Router is currently busy. Please try again later. + """ + ROUTER_HISTORY: StoreAndForward.RequestResponse.ValueType # 6 + """ + Router is responding to a request for history. + """ + ROUTER_STATS: StoreAndForward.RequestResponse.ValueType # 7 + """ + Router is responding to a request for stats. + """ + ROUTER_TEXT_DIRECT: StoreAndForward.RequestResponse.ValueType # 8 + """ + Router sends a text message from its history that was a direct message. + """ + ROUTER_TEXT_BROADCAST: StoreAndForward.RequestResponse.ValueType # 9 + """ + Router sends a text message from its history that was a broadcast. + """ + CLIENT_ERROR: StoreAndForward.RequestResponse.ValueType # 64 + """ + Client is an in error state. + """ + CLIENT_HISTORY: StoreAndForward.RequestResponse.ValueType # 65 + """ + Client has requested a replay from the router. + """ + CLIENT_STATS: StoreAndForward.RequestResponse.ValueType # 66 + """ + Client has requested stats from the router. + """ + CLIENT_PING: StoreAndForward.RequestResponse.ValueType # 67 + """ + Client has requested the router respond. This can work as a + "are you there" message. + """ + CLIENT_PONG: StoreAndForward.RequestResponse.ValueType # 68 + """ + The response to a "Ping" + """ + CLIENT_ABORT: StoreAndForward.RequestResponse.ValueType # 106 + """ + Client has requested that the router abort processing the client's request + """ + + @typing.final + class Statistics(google.protobuf.message.Message): + """ + TODO: REPLACE + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MESSAGES_TOTAL_FIELD_NUMBER: builtins.int + MESSAGES_SAVED_FIELD_NUMBER: builtins.int + MESSAGES_MAX_FIELD_NUMBER: builtins.int + UP_TIME_FIELD_NUMBER: builtins.int + REQUESTS_FIELD_NUMBER: builtins.int + REQUESTS_HISTORY_FIELD_NUMBER: builtins.int + HEARTBEAT_FIELD_NUMBER: builtins.int + RETURN_MAX_FIELD_NUMBER: builtins.int + RETURN_WINDOW_FIELD_NUMBER: builtins.int + messages_total: builtins.int + """ + Number of messages we have ever seen + """ + messages_saved: builtins.int + """ + Number of messages we have currently saved our history. + """ + messages_max: builtins.int + """ + Maximum number of messages we will save + """ + up_time: builtins.int + """ + Router uptime in seconds + """ + requests: builtins.int + """ + Number of times any client sent a request to the S&F. + """ + requests_history: builtins.int + """ + Number of times the history was requested. + """ + heartbeat: builtins.bool + """ + Is the heartbeat enabled on the server? + """ + return_max: builtins.int + """ + Maximum number of messages the server will return. + """ + return_window: builtins.int + """ + Maximum history window in minutes the server will return messages from. + """ + def __init__( + self, + *, + messages_total: builtins.int = ..., + messages_saved: builtins.int = ..., + messages_max: builtins.int = ..., + up_time: builtins.int = ..., + requests: builtins.int = ..., + requests_history: builtins.int = ..., + heartbeat: builtins.bool = ..., + return_max: builtins.int = ..., + return_window: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["heartbeat", b"heartbeat", "messages_max", b"messages_max", "messages_saved", b"messages_saved", "messages_total", b"messages_total", "requests", b"requests", "requests_history", b"requests_history", "return_max", b"return_max", "return_window", b"return_window", "up_time", b"up_time"]) -> None: ... + + @typing.final + class History(google.protobuf.message.Message): + """ + TODO: REPLACE + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + HISTORY_MESSAGES_FIELD_NUMBER: builtins.int + WINDOW_FIELD_NUMBER: builtins.int + LAST_REQUEST_FIELD_NUMBER: builtins.int + history_messages: builtins.int + """ + Number of that will be sent to the client + """ + window: builtins.int + """ + The window of messages that was used to filter the history client requested + """ + last_request: builtins.int + """ + Index in the packet history of the last message sent in a previous request to the server. + Will be sent to the client before sending the history and can be set in a subsequent request to avoid getting packets the server already sent to the client. + """ + def __init__( + self, + *, + history_messages: builtins.int = ..., + window: builtins.int = ..., + last_request: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["history_messages", b"history_messages", "last_request", b"last_request", "window", b"window"]) -> None: ... + + @typing.final + class Heartbeat(google.protobuf.message.Message): + """ + TODO: REPLACE + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PERIOD_FIELD_NUMBER: builtins.int + SECONDARY_FIELD_NUMBER: builtins.int + period: builtins.int + """ + Period in seconds that the heartbeat is sent out that will be sent to the client + """ + secondary: builtins.int + """ + If set, this is not the primary Store & Forward router on the mesh + """ + def __init__( + self, + *, + period: builtins.int = ..., + secondary: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["period", b"period", "secondary", b"secondary"]) -> None: ... + + RR_FIELD_NUMBER: builtins.int + STATS_FIELD_NUMBER: builtins.int + HISTORY_FIELD_NUMBER: builtins.int + HEARTBEAT_FIELD_NUMBER: builtins.int + TEXT_FIELD_NUMBER: builtins.int + rr: global___StoreAndForward.RequestResponse.ValueType + """ + TODO: REPLACE + """ + text: builtins.bytes + """ + Text from history message. + """ + @property + def stats(self) -> global___StoreAndForward.Statistics: + """ + TODO: REPLACE + """ + + @property + def history(self) -> global___StoreAndForward.History: + """ + TODO: REPLACE + """ + + @property + def heartbeat(self) -> global___StoreAndForward.Heartbeat: + """ + TODO: REPLACE + """ + + def __init__( + self, + *, + rr: global___StoreAndForward.RequestResponse.ValueType = ..., + stats: global___StoreAndForward.Statistics | None = ..., + history: global___StoreAndForward.History | None = ..., + heartbeat: global___StoreAndForward.Heartbeat | None = ..., + text: builtins.bytes = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["heartbeat", b"heartbeat", "history", b"history", "stats", b"stats", "text", b"text", "variant", b"variant"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["heartbeat", b"heartbeat", "history", b"history", "rr", b"rr", "stats", b"stats", "text", b"text", "variant", b"variant"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["variant", b"variant"]) -> typing.Literal["stats", "history", "heartbeat", "text"] | None: ... + +global___StoreAndForward = StoreAndForward diff --git a/meshtastic/protobuf/telemetry_pb2.py b/meshtastic/protobuf/telemetry_pb2.py new file mode 100644 index 0000000..9c2cf4e --- /dev/null +++ b/meshtastic/protobuf/telemetry_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/telemetry.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/telemetry.proto\x12\x13meshtastic.protobuf\"\x81\x01\n\rDeviceMetrics\x12\x15\n\rbattery_level\x18\x01 \x01(\r\x12\x0f\n\x07voltage\x18\x02 \x01(\x02\x12\x1b\n\x13\x63hannel_utilization\x18\x03 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02\x12\x16\n\x0euptime_seconds\x18\x05 \x01(\r\"\xa6\x02\n\x12\x45nvironmentMetrics\x12\x13\n\x0btemperature\x18\x01 \x01(\x02\x12\x19\n\x11relative_humidity\x18\x02 \x01(\x02\x12\x1b\n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02\x12\x16\n\x0egas_resistance\x18\x04 \x01(\x02\x12\x0f\n\x07voltage\x18\x05 \x01(\x02\x12\x0f\n\x07\x63urrent\x18\x06 \x01(\x02\x12\x0b\n\x03iaq\x18\x07 \x01(\r\x12\x10\n\x08\x64istance\x18\x08 \x01(\x02\x12\x0b\n\x03lux\x18\t \x01(\x02\x12\x11\n\twhite_lux\x18\n \x01(\x02\x12\x0e\n\x06ir_lux\x18\x0b \x01(\x02\x12\x0e\n\x06uv_lux\x18\x0c \x01(\x02\x12\x16\n\x0ewind_direction\x18\r \x01(\r\x12\x12\n\nwind_speed\x18\x0e \x01(\x02\"\x8c\x01\n\x0cPowerMetrics\x12\x13\n\x0b\x63h1_voltage\x18\x01 \x01(\x02\x12\x13\n\x0b\x63h1_current\x18\x02 \x01(\x02\x12\x13\n\x0b\x63h2_voltage\x18\x03 \x01(\x02\x12\x13\n\x0b\x63h2_current\x18\x04 \x01(\x02\x12\x13\n\x0b\x63h3_voltage\x18\x05 \x01(\x02\x12\x13\n\x0b\x63h3_current\x18\x06 \x01(\x02\"\xbf\x02\n\x11\x41irQualityMetrics\x12\x15\n\rpm10_standard\x18\x01 \x01(\r\x12\x15\n\rpm25_standard\x18\x02 \x01(\r\x12\x16\n\x0epm100_standard\x18\x03 \x01(\r\x12\x1a\n\x12pm10_environmental\x18\x04 \x01(\r\x12\x1a\n\x12pm25_environmental\x18\x05 \x01(\r\x12\x1b\n\x13pm100_environmental\x18\x06 \x01(\r\x12\x16\n\x0eparticles_03um\x18\x07 \x01(\r\x12\x16\n\x0eparticles_05um\x18\x08 \x01(\r\x12\x16\n\x0eparticles_10um\x18\t \x01(\r\x12\x16\n\x0eparticles_25um\x18\n \x01(\r\x12\x16\n\x0eparticles_50um\x18\x0b \x01(\r\x12\x17\n\x0fparticles_100um\x18\x0c \x01(\r\"\xad\x02\n\tTelemetry\x12\x0c\n\x04time\x18\x01 \x01(\x07\x12<\n\x0e\x64\x65vice_metrics\x18\x02 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetricsH\x00\x12\x46\n\x13\x65nvironment_metrics\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.EnvironmentMetricsH\x00\x12\x45\n\x13\x61ir_quality_metrics\x18\x04 \x01(\x0b\x32&.meshtastic.protobuf.AirQualityMetricsH\x00\x12:\n\rpower_metrics\x18\x05 \x01(\x0b\x32!.meshtastic.protobuf.PowerMetricsH\x00\x42\t\n\x07variant*\xdd\x02\n\x13TelemetrySensorType\x12\x10\n\x0cSENSOR_UNSET\x10\x00\x12\n\n\x06\x42ME280\x10\x01\x12\n\n\x06\x42ME680\x10\x02\x12\x0b\n\x07MCP9808\x10\x03\x12\n\n\x06INA260\x10\x04\x12\n\n\x06INA219\x10\x05\x12\n\n\x06\x42MP280\x10\x06\x12\t\n\x05SHTC3\x10\x07\x12\t\n\x05LPS22\x10\x08\x12\x0b\n\x07QMC6310\x10\t\x12\x0b\n\x07QMI8658\x10\n\x12\x0c\n\x08QMC5883L\x10\x0b\x12\t\n\x05SHT31\x10\x0c\x12\x0c\n\x08PMSA003I\x10\r\x12\x0b\n\x07INA3221\x10\x0e\x12\n\n\x06\x42MP085\x10\x0f\x12\x0c\n\x08RCWL9620\x10\x10\x12\t\n\x05SHT4X\x10\x11\x12\x0c\n\x08VEML7700\x10\x12\x12\x0c\n\x08MLX90632\x10\x13\x12\x0b\n\x07OPT3001\x10\x14\x12\x0c\n\x08LTR390UV\x10\x15\x12\x0e\n\nTSL25911FN\x10\x16\x12\t\n\x05\x41HT10\x10\x17\x12\x10\n\x0c\x44\x46ROBOT_LARK\x10\x18\x42\x64\n\x13\x63om.geeksville.meshB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.telemetry_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\017TelemetryProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_TELEMETRYSENSORTYPE']._serialized_start=1259 + _globals['_TELEMETRYSENSORTYPE']._serialized_end=1608 + _globals['_DEVICEMETRICS']._serialized_start=61 + _globals['_DEVICEMETRICS']._serialized_end=190 + _globals['_ENVIRONMENTMETRICS']._serialized_start=193 + _globals['_ENVIRONMENTMETRICS']._serialized_end=487 + _globals['_POWERMETRICS']._serialized_start=490 + _globals['_POWERMETRICS']._serialized_end=630 + _globals['_AIRQUALITYMETRICS']._serialized_start=633 + _globals['_AIRQUALITYMETRICS']._serialized_end=952 + _globals['_TELEMETRY']._serialized_start=955 + _globals['_TELEMETRY']._serialized_end=1256 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/telemetry_pb2.pyi b/meshtastic/protobuf/telemetry_pb2.pyi new file mode 100644 index 0000000..aba51c8 --- /dev/null +++ b/meshtastic/protobuf/telemetry_pb2.pyi @@ -0,0 +1,576 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +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 + +class _TelemetrySensorType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TelemetrySensorType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + SENSOR_UNSET: _TelemetrySensorType.ValueType # 0 + """ + No external telemetry sensor explicitly set + """ + BME280: _TelemetrySensorType.ValueType # 1 + """ + High accuracy temperature, pressure, humidity + """ + BME680: _TelemetrySensorType.ValueType # 2 + """ + High accuracy temperature, pressure, humidity, and air resistance + """ + MCP9808: _TelemetrySensorType.ValueType # 3 + """ + Very high accuracy temperature + """ + INA260: _TelemetrySensorType.ValueType # 4 + """ + Moderate accuracy current and voltage + """ + INA219: _TelemetrySensorType.ValueType # 5 + """ + Moderate accuracy current and voltage + """ + BMP280: _TelemetrySensorType.ValueType # 6 + """ + High accuracy temperature and pressure + """ + SHTC3: _TelemetrySensorType.ValueType # 7 + """ + High accuracy temperature and humidity + """ + LPS22: _TelemetrySensorType.ValueType # 8 + """ + High accuracy pressure + """ + QMC6310: _TelemetrySensorType.ValueType # 9 + """ + 3-Axis magnetic sensor + """ + QMI8658: _TelemetrySensorType.ValueType # 10 + """ + 6-Axis inertial measurement sensor + """ + QMC5883L: _TelemetrySensorType.ValueType # 11 + """ + 3-Axis magnetic sensor + """ + SHT31: _TelemetrySensorType.ValueType # 12 + """ + High accuracy temperature and humidity + """ + PMSA003I: _TelemetrySensorType.ValueType # 13 + """ + PM2.5 air quality sensor + """ + INA3221: _TelemetrySensorType.ValueType # 14 + """ + INA3221 3 Channel Voltage / Current Sensor + """ + BMP085: _TelemetrySensorType.ValueType # 15 + """ + BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) + """ + RCWL9620: _TelemetrySensorType.ValueType # 16 + """ + RCWL-9620 Doppler Radar Distance Sensor, used for water level detection + """ + SHT4X: _TelemetrySensorType.ValueType # 17 + """ + Sensirion High accuracy temperature and humidity + """ + VEML7700: _TelemetrySensorType.ValueType # 18 + """ + VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + """ + MLX90632: _TelemetrySensorType.ValueType # 19 + """ + MLX90632 non-contact IR temperature sensor. + """ + OPT3001: _TelemetrySensorType.ValueType # 20 + """ + TI OPT3001 Ambient Light Sensor + """ + LTR390UV: _TelemetrySensorType.ValueType # 21 + """ + Lite On LTR-390UV-01 UV Light Sensor + """ + TSL25911FN: _TelemetrySensorType.ValueType # 22 + """ + AMS TSL25911FN RGB Light Sensor + """ + AHT10: _TelemetrySensorType.ValueType # 23 + """ + AHT10 Integrated temperature and humidity sensor + """ + DFROBOT_LARK: _TelemetrySensorType.ValueType # 24 + """ + DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) + """ + +class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper): + """ + Supported I2C Sensors for telemetry in Meshtastic + """ + +SENSOR_UNSET: TelemetrySensorType.ValueType # 0 +""" +No external telemetry sensor explicitly set +""" +BME280: TelemetrySensorType.ValueType # 1 +""" +High accuracy temperature, pressure, humidity +""" +BME680: TelemetrySensorType.ValueType # 2 +""" +High accuracy temperature, pressure, humidity, and air resistance +""" +MCP9808: TelemetrySensorType.ValueType # 3 +""" +Very high accuracy temperature +""" +INA260: TelemetrySensorType.ValueType # 4 +""" +Moderate accuracy current and voltage +""" +INA219: TelemetrySensorType.ValueType # 5 +""" +Moderate accuracy current and voltage +""" +BMP280: TelemetrySensorType.ValueType # 6 +""" +High accuracy temperature and pressure +""" +SHTC3: TelemetrySensorType.ValueType # 7 +""" +High accuracy temperature and humidity +""" +LPS22: TelemetrySensorType.ValueType # 8 +""" +High accuracy pressure +""" +QMC6310: TelemetrySensorType.ValueType # 9 +""" +3-Axis magnetic sensor +""" +QMI8658: TelemetrySensorType.ValueType # 10 +""" +6-Axis inertial measurement sensor +""" +QMC5883L: TelemetrySensorType.ValueType # 11 +""" +3-Axis magnetic sensor +""" +SHT31: TelemetrySensorType.ValueType # 12 +""" +High accuracy temperature and humidity +""" +PMSA003I: TelemetrySensorType.ValueType # 13 +""" +PM2.5 air quality sensor +""" +INA3221: TelemetrySensorType.ValueType # 14 +""" +INA3221 3 Channel Voltage / Current Sensor +""" +BMP085: TelemetrySensorType.ValueType # 15 +""" +BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280) +""" +RCWL9620: TelemetrySensorType.ValueType # 16 +""" +RCWL-9620 Doppler Radar Distance Sensor, used for water level detection +""" +SHT4X: TelemetrySensorType.ValueType # 17 +""" +Sensirion High accuracy temperature and humidity +""" +VEML7700: TelemetrySensorType.ValueType # 18 +""" +VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. +""" +MLX90632: TelemetrySensorType.ValueType # 19 +""" +MLX90632 non-contact IR temperature sensor. +""" +OPT3001: TelemetrySensorType.ValueType # 20 +""" +TI OPT3001 Ambient Light Sensor +""" +LTR390UV: TelemetrySensorType.ValueType # 21 +""" +Lite On LTR-390UV-01 UV Light Sensor +""" +TSL25911FN: TelemetrySensorType.ValueType # 22 +""" +AMS TSL25911FN RGB Light Sensor +""" +AHT10: TelemetrySensorType.ValueType # 23 +""" +AHT10 Integrated temperature and humidity sensor +""" +DFROBOT_LARK: TelemetrySensorType.ValueType # 24 +""" +DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction) +""" +global___TelemetrySensorType = TelemetrySensorType + +@typing.final +class DeviceMetrics(google.protobuf.message.Message): + """ + Key native device metrics such as battery level + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + BATTERY_LEVEL_FIELD_NUMBER: builtins.int + VOLTAGE_FIELD_NUMBER: builtins.int + CHANNEL_UTILIZATION_FIELD_NUMBER: builtins.int + AIR_UTIL_TX_FIELD_NUMBER: builtins.int + UPTIME_SECONDS_FIELD_NUMBER: builtins.int + battery_level: builtins.int + """ + 0-100 (>100 means powered) + """ + voltage: builtins.float + """ + Voltage measured + """ + channel_utilization: builtins.float + """ + Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). + """ + air_util_tx: builtins.float + """ + Percent of airtime for transmission used within the last hour. + """ + uptime_seconds: builtins.int + """ + How long the device has been running since the last reboot (in seconds) + """ + def __init__( + self, + *, + battery_level: builtins.int = ..., + voltage: builtins.float = ..., + channel_utilization: builtins.float = ..., + air_util_tx: builtins.float = ..., + uptime_seconds: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["air_util_tx", b"air_util_tx", "battery_level", b"battery_level", "channel_utilization", b"channel_utilization", "uptime_seconds", b"uptime_seconds", "voltage", b"voltage"]) -> None: ... + +global___DeviceMetrics = DeviceMetrics + +@typing.final +class EnvironmentMetrics(google.protobuf.message.Message): + """ + Weather station or other environmental metrics + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TEMPERATURE_FIELD_NUMBER: builtins.int + RELATIVE_HUMIDITY_FIELD_NUMBER: builtins.int + BAROMETRIC_PRESSURE_FIELD_NUMBER: builtins.int + GAS_RESISTANCE_FIELD_NUMBER: builtins.int + VOLTAGE_FIELD_NUMBER: builtins.int + CURRENT_FIELD_NUMBER: builtins.int + IAQ_FIELD_NUMBER: builtins.int + DISTANCE_FIELD_NUMBER: builtins.int + LUX_FIELD_NUMBER: builtins.int + WHITE_LUX_FIELD_NUMBER: builtins.int + IR_LUX_FIELD_NUMBER: builtins.int + UV_LUX_FIELD_NUMBER: builtins.int + WIND_DIRECTION_FIELD_NUMBER: builtins.int + WIND_SPEED_FIELD_NUMBER: builtins.int + temperature: builtins.float + """ + Temperature measured + """ + relative_humidity: builtins.float + """ + Relative humidity percent measured + """ + barometric_pressure: builtins.float + """ + Barometric pressure in hPA measured + """ + gas_resistance: builtins.float + """ + Gas resistance in MOhm measured + """ + voltage: builtins.float + """ + Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) + """ + current: builtins.float + """ + Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x) + """ + iaq: builtins.int + """ + relative scale IAQ value as measured by Bosch BME680 . value 0-500. + Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here. + """ + distance: builtins.float + """ + RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm. + """ + lux: builtins.float + """ + VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor. + """ + white_lux: builtins.float + """ + VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor. + """ + ir_lux: builtins.float + """ + Infrared lux + """ + uv_lux: builtins.float + """ + Ultraviolet lux + """ + wind_direction: builtins.int + """ + Wind direction in degrees + 0 degrees = North, 90 = East, etc... + """ + wind_speed: builtins.float + """ + Wind speed in m/s + """ + def __init__( + self, + *, + temperature: builtins.float = ..., + relative_humidity: builtins.float = ..., + barometric_pressure: builtins.float = ..., + gas_resistance: builtins.float = ..., + voltage: builtins.float = ..., + current: builtins.float = ..., + iaq: builtins.int = ..., + distance: builtins.float = ..., + lux: builtins.float = ..., + white_lux: builtins.float = ..., + ir_lux: builtins.float = ..., + uv_lux: builtins.float = ..., + wind_direction: builtins.int = ..., + wind_speed: builtins.float = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["barometric_pressure", b"barometric_pressure", "current", b"current", "distance", b"distance", "gas_resistance", b"gas_resistance", "iaq", b"iaq", "ir_lux", b"ir_lux", "lux", b"lux", "relative_humidity", b"relative_humidity", "temperature", b"temperature", "uv_lux", b"uv_lux", "voltage", b"voltage", "white_lux", b"white_lux", "wind_direction", b"wind_direction", "wind_speed", b"wind_speed"]) -> None: ... + +global___EnvironmentMetrics = EnvironmentMetrics + +@typing.final +class PowerMetrics(google.protobuf.message.Message): + """ + Power Metrics (voltage / current / etc) + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CH1_VOLTAGE_FIELD_NUMBER: builtins.int + CH1_CURRENT_FIELD_NUMBER: builtins.int + CH2_VOLTAGE_FIELD_NUMBER: builtins.int + CH2_CURRENT_FIELD_NUMBER: builtins.int + CH3_VOLTAGE_FIELD_NUMBER: builtins.int + CH3_CURRENT_FIELD_NUMBER: builtins.int + ch1_voltage: builtins.float + """ + Voltage (Ch1) + """ + ch1_current: builtins.float + """ + Current (Ch1) + """ + ch2_voltage: builtins.float + """ + Voltage (Ch2) + """ + ch2_current: builtins.float + """ + Current (Ch2) + """ + ch3_voltage: builtins.float + """ + Voltage (Ch3) + """ + ch3_current: builtins.float + """ + Current (Ch3) + """ + def __init__( + self, + *, + ch1_voltage: builtins.float = ..., + ch1_current: builtins.float = ..., + ch2_voltage: builtins.float = ..., + ch2_current: builtins.float = ..., + ch3_voltage: builtins.float = ..., + ch3_current: builtins.float = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ch1_current", b"ch1_current", "ch1_voltage", b"ch1_voltage", "ch2_current", b"ch2_current", "ch2_voltage", b"ch2_voltage", "ch3_current", b"ch3_current", "ch3_voltage", b"ch3_voltage"]) -> None: ... + +global___PowerMetrics = PowerMetrics + +@typing.final +class AirQualityMetrics(google.protobuf.message.Message): + """ + Air quality metrics + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PM10_STANDARD_FIELD_NUMBER: builtins.int + PM25_STANDARD_FIELD_NUMBER: builtins.int + PM100_STANDARD_FIELD_NUMBER: builtins.int + PM10_ENVIRONMENTAL_FIELD_NUMBER: builtins.int + PM25_ENVIRONMENTAL_FIELD_NUMBER: builtins.int + PM100_ENVIRONMENTAL_FIELD_NUMBER: builtins.int + PARTICLES_03UM_FIELD_NUMBER: builtins.int + PARTICLES_05UM_FIELD_NUMBER: builtins.int + PARTICLES_10UM_FIELD_NUMBER: builtins.int + PARTICLES_25UM_FIELD_NUMBER: builtins.int + PARTICLES_50UM_FIELD_NUMBER: builtins.int + PARTICLES_100UM_FIELD_NUMBER: builtins.int + pm10_standard: builtins.int + """ + Concentration Units Standard PM1.0 + """ + pm25_standard: builtins.int + """ + Concentration Units Standard PM2.5 + """ + pm100_standard: builtins.int + """ + Concentration Units Standard PM10.0 + """ + pm10_environmental: builtins.int + """ + Concentration Units Environmental PM1.0 + """ + pm25_environmental: builtins.int + """ + Concentration Units Environmental PM2.5 + """ + pm100_environmental: builtins.int + """ + Concentration Units Environmental PM10.0 + """ + particles_03um: builtins.int + """ + 0.3um Particle Count + """ + particles_05um: builtins.int + """ + 0.5um Particle Count + """ + particles_10um: builtins.int + """ + 1.0um Particle Count + """ + particles_25um: builtins.int + """ + 2.5um Particle Count + """ + particles_50um: builtins.int + """ + 5.0um Particle Count + """ + particles_100um: builtins.int + """ + 10.0um Particle Count + """ + def __init__( + self, + *, + pm10_standard: builtins.int = ..., + pm25_standard: builtins.int = ..., + pm100_standard: builtins.int = ..., + pm10_environmental: builtins.int = ..., + pm25_environmental: builtins.int = ..., + pm100_environmental: builtins.int = ..., + particles_03um: builtins.int = ..., + particles_05um: builtins.int = ..., + particles_10um: builtins.int = ..., + particles_25um: builtins.int = ..., + particles_50um: builtins.int = ..., + particles_100um: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["particles_03um", b"particles_03um", "particles_05um", b"particles_05um", "particles_100um", b"particles_100um", "particles_10um", b"particles_10um", "particles_25um", b"particles_25um", "particles_50um", b"particles_50um", "pm100_environmental", b"pm100_environmental", "pm100_standard", b"pm100_standard", "pm10_environmental", b"pm10_environmental", "pm10_standard", b"pm10_standard", "pm25_environmental", b"pm25_environmental", "pm25_standard", b"pm25_standard"]) -> None: ... + +global___AirQualityMetrics = AirQualityMetrics + +@typing.final +class Telemetry(google.protobuf.message.Message): + """ + Types of Measurements the telemetry module is equipped to handle + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TIME_FIELD_NUMBER: builtins.int + DEVICE_METRICS_FIELD_NUMBER: builtins.int + ENVIRONMENT_METRICS_FIELD_NUMBER: builtins.int + AIR_QUALITY_METRICS_FIELD_NUMBER: builtins.int + POWER_METRICS_FIELD_NUMBER: builtins.int + time: builtins.int + """ + Seconds since 1970 - or 0 for unknown/unset + """ + @property + def device_metrics(self) -> global___DeviceMetrics: + """ + Key native device metrics such as battery level + """ + + @property + def environment_metrics(self) -> global___EnvironmentMetrics: + """ + Weather station or other environmental metrics + """ + + @property + def air_quality_metrics(self) -> global___AirQualityMetrics: + """ + Air quality metrics + """ + + @property + def power_metrics(self) -> global___PowerMetrics: + """ + Power Metrics + """ + + def __init__( + self, + *, + time: builtins.int = ..., + device_metrics: global___DeviceMetrics | None = ..., + environment_metrics: global___EnvironmentMetrics | None = ..., + air_quality_metrics: global___AirQualityMetrics | None = ..., + power_metrics: global___PowerMetrics | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["air_quality_metrics", b"air_quality_metrics", "device_metrics", b"device_metrics", "environment_metrics", b"environment_metrics", "power_metrics", b"power_metrics", "variant", b"variant"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["air_quality_metrics", b"air_quality_metrics", "device_metrics", b"device_metrics", "environment_metrics", b"environment_metrics", "power_metrics", b"power_metrics", "time", b"time", "variant", b"variant"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["variant", b"variant"]) -> typing.Literal["device_metrics", "environment_metrics", "air_quality_metrics", "power_metrics"] | None: ... + +global___Telemetry = Telemetry diff --git a/meshtastic/protobuf/xmodem_pb2.py b/meshtastic/protobuf/xmodem_pb2.py new file mode 100644 index 0000000..fc179f6 --- /dev/null +++ b/meshtastic/protobuf/xmodem_pb2.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/xmodem.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/xmodem.proto\x12\x13meshtastic.protobuf\"\xbf\x01\n\x06XModem\x12\x34\n\x07\x63ontrol\x18\x01 \x01(\x0e\x32#.meshtastic.protobuf.XModem.Control\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\r\n\x05\x63rc16\x18\x03 \x01(\r\x12\x0e\n\x06\x62uffer\x18\x04 \x01(\x0c\"S\n\x07\x43ontrol\x12\x07\n\x03NUL\x10\x00\x12\x07\n\x03SOH\x10\x01\x12\x07\n\x03STX\x10\x02\x12\x07\n\x03\x45OT\x10\x04\x12\x07\n\x03\x41\x43K\x10\x06\x12\x07\n\x03NAK\x10\x15\x12\x07\n\x03\x43\x41N\x10\x18\x12\t\n\x05\x43TRLZ\x10\x1a\x42\x61\n\x13\x63om.geeksville.meshB\x0cXmodemProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.xmodem_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\014XmodemProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _globals['_XMODEM']._serialized_start=58 + _globals['_XMODEM']._serialized_end=249 + _globals['_XMODEM_CONTROL']._serialized_start=166 + _globals['_XMODEM_CONTROL']._serialized_end=249 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/xmodem_pb2.pyi b/meshtastic/protobuf/xmodem_pb2.pyi new file mode 100644 index 0000000..d362ad0 --- /dev/null +++ b/meshtastic/protobuf/xmodem_pb2.pyi @@ -0,0 +1,67 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +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.final +class XModem(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Control: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ControlEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[XModem._Control.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + NUL: XModem._Control.ValueType # 0 + SOH: XModem._Control.ValueType # 1 + STX: XModem._Control.ValueType # 2 + EOT: XModem._Control.ValueType # 4 + ACK: XModem._Control.ValueType # 6 + NAK: XModem._Control.ValueType # 21 + CAN: XModem._Control.ValueType # 24 + CTRLZ: XModem._Control.ValueType # 26 + + class Control(_Control, metaclass=_ControlEnumTypeWrapper): ... + NUL: XModem.Control.ValueType # 0 + SOH: XModem.Control.ValueType # 1 + STX: XModem.Control.ValueType # 2 + EOT: XModem.Control.ValueType # 4 + ACK: XModem.Control.ValueType # 6 + NAK: XModem.Control.ValueType # 21 + CAN: XModem.Control.ValueType # 24 + CTRLZ: XModem.Control.ValueType # 26 + + CONTROL_FIELD_NUMBER: builtins.int + SEQ_FIELD_NUMBER: builtins.int + CRC16_FIELD_NUMBER: builtins.int + BUFFER_FIELD_NUMBER: builtins.int + control: global___XModem.Control.ValueType + seq: builtins.int + crc16: builtins.int + buffer: builtins.bytes + def __init__( + self, + *, + control: global___XModem.Control.ValueType = ..., + seq: builtins.int = ..., + crc16: builtins.int = ..., + buffer: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["buffer", b"buffer", "control", b"control", "crc16", b"crc16", "seq", b"seq"]) -> None: ... + +global___XModem = XModem From 3e8a807868a12694aa29fa5103952f50b7f40747 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Wed, 26 Jun 2024 10:17:37 -0700 Subject: [PATCH 4/4] Update all libs to latest (in particular the mypy-protobuf tool) --- poetry.lock | 115 ++++++++++++++++++++++++++-------------------------- 1 file changed, 57 insertions(+), 58 deletions(-) diff --git a/poetry.lock b/poetry.lock index dd7228f..29e130e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -57,13 +57,13 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "autopep8" -version = "2.3.0" +version = "2.3.1" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" optional = false python-versions = ">=3.8" files = [ - {file = "autopep8-2.3.0-py2.py3-none-any.whl", hash = "sha256:b716efa70cbafbf4a2c9c5ec1cabfa037a68f9e30b04c74ffa5864dd49b8f7d2"}, - {file = "autopep8-2.3.0.tar.gz", hash = "sha256:5cfe45eb3bef8662f6a3c7e28b7c0310c7310d340074b7f0f28f9810b44b7ef4"}, + {file = "autopep8-2.3.1-py2.py3-none-any.whl", hash = "sha256:a203fe0fcad7939987422140ab17a930f684763bf7335bdb6709991dd7ef6c2d"}, + {file = "autopep8-2.3.1.tar.gz", hash = "sha256:8d6c87eba648fdcfc83e29b788910b8643171c395d9c4bcf115ece035b9c9dda"}, ] [package.dependencies] @@ -390,13 +390,13 @@ test = ["pytest (>=6)"] [[package]] name = "hypothesis" -version = "6.103.2" +version = "6.104.1" description = "A library for property-based testing" optional = false python-versions = ">=3.8" files = [ - {file = "hypothesis-6.103.2-py3-none-any.whl", hash = "sha256:629b7cdeca8c225933739f99879caba21949000d2c919c8b4585e01048b3bc73"}, - {file = "hypothesis-6.103.2.tar.gz", hash = "sha256:83504e31e90a0d7d6e8eb93e51525dc1a48d79c932a50ad6035e29f8295328cd"}, + {file = "hypothesis-6.104.1-py3-none-any.whl", hash = "sha256:a0a898fa78ecaefe76ad248901dc274e598f29198c6015b3053f7f7827670e0e"}, + {file = "hypothesis-6.104.1.tar.gz", hash = "sha256:4033898019a6149823d2feeb8d214921b4ac2d342a05d6b02e40a3ca4be07eea"}, ] [package.dependencies] @@ -405,10 +405,10 @@ exceptiongroup = {version = ">=1.0.0", markers = "python_version < \"3.11\""} sortedcontainers = ">=2.1.0,<3.0.0" [package.extras] -all = ["backports.zoneinfo (>=0.2.1)", "black (>=19.10b0)", "click (>=7.0)", "crosshair-tool (>=0.0.54)", "django (>=3.2)", "dpcontracts (>=0.4)", "hypothesis-crosshair (>=0.0.4)", "lark (>=0.10.1)", "libcst (>=0.3.16)", "numpy (>=1.17.3)", "pandas (>=1.1)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "tzdata (>=2024.1)"] +all = ["backports.zoneinfo (>=0.2.1)", "black (>=19.10b0)", "click (>=7.0)", "crosshair-tool (>=0.0.55)", "django (>=3.2)", "dpcontracts (>=0.4)", "hypothesis-crosshair (>=0.0.4)", "lark (>=0.10.1)", "libcst (>=0.3.16)", "numpy (>=1.17.3)", "pandas (>=1.1)", "pytest (>=4.6)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "rich (>=9.0.0)", "tzdata (>=2024.1)"] cli = ["black (>=19.10b0)", "click (>=7.0)", "rich (>=9.0.0)"] codemods = ["libcst (>=0.3.16)"] -crosshair = ["crosshair-tool (>=0.0.54)", "hypothesis-crosshair (>=0.0.4)"] +crosshair = ["crosshair-tool (>=0.0.55)", "hypothesis-crosshair (>=0.0.4)"] dateutil = ["python-dateutil (>=1.4)"] django = ["django (>=3.2)"] dpcontracts = ["dpcontracts (>=0.4)"] @@ -434,13 +434,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.2.0" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.2.0-py3-none-any.whl", hash = "sha256:04e4aad329b8b948a5711d394fa8759cb80f009225441b4f2a02bd4d8e5f426c"}, - {file = "importlib_metadata-7.2.0.tar.gz", hash = "sha256:3ff4519071ed42740522d494d04819b666541b9752c43012f85afb2cc220fcc6"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] @@ -609,38 +609,38 @@ files = [ [[package]] name = "mypy" -version = "1.10.0" +version = "1.10.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, - {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, - {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, - {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, - {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, - {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, - {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, - {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, - {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, - {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, - {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, - {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, - {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, - {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, - {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, - {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, - {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, - {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, - {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, + {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, + {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, + {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, ] [package.dependencies] @@ -764,22 +764,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "5.27.1" +version = "5.27.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.27.1-cp310-abi3-win32.whl", hash = "sha256:3adc15ec0ff35c5b2d0992f9345b04a540c1e73bfee3ff1643db43cc1d734333"}, - {file = "protobuf-5.27.1-cp310-abi3-win_amd64.whl", hash = "sha256:25236b69ab4ce1bec413fd4b68a15ef8141794427e0b4dc173e9d5d9dffc3bcd"}, - {file = "protobuf-5.27.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4e38fc29d7df32e01a41cf118b5a968b1efd46b9c41ff515234e794011c78b17"}, - {file = "protobuf-5.27.1-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:917ed03c3eb8a2d51c3496359f5b53b4e4b7e40edfbdd3d3f34336e0eef6825a"}, - {file = "protobuf-5.27.1-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:ee52874a9e69a30271649be88ecbe69d374232e8fd0b4e4b0aaaa87f429f1631"}, - {file = "protobuf-5.27.1-cp38-cp38-win32.whl", hash = "sha256:7a97b9c5aed86b9ca289eb5148df6c208ab5bb6906930590961e08f097258107"}, - {file = "protobuf-5.27.1-cp38-cp38-win_amd64.whl", hash = "sha256:f6abd0f69968792da7460d3c2cfa7d94fd74e1c21df321eb6345b963f9ec3d8d"}, - {file = "protobuf-5.27.1-cp39-cp39-win32.whl", hash = "sha256:dfddb7537f789002cc4eb00752c92e67885badcc7005566f2c5de9d969d3282d"}, - {file = "protobuf-5.27.1-cp39-cp39-win_amd64.whl", hash = "sha256:39309898b912ca6febb0084ea912e976482834f401be35840a008da12d189340"}, - {file = "protobuf-5.27.1-py3-none-any.whl", hash = "sha256:4ac7249a1530a2ed50e24201d6630125ced04b30619262f06224616e0030b6cf"}, - {file = "protobuf-5.27.1.tar.gz", hash = "sha256:df5e5b8e39b7d1c25b186ffdf9f44f40f810bbcc9d2b71d9d3156fee5a9adf15"}, + {file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"}, + {file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"}, + {file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"}, + {file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"}, + {file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"}, + {file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"}, + {file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"}, + {file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"}, + {file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"}, + {file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"}, ] [[package]] @@ -1098,7 +1098,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1156,13 +1155,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "70.1.0" +version = "70.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.1.0-py3-none-any.whl", hash = "sha256:d9b8b771455a97c8a9f3ab3448ebe0b29b5e105f1228bba41028be116985a267"}, - {file = "setuptools-70.1.0.tar.gz", hash = "sha256:01a1e793faa5bd89abc851fa15d0a0db26f160890c7102cd8dce643e886b47f5"}, + {file = "setuptools-70.1.1-py3-none-any.whl", hash = "sha256:a58a8fde0541dab0419750bcc521fbdf8585f6e5cb41909df3a472ef7b81ca95"}, + {file = "setuptools-70.1.1.tar.gz", hash = "sha256:937a48c7cdb7a21eb53cd7f9b59e525503aa8abaf3584c730dc5f7a5bec3a650"}, ] [package.extras] @@ -1218,13 +1217,13 @@ files = [ [[package]] name = "types-protobuf" -version = "5.26.0.20240422" +version = "5.27.0.20240626" description = "Typing stubs for protobuf" optional = false python-versions = ">=3.8" files = [ - {file = "types-protobuf-5.26.0.20240422.tar.gz", hash = "sha256:e6074178109f97efe9f0b20a035ba61d7c3b03e867eb47d254d2b2ab6a805e36"}, - {file = "types_protobuf-5.26.0.20240422-py3-none-any.whl", hash = "sha256:e4dc2554d342501d5aebc3c71203868b51118340e105fc190e3a64ca1be43831"}, + {file = "types-protobuf-5.27.0.20240626.tar.gz", hash = "sha256:683ba14043bade6785e3f937a7498f243b37881a91ac8d81b9202ecf8b191e9c"}, + {file = "types_protobuf-5.27.0.20240626-py3-none-any.whl", hash = "sha256:688e8f7e8d9295db26bc560df01fb731b27a25b77cbe4c1ce945647f7024f5c1"}, ] [[package]]