diff --git a/meshtastic/protobuf/UPSTREAM_REV.txt b/meshtastic/protobuf/UPSTREAM_REV.txt index ad080a8..65cd3ab 100644 --- a/meshtastic/protobuf/UPSTREAM_REV.txt +++ b/meshtastic/protobuf/UPSTREAM_REV.txt @@ -1 +1 @@ -59cb394dcfc4432cb216358ca26e861c7d13f462 +9ab4a1d08cb833d897aee2367013318718391f2f diff --git a/meshtastic/protobuf/admin_pb2.py b/meshtastic/protobuf/admin_pb2.py index f5709da..d3266b7 100644 --- a/meshtastic/protobuf/admin_pb2.py +++ b/meshtastic/protobuf/admin_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,32 +19,50 @@ from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb 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#meshtastic/protobuf/device_ui.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xa5\x1a\n\x0c\x41\x64minMessage\x12\x17\n\x0fsession_passkey\x18\x65 \x01(\x0c\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\x13\n\tset_scale\x18\x17 \x01(\rH\x00\x12N\n\x12\x62\x61\x63kup_preferences\x18\x18 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12O\n\x13restore_preferences\x18\x19 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12U\n\x19remove_backup_preferences\x18\x1a \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12H\n\x10send_input_event\x18\x1b \x01(\x0b\x32,.meshtastic.protobuf.AdminMessage.InputEventH\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\x17\n\rset_time_only\x18+ \x01(\x07H\x00\x12\x1f\n\x15get_ui_config_request\x18, \x01(\x08H\x00\x12\x45\n\x16get_ui_config_response\x18- \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0fstore_ui_config\x18. \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12\x1a\n\x10set_ignored_node\x18/ \x01(\rH\x00\x12\x1d\n\x13remove_ignored_node\x18\x30 \x01(\rH\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\x39\n\x0b\x61\x64\x64_contact\x18\x42 \x01(\x0b\x32\".meshtastic.protobuf.SharedContactH\x00\x12\x45\n\x10key_verification\x18\x43 \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationAdminH\x00\x12\x1e\n\x14\x66\x61\x63tory_reset_device\x18^ \x01(\x05H\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\x1e\n\x14\x66\x61\x63tory_reset_config\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x05H\x00\x1aS\n\nInputEvent\x12\x12\n\nevent_code\x18\x01 \x01(\r\x12\x0f\n\x07kb_char\x18\x02 \x01(\r\x12\x0f\n\x07touch_x\x18\x03 \x01(\r\x12\x0f\n\x07touch_y\x18\x04 \x01(\r\"\xd6\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\x12\x13\n\x0fSECURITY_CONFIG\x10\x07\x12\x15\n\x11SESSIONKEY_CONFIG\x10\x08\x12\x13\n\x0f\x44\x45VICEUI_CONFIG\x10\t\"\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\"#\n\x0e\x42\x61\x63kupLocation\x12\t\n\x05\x46LASH\x10\x00\x12\x06\n\x02SD\x10\x01\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.NodeRemoteHardwarePin\"|\n\rSharedContact\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x15\n\rshould_ignore\x18\x03 \x01(\x08\x12\x19\n\x11manually_verified\x18\x04 \x01(\x08\"\xa5\x02\n\x14KeyVerificationAdmin\x12K\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x35.meshtastic.protobuf.KeyVerificationAdmin.MessageType\x12\x16\n\x0eremote_nodenum\x18\x02 \x01(\r\x12\r\n\x05nonce\x18\x03 \x01(\x04\x12\x1c\n\x0fsecurity_number\x18\x04 \x01(\rH\x00\x88\x01\x01\"g\n\x0bMessageType\x12\x19\n\x15INITIATE_VERIFICATION\x10\x00\x12\x1b\n\x17PROVIDE_SECURITY_NUMBER\x10\x01\x12\r\n\tDO_VERIFY\x10\x02\x12\x11\n\rDO_NOT_VERIFY\x10\x03\x42\x12\n\x10_security_numberBa\n\x14org.meshtastic.protoB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +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#meshtastic/protobuf/device_ui.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a\'meshtastic/protobuf/module_config.proto\"\x9e\x1d\n\x0c\x41\x64minMessage\x12\x17\n\x0fsession_passkey\x18\x65 \x01(\x0c\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\x13\n\tset_scale\x18\x17 \x01(\rH\x00\x12N\n\x12\x62\x61\x63kup_preferences\x18\x18 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12O\n\x13restore_preferences\x18\x19 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12U\n\x19remove_backup_preferences\x18\x1a \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12H\n\x10send_input_event\x18\x1b \x01(\x0b\x32,.meshtastic.protobuf.AdminMessage.InputEventH\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\x17\n\rset_time_only\x18+ \x01(\x07H\x00\x12\x1f\n\x15get_ui_config_request\x18, \x01(\x08H\x00\x12\x45\n\x16get_ui_config_response\x18- \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0fstore_ui_config\x18. \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12\x1a\n\x10set_ignored_node\x18/ \x01(\rH\x00\x12\x1d\n\x13remove_ignored_node\x18\x30 \x01(\rH\x00\x12\x1b\n\x11toggle_muted_node\x18\x31 \x01(\rH\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\x39\n\x0b\x61\x64\x64_contact\x18\x42 \x01(\x0b\x32\".meshtastic.protobuf.SharedContactH\x00\x12\x45\n\x10key_verification\x18\x43 \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationAdminH\x00\x12\x1e\n\x14\x66\x61\x63tory_reset_device\x18^ \x01(\x05H\x00\x12 \n\x12reboot_ota_seconds\x18_ \x01(\x05\x42\x02\x18\x01H\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\x1e\n\x14\x66\x61\x63tory_reset_config\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x08H\x00\x12\x41\n\x0bota_request\x18\x66 \x01(\x0b\x32*.meshtastic.protobuf.AdminMessage.OTAEventH\x00\x12:\n\rsensor_config\x18g \x01(\x0b\x32!.meshtastic.protobuf.SensorConfigH\x00\x12:\n\rlockdown_auth\x18h \x01(\x0b\x32!.meshtastic.protobuf.LockdownAuthH\x00\x1aS\n\nInputEvent\x12\x12\n\nevent_code\x18\x01 \x01(\r\x12\x0f\n\x07kb_char\x18\x02 \x01(\r\x12\x0f\n\x07touch_x\x18\x03 \x01(\r\x12\x0f\n\x07touch_y\x18\x04 \x01(\r\x1aS\n\x08OTAEvent\x12\x35\n\x0freboot_ota_mode\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.OTAMode\x12\x10\n\x08ota_hash\x18\x02 \x01(\x0c\"\xd6\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\x12\x13\n\x0fSECURITY_CONFIG\x10\x07\x12\x15\n\x11SESSIONKEY_CONFIG\x10\x08\x12\x13\n\x0f\x44\x45VICEUI_CONFIG\x10\t\"\x83\x03\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\x12\x18\n\x14STATUSMESSAGE_CONFIG\x10\r\x12\x1c\n\x18TRAFFICMANAGEMENT_CONFIG\x10\x0e\x12\x0e\n\nTAK_CONFIG\x10\x0f\"#\n\x0e\x42\x61\x63kupLocation\x12\t\n\x05\x46LASH\x10\x00\x12\x06\n\x02SD\x10\x01\x42\x11\n\x0fpayload_variant\"h\n\x0cLockdownAuth\x12\x12\n\npassphrase\x18\x01 \x01(\x0c\x12\x17\n\x0f\x62oots_remaining\x18\x02 \x01(\r\x12\x19\n\x11valid_until_epoch\x18\x03 \x01(\r\x12\x10\n\x08lock_now\x18\x04 \x01(\x08\"[\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.NodeRemoteHardwarePin\"|\n\rSharedContact\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x15\n\rshould_ignore\x18\x03 \x01(\x08\x12\x19\n\x11manually_verified\x18\x04 \x01(\x08\"\xa5\x02\n\x14KeyVerificationAdmin\x12K\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x35.meshtastic.protobuf.KeyVerificationAdmin.MessageType\x12\x16\n\x0eremote_nodenum\x18\x02 \x01(\r\x12\r\n\x05nonce\x18\x03 \x01(\x04\x12\x1c\n\x0fsecurity_number\x18\x04 \x01(\rH\x00\x88\x01\x01\"g\n\x0bMessageType\x12\x19\n\x15INITIATE_VERIFICATION\x10\x00\x12\x1b\n\x17PROVIDE_SECURITY_NUMBER\x10\x01\x12\r\n\tDO_VERIFY\x10\x02\x12\x11\n\rDO_NOT_VERIFY\x10\x03\x42\x12\n\x10_security_number\"\xf2\x01\n\x0cSensorConfig\x12\x37\n\x0cscd4x_config\x18\x01 \x01(\x0b\x32!.meshtastic.protobuf.SCD4X_config\x12\x37\n\x0csen5x_config\x18\x02 \x01(\x0b\x32!.meshtastic.protobuf.SEN5X_config\x12\x37\n\x0cscd30_config\x18\x03 \x01(\x0b\x32!.meshtastic.protobuf.SCD30_config\x12\x37\n\x0cshtxx_config\x18\x04 \x01(\x0b\x32!.meshtastic.protobuf.SHTXX_config\"\xe2\x02\n\x0cSCD4X_config\x12\x14\n\x07set_asc\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13set_target_co2_conc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fset_temperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cset_altitude\x18\x04 \x01(\rH\x03\x88\x01\x01\x12!\n\x14set_ambient_pressure\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rfactory_reset\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1b\n\x0eset_power_mode\x18\x07 \x01(\x08H\x06\x88\x01\x01\x42\n\n\x08_set_ascB\x16\n\x14_set_target_co2_concB\x12\n\x10_set_temperatureB\x0f\n\r_set_altitudeB\x17\n\x15_set_ambient_pressureB\x10\n\x0e_factory_resetB\x11\n\x0f_set_power_mode\"v\n\x0cSEN5X_config\x12\x1c\n\x0fset_temperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11set_one_shot_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_set_temperatureB\x14\n\x12_set_one_shot_mode\"\xb4\x02\n\x0cSCD30_config\x12\x14\n\x07set_asc\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13set_target_co2_conc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fset_temperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cset_altitude\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18set_measurement_interval\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x17\n\nsoft_reset\x18\x06 \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_set_ascB\x16\n\x14_set_target_co2_concB\x12\n\x10_set_temperatureB\x0f\n\r_set_altitudeB\x1b\n\x19_set_measurement_intervalB\r\n\x0b_soft_reset\":\n\x0cSHTXX_config\x12\x19\n\x0cset_accuracy\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x0f\n\r_set_accuracy*7\n\x07OTAMode\x12\x11\n\rNO_REBOOT_OTA\x10\x00\x12\x0b\n\x07OTA_BLE\x10\x01\x12\x0c\n\x08OTA_WIFI\x10\x02\x42\x61\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\013AdminProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_ADMINMESSAGE']._serialized_start=281 - _globals['_ADMINMESSAGE']._serialized_end=3646 - _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_start=2972 - _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_end=3055 - _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_start=3058 - _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_end=3272 - _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_start=3275 - _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_end=3590 - _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_start=3592 - _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_end=3627 - _globals['_HAMPARAMETERS']._serialized_start=3648 - _globals['_HAMPARAMETERS']._serialized_end=3739 - _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_start=3741 - _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_end=3852 - _globals['_SHAREDCONTACT']._serialized_start=3854 - _globals['_SHAREDCONTACT']._serialized_end=3978 - _globals['_KEYVERIFICATIONADMIN']._serialized_start=3981 - _globals['_KEYVERIFICATIONADMIN']._serialized_end=4274 - _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_start=4151 - _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_end=4254 + _ADMINMESSAGE.fields_by_name['reboot_ota_seconds']._options = None + _ADMINMESSAGE.fields_by_name['reboot_ota_seconds']._serialized_options = b'\030\001' + _OTAMODE._serialized_start=5852 + _OTAMODE._serialized_end=5907 + _ADMINMESSAGE._serialized_start=281 + _ADMINMESSAGE._serialized_end=4023 + _ADMINMESSAGE_INPUTEVENT._serialized_start=3192 + _ADMINMESSAGE_INPUTEVENT._serialized_end=3275 + _ADMINMESSAGE_OTAEVENT._serialized_start=3277 + _ADMINMESSAGE_OTAEVENT._serialized_end=3360 + _ADMINMESSAGE_CONFIGTYPE._serialized_start=3363 + _ADMINMESSAGE_CONFIGTYPE._serialized_end=3577 + _ADMINMESSAGE_MODULECONFIGTYPE._serialized_start=3580 + _ADMINMESSAGE_MODULECONFIGTYPE._serialized_end=3967 + _ADMINMESSAGE_BACKUPLOCATION._serialized_start=3969 + _ADMINMESSAGE_BACKUPLOCATION._serialized_end=4004 + _LOCKDOWNAUTH._serialized_start=4025 + _LOCKDOWNAUTH._serialized_end=4129 + _HAMPARAMETERS._serialized_start=4131 + _HAMPARAMETERS._serialized_end=4222 + _NODEREMOTEHARDWAREPINSRESPONSE._serialized_start=4224 + _NODEREMOTEHARDWAREPINSRESPONSE._serialized_end=4335 + _SHAREDCONTACT._serialized_start=4337 + _SHAREDCONTACT._serialized_end=4461 + _KEYVERIFICATIONADMIN._serialized_start=4464 + _KEYVERIFICATIONADMIN._serialized_end=4757 + _KEYVERIFICATIONADMIN_MESSAGETYPE._serialized_start=4634 + _KEYVERIFICATIONADMIN_MESSAGETYPE._serialized_end=4737 + _SENSORCONFIG._serialized_start=4760 + _SENSORCONFIG._serialized_end=5002 + _SCD4X_CONFIG._serialized_start=5005 + _SCD4X_CONFIG._serialized_end=5359 + _SEN5X_CONFIG._serialized_start=5361 + _SEN5X_CONFIG._serialized_end=5479 + _SCD30_CONFIG._serialized_start=5482 + _SCD30_CONFIG._serialized_end=5790 + _SHTXX_CONFIG._serialized_start=5792 + _SHTXX_CONFIG._serialized_end=5850 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/admin_pb2.pyi b/meshtastic/protobuf/admin_pb2.pyi index 9d189d1..29e86d7 100644 --- a/meshtastic/protobuf/admin_pb2.pyi +++ b/meshtastic/protobuf/admin_pb2.pyi @@ -1,889 +1,313 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from meshtastic.protobuf import channel_pb2 as _channel_pb2 +from meshtastic.protobuf import config_pb2 as _config_pb2 +from meshtastic.protobuf import connection_status_pb2 as _connection_status_pb2 +from meshtastic.protobuf import device_ui_pb2 as _device_ui_pb2 +from meshtastic.protobuf import mesh_pb2 as _mesh_pb2 +from meshtastic.protobuf import module_config_pb2 as _module_config_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union -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.device_ui_pb2 -import meshtastic.protobuf.mesh_pb2 -import meshtastic.protobuf.module_config_pb2 -import sys -import typing +DESCRIPTOR: _descriptor.FileDescriptor +NO_REBOOT_OTA: OTAMode +OTA_BLE: OTAMode +OTA_WIFI: OTAMode -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class AdminMessage(_message.Message): + __slots__ = ["add_contact", "backup_preferences", "begin_edit_settings", "commit_edit_settings", "delete_file_request", "enter_dfu_mode_request", "exit_simulator", "factory_reset_config", "factory_reset_device", "get_canned_message_module_messages_request", "get_canned_message_module_messages_response", "get_channel_request", "get_channel_response", "get_config_request", "get_config_response", "get_device_connection_status_request", "get_device_connection_status_response", "get_device_metadata_request", "get_device_metadata_response", "get_module_config_request", "get_module_config_response", "get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", "get_owner_request", "get_owner_response", "get_ringtone_request", "get_ringtone_response", "get_ui_config_request", "get_ui_config_response", "key_verification", "lockdown_auth", "nodedb_reset", "ota_request", "reboot_ota_seconds", "reboot_seconds", "remove_backup_preferences", "remove_by_nodenum", "remove_favorite_node", "remove_fixed_position", "remove_ignored_node", "restore_preferences", "send_input_event", "sensor_config", "session_passkey", "set_canned_message_module_messages", "set_channel", "set_config", "set_favorite_node", "set_fixed_position", "set_ham_mode", "set_ignored_node", "set_module_config", "set_owner", "set_ringtone_message", "set_scale", "set_time_only", "shutdown_seconds", "store_ui_config", "toggle_muted_node"] + class BackupLocation(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class ConfigType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class ModuleConfigType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class InputEvent(_message.Message): + __slots__ = ["event_code", "kb_char", "touch_x", "touch_y"] + EVENT_CODE_FIELD_NUMBER: _ClassVar[int] + KB_CHAR_FIELD_NUMBER: _ClassVar[int] + TOUCH_X_FIELD_NUMBER: _ClassVar[int] + TOUCH_Y_FIELD_NUMBER: _ClassVar[int] + event_code: int + kb_char: int + touch_x: int + touch_y: int + def __init__(self, event_code: _Optional[int] = ..., kb_char: _Optional[int] = ..., touch_x: _Optional[int] = ..., touch_y: _Optional[int] = ...) -> None: ... + class OTAEvent(_message.Message): + __slots__ = ["ota_hash", "reboot_ota_mode"] + OTA_HASH_FIELD_NUMBER: _ClassVar[int] + REBOOT_OTA_MODE_FIELD_NUMBER: _ClassVar[int] + ota_hash: bytes + reboot_ota_mode: OTAMode + def __init__(self, reboot_ota_mode: _Optional[_Union[OTAMode, str]] = ..., ota_hash: _Optional[bytes] = ...) -> None: ... + ADD_CONTACT_FIELD_NUMBER: _ClassVar[int] + AMBIENTLIGHTING_CONFIG: AdminMessage.ModuleConfigType + AUDIO_CONFIG: AdminMessage.ModuleConfigType + BACKUP_PREFERENCES_FIELD_NUMBER: _ClassVar[int] + BEGIN_EDIT_SETTINGS_FIELD_NUMBER: _ClassVar[int] + BLUETOOTH_CONFIG: AdminMessage.ConfigType + CANNEDMSG_CONFIG: AdminMessage.ModuleConfigType + COMMIT_EDIT_SETTINGS_FIELD_NUMBER: _ClassVar[int] + DELETE_FILE_REQUEST_FIELD_NUMBER: _ClassVar[int] + DETECTIONSENSOR_CONFIG: AdminMessage.ModuleConfigType + DEVICEUI_CONFIG: AdminMessage.ConfigType + DEVICE_CONFIG: AdminMessage.ConfigType + DISPLAY_CONFIG: AdminMessage.ConfigType + ENTER_DFU_MODE_REQUEST_FIELD_NUMBER: _ClassVar[int] + EXIT_SIMULATOR_FIELD_NUMBER: _ClassVar[int] + EXTNOTIF_CONFIG: AdminMessage.ModuleConfigType + FACTORY_RESET_CONFIG_FIELD_NUMBER: _ClassVar[int] + FACTORY_RESET_DEVICE_FIELD_NUMBER: _ClassVar[int] + FLASH: AdminMessage.BackupLocation + GET_CANNED_MESSAGE_MODULE_MESSAGES_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_CANNED_MESSAGE_MODULE_MESSAGES_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_CHANNEL_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_CHANNEL_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_CONFIG_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_CONFIG_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_DEVICE_CONNECTION_STATUS_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_DEVICE_CONNECTION_STATUS_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_DEVICE_METADATA_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_DEVICE_METADATA_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_MODULE_CONFIG_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_MODULE_CONFIG_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_NODE_REMOTE_HARDWARE_PINS_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_NODE_REMOTE_HARDWARE_PINS_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_OWNER_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_OWNER_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_RINGTONE_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_RINGTONE_RESPONSE_FIELD_NUMBER: _ClassVar[int] + GET_UI_CONFIG_REQUEST_FIELD_NUMBER: _ClassVar[int] + GET_UI_CONFIG_RESPONSE_FIELD_NUMBER: _ClassVar[int] + KEY_VERIFICATION_FIELD_NUMBER: _ClassVar[int] + LOCKDOWN_AUTH_FIELD_NUMBER: _ClassVar[int] + LORA_CONFIG: AdminMessage.ConfigType + MQTT_CONFIG: AdminMessage.ModuleConfigType + NEIGHBORINFO_CONFIG: AdminMessage.ModuleConfigType + NETWORK_CONFIG: AdminMessage.ConfigType + NODEDB_RESET_FIELD_NUMBER: _ClassVar[int] + OTA_REQUEST_FIELD_NUMBER: _ClassVar[int] + PAXCOUNTER_CONFIG: AdminMessage.ModuleConfigType + POSITION_CONFIG: AdminMessage.ConfigType + POWER_CONFIG: AdminMessage.ConfigType + RANGETEST_CONFIG: AdminMessage.ModuleConfigType + REBOOT_OTA_SECONDS_FIELD_NUMBER: _ClassVar[int] + REBOOT_SECONDS_FIELD_NUMBER: _ClassVar[int] + REMOTEHARDWARE_CONFIG: AdminMessage.ModuleConfigType + REMOVE_BACKUP_PREFERENCES_FIELD_NUMBER: _ClassVar[int] + REMOVE_BY_NODENUM_FIELD_NUMBER: _ClassVar[int] + REMOVE_FAVORITE_NODE_FIELD_NUMBER: _ClassVar[int] + REMOVE_FIXED_POSITION_FIELD_NUMBER: _ClassVar[int] + REMOVE_IGNORED_NODE_FIELD_NUMBER: _ClassVar[int] + RESTORE_PREFERENCES_FIELD_NUMBER: _ClassVar[int] + SD: AdminMessage.BackupLocation + SECURITY_CONFIG: AdminMessage.ConfigType + SEND_INPUT_EVENT_FIELD_NUMBER: _ClassVar[int] + SENSOR_CONFIG_FIELD_NUMBER: _ClassVar[int] + SERIAL_CONFIG: AdminMessage.ModuleConfigType + SESSIONKEY_CONFIG: AdminMessage.ConfigType + SESSION_PASSKEY_FIELD_NUMBER: _ClassVar[int] + SET_CANNED_MESSAGE_MODULE_MESSAGES_FIELD_NUMBER: _ClassVar[int] + SET_CHANNEL_FIELD_NUMBER: _ClassVar[int] + SET_CONFIG_FIELD_NUMBER: _ClassVar[int] + SET_FAVORITE_NODE_FIELD_NUMBER: _ClassVar[int] + SET_FIXED_POSITION_FIELD_NUMBER: _ClassVar[int] + SET_HAM_MODE_FIELD_NUMBER: _ClassVar[int] + SET_IGNORED_NODE_FIELD_NUMBER: _ClassVar[int] + SET_MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + SET_OWNER_FIELD_NUMBER: _ClassVar[int] + SET_RINGTONE_MESSAGE_FIELD_NUMBER: _ClassVar[int] + SET_SCALE_FIELD_NUMBER: _ClassVar[int] + SET_TIME_ONLY_FIELD_NUMBER: _ClassVar[int] + SHUTDOWN_SECONDS_FIELD_NUMBER: _ClassVar[int] + STATUSMESSAGE_CONFIG: AdminMessage.ModuleConfigType + STOREFORWARD_CONFIG: AdminMessage.ModuleConfigType + STORE_UI_CONFIG_FIELD_NUMBER: _ClassVar[int] + TAK_CONFIG: AdminMessage.ModuleConfigType + TELEMETRY_CONFIG: AdminMessage.ModuleConfigType + TOGGLE_MUTED_NODE_FIELD_NUMBER: _ClassVar[int] + TRAFFICMANAGEMENT_CONFIG: AdminMessage.ModuleConfigType + add_contact: SharedContact + backup_preferences: AdminMessage.BackupLocation + begin_edit_settings: bool + commit_edit_settings: bool + delete_file_request: str + enter_dfu_mode_request: bool + exit_simulator: bool + factory_reset_config: int + factory_reset_device: int + get_canned_message_module_messages_request: bool + get_canned_message_module_messages_response: str + get_channel_request: int + get_channel_response: _channel_pb2.Channel + get_config_request: AdminMessage.ConfigType + get_config_response: _config_pb2.Config + get_device_connection_status_request: bool + get_device_connection_status_response: _connection_status_pb2.DeviceConnectionStatus + get_device_metadata_request: bool + get_device_metadata_response: _mesh_pb2.DeviceMetadata + get_module_config_request: AdminMessage.ModuleConfigType + get_module_config_response: _module_config_pb2.ModuleConfig + get_node_remote_hardware_pins_request: bool + get_node_remote_hardware_pins_response: NodeRemoteHardwarePinsResponse + get_owner_request: bool + get_owner_response: _mesh_pb2.User + get_ringtone_request: bool + get_ringtone_response: str + get_ui_config_request: bool + get_ui_config_response: _device_ui_pb2.DeviceUIConfig + key_verification: KeyVerificationAdmin + lockdown_auth: LockdownAuth + nodedb_reset: bool + ota_request: AdminMessage.OTAEvent + reboot_ota_seconds: int + reboot_seconds: int + remove_backup_preferences: AdminMessage.BackupLocation + remove_by_nodenum: int + remove_favorite_node: int + remove_fixed_position: bool + remove_ignored_node: int + restore_preferences: AdminMessage.BackupLocation + send_input_event: AdminMessage.InputEvent + sensor_config: SensorConfig + session_passkey: bytes + set_canned_message_module_messages: str + set_channel: _channel_pb2.Channel + set_config: _config_pb2.Config + set_favorite_node: int + set_fixed_position: _mesh_pb2.Position + set_ham_mode: HamParameters + set_ignored_node: int + set_module_config: _module_config_pb2.ModuleConfig + set_owner: _mesh_pb2.User + set_ringtone_message: str + set_scale: int + set_time_only: int + shutdown_seconds: int + store_ui_config: _device_ui_pb2.DeviceUIConfig + toggle_muted_node: int + def __init__(self, session_passkey: _Optional[bytes] = ..., get_channel_request: _Optional[int] = ..., get_channel_response: _Optional[_Union[_channel_pb2.Channel, _Mapping]] = ..., get_owner_request: bool = ..., get_owner_response: _Optional[_Union[_mesh_pb2.User, _Mapping]] = ..., get_config_request: _Optional[_Union[AdminMessage.ConfigType, str]] = ..., get_config_response: _Optional[_Union[_config_pb2.Config, _Mapping]] = ..., get_module_config_request: _Optional[_Union[AdminMessage.ModuleConfigType, str]] = ..., get_module_config_response: _Optional[_Union[_module_config_pb2.ModuleConfig, _Mapping]] = ..., get_canned_message_module_messages_request: bool = ..., get_canned_message_module_messages_response: _Optional[str] = ..., get_device_metadata_request: bool = ..., get_device_metadata_response: _Optional[_Union[_mesh_pb2.DeviceMetadata, _Mapping]] = ..., get_ringtone_request: bool = ..., get_ringtone_response: _Optional[str] = ..., get_device_connection_status_request: bool = ..., get_device_connection_status_response: _Optional[_Union[_connection_status_pb2.DeviceConnectionStatus, _Mapping]] = ..., set_ham_mode: _Optional[_Union[HamParameters, _Mapping]] = ..., get_node_remote_hardware_pins_request: bool = ..., get_node_remote_hardware_pins_response: _Optional[_Union[NodeRemoteHardwarePinsResponse, _Mapping]] = ..., enter_dfu_mode_request: bool = ..., delete_file_request: _Optional[str] = ..., set_scale: _Optional[int] = ..., backup_preferences: _Optional[_Union[AdminMessage.BackupLocation, str]] = ..., restore_preferences: _Optional[_Union[AdminMessage.BackupLocation, str]] = ..., remove_backup_preferences: _Optional[_Union[AdminMessage.BackupLocation, str]] = ..., send_input_event: _Optional[_Union[AdminMessage.InputEvent, _Mapping]] = ..., set_owner: _Optional[_Union[_mesh_pb2.User, _Mapping]] = ..., set_channel: _Optional[_Union[_channel_pb2.Channel, _Mapping]] = ..., set_config: _Optional[_Union[_config_pb2.Config, _Mapping]] = ..., set_module_config: _Optional[_Union[_module_config_pb2.ModuleConfig, _Mapping]] = ..., set_canned_message_module_messages: _Optional[str] = ..., set_ringtone_message: _Optional[str] = ..., remove_by_nodenum: _Optional[int] = ..., set_favorite_node: _Optional[int] = ..., remove_favorite_node: _Optional[int] = ..., set_fixed_position: _Optional[_Union[_mesh_pb2.Position, _Mapping]] = ..., remove_fixed_position: bool = ..., set_time_only: _Optional[int] = ..., get_ui_config_request: bool = ..., get_ui_config_response: _Optional[_Union[_device_ui_pb2.DeviceUIConfig, _Mapping]] = ..., store_ui_config: _Optional[_Union[_device_ui_pb2.DeviceUIConfig, _Mapping]] = ..., set_ignored_node: _Optional[int] = ..., remove_ignored_node: _Optional[int] = ..., toggle_muted_node: _Optional[int] = ..., begin_edit_settings: bool = ..., commit_edit_settings: bool = ..., add_contact: _Optional[_Union[SharedContact, _Mapping]] = ..., key_verification: _Optional[_Union[KeyVerificationAdmin, _Mapping]] = ..., factory_reset_device: _Optional[int] = ..., reboot_ota_seconds: _Optional[int] = ..., exit_simulator: bool = ..., reboot_seconds: _Optional[int] = ..., shutdown_seconds: _Optional[int] = ..., factory_reset_config: _Optional[int] = ..., nodedb_reset: bool = ..., ota_request: _Optional[_Union[AdminMessage.OTAEvent, _Mapping]] = ..., sensor_config: _Optional[_Union[SensorConfig, _Mapping]] = ..., lockdown_auth: _Optional[_Union[LockdownAuth, _Mapping]] = ...) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class HamParameters(_message.Message): + __slots__ = ["call_sign", "frequency", "short_name", "tx_power"] + CALL_SIGN_FIELD_NUMBER: _ClassVar[int] + FREQUENCY_FIELD_NUMBER: _ClassVar[int] + SHORT_NAME_FIELD_NUMBER: _ClassVar[int] + TX_POWER_FIELD_NUMBER: _ClassVar[int] + call_sign: str + frequency: float + short_name: str + tx_power: int + def __init__(self, call_sign: _Optional[str] = ..., tx_power: _Optional[int] = ..., frequency: _Optional[float] = ..., short_name: _Optional[str] = ...) -> None: ... -@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) - """ +class KeyVerificationAdmin(_message.Message): + __slots__ = ["message_type", "nonce", "remote_nodenum", "security_number"] + class MessageType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + DO_NOT_VERIFY: KeyVerificationAdmin.MessageType + DO_VERIFY: KeyVerificationAdmin.MessageType + INITIATE_VERIFICATION: KeyVerificationAdmin.MessageType + MESSAGE_TYPE_FIELD_NUMBER: _ClassVar[int] + NONCE_FIELD_NUMBER: _ClassVar[int] + PROVIDE_SECURITY_NUMBER: KeyVerificationAdmin.MessageType + REMOTE_NODENUM_FIELD_NUMBER: _ClassVar[int] + SECURITY_NUMBER_FIELD_NUMBER: _ClassVar[int] + message_type: KeyVerificationAdmin.MessageType + nonce: int + remote_nodenum: int + security_number: int + def __init__(self, message_type: _Optional[_Union[KeyVerificationAdmin.MessageType, str]] = ..., remote_nodenum: _Optional[int] = ..., nonce: _Optional[int] = ..., security_number: _Optional[int] = ...) -> None: ... - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class LockdownAuth(_message.Message): + __slots__ = ["boots_remaining", "lock_now", "passphrase", "valid_until_epoch"] + BOOTS_REMAINING_FIELD_NUMBER: _ClassVar[int] + LOCK_NOW_FIELD_NUMBER: _ClassVar[int] + PASSPHRASE_FIELD_NUMBER: _ClassVar[int] + VALID_UNTIL_EPOCH_FIELD_NUMBER: _ClassVar[int] + boots_remaining: int + lock_now: bool + passphrase: bytes + valid_until_epoch: int + def __init__(self, passphrase: _Optional[bytes] = ..., boots_remaining: _Optional[int] = ..., valid_until_epoch: _Optional[int] = ..., lock_now: bool = ...) -> None: ... - class _ConfigType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class NodeRemoteHardwarePinsResponse(_message.Message): + __slots__ = ["node_remote_hardware_pins"] + NODE_REMOTE_HARDWARE_PINS_FIELD_NUMBER: _ClassVar[int] + node_remote_hardware_pins: _containers.RepeatedCompositeFieldContainer[_mesh_pb2.NodeRemoteHardwarePin] + def __init__(self, node_remote_hardware_pins: _Optional[_Iterable[_Union[_mesh_pb2.NodeRemoteHardwarePin, _Mapping]]] = ...) -> None: ... - 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 - """ - SECURITY_CONFIG: AdminMessage._ConfigType.ValueType # 7 - """ - TODO: REPLACE - """ - SESSIONKEY_CONFIG: AdminMessage._ConfigType.ValueType # 8 - """ - Session key config - """ - DEVICEUI_CONFIG: AdminMessage._ConfigType.ValueType # 9 - """ - device-ui config - """ +class SCD30_config(_message.Message): + __slots__ = ["set_altitude", "set_asc", "set_measurement_interval", "set_target_co2_conc", "set_temperature", "soft_reset"] + SET_ALTITUDE_FIELD_NUMBER: _ClassVar[int] + SET_ASC_FIELD_NUMBER: _ClassVar[int] + SET_MEASUREMENT_INTERVAL_FIELD_NUMBER: _ClassVar[int] + SET_TARGET_CO2_CONC_FIELD_NUMBER: _ClassVar[int] + SET_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + SOFT_RESET_FIELD_NUMBER: _ClassVar[int] + set_altitude: int + set_asc: bool + set_measurement_interval: int + set_target_co2_conc: int + set_temperature: float + soft_reset: bool + def __init__(self, set_asc: bool = ..., set_target_co2_conc: _Optional[int] = ..., set_temperature: _Optional[float] = ..., set_altitude: _Optional[int] = ..., set_measurement_interval: _Optional[int] = ..., soft_reset: bool = ...) -> None: ... - class ConfigType(_ConfigType, metaclass=_ConfigTypeEnumTypeWrapper): - """ - TODO: REPLACE - """ +class SCD4X_config(_message.Message): + __slots__ = ["factory_reset", "set_altitude", "set_ambient_pressure", "set_asc", "set_power_mode", "set_target_co2_conc", "set_temperature"] + FACTORY_RESET_FIELD_NUMBER: _ClassVar[int] + SET_ALTITUDE_FIELD_NUMBER: _ClassVar[int] + SET_AMBIENT_PRESSURE_FIELD_NUMBER: _ClassVar[int] + SET_ASC_FIELD_NUMBER: _ClassVar[int] + SET_POWER_MODE_FIELD_NUMBER: _ClassVar[int] + SET_TARGET_CO2_CONC_FIELD_NUMBER: _ClassVar[int] + SET_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + factory_reset: bool + set_altitude: int + set_ambient_pressure: int + set_asc: bool + set_power_mode: bool + set_target_co2_conc: int + set_temperature: float + def __init__(self, set_asc: bool = ..., set_target_co2_conc: _Optional[int] = ..., set_temperature: _Optional[float] = ..., set_altitude: _Optional[int] = ..., set_ambient_pressure: _Optional[int] = ..., factory_reset: bool = ..., set_power_mode: bool = ...) -> None: ... - 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 - """ - SECURITY_CONFIG: AdminMessage.ConfigType.ValueType # 7 - """ - TODO: REPLACE - """ - SESSIONKEY_CONFIG: AdminMessage.ConfigType.ValueType # 8 - """ - Session key config - """ - DEVICEUI_CONFIG: AdminMessage.ConfigType.ValueType # 9 - """ - device-ui config - """ +class SEN5X_config(_message.Message): + __slots__ = ["set_one_shot_mode", "set_temperature"] + SET_ONE_SHOT_MODE_FIELD_NUMBER: _ClassVar[int] + SET_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + set_one_shot_mode: bool + set_temperature: float + def __init__(self, set_temperature: _Optional[float] = ..., set_one_shot_mode: bool = ...) -> None: ... - class _ModuleConfigType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class SHTXX_config(_message.Message): + __slots__ = ["set_accuracy"] + SET_ACCURACY_FIELD_NUMBER: _ClassVar[int] + set_accuracy: int + def __init__(self, set_accuracy: _Optional[int] = ...) -> None: ... - 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 SensorConfig(_message.Message): + __slots__ = ["scd30_config", "scd4x_config", "sen5x_config", "shtxx_config"] + SCD30_CONFIG_FIELD_NUMBER: _ClassVar[int] + SCD4X_CONFIG_FIELD_NUMBER: _ClassVar[int] + SEN5X_CONFIG_FIELD_NUMBER: _ClassVar[int] + SHTXX_CONFIG_FIELD_NUMBER: _ClassVar[int] + scd30_config: SCD30_config + scd4x_config: SCD4X_config + sen5x_config: SEN5X_config + shtxx_config: SHTXX_config + def __init__(self, scd4x_config: _Optional[_Union[SCD4X_config, _Mapping]] = ..., sen5x_config: _Optional[_Union[SEN5X_config, _Mapping]] = ..., scd30_config: _Optional[_Union[SCD30_config, _Mapping]] = ..., shtxx_config: _Optional[_Union[SHTXX_config, _Mapping]] = ...) -> None: ... - class ModuleConfigType(_ModuleConfigType, metaclass=_ModuleConfigTypeEnumTypeWrapper): - """ - TODO: REPLACE - """ +class SharedContact(_message.Message): + __slots__ = ["manually_verified", "node_num", "should_ignore", "user"] + MANUALLY_VERIFIED_FIELD_NUMBER: _ClassVar[int] + NODE_NUM_FIELD_NUMBER: _ClassVar[int] + SHOULD_IGNORE_FIELD_NUMBER: _ClassVar[int] + USER_FIELD_NUMBER: _ClassVar[int] + manually_verified: bool + node_num: int + should_ignore: bool + user: _mesh_pb2.User + def __init__(self, node_num: _Optional[int] = ..., user: _Optional[_Union[_mesh_pb2.User, _Mapping]] = ..., should_ignore: bool = ..., manually_verified: bool = ...) -> None: ... - 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 _BackupLocation: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _BackupLocationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[AdminMessage._BackupLocation.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - FLASH: AdminMessage._BackupLocation.ValueType # 0 - """ - Backup to the internal flash - """ - SD: AdminMessage._BackupLocation.ValueType # 1 - """ - Backup to the SD card - """ - - class BackupLocation(_BackupLocation, metaclass=_BackupLocationEnumTypeWrapper): ... - FLASH: AdminMessage.BackupLocation.ValueType # 0 - """ - Backup to the internal flash - """ - SD: AdminMessage.BackupLocation.ValueType # 1 - """ - Backup to the SD card - """ - - @typing.final - class InputEvent(google.protobuf.message.Message): - """ - Input event message to be sent to the node. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - EVENT_CODE_FIELD_NUMBER: builtins.int - KB_CHAR_FIELD_NUMBER: builtins.int - TOUCH_X_FIELD_NUMBER: builtins.int - TOUCH_Y_FIELD_NUMBER: builtins.int - event_code: builtins.int - """ - The input event code - """ - kb_char: builtins.int - """ - Keyboard character code - """ - touch_x: builtins.int - """ - The touch X coordinate - """ - touch_y: builtins.int - """ - The touch Y coordinate - """ - def __init__( - self, - *, - event_code: builtins.int = ..., - kb_char: builtins.int = ..., - touch_x: builtins.int = ..., - touch_y: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["event_code", b"event_code", "kb_char", b"kb_char", "touch_x", b"touch_x", "touch_y", b"touch_y"]) -> None: ... - - SESSION_PASSKEY_FIELD_NUMBER: builtins.int - 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_SCALE_FIELD_NUMBER: builtins.int - BACKUP_PREFERENCES_FIELD_NUMBER: builtins.int - RESTORE_PREFERENCES_FIELD_NUMBER: builtins.int - REMOVE_BACKUP_PREFERENCES_FIELD_NUMBER: builtins.int - SEND_INPUT_EVENT_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 - SET_TIME_ONLY_FIELD_NUMBER: builtins.int - GET_UI_CONFIG_REQUEST_FIELD_NUMBER: builtins.int - GET_UI_CONFIG_RESPONSE_FIELD_NUMBER: builtins.int - STORE_UI_CONFIG_FIELD_NUMBER: builtins.int - SET_IGNORED_NODE_FIELD_NUMBER: builtins.int - REMOVE_IGNORED_NODE_FIELD_NUMBER: builtins.int - BEGIN_EDIT_SETTINGS_FIELD_NUMBER: builtins.int - COMMIT_EDIT_SETTINGS_FIELD_NUMBER: builtins.int - ADD_CONTACT_FIELD_NUMBER: builtins.int - KEY_VERIFICATION_FIELD_NUMBER: builtins.int - FACTORY_RESET_DEVICE_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_CONFIG_FIELD_NUMBER: builtins.int - NODEDB_RESET_FIELD_NUMBER: builtins.int - session_passkey: builtins.bytes - """ - The node generates this key and sends it with any get_x_response packets. - The client MUST include the same key with any set_x commands. Key expires after 300 seconds. - Prevents replay attacks for admin messages. - """ - 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_scale: builtins.int - """ - Set zero and offset for scale chips - """ - backup_preferences: global___AdminMessage.BackupLocation.ValueType - """ - Backup the node's preferences - """ - restore_preferences: global___AdminMessage.BackupLocation.ValueType - """ - Restore the node's preferences - """ - remove_backup_preferences: global___AdminMessage.BackupLocation.ValueType - """ - Remove backups of the node's preferences - """ - 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 - """ - set_time_only: builtins.int - """ - Set time only on the node - Convenience method to set the time on the node (as Net quality) without any other position data - """ - get_ui_config_request: builtins.bool - """ - Tell the node to send the stored ui data. - """ - set_ignored_node: builtins.int - """ - Set specified node-num to be ignored on the NodeDB on the device - """ - remove_ignored_node: builtins.int - """ - Set specified node-num to be un-ignored on the NodeDB on the device - """ - 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 - """ - factory_reset_device: builtins.int - """ - Tell the node to factory reset config everything; all device state and configuration will be returned to factory defaults and BLE bonds will be cleared. - """ - 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_config: builtins.int - """ - Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved. - """ - 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 send_input_event(self) -> global___AdminMessage.InputEvent: - """ - Send an input event to the node. - This is used to trigger physical input events like button presses, touch events, etc. - """ - - @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 - """ - - @property - def get_ui_config_response(self) -> meshtastic.protobuf.device_ui_pb2.DeviceUIConfig: - """ - Reply stored device ui data. - """ - - @property - def store_ui_config(self) -> meshtastic.protobuf.device_ui_pb2.DeviceUIConfig: - """ - Tell the node to store UI data persistently. - """ - - @property - def add_contact(self) -> global___SharedContact: - """ - Add a contact (User) to the nodedb - """ - - @property - def key_verification(self) -> global___KeyVerificationAdmin: - """ - Initiate or respond to a key verification request - """ - - def __init__( - self, - *, - session_passkey: builtins.bytes = ..., - 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_scale: builtins.int = ..., - backup_preferences: global___AdminMessage.BackupLocation.ValueType = ..., - restore_preferences: global___AdminMessage.BackupLocation.ValueType = ..., - remove_backup_preferences: global___AdminMessage.BackupLocation.ValueType = ..., - send_input_event: global___AdminMessage.InputEvent | None = ..., - 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 = ..., - set_time_only: builtins.int = ..., - get_ui_config_request: builtins.bool = ..., - get_ui_config_response: meshtastic.protobuf.device_ui_pb2.DeviceUIConfig | None = ..., - store_ui_config: meshtastic.protobuf.device_ui_pb2.DeviceUIConfig | None = ..., - set_ignored_node: builtins.int = ..., - remove_ignored_node: builtins.int = ..., - begin_edit_settings: builtins.bool = ..., - commit_edit_settings: builtins.bool = ..., - add_contact: global___SharedContact | None = ..., - key_verification: global___KeyVerificationAdmin | None = ..., - factory_reset_device: builtins.int = ..., - reboot_ota_seconds: builtins.int = ..., - exit_simulator: builtins.bool = ..., - reboot_seconds: builtins.int = ..., - shutdown_seconds: builtins.int = ..., - factory_reset_config: builtins.int = ..., - nodedb_reset: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["add_contact", b"add_contact", "backup_preferences", b"backup_preferences", "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_config", b"factory_reset_config", "factory_reset_device", b"factory_reset_device", "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", "get_ui_config_request", b"get_ui_config_request", "get_ui_config_response", b"get_ui_config_response", "key_verification", b"key_verification", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_backup_preferences", b"remove_backup_preferences", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "remove_ignored_node", b"remove_ignored_node", "restore_preferences", b"restore_preferences", "send_input_event", b"send_input_event", "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_ignored_node", b"set_ignored_node", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "set_scale", b"set_scale", "set_time_only", b"set_time_only", "shutdown_seconds", b"shutdown_seconds", "store_ui_config", b"store_ui_config"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["add_contact", b"add_contact", "backup_preferences", b"backup_preferences", "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_config", b"factory_reset_config", "factory_reset_device", b"factory_reset_device", "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", "get_ui_config_request", b"get_ui_config_request", "get_ui_config_response", b"get_ui_config_response", "key_verification", b"key_verification", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_backup_preferences", b"remove_backup_preferences", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "remove_ignored_node", b"remove_ignored_node", "restore_preferences", b"restore_preferences", "send_input_event", b"send_input_event", "session_passkey", b"session_passkey", "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_ignored_node", b"set_ignored_node", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "set_scale", b"set_scale", "set_time_only", b"set_time_only", "shutdown_seconds", b"shutdown_seconds", "store_ui_config", b"store_ui_config"]) -> 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_scale", "backup_preferences", "restore_preferences", "remove_backup_preferences", "send_input_event", "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", "set_time_only", "get_ui_config_request", "get_ui_config_response", "store_ui_config", "set_ignored_node", "remove_ignored_node", "begin_edit_settings", "commit_edit_settings", "add_contact", "key_verification", "factory_reset_device", "reboot_ota_seconds", "exit_simulator", "reboot_seconds", "shutdown_seconds", "factory_reset_config", "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 - -@typing.final -class SharedContact(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NODE_NUM_FIELD_NUMBER: builtins.int - USER_FIELD_NUMBER: builtins.int - SHOULD_IGNORE_FIELD_NUMBER: builtins.int - MANUALLY_VERIFIED_FIELD_NUMBER: builtins.int - node_num: builtins.int - """ - The node number of the contact - """ - should_ignore: builtins.bool - """ - Add this contact to the blocked / ignored list - """ - manually_verified: builtins.bool - """ - Set the IS_KEY_MANUALLY_VERIFIED bit - """ - @property - def user(self) -> meshtastic.protobuf.mesh_pb2.User: - """ - The User of the contact - """ - - def __init__( - self, - *, - node_num: builtins.int = ..., - user: meshtastic.protobuf.mesh_pb2.User | None = ..., - should_ignore: builtins.bool = ..., - manually_verified: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["user", b"user"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["manually_verified", b"manually_verified", "node_num", b"node_num", "should_ignore", b"should_ignore", "user", b"user"]) -> None: ... - -global___SharedContact = SharedContact - -@typing.final -class KeyVerificationAdmin(google.protobuf.message.Message): - """ - This message is used by a client to initiate or complete a key verification - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _MessageType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _MessageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[KeyVerificationAdmin._MessageType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - INITIATE_VERIFICATION: KeyVerificationAdmin._MessageType.ValueType # 0 - """ - This is the first stage, where a client initiates - """ - PROVIDE_SECURITY_NUMBER: KeyVerificationAdmin._MessageType.ValueType # 1 - """ - After the nonce has been returned over the mesh, the client prompts for the security number - And uses this message to provide it to the node. - """ - DO_VERIFY: KeyVerificationAdmin._MessageType.ValueType # 2 - """ - Once the user has compared the verification message, this message notifies the node. - """ - DO_NOT_VERIFY: KeyVerificationAdmin._MessageType.ValueType # 3 - """ - This is the cancel path, can be taken at any point - """ - - class MessageType(_MessageType, metaclass=_MessageTypeEnumTypeWrapper): - """ - Three stages of this request. - """ - - INITIATE_VERIFICATION: KeyVerificationAdmin.MessageType.ValueType # 0 - """ - This is the first stage, where a client initiates - """ - PROVIDE_SECURITY_NUMBER: KeyVerificationAdmin.MessageType.ValueType # 1 - """ - After the nonce has been returned over the mesh, the client prompts for the security number - And uses this message to provide it to the node. - """ - DO_VERIFY: KeyVerificationAdmin.MessageType.ValueType # 2 - """ - Once the user has compared the verification message, this message notifies the node. - """ - DO_NOT_VERIFY: KeyVerificationAdmin.MessageType.ValueType # 3 - """ - This is the cancel path, can be taken at any point - """ - - MESSAGE_TYPE_FIELD_NUMBER: builtins.int - REMOTE_NODENUM_FIELD_NUMBER: builtins.int - NONCE_FIELD_NUMBER: builtins.int - SECURITY_NUMBER_FIELD_NUMBER: builtins.int - message_type: global___KeyVerificationAdmin.MessageType.ValueType - remote_nodenum: builtins.int - """ - The nodenum we're requesting - """ - nonce: builtins.int - """ - The nonce is used to track the connection - """ - security_number: builtins.int - """ - The 4 digit code generated by the remote node, and communicated outside the mesh - """ - def __init__( - self, - *, - message_type: global___KeyVerificationAdmin.MessageType.ValueType = ..., - remote_nodenum: builtins.int = ..., - nonce: builtins.int = ..., - security_number: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_security_number", b"_security_number", "security_number", b"security_number"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_security_number", b"_security_number", "message_type", b"message_type", "nonce", b"nonce", "remote_nodenum", b"remote_nodenum", "security_number", b"security_number"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["_security_number", b"_security_number"]) -> typing.Literal["security_number"] | None: ... - -global___KeyVerificationAdmin = KeyVerificationAdmin +class OTAMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/apponly_pb2.py b/meshtastic/protobuf/apponly_pb2.py index 70e04e8..975753e 100644 --- a/meshtastic/protobuf/apponly_pb2.py +++ b/meshtastic/protobuf/apponly_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -17,12 +17,12 @@ from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config 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.LoRaConfigBc\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_CHANNELSET']._serialized_start=128 - _globals['_CHANNELSET']._serialized_end=257 + _CHANNELSET._serialized_start=128 + _CHANNELSET._serialized_end=257 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/apponly_pb2.pyi b/meshtastic/protobuf/apponly_pb2.pyi index c8a34bc..9852714 100644 --- a/meshtastic/protobuf/apponly_pb2.pyi +++ b/meshtastic/protobuf/apponly_pb2.pyi @@ -1,52 +1,16 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from meshtastic.protobuf import channel_pb2 as _channel_pb2 +from meshtastic.protobuf import config_pb2 as _config_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union -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: _descriptor.FileDescriptor -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 +class ChannelSet(_message.Message): + __slots__ = ["lora_config", "settings"] + LORA_CONFIG_FIELD_NUMBER: _ClassVar[int] + SETTINGS_FIELD_NUMBER: _ClassVar[int] + lora_config: _config_pb2.Config.LoRaConfig + settings: _containers.RepeatedCompositeFieldContainer[_channel_pb2.ChannelSettings] + def __init__(self, settings: _Optional[_Iterable[_Union[_channel_pb2.ChannelSettings, _Mapping]]] = ..., lora_config: _Optional[_Union[_config_pb2.Config.LoRaConfig, _Mapping]] = ...) -> None: ... diff --git a/meshtastic/protobuf/atak_pb2.py b/meshtastic/protobuf/atak_pb2.py index b0fee1a..841f2c4 100644 --- a/meshtastic/protobuf/atak_pb2.py +++ b/meshtastic/protobuf/atak_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -13,28 +13,92 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/atak.proto\x12\x13meshtastic.protobuf\"\xa5\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\x12\x10\n\x06\x64\x65tail\x18\x07 \x01(\x0cH\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\x14org.meshtastic.protoB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/atak.proto\x12\x13meshtastic.protobuf\"\xa5\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\x12\x10\n\x06\x64\x65tail\x18\x07 \x01(\x0cH\x00\x42\x11\n\x0fpayload_variant\"\xfd\x02\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\x12\x17\n\x0freceipt_for_uid\x18\x04 \x01(\t\x12>\n\x0creceipt_type\x18\x05 \x01(\x0e\x32(.meshtastic.protobuf.GeoChat.ReceiptType\x12\x11\n\x04lang\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07room_id\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x1d\n\x10voice_profile_id\x18\x08 \x01(\tH\x04\x88\x01\x01\"T\n\x0bReceiptType\x12\x14\n\x10ReceiptType_None\x10\x00\x12\x19\n\x15ReceiptType_Delivered\x10\x01\x12\x14\n\x10ReceiptType_Read\x10\x02\x42\x05\n\x03_toB\x0e\n\x0c_to_callsignB\x07\n\x05_langB\n\n\x08_room_idB\x13\n\x11_voice_profile_id\"_\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\"\xb0\x01\n\rAircraftTrack\x12\x0c\n\x04icao\x18\x01 \x01(\t\x12\x14\n\x0cregistration\x18\x02 \x01(\t\x12\x0e\n\x06\x66light\x18\x03 \x01(\t\x12\x15\n\raircraft_type\x18\x04 \x01(\t\x12\x0e\n\x06squawk\x18\x05 \x01(\r\x12\x10\n\x08\x63\x61tegory\x18\x06 \x01(\t\x12\x10\n\x08rssi_x10\x18\x07 \x01(\x11\x12\x0b\n\x03gps\x18\x08 \x01(\x08\x12\x13\n\x0b\x63ot_host_id\x18\t \x01(\t\"7\n\x0b\x43otGeoPoint\x12\x13\n\x0blat_delta_i\x18\x01 \x01(\x11\x12\x13\n\x0blon_delta_i\x18\x02 \x01(\x11\"\xf8\x06\n\nDrawnShape\x12\x32\n\x04kind\x18\x01 \x01(\x0e\x32$.meshtastic.protobuf.DrawnShape.Kind\x12\x38\n\x05style\x18\x02 \x01(\x0e\x32).meshtastic.protobuf.DrawnShape.StyleMode\x12\x10\n\x08major_cm\x18\x03 \x01(\r\x12\x10\n\x08minor_cm\x18\x04 \x01(\r\x12\x11\n\tangle_deg\x18\x05 \x01(\r\x12/\n\x0cstroke_color\x18\x06 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x13\n\x0bstroke_argb\x18\x07 \x01(\x07\x12\x19\n\x11stroke_weight_x10\x18\x08 \x01(\r\x12-\n\nfill_color\x18\t \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x11\n\tfill_argb\x18\n \x01(\x07\x12\x11\n\tlabels_on\x18\x0b \x01(\x08\x12\x32\n\x08vertices\x18\x0c \x03(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x11\n\ttruncated\x18\r \x01(\x08\x12\x1c\n\x14\x62ullseye_distance_dm\x18\x0e \x01(\r\x12\x1c\n\x14\x62ullseye_bearing_ref\x18\x0f \x01(\r\x12\x16\n\x0e\x62ullseye_flags\x18\x10 \x01(\r\x12\x18\n\x10\x62ullseye_uid_ref\x18\x11 \x01(\t\"\xe2\x01\n\x04Kind\x12\x14\n\x10Kind_Unspecified\x10\x00\x12\x0f\n\x0bKind_Circle\x10\x01\x12\x12\n\x0eKind_Rectangle\x10\x02\x12\x11\n\rKind_Freeform\x10\x03\x12\x15\n\x11Kind_Telestration\x10\x04\x12\x10\n\x0cKind_Polygon\x10\x05\x12\x16\n\x12Kind_RangingCircle\x10\x06\x12\x11\n\rKind_Bullseye\x10\x07\x12\x10\n\x0cKind_Ellipse\x10\x08\x12\x12\n\x0eKind_Vehicle2D\x10\t\x12\x12\n\x0eKind_Vehicle3D\x10\n\"u\n\tStyleMode\x12\x19\n\x15StyleMode_Unspecified\x10\x00\x12\x18\n\x14StyleMode_StrokeOnly\x10\x01\x12\x16\n\x12StyleMode_FillOnly\x10\x02\x12\x1b\n\x17StyleMode_StrokeAndFill\x10\x03\"\xf7\x03\n\x06Marker\x12.\n\x04kind\x18\x01 \x01(\x0e\x32 .meshtastic.protobuf.Marker.Kind\x12(\n\x05\x63olor\x18\x02 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x12\n\ncolor_argb\x18\x03 \x01(\x07\x12\x11\n\treadiness\x18\x04 \x01(\x08\x12\x12\n\nparent_uid\x18\x05 \x01(\t\x12\x13\n\x0bparent_type\x18\x06 \x01(\t\x12\x17\n\x0fparent_callsign\x18\x07 \x01(\t\x12\x0f\n\x07iconset\x18\x08 \x01(\t\"\x98\x02\n\x04Kind\x12\x14\n\x10Kind_Unspecified\x10\x00\x12\r\n\tKind_Spot\x10\x01\x12\x11\n\rKind_Waypoint\x10\x02\x12\x13\n\x0fKind_Checkpoint\x10\x03\x12\x15\n\x11Kind_SelfPosition\x10\x04\x12\x13\n\x0fKind_Symbol2525\x10\x05\x12\x10\n\x0cKind_SpotMap\x10\x06\x12\x13\n\x0fKind_CustomIcon\x10\x07\x12\x12\n\x0eKind_GoToPoint\x10\x08\x12\x15\n\x11Kind_InitialPoint\x10\t\x12\x15\n\x11Kind_ContactPoint\x10\n\x12\x18\n\x14Kind_ObservationPost\x10\x0b\x12\x14\n\x10Kind_ImageMarker\x10\x0c\"\xe0\x01\n\x0fRangeAndBearing\x12\x30\n\x06\x61nchor\x18\x01 \x01(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x12\n\nanchor_uid\x18\x02 \x01(\t\x12\x10\n\x08range_cm\x18\x03 \x01(\r\x12\x14\n\x0c\x62\x65\x61ring_cdeg\x18\x04 \x01(\r\x12/\n\x0cstroke_color\x18\x05 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x13\n\x0bstroke_argb\x18\x06 \x01(\x07\x12\x19\n\x11stroke_weight_x10\x18\x07 \x01(\r\"\xa8\x04\n\x05Route\x12\x31\n\x06method\x18\x01 \x01(\x0e\x32!.meshtastic.protobuf.Route.Method\x12\x37\n\tdirection\x18\x02 \x01(\x0e\x32$.meshtastic.protobuf.Route.Direction\x12\x0e\n\x06prefix\x18\x03 \x01(\t\x12\x19\n\x11stroke_weight_x10\x18\x04 \x01(\r\x12.\n\x05links\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.Route.Link\x12\x11\n\ttruncated\x18\x06 \x01(\x08\x1ai\n\x04Link\x12/\n\x05point\x18\x01 \x01(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x0b\n\x03uid\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61llsign\x18\x03 \x01(\t\x12\x11\n\tlink_type\x18\x04 \x01(\r\"\x87\x01\n\x06Method\x12\x16\n\x12Method_Unspecified\x10\x00\x12\x12\n\x0eMethod_Driving\x10\x01\x12\x12\n\x0eMethod_Walking\x10\x02\x12\x11\n\rMethod_Flying\x10\x03\x12\x13\n\x0fMethod_Swimming\x10\x04\x12\x15\n\x11Method_Watercraft\x10\x05\"P\n\tDirection\x12\x19\n\x15\x44irection_Unspecified\x10\x00\x12\x13\n\x0f\x44irection_Infil\x10\x01\x12\x13\n\x0f\x44irection_Exfil\x10\x02\"\xfa\n\n\rCasevacReport\x12\x41\n\nprecedence\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.CasevacReport.Precedence\x12\x17\n\x0f\x65quipment_flags\x18\x02 \x01(\r\x12\x17\n\x0flitter_patients\x18\x03 \x01(\r\x12\x1b\n\x13\x61mbulatory_patients\x18\x04 \x01(\r\x12=\n\x08security\x18\x05 \x01(\x0e\x32+.meshtastic.protobuf.CasevacReport.Security\x12\x42\n\x0bhlz_marking\x18\x06 \x01(\x0e\x32-.meshtastic.protobuf.CasevacReport.HlzMarking\x12\x13\n\x0bzone_marker\x18\x07 \x01(\t\x12\x13\n\x0bus_military\x18\x08 \x01(\r\x12\x13\n\x0bus_civilian\x18\t \x01(\r\x12\x17\n\x0fnon_us_military\x18\n \x01(\r\x12\x17\n\x0fnon_us_civilian\x18\x0b \x01(\r\x12\x0b\n\x03\x65pw\x18\x0c \x01(\r\x12\r\n\x05\x63hild\x18\r \x01(\r\x12\x15\n\rterrain_flags\x18\x0e \x01(\r\x12\x11\n\tfrequency\x18\x0f \x01(\t\x12\r\n\x05title\x18\x10 \x01(\t\x12\x17\n\x0fmedline_remarks\x18\x11 \x01(\t\x12\x14\n\x0curgent_count\x18\x12 \x01(\r\x12\x1d\n\x15urgent_surgical_count\x18\x13 \x01(\r\x12\x16\n\x0epriority_count\x18\x14 \x01(\r\x12\x15\n\rroutine_count\x18\x15 \x01(\r\x12\x19\n\x11\x63onvenience_count\x18\x16 \x01(\r\x12\x18\n\x10\x65quipment_detail\x18\x17 \x01(\t\x12\x1c\n\x14zone_protected_coord\x18\x18 \x01(\t\x12\x19\n\x11terrain_slope_dir\x18\x19 \x01(\t\x12\x1c\n\x14terrain_other_detail\x18\x1a \x01(\t\x12\x11\n\tmarked_by\x18\x1b \x01(\t\x12\x11\n\tobstacles\x18\x1c \x01(\t\x12\x16\n\x0ewinds_are_from\x18\x1d \x01(\t\x12\x12\n\nfriendlies\x18\x1e \x01(\t\x12\r\n\x05\x65nemy\x18\x1f \x01(\t\x12\x13\n\x0bhlz_remarks\x18 \x01(\t\x12.\n\x05zmist\x18! \x03(\x0b\x32\x1f.meshtastic.protobuf.ZMistEntry\"\xab\x01\n\nPrecedence\x12\x1a\n\x16Precedence_Unspecified\x10\x00\x12\x15\n\x11Precedence_Urgent\x10\x01\x12\x1d\n\x19Precedence_UrgentSurgical\x10\x02\x12\x17\n\x13Precedence_Priority\x10\x03\x12\x16\n\x12Precedence_Routine\x10\x04\x12\x1a\n\x16Precedence_Convenience\x10\x05\"\x9b\x01\n\nHlzMarking\x12\x1a\n\x16HlzMarking_Unspecified\x10\x00\x12\x15\n\x11HlzMarking_Panels\x10\x01\x12\x19\n\x15HlzMarking_PyroSignal\x10\x02\x12\x14\n\x10HlzMarking_Smoke\x10\x03\x12\x13\n\x0fHlzMarking_None\x10\x04\x12\x14\n\x10HlzMarking_Other\x10\x05\"\x92\x01\n\x08Security\x12\x18\n\x14Security_Unspecified\x10\x00\x12\x14\n\x10Security_NoEnemy\x10\x01\x12\x1a\n\x16Security_PossibleEnemy\x10\x02\x12\x18\n\x14Security_EnemyInArea\x10\x03\x12 \n\x1cSecurity_EnemyInArmedContact\x10\x04\"R\n\nZMistEntry\x12\r\n\x05title\x18\x01 \x01(\t\x12\t\n\x01z\x18\x02 \x01(\t\x12\t\n\x01m\x18\x03 \x01(\t\x12\t\n\x01i\x18\x04 \x01(\t\x12\t\n\x01s\x18\x05 \x01(\t\x12\t\n\x01t\x18\x06 \x01(\t\"\x96\x02\n\x0e\x45mergencyAlert\x12\x36\n\x04type\x18\x01 \x01(\x0e\x32(.meshtastic.protobuf.EmergencyAlert.Type\x12\x15\n\rauthoring_uid\x18\x02 \x01(\t\x12\x1c\n\x14\x63\x61ncel_reference_uid\x18\x03 \x01(\t\"\x96\x01\n\x04Type\x12\x14\n\x10Type_Unspecified\x10\x00\x12\x11\n\rType_Alert911\x10\x01\x12\x14\n\x10Type_RingTheBell\x10\x02\x12\x12\n\x0eType_InContact\x10\x03\x12\x19\n\x15Type_GeoFenceBreached\x10\x04\x12\x0f\n\x0bType_Custom\x10\x05\x12\x0f\n\x0bType_Cancel\x10\x06\"\xd8\x03\n\x0bTaskRequest\x12\x11\n\ttask_type\x18\x01 \x01(\t\x12\x12\n\ntarget_uid\x18\x02 \x01(\t\x12\x14\n\x0c\x61ssignee_uid\x18\x03 \x01(\t\x12;\n\x08priority\x18\x04 \x01(\x0e\x32).meshtastic.protobuf.TaskRequest.Priority\x12\x37\n\x06status\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.TaskRequest.Status\x12\x0c\n\x04note\x18\x06 \x01(\t\"u\n\x08Priority\x12\x18\n\x14Priority_Unspecified\x10\x00\x12\x10\n\x0cPriority_Low\x10\x01\x12\x13\n\x0fPriority_Normal\x10\x02\x12\x11\n\rPriority_High\x10\x03\x12\x15\n\x11Priority_Critical\x10\x04\"\x90\x01\n\x06Status\x12\x16\n\x12Status_Unspecified\x10\x00\x12\x12\n\x0eStatus_Pending\x10\x01\x12\x17\n\x13Status_Acknowledged\x10\x02\x12\x15\n\x11Status_InProgress\x10\x03\x12\x14\n\x10Status_Completed\x10\x04\x12\x14\n\x10Status_Cancelled\x10\x05\"`\n\x0eTAKEnvironment\x12\x19\n\x11temperature_c_x10\x18\x01 \x01(\x11\x12\x1a\n\x12wind_direction_deg\x18\x02 \x01(\r\x12\x17\n\x0fwind_speed_cm_s\x18\x03 \x01(\r\"\x96\x03\n\tSensorFov\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.SensorFov.SensorType\x12\x13\n\x0b\x61zimuth_deg\x18\x02 \x01(\r\x12\x14\n\x07range_m\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\x12\x66ov_horizontal_deg\x18\x04 \x01(\r\x12\x18\n\x10\x66ov_vertical_deg\x18\x05 \x01(\r\x12\x15\n\relevation_deg\x18\x06 \x01(\x11\x12\x10\n\x08roll_deg\x18\x07 \x01(\x11\x12\r\n\x05model\x18\x08 \x01(\t\"\xaa\x01\n\nSensorType\x12\x1a\n\x16SensorType_Unspecified\x10\x00\x12\x15\n\x11SensorType_Camera\x10\x01\x12\x16\n\x12SensorType_Thermal\x10\x02\x12\x14\n\x10SensorType_Laser\x10\x03\x12\x12\n\x0eSensorType_Nvg\x10\x04\x12\x11\n\rSensorType_Rf\x10\x05\x12\x14\n\x10SensorType_Other\x10\x06\x42\n\n\x08_range_m\"U\n\x0eTakTalkMessage\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x13\n\x0b\x63hatroom_id\x18\x02 \x01(\t\x12\x0c\n\x04lang\x18\x03 \x01(\t\x12\x12\n\nfrom_voice\x18\x04 \x01(\x08\"d\n\x0fTakTalkRoomData\x12\x17\n\x0fsender_callsign\x18\x01 \x01(\t\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x14\n\x0cparticipants\x18\x04 \x03(\t\"\xa2\x0b\n\x0bTAKPacketV2\x12\x31\n\x0b\x63ot_type_id\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.CotType\x12(\n\x03how\x18\x02 \x01(\x0e\x32\x1b.meshtastic.protobuf.CotHow\x12\x10\n\x08\x63\x61llsign\x18\x03 \x01(\t\x12\'\n\x04team\x18\x04 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12-\n\x04role\x18\x05 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRole\x12\x12\n\nlatitude_i\x18\x06 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x07 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x08 \x01(\x11\x12\r\n\x05speed\x18\t \x01(\r\x12\x0e\n\x06\x63ourse\x18\n \x01(\r\x12\x0f\n\x07\x62\x61ttery\x18\x0b \x01(\r\x12\x34\n\x07geo_src\x18\x0c \x01(\x0e\x32#.meshtastic.protobuf.GeoPointSource\x12\x34\n\x07\x61lt_src\x18\r \x01(\x0e\x32#.meshtastic.protobuf.GeoPointSource\x12\x0b\n\x03uid\x18\x0e \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x0f \x01(\t\x12\x15\n\rstale_seconds\x18\x10 \x01(\r\x12\x13\n\x0btak_version\x18\x11 \x01(\t\x12\x12\n\ntak_device\x18\x12 \x01(\t\x12\x14\n\x0ctak_platform\x18\x13 \x01(\t\x12\x0e\n\x06tak_os\x18\x14 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x15 \x01(\t\x12\r\n\x05phone\x18\x16 \x01(\t\x12\x14\n\x0c\x63ot_type_str\x18\x17 \x01(\t\x12\x0f\n\x07remarks\x18\x18 \x01(\t\x12=\n\x0b\x65nvironment\x18\x19 \x01(\x0b\x32#.meshtastic.protobuf.TAKEnvironmentH\x01\x88\x01\x01\x12\x37\n\nsensor_fov\x18\x1a \x01(\x0b\x32\x1e.meshtastic.protobuf.SensorFovH\x02\x88\x01\x01\x12\r\n\x03pli\x18\x1e \x01(\x08H\x00\x12,\n\x04\x63hat\x18\x1f \x01(\x0b\x32\x1c.meshtastic.protobuf.GeoChatH\x00\x12\x36\n\x08\x61ircraft\x18 \x01(\x0b\x32\".meshtastic.protobuf.AircraftTrackH\x00\x12\x14\n\nraw_detail\x18! \x01(\x0cH\x00\x12\x30\n\x05shape\x18\" \x01(\x0b\x32\x1f.meshtastic.protobuf.DrawnShapeH\x00\x12-\n\x06marker\x18# \x01(\x0b\x32\x1b.meshtastic.protobuf.MarkerH\x00\x12\x33\n\x03rab\x18$ \x01(\x0b\x32$.meshtastic.protobuf.RangeAndBearingH\x00\x12+\n\x05route\x18% \x01(\x0b\x32\x1a.meshtastic.protobuf.RouteH\x00\x12\x35\n\x07\x63\x61sevac\x18& \x01(\x0b\x32\".meshtastic.protobuf.CasevacReportH\x00\x12\x38\n\temergency\x18\' \x01(\x0b\x32#.meshtastic.protobuf.EmergencyAlertH\x00\x12\x30\n\x04task\x18( \x01(\x0b\x32 .meshtastic.protobuf.TaskRequestH\x00\x12\x36\n\x07taktalk\x18) \x01(\x0b\x32#.meshtastic.protobuf.TakTalkMessageH\x00\x12<\n\x0ctaktalk_room\x18* \x01(\x0b\x32$.meshtastic.protobuf.TakTalkRoomDataH\x00\x42\x11\n\x0fpayload_variantB\x0e\n\x0c_environmentB\r\n\x0b_sensor_fovJ\x04\x08\x1b\x10\x1cJ\x04\x08\x1c\x10\x1dJ\x04\x08\x1d\x10\x1e*\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*\x96\x01\n\x06\x43otHow\x12\x16\n\x12\x43otHow_Unspecified\x10\x00\x12\x0e\n\nCotHow_h_e\x10\x01\x12\x0e\n\nCotHow_m_g\x10\x02\x12\x14\n\x10\x43otHow_h_g_i_g_o\x10\x03\x12\x0e\n\nCotHow_m_r\x10\x04\x12\x0e\n\nCotHow_m_f\x10\x05\x12\x0e\n\nCotHow_m_p\x10\x06\x12\x0e\n\nCotHow_m_s\x10\x07*\x83\x17\n\x07\x43otType\x12\x11\n\rCotType_Other\x10\x00\x12\x15\n\x11\x43otType_a_f_G_U_C\x10\x01\x12\x17\n\x13\x43otType_a_f_G_U_C_I\x10\x02\x12\x15\n\x11\x43otType_a_n_A_C_F\x10\x03\x12\x15\n\x11\x43otType_a_n_A_C_H\x10\x04\x12\x13\n\x0f\x43otType_a_n_A_C\x10\x05\x12\x15\n\x11\x43otType_a_f_A_M_H\x10\x06\x12\x13\n\x0f\x43otType_a_f_A_M\x10\x07\x12\x17\n\x13\x43otType_a_f_A_M_F_F\x10\x08\x12\x17\n\x13\x43otType_a_f_A_M_H_A\x10\t\x12\x19\n\x15\x43otType_a_f_A_M_H_U_M\x10\n\x12\x17\n\x13\x43otType_a_h_A_M_F_F\x10\x0b\x12\x17\n\x13\x43otType_a_h_A_M_H_A\x10\x0c\x12\x13\n\x0f\x43otType_a_u_A_C\x10\r\x12\x13\n\x0f\x43otType_t_x_d_d\x10\x0e\x12\x17\n\x13\x43otType_a_f_G_E_S_E\x10\x0f\x12\x17\n\x13\x43otType_a_f_G_E_V_C\x10\x10\x12\x11\n\rCotType_a_f_S\x10\x11\x12\x15\n\x11\x43otType_a_f_A_M_F\x10\x12\x12\x19\n\x15\x43otType_a_f_A_M_F_C_H\x10\x13\x12\x19\n\x15\x43otType_a_f_A_M_F_U_L\x10\x14\x12\x17\n\x13\x43otType_a_f_A_M_F_L\x10\x15\x12\x17\n\x13\x43otType_a_f_A_M_F_P\x10\x16\x12\x15\n\x11\x43otType_a_f_A_C_H\x10\x17\x12\x17\n\x13\x43otType_a_n_A_M_F_Q\x10\x18\x12\x11\n\rCotType_b_t_f\x10\x19\x12\x15\n\x11\x43otType_b_r_f_h_c\x10\x1a\x12\x15\n\x11\x43otType_b_a_o_pan\x10\x1b\x12\x15\n\x11\x43otType_b_a_o_opn\x10\x1c\x12\x15\n\x11\x43otType_b_a_o_can\x10\x1d\x12\x15\n\x11\x43otType_b_a_o_tbl\x10\x1e\x12\x11\n\rCotType_b_a_g\x10\x1f\x12\x11\n\rCotType_a_f_G\x10 \x12\x13\n\x0f\x43otType_a_f_G_U\x10!\x12\x11\n\rCotType_a_h_G\x10\"\x12\x11\n\rCotType_a_u_G\x10#\x12\x11\n\rCotType_a_n_G\x10$\x12\x11\n\rCotType_b_m_r\x10%\x12\x13\n\x0f\x43otType_b_m_p_w\x10&\x12\x17\n\x13\x43otType_b_m_p_s_p_i\x10\'\x12\x11\n\rCotType_u_d_f\x10(\x12\x11\n\rCotType_u_d_r\x10)\x12\x13\n\x0f\x43otType_u_d_c_c\x10*\x12\x12\n\x0e\x43otType_u_rb_a\x10+\x12\x11\n\rCotType_a_h_A\x10,\x12\x11\n\rCotType_a_u_A\x10-\x12\x17\n\x13\x43otType_a_f_A_M_H_Q\x10.\x12\x15\n\x11\x43otType_a_f_A_C_F\x10/\x12\x13\n\x0f\x43otType_a_f_A_C\x10\x30\x12\x15\n\x11\x43otType_a_f_A_C_L\x10\x31\x12\x11\n\rCotType_a_f_A\x10\x32\x12\x17\n\x13\x43otType_a_f_A_M_H_C\x10\x33\x12\x17\n\x13\x43otType_a_n_A_M_F_F\x10\x34\x12\x15\n\x11\x43otType_a_u_A_C_F\x10\x35\x12\x1b\n\x17\x43otType_a_f_G_U_C_F_T_A\x10\x36\x12\x19\n\x15\x43otType_a_f_G_U_C_V_S\x10\x37\x12\x19\n\x15\x43otType_a_f_G_U_C_R_X\x10\x38\x12\x19\n\x15\x43otType_a_f_G_U_C_I_Z\x10\x39\x12\x1b\n\x17\x43otType_a_f_G_U_C_E_C_W\x10:\x12\x19\n\x15\x43otType_a_f_G_U_C_I_L\x10;\x12\x19\n\x15\x43otType_a_f_G_U_C_R_O\x10<\x12\x19\n\x15\x43otType_a_f_G_U_C_R_V\x10=\x12\x15\n\x11\x43otType_a_f_G_U_H\x10>\x12\x1b\n\x17\x43otType_a_f_G_U_U_M_S_E\x10?\x12\x19\n\x15\x43otType_a_f_G_U_S_M_C\x10@\x12\x15\n\x11\x43otType_a_f_G_E_S\x10\x41\x12\x13\n\x0f\x43otType_a_f_G_E\x10\x42\x12\x19\n\x15\x43otType_a_f_G_E_V_C_U\x10\x43\x12\x1a\n\x16\x43otType_a_f_G_E_V_C_ps\x10\x44\x12\x15\n\x11\x43otType_a_u_G_E_V\x10\x45\x12\x17\n\x13\x43otType_a_f_S_N_N_R\x10\x46\x12\x13\n\x0f\x43otType_a_f_F_B\x10G\x12\x19\n\x15\x43otType_b_m_p_s_p_loc\x10H\x12\x11\n\rCotType_b_i_v\x10I\x12\x13\n\x0f\x43otType_b_f_t_r\x10J\x12\x13\n\x0f\x43otType_b_f_t_a\x10K\x12\x13\n\x0f\x43otType_u_d_f_m\x10L\x12\x11\n\rCotType_u_d_p\x10M\x12\x15\n\x11\x43otType_b_m_p_s_m\x10N\x12\x13\n\x0f\x43otType_b_m_p_c\x10O\x12\x15\n\x11\x43otType_u_r_b_c_c\x10P\x12\x1a\n\x16\x43otType_u_r_b_bullseye\x10Q\x12\x17\n\x13\x43otType_a_f_G_E_V_A\x10R\x12\x11\n\rCotType_a_n_A\x10S\x12\x17\n\x13\x43otType_a_u_G_U_C_F\x10T\x12\x17\n\x13\x43otType_a_n_G_U_C_F\x10U\x12\x17\n\x13\x43otType_a_h_G_U_C_F\x10V\x12\x17\n\x13\x43otType_a_f_G_U_C_F\x10W\x12\x13\n\x0f\x43otType_a_u_G_I\x10X\x12\x13\n\x0f\x43otType_a_n_G_I\x10Y\x12\x13\n\x0f\x43otType_a_h_G_I\x10Z\x12\x13\n\x0f\x43otType_a_f_G_I\x10[\x12\x17\n\x13\x43otType_a_u_G_E_X_M\x10\\\x12\x17\n\x13\x43otType_a_n_G_E_X_M\x10]\x12\x17\n\x13\x43otType_a_h_G_E_X_M\x10^\x12\x17\n\x13\x43otType_a_f_G_E_X_M\x10_\x12\x11\n\rCotType_a_u_S\x10`\x12\x11\n\rCotType_a_n_S\x10\x61\x12\x11\n\rCotType_a_h_S\x10\x62\x12\x19\n\x15\x43otType_a_u_G_U_C_I_d\x10\x63\x12\x19\n\x15\x43otType_a_n_G_U_C_I_d\x10\x64\x12\x19\n\x15\x43otType_a_h_G_U_C_I_d\x10\x65\x12\x19\n\x15\x43otType_a_f_G_U_C_I_d\x10\x66\x12\x19\n\x15\x43otType_a_u_G_E_V_A_T\x10g\x12\x19\n\x15\x43otType_a_n_G_E_V_A_T\x10h\x12\x19\n\x15\x43otType_a_h_G_E_V_A_T\x10i\x12\x19\n\x15\x43otType_a_f_G_E_V_A_T\x10j\x12\x17\n\x13\x43otType_a_u_G_U_C_I\x10k\x12\x17\n\x13\x43otType_a_n_G_U_C_I\x10l\x12\x17\n\x13\x43otType_a_h_G_U_C_I\x10m\x12\x15\n\x11\x43otType_a_n_G_E_V\x10n\x12\x15\n\x11\x43otType_a_h_G_E_V\x10o\x12\x15\n\x11\x43otType_a_f_G_E_V\x10p\x12\x18\n\x14\x43otType_b_m_p_w_GOTO\x10q\x12\x16\n\x12\x43otType_b_m_p_c_ip\x10r\x12\x16\n\x12\x43otType_b_m_p_c_cp\x10s\x12\x18\n\x14\x43otType_b_m_p_s_p_op\x10t\x12\x11\n\rCotType_u_d_v\x10u\x12\x13\n\x0f\x43otType_u_d_v_m\x10v\x12\x13\n\x0f\x43otType_u_d_c_e\x10w\x12\x13\n\x0f\x43otType_b_i_x_i\x10x\x12\x13\n\x0f\x43otType_b_t_f_d\x10y\x12\x13\n\x0f\x43otType_b_t_f_r\x10z\x12\x13\n\x0f\x43otType_b_a_o_c\x10{\x12\x0f\n\x0b\x43otType_t_s\x10|\x12\x11\n\rCotType_m_t_t\x10}\x12\r\n\tCotType_y\x10~*}\n\x0eGeoPointSource\x12\x1e\n\x1aGeoPointSource_Unspecified\x10\x00\x12\x16\n\x12GeoPointSource_GPS\x10\x01\x12\x17\n\x13GeoPointSource_USER\x10\x02\x12\x1a\n\x16GeoPointSource_NETWORK\x10\x03\x42`\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_TEAM']._serialized_start=721 - _globals['_TEAM']._serialized_end=913 - _globals['_MEMBERROLE']._serialized_start=915 - _globals['_MEMBERROLE']._serialized_end=1042 - _globals['_TAKPACKET']._serialized_start=56 - _globals['_TAKPACKET']._serialized_end=349 - _globals['_GEOCHAT']._serialized_start=351 - _globals['_GEOCHAT']._serialized_end=443 - _globals['_GROUP']._serialized_start=445 - _globals['_GROUP']._serialized_end=540 - _globals['_STATUS']._serialized_start=542 - _globals['_STATUS']._serialized_end=567 - _globals['_CONTACT']._serialized_start=569 - _globals['_CONTACT']._serialized_end=621 - _globals['_PLI']._serialized_start=623 - _globals['_PLI']._serialized_end=718 + _TEAM._serialized_start=7812 + _TEAM._serialized_end=8004 + _MEMBERROLE._serialized_start=8006 + _MEMBERROLE._serialized_end=8133 + _COTHOW._serialized_start=8136 + _COTHOW._serialized_end=8286 + _COTTYPE._serialized_start=8289 + _COTTYPE._serialized_end=11236 + _GEOPOINTSOURCE._serialized_start=11238 + _GEOPOINTSOURCE._serialized_end=11363 + _TAKPACKET._serialized_start=56 + _TAKPACKET._serialized_end=349 + _GEOCHAT._serialized_start=352 + _GEOCHAT._serialized_end=733 + _GEOCHAT_RECEIPTTYPE._serialized_start=584 + _GEOCHAT_RECEIPTTYPE._serialized_end=668 + _GROUP._serialized_start=735 + _GROUP._serialized_end=830 + _STATUS._serialized_start=832 + _STATUS._serialized_end=857 + _CONTACT._serialized_start=859 + _CONTACT._serialized_end=911 + _PLI._serialized_start=913 + _PLI._serialized_end=1008 + _AIRCRAFTTRACK._serialized_start=1011 + _AIRCRAFTTRACK._serialized_end=1187 + _COTGEOPOINT._serialized_start=1189 + _COTGEOPOINT._serialized_end=1244 + _DRAWNSHAPE._serialized_start=1247 + _DRAWNSHAPE._serialized_end=2135 + _DRAWNSHAPE_KIND._serialized_start=1790 + _DRAWNSHAPE_KIND._serialized_end=2016 + _DRAWNSHAPE_STYLEMODE._serialized_start=2018 + _DRAWNSHAPE_STYLEMODE._serialized_end=2135 + _MARKER._serialized_start=2138 + _MARKER._serialized_end=2641 + _MARKER_KIND._serialized_start=2361 + _MARKER_KIND._serialized_end=2641 + _RANGEANDBEARING._serialized_start=2644 + _RANGEANDBEARING._serialized_end=2868 + _ROUTE._serialized_start=2871 + _ROUTE._serialized_end=3423 + _ROUTE_LINK._serialized_start=3098 + _ROUTE_LINK._serialized_end=3203 + _ROUTE_METHOD._serialized_start=3206 + _ROUTE_METHOD._serialized_end=3341 + _ROUTE_DIRECTION._serialized_start=3343 + _ROUTE_DIRECTION._serialized_end=3423 + _CASEVACREPORT._serialized_start=3426 + _CASEVACREPORT._serialized_end=4828 + _CASEVACREPORT_PRECEDENCE._serialized_start=4350 + _CASEVACREPORT_PRECEDENCE._serialized_end=4521 + _CASEVACREPORT_HLZMARKING._serialized_start=4524 + _CASEVACREPORT_HLZMARKING._serialized_end=4679 + _CASEVACREPORT_SECURITY._serialized_start=4682 + _CASEVACREPORT_SECURITY._serialized_end=4828 + _ZMISTENTRY._serialized_start=4830 + _ZMISTENTRY._serialized_end=4912 + _EMERGENCYALERT._serialized_start=4915 + _EMERGENCYALERT._serialized_end=5193 + _EMERGENCYALERT_TYPE._serialized_start=5043 + _EMERGENCYALERT_TYPE._serialized_end=5193 + _TASKREQUEST._serialized_start=5196 + _TASKREQUEST._serialized_end=5668 + _TASKREQUEST_PRIORITY._serialized_start=5404 + _TASKREQUEST_PRIORITY._serialized_end=5521 + _TASKREQUEST_STATUS._serialized_start=5524 + _TASKREQUEST_STATUS._serialized_end=5668 + _TAKENVIRONMENT._serialized_start=5670 + _TAKENVIRONMENT._serialized_end=5766 + _SENSORFOV._serialized_start=5769 + _SENSORFOV._serialized_end=6175 + _SENSORFOV_SENSORTYPE._serialized_start=5993 + _SENSORFOV_SENSORTYPE._serialized_end=6163 + _TAKTALKMESSAGE._serialized_start=6177 + _TAKTALKMESSAGE._serialized_end=6262 + _TAKTALKROOMDATA._serialized_start=6264 + _TAKTALKROOMDATA._serialized_end=6364 + _TAKPACKETV2._serialized_start=6367 + _TAKPACKETV2._serialized_end=7809 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/atak_pb2.pyi b/meshtastic/protobuf/atak_pb2.pyi index 34814f9..2440438 100644 --- a/meshtastic/protobuf/atak_pb2.pyi +++ b/meshtastic/protobuf/atak_pb2.pyi @@ -1,477 +1,748 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +Blue: Team +Brown: Team +CotHow_Unspecified: CotHow +CotHow_h_e: CotHow +CotHow_h_g_i_g_o: CotHow +CotHow_m_f: CotHow +CotHow_m_g: CotHow +CotHow_m_p: CotHow +CotHow_m_r: CotHow +CotHow_m_s: CotHow +CotType_Other: CotType +CotType_a_f_A: CotType +CotType_a_f_A_C: CotType +CotType_a_f_A_C_F: CotType +CotType_a_f_A_C_H: CotType +CotType_a_f_A_C_L: CotType +CotType_a_f_A_M: CotType +CotType_a_f_A_M_F: CotType +CotType_a_f_A_M_F_C_H: CotType +CotType_a_f_A_M_F_F: CotType +CotType_a_f_A_M_F_L: CotType +CotType_a_f_A_M_F_P: CotType +CotType_a_f_A_M_F_U_L: CotType +CotType_a_f_A_M_H: CotType +CotType_a_f_A_M_H_A: CotType +CotType_a_f_A_M_H_C: CotType +CotType_a_f_A_M_H_Q: CotType +CotType_a_f_A_M_H_U_M: CotType +CotType_a_f_F_B: CotType +CotType_a_f_G: CotType +CotType_a_f_G_E: CotType +CotType_a_f_G_E_S: CotType +CotType_a_f_G_E_S_E: CotType +CotType_a_f_G_E_V: CotType +CotType_a_f_G_E_V_A: CotType +CotType_a_f_G_E_V_A_T: CotType +CotType_a_f_G_E_V_C: CotType +CotType_a_f_G_E_V_C_U: CotType +CotType_a_f_G_E_V_C_ps: CotType +CotType_a_f_G_E_X_M: CotType +CotType_a_f_G_I: CotType +CotType_a_f_G_U: CotType +CotType_a_f_G_U_C: CotType +CotType_a_f_G_U_C_E_C_W: CotType +CotType_a_f_G_U_C_F: CotType +CotType_a_f_G_U_C_F_T_A: CotType +CotType_a_f_G_U_C_I: CotType +CotType_a_f_G_U_C_I_L: CotType +CotType_a_f_G_U_C_I_Z: CotType +CotType_a_f_G_U_C_I_d: CotType +CotType_a_f_G_U_C_R_O: CotType +CotType_a_f_G_U_C_R_V: CotType +CotType_a_f_G_U_C_R_X: CotType +CotType_a_f_G_U_C_V_S: CotType +CotType_a_f_G_U_H: CotType +CotType_a_f_G_U_S_M_C: CotType +CotType_a_f_G_U_U_M_S_E: CotType +CotType_a_f_S: CotType +CotType_a_f_S_N_N_R: CotType +CotType_a_h_A: CotType +CotType_a_h_A_M_F_F: CotType +CotType_a_h_A_M_H_A: CotType +CotType_a_h_G: CotType +CotType_a_h_G_E_V: CotType +CotType_a_h_G_E_V_A_T: CotType +CotType_a_h_G_E_X_M: CotType +CotType_a_h_G_I: CotType +CotType_a_h_G_U_C_F: CotType +CotType_a_h_G_U_C_I: CotType +CotType_a_h_G_U_C_I_d: CotType +CotType_a_h_S: CotType +CotType_a_n_A: CotType +CotType_a_n_A_C: CotType +CotType_a_n_A_C_F: CotType +CotType_a_n_A_C_H: CotType +CotType_a_n_A_M_F_F: CotType +CotType_a_n_A_M_F_Q: CotType +CotType_a_n_G: CotType +CotType_a_n_G_E_V: CotType +CotType_a_n_G_E_V_A_T: CotType +CotType_a_n_G_E_X_M: CotType +CotType_a_n_G_I: CotType +CotType_a_n_G_U_C_F: CotType +CotType_a_n_G_U_C_I: CotType +CotType_a_n_G_U_C_I_d: CotType +CotType_a_n_S: CotType +CotType_a_u_A: CotType +CotType_a_u_A_C: CotType +CotType_a_u_A_C_F: CotType +CotType_a_u_G: CotType +CotType_a_u_G_E_V: CotType +CotType_a_u_G_E_V_A_T: CotType +CotType_a_u_G_E_X_M: CotType +CotType_a_u_G_I: CotType +CotType_a_u_G_U_C_F: CotType +CotType_a_u_G_U_C_I: CotType +CotType_a_u_G_U_C_I_d: CotType +CotType_a_u_S: CotType +CotType_b_a_g: CotType +CotType_b_a_o_c: CotType +CotType_b_a_o_can: CotType +CotType_b_a_o_opn: CotType +CotType_b_a_o_pan: CotType +CotType_b_a_o_tbl: CotType +CotType_b_f_t_a: CotType +CotType_b_f_t_r: CotType +CotType_b_i_v: CotType +CotType_b_i_x_i: CotType +CotType_b_m_p_c: CotType +CotType_b_m_p_c_cp: CotType +CotType_b_m_p_c_ip: CotType +CotType_b_m_p_s_m: CotType +CotType_b_m_p_s_p_i: CotType +CotType_b_m_p_s_p_loc: CotType +CotType_b_m_p_s_p_op: CotType +CotType_b_m_p_w: CotType +CotType_b_m_p_w_GOTO: CotType +CotType_b_m_r: CotType +CotType_b_r_f_h_c: CotType +CotType_b_t_f: CotType +CotType_b_t_f_d: CotType +CotType_b_t_f_r: CotType +CotType_m_t_t: CotType +CotType_t_s: CotType +CotType_t_x_d_d: CotType +CotType_u_d_c_c: CotType +CotType_u_d_c_e: CotType +CotType_u_d_f: CotType +CotType_u_d_f_m: CotType +CotType_u_d_p: CotType +CotType_u_d_r: CotType +CotType_u_d_v: CotType +CotType_u_d_v_m: CotType +CotType_u_r_b_bullseye: CotType +CotType_u_r_b_c_c: CotType +CotType_u_rb_a: CotType +CotType_y: CotType +Cyan: Team +DESCRIPTOR: _descriptor.FileDescriptor +Dark_Blue: Team +Dark_Green: Team +ForwardObserver: MemberRole +GeoPointSource_GPS: GeoPointSource +GeoPointSource_NETWORK: GeoPointSource +GeoPointSource_USER: GeoPointSource +GeoPointSource_Unspecified: GeoPointSource +Green: Team +HQ: MemberRole +K9: MemberRole +Magenta: Team +Maroon: Team +Medic: MemberRole +Orange: Team +Purple: Team +RTO: MemberRole +Red: Team +Sniper: MemberRole +Teal: Team +TeamLead: MemberRole +TeamMember: MemberRole +Unspecifed: MemberRole +Unspecifed_Color: Team +White: Team +Yellow: Team -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class AircraftTrack(_message.Message): + __slots__ = ["aircraft_type", "category", "cot_host_id", "flight", "gps", "icao", "registration", "rssi_x10", "squawk"] + AIRCRAFT_TYPE_FIELD_NUMBER: _ClassVar[int] + CATEGORY_FIELD_NUMBER: _ClassVar[int] + COT_HOST_ID_FIELD_NUMBER: _ClassVar[int] + FLIGHT_FIELD_NUMBER: _ClassVar[int] + GPS_FIELD_NUMBER: _ClassVar[int] + ICAO_FIELD_NUMBER: _ClassVar[int] + REGISTRATION_FIELD_NUMBER: _ClassVar[int] + RSSI_X10_FIELD_NUMBER: _ClassVar[int] + SQUAWK_FIELD_NUMBER: _ClassVar[int] + aircraft_type: str + category: str + cot_host_id: str + flight: str + gps: bool + icao: str + registration: str + rssi_x10: int + squawk: int + def __init__(self, icao: _Optional[str] = ..., registration: _Optional[str] = ..., flight: _Optional[str] = ..., aircraft_type: _Optional[str] = ..., squawk: _Optional[int] = ..., category: _Optional[str] = ..., rssi_x10: _Optional[int] = ..., gps: bool = ..., cot_host_id: _Optional[str] = ...) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class CasevacReport(_message.Message): + __slots__ = ["ambulatory_patients", "child", "convenience_count", "enemy", "epw", "equipment_detail", "equipment_flags", "frequency", "friendlies", "hlz_marking", "hlz_remarks", "litter_patients", "marked_by", "medline_remarks", "non_us_civilian", "non_us_military", "obstacles", "precedence", "priority_count", "routine_count", "security", "terrain_flags", "terrain_other_detail", "terrain_slope_dir", "title", "urgent_count", "urgent_surgical_count", "us_civilian", "us_military", "winds_are_from", "zmist", "zone_marker", "zone_protected_coord"] + class HlzMarking(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Precedence(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Security(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + AMBULATORY_PATIENTS_FIELD_NUMBER: _ClassVar[int] + CHILD_FIELD_NUMBER: _ClassVar[int] + CONVENIENCE_COUNT_FIELD_NUMBER: _ClassVar[int] + ENEMY_FIELD_NUMBER: _ClassVar[int] + EPW_FIELD_NUMBER: _ClassVar[int] + EQUIPMENT_DETAIL_FIELD_NUMBER: _ClassVar[int] + EQUIPMENT_FLAGS_FIELD_NUMBER: _ClassVar[int] + FREQUENCY_FIELD_NUMBER: _ClassVar[int] + FRIENDLIES_FIELD_NUMBER: _ClassVar[int] + HLZ_MARKING_FIELD_NUMBER: _ClassVar[int] + HLZ_REMARKS_FIELD_NUMBER: _ClassVar[int] + HlzMarking_None: CasevacReport.HlzMarking + HlzMarking_Other: CasevacReport.HlzMarking + HlzMarking_Panels: CasevacReport.HlzMarking + HlzMarking_PyroSignal: CasevacReport.HlzMarking + HlzMarking_Smoke: CasevacReport.HlzMarking + HlzMarking_Unspecified: CasevacReport.HlzMarking + LITTER_PATIENTS_FIELD_NUMBER: _ClassVar[int] + MARKED_BY_FIELD_NUMBER: _ClassVar[int] + MEDLINE_REMARKS_FIELD_NUMBER: _ClassVar[int] + NON_US_CIVILIAN_FIELD_NUMBER: _ClassVar[int] + NON_US_MILITARY_FIELD_NUMBER: _ClassVar[int] + OBSTACLES_FIELD_NUMBER: _ClassVar[int] + PRECEDENCE_FIELD_NUMBER: _ClassVar[int] + PRIORITY_COUNT_FIELD_NUMBER: _ClassVar[int] + Precedence_Convenience: CasevacReport.Precedence + Precedence_Priority: CasevacReport.Precedence + Precedence_Routine: CasevacReport.Precedence + Precedence_Unspecified: CasevacReport.Precedence + Precedence_Urgent: CasevacReport.Precedence + Precedence_UrgentSurgical: CasevacReport.Precedence + ROUTINE_COUNT_FIELD_NUMBER: _ClassVar[int] + SECURITY_FIELD_NUMBER: _ClassVar[int] + Security_EnemyInArea: CasevacReport.Security + Security_EnemyInArmedContact: CasevacReport.Security + Security_NoEnemy: CasevacReport.Security + Security_PossibleEnemy: CasevacReport.Security + Security_Unspecified: CasevacReport.Security + TERRAIN_FLAGS_FIELD_NUMBER: _ClassVar[int] + TERRAIN_OTHER_DETAIL_FIELD_NUMBER: _ClassVar[int] + TERRAIN_SLOPE_DIR_FIELD_NUMBER: _ClassVar[int] + TITLE_FIELD_NUMBER: _ClassVar[int] + URGENT_COUNT_FIELD_NUMBER: _ClassVar[int] + URGENT_SURGICAL_COUNT_FIELD_NUMBER: _ClassVar[int] + US_CIVILIAN_FIELD_NUMBER: _ClassVar[int] + US_MILITARY_FIELD_NUMBER: _ClassVar[int] + WINDS_ARE_FROM_FIELD_NUMBER: _ClassVar[int] + ZMIST_FIELD_NUMBER: _ClassVar[int] + ZONE_MARKER_FIELD_NUMBER: _ClassVar[int] + ZONE_PROTECTED_COORD_FIELD_NUMBER: _ClassVar[int] + ambulatory_patients: int + child: int + convenience_count: int + enemy: str + epw: int + equipment_detail: str + equipment_flags: int + frequency: str + friendlies: str + hlz_marking: CasevacReport.HlzMarking + hlz_remarks: str + litter_patients: int + marked_by: str + medline_remarks: str + non_us_civilian: int + non_us_military: int + obstacles: str + precedence: CasevacReport.Precedence + priority_count: int + routine_count: int + security: CasevacReport.Security + terrain_flags: int + terrain_other_detail: str + terrain_slope_dir: str + title: str + urgent_count: int + urgent_surgical_count: int + us_civilian: int + us_military: int + winds_are_from: str + zmist: _containers.RepeatedCompositeFieldContainer[ZMistEntry] + zone_marker: str + zone_protected_coord: str + def __init__(self, precedence: _Optional[_Union[CasevacReport.Precedence, str]] = ..., equipment_flags: _Optional[int] = ..., litter_patients: _Optional[int] = ..., ambulatory_patients: _Optional[int] = ..., security: _Optional[_Union[CasevacReport.Security, str]] = ..., hlz_marking: _Optional[_Union[CasevacReport.HlzMarking, str]] = ..., zone_marker: _Optional[str] = ..., us_military: _Optional[int] = ..., us_civilian: _Optional[int] = ..., non_us_military: _Optional[int] = ..., non_us_civilian: _Optional[int] = ..., epw: _Optional[int] = ..., child: _Optional[int] = ..., terrain_flags: _Optional[int] = ..., frequency: _Optional[str] = ..., title: _Optional[str] = ..., medline_remarks: _Optional[str] = ..., urgent_count: _Optional[int] = ..., urgent_surgical_count: _Optional[int] = ..., priority_count: _Optional[int] = ..., routine_count: _Optional[int] = ..., convenience_count: _Optional[int] = ..., equipment_detail: _Optional[str] = ..., zone_protected_coord: _Optional[str] = ..., terrain_slope_dir: _Optional[str] = ..., terrain_other_detail: _Optional[str] = ..., marked_by: _Optional[str] = ..., obstacles: _Optional[str] = ..., winds_are_from: _Optional[str] = ..., friendlies: _Optional[str] = ..., enemy: _Optional[str] = ..., hlz_remarks: _Optional[str] = ..., zmist: _Optional[_Iterable[_Union[ZMistEntry, _Mapping]]] = ...) -> None: ... -class _Team: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class Contact(_message.Message): + __slots__ = ["callsign", "device_callsign"] + CALLSIGN_FIELD_NUMBER: _ClassVar[int] + DEVICE_CALLSIGN_FIELD_NUMBER: _ClassVar[int] + callsign: str + device_callsign: str + def __init__(self, callsign: _Optional[str] = ..., device_callsign: _Optional[str] = ...) -> None: ... -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 CotGeoPoint(_message.Message): + __slots__ = ["lat_delta_i", "lon_delta_i"] + LAT_DELTA_I_FIELD_NUMBER: _ClassVar[int] + LON_DELTA_I_FIELD_NUMBER: _ClassVar[int] + lat_delta_i: int + lon_delta_i: int + def __init__(self, lat_delta_i: _Optional[int] = ..., lon_delta_i: _Optional[int] = ...) -> None: ... -class Team(_Team, metaclass=_TeamEnumTypeWrapper): ... +class DrawnShape(_message.Message): + __slots__ = ["angle_deg", "bullseye_bearing_ref", "bullseye_distance_dm", "bullseye_flags", "bullseye_uid_ref", "fill_argb", "fill_color", "kind", "labels_on", "major_cm", "minor_cm", "stroke_argb", "stroke_color", "stroke_weight_x10", "style", "truncated", "vertices"] + class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class StyleMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ANGLE_DEG_FIELD_NUMBER: _ClassVar[int] + BULLSEYE_BEARING_REF_FIELD_NUMBER: _ClassVar[int] + BULLSEYE_DISTANCE_DM_FIELD_NUMBER: _ClassVar[int] + BULLSEYE_FLAGS_FIELD_NUMBER: _ClassVar[int] + BULLSEYE_UID_REF_FIELD_NUMBER: _ClassVar[int] + FILL_ARGB_FIELD_NUMBER: _ClassVar[int] + FILL_COLOR_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + Kind_Bullseye: DrawnShape.Kind + Kind_Circle: DrawnShape.Kind + Kind_Ellipse: DrawnShape.Kind + Kind_Freeform: DrawnShape.Kind + Kind_Polygon: DrawnShape.Kind + Kind_RangingCircle: DrawnShape.Kind + Kind_Rectangle: DrawnShape.Kind + Kind_Telestration: DrawnShape.Kind + Kind_Unspecified: DrawnShape.Kind + Kind_Vehicle2D: DrawnShape.Kind + Kind_Vehicle3D: DrawnShape.Kind + LABELS_ON_FIELD_NUMBER: _ClassVar[int] + MAJOR_CM_FIELD_NUMBER: _ClassVar[int] + MINOR_CM_FIELD_NUMBER: _ClassVar[int] + STROKE_ARGB_FIELD_NUMBER: _ClassVar[int] + STROKE_COLOR_FIELD_NUMBER: _ClassVar[int] + STROKE_WEIGHT_X10_FIELD_NUMBER: _ClassVar[int] + STYLE_FIELD_NUMBER: _ClassVar[int] + StyleMode_FillOnly: DrawnShape.StyleMode + StyleMode_StrokeAndFill: DrawnShape.StyleMode + StyleMode_StrokeOnly: DrawnShape.StyleMode + StyleMode_Unspecified: DrawnShape.StyleMode + TRUNCATED_FIELD_NUMBER: _ClassVar[int] + VERTICES_FIELD_NUMBER: _ClassVar[int] + angle_deg: int + bullseye_bearing_ref: int + bullseye_distance_dm: int + bullseye_flags: int + bullseye_uid_ref: str + fill_argb: int + fill_color: Team + kind: DrawnShape.Kind + labels_on: bool + major_cm: int + minor_cm: int + stroke_argb: int + stroke_color: Team + stroke_weight_x10: int + style: DrawnShape.StyleMode + truncated: bool + vertices: _containers.RepeatedCompositeFieldContainer[CotGeoPoint] + def __init__(self, kind: _Optional[_Union[DrawnShape.Kind, str]] = ..., style: _Optional[_Union[DrawnShape.StyleMode, str]] = ..., major_cm: _Optional[int] = ..., minor_cm: _Optional[int] = ..., angle_deg: _Optional[int] = ..., stroke_color: _Optional[_Union[Team, str]] = ..., stroke_argb: _Optional[int] = ..., stroke_weight_x10: _Optional[int] = ..., fill_color: _Optional[_Union[Team, str]] = ..., fill_argb: _Optional[int] = ..., labels_on: bool = ..., vertices: _Optional[_Iterable[_Union[CotGeoPoint, _Mapping]]] = ..., truncated: bool = ..., bullseye_distance_dm: _Optional[int] = ..., bullseye_bearing_ref: _Optional[int] = ..., bullseye_flags: _Optional[int] = ..., bullseye_uid_ref: _Optional[str] = ...) -> None: ... -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 EmergencyAlert(_message.Message): + __slots__ = ["authoring_uid", "cancel_reference_uid", "type"] + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + AUTHORING_UID_FIELD_NUMBER: _ClassVar[int] + CANCEL_REFERENCE_UID_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + Type_Alert911: EmergencyAlert.Type + Type_Cancel: EmergencyAlert.Type + Type_Custom: EmergencyAlert.Type + Type_GeoFenceBreached: EmergencyAlert.Type + Type_InContact: EmergencyAlert.Type + Type_RingTheBell: EmergencyAlert.Type + Type_Unspecified: EmergencyAlert.Type + authoring_uid: str + cancel_reference_uid: str + type: EmergencyAlert.Type + def __init__(self, type: _Optional[_Union[EmergencyAlert.Type, str]] = ..., authoring_uid: _Optional[str] = ..., cancel_reference_uid: _Optional[str] = ...) -> None: ... -class _MemberRole: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class GeoChat(_message.Message): + __slots__ = ["lang", "message", "receipt_for_uid", "receipt_type", "room_id", "to", "to_callsign", "voice_profile_id"] + class ReceiptType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + LANG_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + RECEIPT_FOR_UID_FIELD_NUMBER: _ClassVar[int] + RECEIPT_TYPE_FIELD_NUMBER: _ClassVar[int] + ROOM_ID_FIELD_NUMBER: _ClassVar[int] + ReceiptType_Delivered: GeoChat.ReceiptType + ReceiptType_None: GeoChat.ReceiptType + ReceiptType_Read: GeoChat.ReceiptType + TO_CALLSIGN_FIELD_NUMBER: _ClassVar[int] + TO_FIELD_NUMBER: _ClassVar[int] + VOICE_PROFILE_ID_FIELD_NUMBER: _ClassVar[int] + lang: str + message: str + receipt_for_uid: str + receipt_type: GeoChat.ReceiptType + room_id: str + to: str + to_callsign: str + voice_profile_id: str + def __init__(self, message: _Optional[str] = ..., to: _Optional[str] = ..., to_callsign: _Optional[str] = ..., receipt_for_uid: _Optional[str] = ..., receipt_type: _Optional[_Union[GeoChat.ReceiptType, str]] = ..., lang: _Optional[str] = ..., room_id: _Optional[str] = ..., voice_profile_id: _Optional[str] = ...) -> None: ... -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 Group(_message.Message): + __slots__ = ["role", "team"] + ROLE_FIELD_NUMBER: _ClassVar[int] + TEAM_FIELD_NUMBER: _ClassVar[int] + role: MemberRole + team: Team + def __init__(self, role: _Optional[_Union[MemberRole, str]] = ..., team: _Optional[_Union[Team, str]] = ...) -> None: ... -class MemberRole(_MemberRole, metaclass=_MemberRoleEnumTypeWrapper): - """ - Role of the group member - """ +class Marker(_message.Message): + __slots__ = ["color", "color_argb", "iconset", "kind", "parent_callsign", "parent_type", "parent_uid", "readiness"] + class Kind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + COLOR_ARGB_FIELD_NUMBER: _ClassVar[int] + COLOR_FIELD_NUMBER: _ClassVar[int] + ICONSET_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + Kind_Checkpoint: Marker.Kind + Kind_ContactPoint: Marker.Kind + Kind_CustomIcon: Marker.Kind + Kind_GoToPoint: Marker.Kind + Kind_ImageMarker: Marker.Kind + Kind_InitialPoint: Marker.Kind + Kind_ObservationPost: Marker.Kind + Kind_SelfPosition: Marker.Kind + Kind_Spot: Marker.Kind + Kind_SpotMap: Marker.Kind + Kind_Symbol2525: Marker.Kind + Kind_Unspecified: Marker.Kind + Kind_Waypoint: Marker.Kind + PARENT_CALLSIGN_FIELD_NUMBER: _ClassVar[int] + PARENT_TYPE_FIELD_NUMBER: _ClassVar[int] + PARENT_UID_FIELD_NUMBER: _ClassVar[int] + READINESS_FIELD_NUMBER: _ClassVar[int] + color: Team + color_argb: int + iconset: str + kind: Marker.Kind + parent_callsign: str + parent_type: str + parent_uid: str + readiness: bool + def __init__(self, kind: _Optional[_Union[Marker.Kind, str]] = ..., color: _Optional[_Union[Team, str]] = ..., color_argb: _Optional[int] = ..., readiness: bool = ..., parent_uid: _Optional[str] = ..., parent_type: _Optional[str] = ..., parent_callsign: _Optional[str] = ..., iconset: _Optional[str] = ...) -> None: ... -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 +class PLI(_message.Message): + __slots__ = ["altitude", "course", "latitude_i", "longitude_i", "speed"] + ALTITUDE_FIELD_NUMBER: _ClassVar[int] + COURSE_FIELD_NUMBER: _ClassVar[int] + LATITUDE_I_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_I_FIELD_NUMBER: _ClassVar[int] + SPEED_FIELD_NUMBER: _ClassVar[int] + altitude: int + course: int + latitude_i: int + longitude_i: int + speed: int + def __init__(self, latitude_i: _Optional[int] = ..., longitude_i: _Optional[int] = ..., altitude: _Optional[int] = ..., speed: _Optional[int] = ..., course: _Optional[int] = ...) -> None: ... -@typing.final -class TAKPacket(google.protobuf.message.Message): - """ - Packets for the official ATAK Plugin - """ +class RangeAndBearing(_message.Message): + __slots__ = ["anchor", "anchor_uid", "bearing_cdeg", "range_cm", "stroke_argb", "stroke_color", "stroke_weight_x10"] + ANCHOR_FIELD_NUMBER: _ClassVar[int] + ANCHOR_UID_FIELD_NUMBER: _ClassVar[int] + BEARING_CDEG_FIELD_NUMBER: _ClassVar[int] + RANGE_CM_FIELD_NUMBER: _ClassVar[int] + STROKE_ARGB_FIELD_NUMBER: _ClassVar[int] + STROKE_COLOR_FIELD_NUMBER: _ClassVar[int] + STROKE_WEIGHT_X10_FIELD_NUMBER: _ClassVar[int] + anchor: CotGeoPoint + anchor_uid: str + bearing_cdeg: int + range_cm: int + stroke_argb: int + stroke_color: Team + stroke_weight_x10: int + def __init__(self, anchor: _Optional[_Union[CotGeoPoint, _Mapping]] = ..., anchor_uid: _Optional[str] = ..., range_cm: _Optional[int] = ..., bearing_cdeg: _Optional[int] = ..., stroke_color: _Optional[_Union[Team, str]] = ..., stroke_argb: _Optional[int] = ..., stroke_weight_x10: _Optional[int] = ...) -> None: ... - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class Route(_message.Message): + __slots__ = ["direction", "links", "method", "prefix", "stroke_weight_x10", "truncated"] + class Direction(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Method(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Link(_message.Message): + __slots__ = ["callsign", "link_type", "point", "uid"] + CALLSIGN_FIELD_NUMBER: _ClassVar[int] + LINK_TYPE_FIELD_NUMBER: _ClassVar[int] + POINT_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] + callsign: str + link_type: int + point: CotGeoPoint + uid: str + def __init__(self, point: _Optional[_Union[CotGeoPoint, _Mapping]] = ..., uid: _Optional[str] = ..., callsign: _Optional[str] = ..., link_type: _Optional[int] = ...) -> None: ... + DIRECTION_FIELD_NUMBER: _ClassVar[int] + Direction_Exfil: Route.Direction + Direction_Infil: Route.Direction + Direction_Unspecified: Route.Direction + LINKS_FIELD_NUMBER: _ClassVar[int] + METHOD_FIELD_NUMBER: _ClassVar[int] + Method_Driving: Route.Method + Method_Flying: Route.Method + Method_Swimming: Route.Method + Method_Unspecified: Route.Method + Method_Walking: Route.Method + Method_Watercraft: Route.Method + PREFIX_FIELD_NUMBER: _ClassVar[int] + STROKE_WEIGHT_X10_FIELD_NUMBER: _ClassVar[int] + TRUNCATED_FIELD_NUMBER: _ClassVar[int] + direction: Route.Direction + links: _containers.RepeatedCompositeFieldContainer[Route.Link] + method: Route.Method + prefix: str + stroke_weight_x10: int + truncated: bool + def __init__(self, method: _Optional[_Union[Route.Method, str]] = ..., direction: _Optional[_Union[Route.Direction, str]] = ..., prefix: _Optional[str] = ..., stroke_weight_x10: _Optional[int] = ..., links: _Optional[_Iterable[_Union[Route.Link, _Mapping]]] = ..., truncated: bool = ...) -> None: ... - 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 - DETAIL_FIELD_NUMBER: builtins.int - is_compressed: builtins.bool - """ - Are the payloads strings compressed for LoRA transport? - """ - detail: builtins.bytes - """ - Generic CoT detail XML - May be compressed / truncated by the sender (EUD) - """ - @property - def contact(self) -> global___Contact: - """ - The contact / callsign for ATAK user - """ +class SensorFov(_message.Message): + __slots__ = ["azimuth_deg", "elevation_deg", "fov_horizontal_deg", "fov_vertical_deg", "model", "range_m", "roll_deg", "type"] + class SensorType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + AZIMUTH_DEG_FIELD_NUMBER: _ClassVar[int] + ELEVATION_DEG_FIELD_NUMBER: _ClassVar[int] + FOV_HORIZONTAL_DEG_FIELD_NUMBER: _ClassVar[int] + FOV_VERTICAL_DEG_FIELD_NUMBER: _ClassVar[int] + MODEL_FIELD_NUMBER: _ClassVar[int] + RANGE_M_FIELD_NUMBER: _ClassVar[int] + ROLL_DEG_FIELD_NUMBER: _ClassVar[int] + SensorType_Camera: SensorFov.SensorType + SensorType_Laser: SensorFov.SensorType + SensorType_Nvg: SensorFov.SensorType + SensorType_Other: SensorFov.SensorType + SensorType_Rf: SensorFov.SensorType + SensorType_Thermal: SensorFov.SensorType + SensorType_Unspecified: SensorFov.SensorType + TYPE_FIELD_NUMBER: _ClassVar[int] + azimuth_deg: int + elevation_deg: int + fov_horizontal_deg: int + fov_vertical_deg: int + model: str + range_m: int + roll_deg: int + type: SensorFov.SensorType + def __init__(self, type: _Optional[_Union[SensorFov.SensorType, str]] = ..., azimuth_deg: _Optional[int] = ..., range_m: _Optional[int] = ..., fov_horizontal_deg: _Optional[int] = ..., fov_vertical_deg: _Optional[int] = ..., elevation_deg: _Optional[int] = ..., roll_deg: _Optional[int] = ..., model: _Optional[str] = ...) -> None: ... - @property - def group(self) -> global___Group: - """ - The group for ATAK user - """ +class Status(_message.Message): + __slots__ = ["battery"] + BATTERY_FIELD_NUMBER: _ClassVar[int] + battery: int + def __init__(self, battery: _Optional[int] = ...) -> None: ... - @property - def status(self) -> global___Status: - """ - The status of the ATAK EUD - """ +class TAKEnvironment(_message.Message): + __slots__ = ["temperature_c_x10", "wind_direction_deg", "wind_speed_cm_s"] + TEMPERATURE_C_X10_FIELD_NUMBER: _ClassVar[int] + WIND_DIRECTION_DEG_FIELD_NUMBER: _ClassVar[int] + WIND_SPEED_CM_S_FIELD_NUMBER: _ClassVar[int] + temperature_c_x10: int + wind_direction_deg: int + wind_speed_cm_s: int + def __init__(self, temperature_c_x10: _Optional[int] = ..., wind_direction_deg: _Optional[int] = ..., wind_speed_cm_s: _Optional[int] = ...) -> None: ... - @property - def pli(self) -> global___PLI: - """ - TAK position report - """ +class TAKPacket(_message.Message): + __slots__ = ["chat", "contact", "detail", "group", "is_compressed", "pli", "status"] + CHAT_FIELD_NUMBER: _ClassVar[int] + CONTACT_FIELD_NUMBER: _ClassVar[int] + DETAIL_FIELD_NUMBER: _ClassVar[int] + GROUP_FIELD_NUMBER: _ClassVar[int] + IS_COMPRESSED_FIELD_NUMBER: _ClassVar[int] + PLI_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + chat: GeoChat + contact: Contact + detail: bytes + group: Group + is_compressed: bool + pli: PLI + status: Status + def __init__(self, is_compressed: bool = ..., contact: _Optional[_Union[Contact, _Mapping]] = ..., group: _Optional[_Union[Group, _Mapping]] = ..., status: _Optional[_Union[Status, _Mapping]] = ..., pli: _Optional[_Union[PLI, _Mapping]] = ..., chat: _Optional[_Union[GeoChat, _Mapping]] = ..., detail: _Optional[bytes] = ...) -> None: ... - @property - def chat(self) -> global___GeoChat: - """ - ATAK GeoChat message - """ +class TAKPacketV2(_message.Message): + __slots__ = ["aircraft", "alt_src", "altitude", "battery", "callsign", "casevac", "chat", "cot_type_id", "cot_type_str", "course", "device_callsign", "emergency", "endpoint", "environment", "geo_src", "how", "latitude_i", "longitude_i", "marker", "phone", "pli", "rab", "raw_detail", "remarks", "role", "route", "sensor_fov", "shape", "speed", "stale_seconds", "tak_device", "tak_os", "tak_platform", "tak_version", "taktalk", "taktalk_room", "task", "team", "uid"] + AIRCRAFT_FIELD_NUMBER: _ClassVar[int] + ALTITUDE_FIELD_NUMBER: _ClassVar[int] + ALT_SRC_FIELD_NUMBER: _ClassVar[int] + BATTERY_FIELD_NUMBER: _ClassVar[int] + CALLSIGN_FIELD_NUMBER: _ClassVar[int] + CASEVAC_FIELD_NUMBER: _ClassVar[int] + CHAT_FIELD_NUMBER: _ClassVar[int] + COT_TYPE_ID_FIELD_NUMBER: _ClassVar[int] + COT_TYPE_STR_FIELD_NUMBER: _ClassVar[int] + COURSE_FIELD_NUMBER: _ClassVar[int] + DEVICE_CALLSIGN_FIELD_NUMBER: _ClassVar[int] + EMERGENCY_FIELD_NUMBER: _ClassVar[int] + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_FIELD_NUMBER: _ClassVar[int] + GEO_SRC_FIELD_NUMBER: _ClassVar[int] + HOW_FIELD_NUMBER: _ClassVar[int] + LATITUDE_I_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_I_FIELD_NUMBER: _ClassVar[int] + MARKER_FIELD_NUMBER: _ClassVar[int] + PHONE_FIELD_NUMBER: _ClassVar[int] + PLI_FIELD_NUMBER: _ClassVar[int] + RAB_FIELD_NUMBER: _ClassVar[int] + RAW_DETAIL_FIELD_NUMBER: _ClassVar[int] + REMARKS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + ROUTE_FIELD_NUMBER: _ClassVar[int] + SENSOR_FOV_FIELD_NUMBER: _ClassVar[int] + SHAPE_FIELD_NUMBER: _ClassVar[int] + SPEED_FIELD_NUMBER: _ClassVar[int] + STALE_SECONDS_FIELD_NUMBER: _ClassVar[int] + TAKTALK_FIELD_NUMBER: _ClassVar[int] + TAKTALK_ROOM_FIELD_NUMBER: _ClassVar[int] + TAK_DEVICE_FIELD_NUMBER: _ClassVar[int] + TAK_OS_FIELD_NUMBER: _ClassVar[int] + TAK_PLATFORM_FIELD_NUMBER: _ClassVar[int] + TAK_VERSION_FIELD_NUMBER: _ClassVar[int] + TASK_FIELD_NUMBER: _ClassVar[int] + TEAM_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] + aircraft: AircraftTrack + alt_src: GeoPointSource + altitude: int + battery: int + callsign: str + casevac: CasevacReport + chat: GeoChat + cot_type_id: CotType + cot_type_str: str + course: int + device_callsign: str + emergency: EmergencyAlert + endpoint: str + environment: TAKEnvironment + geo_src: GeoPointSource + how: CotHow + latitude_i: int + longitude_i: int + marker: Marker + phone: str + pli: bool + rab: RangeAndBearing + raw_detail: bytes + remarks: str + role: MemberRole + route: Route + sensor_fov: SensorFov + shape: DrawnShape + speed: int + stale_seconds: int + tak_device: str + tak_os: str + tak_platform: str + tak_version: str + taktalk: TakTalkMessage + taktalk_room: TakTalkRoomData + task: TaskRequest + team: Team + uid: str + def __init__(self, cot_type_id: _Optional[_Union[CotType, str]] = ..., how: _Optional[_Union[CotHow, str]] = ..., callsign: _Optional[str] = ..., team: _Optional[_Union[Team, str]] = ..., role: _Optional[_Union[MemberRole, str]] = ..., latitude_i: _Optional[int] = ..., longitude_i: _Optional[int] = ..., altitude: _Optional[int] = ..., speed: _Optional[int] = ..., course: _Optional[int] = ..., battery: _Optional[int] = ..., geo_src: _Optional[_Union[GeoPointSource, str]] = ..., alt_src: _Optional[_Union[GeoPointSource, str]] = ..., uid: _Optional[str] = ..., device_callsign: _Optional[str] = ..., stale_seconds: _Optional[int] = ..., tak_version: _Optional[str] = ..., tak_device: _Optional[str] = ..., tak_platform: _Optional[str] = ..., tak_os: _Optional[str] = ..., endpoint: _Optional[str] = ..., phone: _Optional[str] = ..., cot_type_str: _Optional[str] = ..., remarks: _Optional[str] = ..., environment: _Optional[_Union[TAKEnvironment, _Mapping]] = ..., sensor_fov: _Optional[_Union[SensorFov, _Mapping]] = ..., pli: bool = ..., chat: _Optional[_Union[GeoChat, _Mapping]] = ..., aircraft: _Optional[_Union[AircraftTrack, _Mapping]] = ..., raw_detail: _Optional[bytes] = ..., shape: _Optional[_Union[DrawnShape, _Mapping]] = ..., marker: _Optional[_Union[Marker, _Mapping]] = ..., rab: _Optional[_Union[RangeAndBearing, _Mapping]] = ..., route: _Optional[_Union[Route, _Mapping]] = ..., casevac: _Optional[_Union[CasevacReport, _Mapping]] = ..., emergency: _Optional[_Union[EmergencyAlert, _Mapping]] = ..., task: _Optional[_Union[TaskRequest, _Mapping]] = ..., taktalk: _Optional[_Union[TakTalkMessage, _Mapping]] = ..., taktalk_room: _Optional[_Union[TakTalkRoomData, _Mapping]] = ...) -> None: ... - 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 = ..., - detail: builtins.bytes = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["chat", b"chat", "contact", b"contact", "detail", b"detail", "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", "detail", b"detail", "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", "detail"] | None: ... +class TakTalkMessage(_message.Message): + __slots__ = ["chatroom_id", "from_voice", "lang", "text"] + CHATROOM_ID_FIELD_NUMBER: _ClassVar[int] + FROM_VOICE_FIELD_NUMBER: _ClassVar[int] + LANG_FIELD_NUMBER: _ClassVar[int] + TEXT_FIELD_NUMBER: _ClassVar[int] + chatroom_id: str + from_voice: bool + lang: str + text: str + def __init__(self, text: _Optional[str] = ..., chatroom_id: _Optional[str] = ..., lang: _Optional[str] = ..., from_voice: bool = ...) -> None: ... -global___TAKPacket = TAKPacket +class TakTalkRoomData(_message.Message): + __slots__ = ["participants", "room_id", "room_name", "sender_callsign"] + PARTICIPANTS_FIELD_NUMBER: _ClassVar[int] + ROOM_ID_FIELD_NUMBER: _ClassVar[int] + ROOM_NAME_FIELD_NUMBER: _ClassVar[int] + SENDER_CALLSIGN_FIELD_NUMBER: _ClassVar[int] + participants: _containers.RepeatedScalarFieldContainer[str] + room_id: str + room_name: str + sender_callsign: str + def __init__(self, sender_callsign: _Optional[str] = ..., room_id: _Optional[str] = ..., room_name: _Optional[str] = ..., participants: _Optional[_Iterable[str]] = ...) -> None: ... -@typing.final -class GeoChat(google.protobuf.message.Message): - """ - ATAK GeoChat message - """ +class TaskRequest(_message.Message): + __slots__ = ["assignee_uid", "note", "priority", "status", "target_uid", "task_type"] + class Priority(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ASSIGNEE_UID_FIELD_NUMBER: _ClassVar[int] + NOTE_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + Priority_Critical: TaskRequest.Priority + Priority_High: TaskRequest.Priority + Priority_Low: TaskRequest.Priority + Priority_Normal: TaskRequest.Priority + Priority_Unspecified: TaskRequest.Priority + STATUS_FIELD_NUMBER: _ClassVar[int] + Status_Acknowledged: TaskRequest.Status + Status_Cancelled: TaskRequest.Status + Status_Completed: TaskRequest.Status + Status_InProgress: TaskRequest.Status + Status_Pending: TaskRequest.Status + Status_Unspecified: TaskRequest.Status + TARGET_UID_FIELD_NUMBER: _ClassVar[int] + TASK_TYPE_FIELD_NUMBER: _ClassVar[int] + assignee_uid: str + note: str + priority: TaskRequest.Priority + status: TaskRequest.Status + target_uid: str + task_type: str + def __init__(self, task_type: _Optional[str] = ..., target_uid: _Optional[str] = ..., assignee_uid: _Optional[str] = ..., priority: _Optional[_Union[TaskRequest.Priority, str]] = ..., status: _Optional[_Union[TaskRequest.Status, str]] = ..., note: _Optional[str] = ...) -> None: ... - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class ZMistEntry(_message.Message): + __slots__ = ["i", "m", "s", "t", "title", "z"] + I_FIELD_NUMBER: _ClassVar[int] + M_FIELD_NUMBER: _ClassVar[int] + S_FIELD_NUMBER: _ClassVar[int] + TITLE_FIELD_NUMBER: _ClassVar[int] + T_FIELD_NUMBER: _ClassVar[int] + Z_FIELD_NUMBER: _ClassVar[int] + i: str + m: str + s: str + t: str + title: str + z: str + def __init__(self, title: _Optional[str] = ..., z: _Optional[str] = ..., m: _Optional[str] = ..., i: _Optional[str] = ..., s: _Optional[str] = ..., t: _Optional[str] = ...) -> None: ... - 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: ... +class Team(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -global___GeoChat = GeoChat +class MemberRole(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -@typing.final -class Group(google.protobuf.message.Message): - """ - ATAK Group - <__group role='Team Member' name='Cyan'/> - """ +class CotHow(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class CotType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] - 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 +class GeoPointSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/cannedmessages_pb2.py b/meshtastic/protobuf/cannedmessages_pb2.py index 569fe14..d97ee29 100644 --- a/meshtastic/protobuf/cannedmessages_pb2.py +++ b/meshtastic/protobuf/cannedmessages_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,12 +15,12 @@ _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(\tBo\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\031CannedMessageConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_CANNEDMESSAGEMODULECONFIG']._serialized_start=65 - _globals['_CANNEDMESSAGEMODULECONFIG']._serialized_end=110 + _CANNEDMESSAGEMODULECONFIG._serialized_start=65 + _CANNEDMESSAGEMODULECONFIG._serialized_end=110 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/cannedmessages_pb2.pyi b/meshtastic/protobuf/cannedmessages_pb2.pyi index 33c5e2b..dc34b8a 100644 --- a/meshtastic/protobuf/cannedmessages_pb2.pyi +++ b/meshtastic/protobuf/cannedmessages_pb2.pyi @@ -1,33 +1,11 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 +class CannedMessageModuleConfig(_message.Message): + __slots__ = ["messages"] + MESSAGES_FIELD_NUMBER: _ClassVar[int] + messages: str + def __init__(self, messages: _Optional[str] = ...) -> None: ... diff --git a/meshtastic/protobuf/channel_pb2.py b/meshtastic/protobuf/channel_pb2.py index 94a5f00..b93271e 100644 --- a/meshtastic/protobuf/channel_pb2.py +++ b/meshtastic/protobuf/channel_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,20 +15,20 @@ _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\">\n\x0eModuleSettings\x12\x1a\n\x12position_precision\x18\x01 \x01(\r\x12\x10\n\x08is_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\x63\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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=316 - _globals['_CHANNEL']._serialized_start=319 - _globals['_CHANNEL']._serialized_end=498 - _globals['_CHANNEL_ROLE']._serialized_start=450 - _globals['_CHANNEL_ROLE']._serialized_end=498 + _CHANNELSETTINGS._serialized_start=59 + _CHANNELSETTINGS._serialized_end=252 + _MODULESETTINGS._serialized_start=254 + _MODULESETTINGS._serialized_end=316 + _CHANNEL._serialized_start=319 + _CHANNEL._serialized_end=498 + _CHANNEL_ROLE._serialized_start=450 + _CHANNEL_ROLE._serialized_end=498 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/channel_pb2.pyi b/meshtastic/protobuf/channel_pb2.pyi index 6e2be59..6adba06 100644 --- a/meshtastic/protobuf/channel_pb2.pyi +++ b/meshtastic/protobuf/channel_pb2.pyi @@ -1,234 +1,47 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +DESCRIPTOR: _descriptor.FileDescriptor -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class Channel(_message.Message): + __slots__ = ["index", "role", "settings"] + class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + DISABLED: Channel.Role + INDEX_FIELD_NUMBER: _ClassVar[int] + PRIMARY: Channel.Role + ROLE_FIELD_NUMBER: _ClassVar[int] + SECONDARY: Channel.Role + SETTINGS_FIELD_NUMBER: _ClassVar[int] + index: int + role: Channel.Role + settings: ChannelSettings + def __init__(self, index: _Optional[int] = ..., settings: _Optional[_Union[ChannelSettings, _Mapping]] = ..., role: _Optional[_Union[Channel.Role, str]] = ...) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class ChannelSettings(_message.Message): + __slots__ = ["channel_num", "downlink_enabled", "id", "module_settings", "name", "psk", "uplink_enabled"] + CHANNEL_NUM_FIELD_NUMBER: _ClassVar[int] + DOWNLINK_ENABLED_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + MODULE_SETTINGS_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + PSK_FIELD_NUMBER: _ClassVar[int] + UPLINK_ENABLED_FIELD_NUMBER: _ClassVar[int] + channel_num: int + downlink_enabled: bool + id: int + module_settings: ModuleSettings + name: str + psk: bytes + uplink_enabled: bool + def __init__(self, channel_num: _Optional[int] = ..., psk: _Optional[bytes] = ..., name: _Optional[str] = ..., id: _Optional[int] = ..., uplink_enabled: bool = ..., downlink_enabled: bool = ..., module_settings: _Optional[_Union[ModuleSettings, _Mapping]] = ...) -> None: ... -@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_MUTED_FIELD_NUMBER: builtins.int - position_precision: builtins.int - """ - Bits of precision for the location sent in position packets. - """ - is_muted: builtins.bool - """ - Controls whether or not the client / device 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_muted: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["is_muted", b"is_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 +class ModuleSettings(_message.Message): + __slots__ = ["is_muted", "position_precision"] + IS_MUTED_FIELD_NUMBER: _ClassVar[int] + POSITION_PRECISION_FIELD_NUMBER: _ClassVar[int] + is_muted: bool + position_precision: int + def __init__(self, position_precision: _Optional[int] = ..., is_muted: bool = ...) -> None: ... diff --git a/meshtastic/protobuf/clientonly_pb2.py b/meshtastic/protobuf/clientonly_pb2.py index 7245538..923009f 100644 --- a/meshtastic/protobuf/clientonly_pb2.py +++ b/meshtastic/protobuf/clientonly_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -17,12 +17,12 @@ from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/clientonly.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\"\xc4\x03\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\x12:\n\x0e\x66ixed_position\x18\x06 \x01(\x0b\x32\x1d.meshtastic.protobuf.PositionH\x05\x88\x01\x01\x12\x15\n\x08ringtone\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1c\n\x0f\x63\x61nned_messages\x18\x08 \x01(\tH\x07\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_configB\x11\n\x0f_fixed_positionB\x0b\n\t_ringtoneB\x12\n\x10_canned_messagesBf\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\020ClientOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_DEVICEPROFILE']._serialized_start=131 - _globals['_DEVICEPROFILE']._serialized_end=583 + _DEVICEPROFILE._serialized_start=131 + _DEVICEPROFILE._serialized_end=583 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/clientonly_pb2.pyi b/meshtastic/protobuf/clientonly_pb2.pyi index 78725be..cf9f5a6 100644 --- a/meshtastic/protobuf/clientonly_pb2.pyi +++ b/meshtastic/protobuf/clientonly_pb2.pyi @@ -1,101 +1,27 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from meshtastic.protobuf import localonly_pb2 as _localonly_pb2 +from meshtastic.protobuf import mesh_pb2 as _mesh_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import meshtastic.protobuf.localonly_pb2 -import meshtastic.protobuf.mesh_pb2 -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 - FIXED_POSITION_FIELD_NUMBER: builtins.int - RINGTONE_FIELD_NUMBER: builtins.int - CANNED_MESSAGES_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 - """ - ringtone: builtins.str - """ - Ringtone for ExternalNotification - """ - canned_messages: builtins.str - """ - Predefined messages for CannedMessage - """ - @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 - """ - - @property - def fixed_position(self) -> meshtastic.protobuf.mesh_pb2.Position: - """ - Fixed position data - """ - - 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 = ..., - fixed_position: meshtastic.protobuf.mesh_pb2.Position | None = ..., - ringtone: builtins.str | None = ..., - canned_messages: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_canned_messages", b"_canned_messages", "_channel_url", b"_channel_url", "_config", b"_config", "_fixed_position", b"_fixed_position", "_long_name", b"_long_name", "_module_config", b"_module_config", "_ringtone", b"_ringtone", "_short_name", b"_short_name", "canned_messages", b"canned_messages", "channel_url", b"channel_url", "config", b"config", "fixed_position", b"fixed_position", "long_name", b"long_name", "module_config", b"module_config", "ringtone", b"ringtone", "short_name", b"short_name"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_canned_messages", b"_canned_messages", "_channel_url", b"_channel_url", "_config", b"_config", "_fixed_position", b"_fixed_position", "_long_name", b"_long_name", "_module_config", b"_module_config", "_ringtone", b"_ringtone", "_short_name", b"_short_name", "canned_messages", b"canned_messages", "channel_url", b"channel_url", "config", b"config", "fixed_position", b"fixed_position", "long_name", b"long_name", "module_config", b"module_config", "ringtone", b"ringtone", "short_name", b"short_name"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_canned_messages", b"_canned_messages"]) -> typing.Literal["canned_messages"] | 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["_fixed_position", b"_fixed_position"]) -> typing.Literal["fixed_position"] | 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["_ringtone", b"_ringtone"]) -> typing.Literal["ringtone"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_short_name", b"_short_name"]) -> typing.Literal["short_name"] | None: ... - -global___DeviceProfile = DeviceProfile +class DeviceProfile(_message.Message): + __slots__ = ["canned_messages", "channel_url", "config", "fixed_position", "long_name", "module_config", "ringtone", "short_name"] + CANNED_MESSAGES_FIELD_NUMBER: _ClassVar[int] + CHANNEL_URL_FIELD_NUMBER: _ClassVar[int] + CONFIG_FIELD_NUMBER: _ClassVar[int] + FIXED_POSITION_FIELD_NUMBER: _ClassVar[int] + LONG_NAME_FIELD_NUMBER: _ClassVar[int] + MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + RINGTONE_FIELD_NUMBER: _ClassVar[int] + SHORT_NAME_FIELD_NUMBER: _ClassVar[int] + canned_messages: str + channel_url: str + config: _localonly_pb2.LocalConfig + fixed_position: _mesh_pb2.Position + long_name: str + module_config: _localonly_pb2.LocalModuleConfig + ringtone: str + short_name: str + def __init__(self, long_name: _Optional[str] = ..., short_name: _Optional[str] = ..., channel_url: _Optional[str] = ..., config: _Optional[_Union[_localonly_pb2.LocalConfig, _Mapping]] = ..., module_config: _Optional[_Union[_localonly_pb2.LocalModuleConfig, _Mapping]] = ..., fixed_position: _Optional[_Union[_mesh_pb2.Position, _Mapping]] = ..., ringtone: _Optional[str] = ..., canned_messages: _Optional[str] = ...) -> None: ... diff --git a/meshtastic/protobuf/config_pb2.py b/meshtastic/protobuf/config_pb2.py index 85efc94..bdc06e6 100644 --- a/meshtastic/protobuf/config_pb2.py +++ b/meshtastic/protobuf/config_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -14,12 +14,12 @@ _sym_db = _symbol_database.Default() from meshtastic.protobuf import device_ui_pb2 as meshtastic_dot_protobuf_dot_device__ui__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/device_ui.proto\"\xe5*\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\x12>\n\x08security\x18\x08 \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfigH\x00\x12\x42\n\nsessionkey\x18\t \x01(\x0b\x32,.meshtastic.protobuf.Config.SessionkeyConfigH\x00\x12\x38\n\tdevice_ui\x18\n \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x1a\x91\x07\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x1a\n\x0eserial_enabled\x18\x02 \x01(\x08\x42\x02\x18\x01\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\x16\n\nis_managed\x18\t \x01(\x08\x42\x02\x18\x01\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\x12H\n\x0b\x62uzzer_mode\x18\r \x01(\x0e\x32\x33.meshtastic.protobuf.Config.DeviceConfig.BuzzerMode\"\xd4\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\x15\n\rROUTER_CLIENT\x10\x03\x1a\x02\x08\x01\x12\x10\n\x08REPEATER\x10\x04\x1a\x02\x08\x01\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\x12\x0f\n\x0bROUTER_LATE\x10\x0b\x12\x0f\n\x0b\x43LIENT_BASE\x10\x0c\"s\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\x12\x08\n\x04NONE\x10\x04\x12\x16\n\x12\x43ORE_PORTNUMS_ONLY\x10\x05\"i\n\nBuzzerMode\x12\x0f\n\x0b\x41LL_ENABLED\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x16\n\x12NOTIFICATIONS_ONLY\x10\x02\x12\x0f\n\x0bSYSTEM_ONLY\x10\x03\x12\x13\n\x0f\x44IRECT_MSG_ONLY\x10\x04\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\x84\x02\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\x12\x18\n\x10powermon_enables\x18 \x01(\x04\x1a\xf7\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\x12\x19\n\x11\x65nabled_protocols\x18\n \x01(\r\x12\x14\n\x0cipv6_enabled\x18\x0b \x01(\x08\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\"4\n\rProtocolFlags\x12\x10\n\x0cNO_BROADCAST\x10\x00\x12\x11\n\rUDP_BROADCAST\x10\x01\x1a\xb6\x08\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12_\n\ngps_format\x18\x02 \x01(\x0e\x32G.meshtastic.protobuf.Config.DisplayConfig.DeprecatedGpsCoordinateFormatB\x02\x18\x01\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x1d\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x42\x02\x18\x01\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\x12Y\n\x13\x63ompass_orientation\x18\x0b \x01(\x0e\x32<.meshtastic.protobuf.Config.DisplayConfig.CompassOrientation\x12\x15\n\ruse_12h_clock\x18\x0c \x01(\x08\x12\x1a\n\x12use_long_node_name\x18\r \x01(\x08\"+\n\x1d\x44\x65precatedGpsCoordinateFormat\x12\n\n\x06UNUSED\x10\x00\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"f\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\x12\x17\n\x13OLED_SH1107_128_128\x10\x04\"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\"\xba\x01\n\x12\x43ompassOrientation\x12\r\n\tDEGREES_0\x10\x00\x12\x0e\n\nDEGREES_90\x10\x01\x12\x0f\n\x0b\x44\x45GREES_180\x10\x02\x12\x0f\n\x0b\x44\x45GREES_270\x10\x03\x12\x16\n\x12\x44\x45GREES_0_INVERTED\x10\x04\x12\x17\n\x13\x44\x45GREES_90_INVERTED\x10\x05\x12\x18\n\x14\x44\x45GREES_180_INVERTED\x10\x06\x12\x18\n\x14\x44\x45GREES_270_INVERTED\x10\x07\x1a\xec\x07\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\x0fpa_fan_disabled\x18\x0f \x01(\x08\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\x12\x19\n\x11\x63onfig_ok_to_mqtt\x18i \x01(\x08\"\xae\x02\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\x12\n\n\x06PH_433\x10\x13\x12\n\n\x06PH_868\x10\x14\x12\n\n\x06PH_915\x10\x15\x12\x0b\n\x07\x41NZ_433\x10\x16\x12\n\n\x06KZ_433\x10\x17\x12\n\n\x06KZ_863\x10\x18\x12\n\n\x06NP_865\x10\x19\x12\n\n\x06\x42R_902\x10\x1a\"\xa9\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x16\n\x0eVERY_LONG_SLOW\x10\x02\x1a\x02\x08\x01\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\x12\x0f\n\x0bSHORT_TURBO\x10\x08\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\x1a\xb6\x01\n\x0eSecurityConfig\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x13\n\x0bprivate_key\x18\x02 \x01(\x0c\x12\x11\n\tadmin_key\x18\x03 \x03(\x0c\x12\x12\n\nis_managed\x18\x04 \x01(\x08\x12\x16\n\x0eserial_enabled\x18\x05 \x01(\x08\x12\x1d\n\x15\x64\x65\x62ug_log_api_enabled\x18\x06 \x01(\x08\x12\x1d\n\x15\x61\x64min_channel_enabled\x18\x08 \x01(\x08\x1a\x12\n\x10SessionkeyConfigB\x11\n\x0fpayload_variantBb\n\x14org.meshtastic.protoB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/device_ui.proto\"\xeb-\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\x12>\n\x08security\x18\x08 \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfigH\x00\x12\x42\n\nsessionkey\x18\t \x01(\x0b\x32,.meshtastic.protobuf.Config.SessionkeyConfigH\x00\x12\x38\n\tdevice_ui\x18\n \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x1a\x91\x07\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x1a\n\x0eserial_enabled\x18\x02 \x01(\x08\x42\x02\x18\x01\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\x16\n\nis_managed\x18\t \x01(\x08\x42\x02\x18\x01\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\x12H\n\x0b\x62uzzer_mode\x18\r \x01(\x0e\x32\x33.meshtastic.protobuf.Config.DeviceConfig.BuzzerMode\"\xd4\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\x15\n\rROUTER_CLIENT\x10\x03\x1a\x02\x08\x01\x12\x10\n\x08REPEATER\x10\x04\x1a\x02\x08\x01\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\x12\x0f\n\x0bROUTER_LATE\x10\x0b\x12\x0f\n\x0b\x43LIENT_BASE\x10\x0c\"s\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\x12\x08\n\x04NONE\x10\x04\x12\x16\n\x12\x43ORE_PORTNUMS_ONLY\x10\x05\"i\n\nBuzzerMode\x12\x0f\n\x0b\x41LL_ENABLED\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x16\n\x12NOTIFICATIONS_ONLY\x10\x02\x12\x0f\n\x0bSYSTEM_ONLY\x10\x03\x12\x13\n\x0f\x44IRECT_MSG_ONLY\x10\x04\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\x84\x02\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\x12\x18\n\x10powermon_enables\x18 \x01(\x04\x1a\xf7\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\x12\x19\n\x11\x65nabled_protocols\x18\n \x01(\r\x12\x14\n\x0cipv6_enabled\x18\x0b \x01(\x08\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\"4\n\rProtocolFlags\x12\x10\n\x0cNO_BROADCAST\x10\x00\x12\x11\n\rUDP_BROADCAST\x10\x01\x1a\xef\x08\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12_\n\ngps_format\x18\x02 \x01(\x0e\x32G.meshtastic.protobuf.Config.DisplayConfig.DeprecatedGpsCoordinateFormatB\x02\x18\x01\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x1d\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x42\x02\x18\x01\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\x12Y\n\x13\x63ompass_orientation\x18\x0b \x01(\x0e\x32<.meshtastic.protobuf.Config.DisplayConfig.CompassOrientation\x12\x15\n\ruse_12h_clock\x18\x0c \x01(\x08\x12\x1a\n\x12use_long_node_name\x18\r \x01(\x08\x12\x1e\n\x16\x65nable_message_bubbles\x18\x0e \x01(\x08\"+\n\x1d\x44\x65precatedGpsCoordinateFormat\x12\n\n\x06UNUSED\x10\x00\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"\x7f\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\x12\x17\n\x13OLED_SH1107_128_128\x10\x04\x12\x17\n\x13OLED_SH1107_ROTATED\x10\x05\"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\"\xba\x01\n\x12\x43ompassOrientation\x12\r\n\tDEGREES_0\x10\x00\x12\x0e\n\nDEGREES_90\x10\x01\x12\x0f\n\x0b\x44\x45GREES_180\x10\x02\x12\x0f\n\x0b\x44\x45GREES_270\x10\x03\x12\x16\n\x12\x44\x45GREES_0_INVERTED\x10\x04\x12\x17\n\x13\x44\x45GREES_90_INVERTED\x10\x05\x12\x18\n\x14\x44\x45GREES_180_INVERTED\x10\x06\x12\x18\n\x14\x44\x45GREES_270_INVERTED\x10\x07\x1a\xb9\n\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\x0fpa_fan_disabled\x18\x0f \x01(\x08\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\x12\x19\n\x11\x63onfig_ok_to_mqtt\x18i \x01(\x08\x12I\n\x0c\x66\x65m_lna_mode\x18j \x01(\x0e\x32\x33.meshtastic.protobuf.Config.LoRaConfig.FEM_LNA_Mode\x12\x17\n\x0fserial_hal_only\x18k \x01(\x08\"\x87\x03\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\x12\n\n\x06PH_433\x10\x13\x12\n\n\x06PH_868\x10\x14\x12\n\n\x06PH_915\x10\x15\x12\x0b\n\x07\x41NZ_433\x10\x16\x12\n\n\x06KZ_433\x10\x17\x12\n\n\x06KZ_863\x10\x18\x12\n\n\x06NP_865\x10\x19\x12\n\n\x06\x42R_902\x10\x1a\x12\x0b\n\x07ITU1_2M\x10\x1b\x12\x0b\n\x07ITU2_2M\x10\x1c\x12\n\n\x06\x45U_866\x10\x1d\x12\n\n\x06\x45U_874\x10\x1e\x12\n\n\x06\x45U_917\x10\x1f\x12\x0c\n\x08\x45U_N_868\x10 \x12\x0b\n\x07ITU3_2M\x10!\"\xfd\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\x11\n\tLONG_SLOW\x10\x01\x1a\x02\x08\x01\x12\x16\n\x0eVERY_LONG_SLOW\x10\x02\x1a\x02\x08\x01\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\x12\x0f\n\x0bSHORT_TURBO\x10\x08\x12\x0e\n\nLONG_TURBO\x10\t\x12\r\n\tLITE_FAST\x10\n\x12\r\n\tLITE_SLOW\x10\x0b\x12\x0f\n\x0bNARROW_FAST\x10\x0c\x12\x0f\n\x0bNARROW_SLOW\x10\r\":\n\x0c\x46\x45M_LNA_Mode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\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\x1a\xb6\x01\n\x0eSecurityConfig\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x13\n\x0bprivate_key\x18\x02 \x01(\x0c\x12\x11\n\tadmin_key\x18\x03 \x03(\x0c\x12\x12\n\nis_managed\x18\x04 \x01(\x08\x12\x16\n\x0eserial_enabled\x18\x05 \x01(\x08\x12\x1d\n\x15\x64\x65\x62ug_log_api_enabled\x18\x06 \x01(\x08\x12\x1d\n\x15\x61\x64min_channel_enabled\x18\x08 \x01(\x08\x1a\x12\n\x10SessionkeyConfigB\x11\n\x0fpayload_variantBb\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\014ConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' _CONFIG_DEVICECONFIG_ROLE.values_by_name["ROUTER_CLIENT"]._options = None @@ -38,58 +38,62 @@ if _descriptor._USE_C_DESCRIPTORS == False: _CONFIG_DISPLAYCONFIG.fields_by_name['gps_format']._serialized_options = b'\030\001' _CONFIG_DISPLAYCONFIG.fields_by_name['compass_north_top']._options = None _CONFIG_DISPLAYCONFIG.fields_by_name['compass_north_top']._serialized_options = b'\030\001' + _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["LONG_SLOW"]._options = None + _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["LONG_SLOW"]._serialized_options = b'\010\001' _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["VERY_LONG_SLOW"]._options = None _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["VERY_LONG_SLOW"]._serialized_options = b'\010\001' - _globals['_CONFIG']._serialized_start=95 - _globals['_CONFIG']._serialized_end=5572 - _globals['_CONFIG_DEVICECONFIG']._serialized_start=724 - _globals['_CONFIG_DEVICECONFIG']._serialized_end=1637 - _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_start=1201 - _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_end=1413 - _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_start=1415 - _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_end=1530 - _globals['_CONFIG_DEVICECONFIG_BUZZERMODE']._serialized_start=1532 - _globals['_CONFIG_DEVICECONFIG_BUZZERMODE']._serialized_end=1637 - _globals['_CONFIG_POSITIONCONFIG']._serialized_start=1640 - _globals['_CONFIG_POSITIONCONFIG']._serialized_end=2306 - _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_start=2080 - _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_end=2251 - _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_start=2253 - _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_end=2306 - _globals['_CONFIG_POWERCONFIG']._serialized_start=2309 - _globals['_CONFIG_POWERCONFIG']._serialized_end=2569 - _globals['_CONFIG_NETWORKCONFIG']._serialized_start=2572 - _globals['_CONFIG_NETWORKCONFIG']._serialized_end=3075 - _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_start=2914 - _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_end=2984 - _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_start=2986 - _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_end=3021 - _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_start=3023 - _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_end=3075 - _globals['_CONFIG_DISPLAYCONFIG']._serialized_start=3078 - _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=4156 - _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_start=3711 - _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_end=3754 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_start=3756 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_end=3796 - _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_start=3798 - _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3900 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3902 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=3967 - _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=3970 - _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=4156 - _globals['_CONFIG_LORACONFIG']._serialized_start=4159 - _globals['_CONFIG_LORACONFIG']._serialized_end=5163 - _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4689 - _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=4991 - _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=4994 - _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=5163 - _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=5166 - _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5348 - _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=5292 - _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5348 - _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5351 - _globals['_CONFIG_SECURITYCONFIG']._serialized_end=5533 - _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=5535 - _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_end=5553 + _CONFIG._serialized_start=95 + _CONFIG._serialized_end=5962 + _CONFIG_DEVICECONFIG._serialized_start=724 + _CONFIG_DEVICECONFIG._serialized_end=1637 + _CONFIG_DEVICECONFIG_ROLE._serialized_start=1201 + _CONFIG_DEVICECONFIG_ROLE._serialized_end=1413 + _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_start=1415 + _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_end=1530 + _CONFIG_DEVICECONFIG_BUZZERMODE._serialized_start=1532 + _CONFIG_DEVICECONFIG_BUZZERMODE._serialized_end=1637 + _CONFIG_POSITIONCONFIG._serialized_start=1640 + _CONFIG_POSITIONCONFIG._serialized_end=2306 + _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_start=2080 + _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_end=2251 + _CONFIG_POSITIONCONFIG_GPSMODE._serialized_start=2253 + _CONFIG_POSITIONCONFIG_GPSMODE._serialized_end=2306 + _CONFIG_POWERCONFIG._serialized_start=2309 + _CONFIG_POWERCONFIG._serialized_end=2569 + _CONFIG_NETWORKCONFIG._serialized_start=2572 + _CONFIG_NETWORKCONFIG._serialized_end=3075 + _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_start=2914 + _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_end=2984 + _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_start=2986 + _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_end=3021 + _CONFIG_NETWORKCONFIG_PROTOCOLFLAGS._serialized_start=3023 + _CONFIG_NETWORKCONFIG_PROTOCOLFLAGS._serialized_end=3075 + _CONFIG_DISPLAYCONFIG._serialized_start=3078 + _CONFIG_DISPLAYCONFIG._serialized_end=4213 + _CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT._serialized_start=3743 + _CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT._serialized_end=3786 + _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_start=3788 + _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_end=3828 + _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_start=3830 + _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_end=3957 + _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_start=3959 + _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_end=4024 + _CONFIG_DISPLAYCONFIG_COMPASSORIENTATION._serialized_start=4027 + _CONFIG_DISPLAYCONFIG_COMPASSORIENTATION._serialized_end=4213 + _CONFIG_LORACONFIG._serialized_start=4216 + _CONFIG_LORACONFIG._serialized_end=5553 + _CONFIG_LORACONFIG_REGIONCODE._serialized_start=4846 + _CONFIG_LORACONFIG_REGIONCODE._serialized_end=5237 + _CONFIG_LORACONFIG_MODEMPRESET._serialized_start=5240 + _CONFIG_LORACONFIG_MODEMPRESET._serialized_end=5493 + _CONFIG_LORACONFIG_FEM_LNA_MODE._serialized_start=5495 + _CONFIG_LORACONFIG_FEM_LNA_MODE._serialized_end=5553 + _CONFIG_BLUETOOTHCONFIG._serialized_start=5556 + _CONFIG_BLUETOOTHCONFIG._serialized_end=5738 + _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_start=5682 + _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_end=5738 + _CONFIG_SECURITYCONFIG._serialized_start=5741 + _CONFIG_SECURITYCONFIG._serialized_end=5923 + _CONFIG_SESSIONKEYCONFIG._serialized_start=5925 + _CONFIG_SESSIONKEYCONFIG._serialized_end=5943 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/config_pb2.pyi b/meshtastic/protobuf/config_pb2.pyi index e504e2f..284589d 100644 --- a/meshtastic/protobuf/config_pb2.pyi +++ b/meshtastic/protobuf/config_pb2.pyi @@ -1,1895 +1,395 @@ -""" -@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.device_ui_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 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. - Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead. - """ - 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. - Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain. - """ - 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. - """ - ROUTER_LATE: Config.DeviceConfig._Role.ValueType # 11 - """ - Description: Will always rebroadcast packets, but will do so after all other modes. - Technical Details: Used for router nodes that are intended to provide additional coverage - in areas not already covered by other routers, or to bridge around problematic terrain, - but should not be given priority over other routers in order to avoid unnecessaraily - consuming hops. - """ - CLIENT_BASE: Config.DeviceConfig._Role.ValueType # 12 - """ - Description: Treats packets from or to favorited nodes as ROUTER, and all other packets as CLIENT. - Technical Details: Used for stronger attic/roof nodes to distribute messages more widely - from weaker, indoor, or less-well-positioned nodes. Recommended for users with multiple nodes - where one CLIENT_BASE acts as a more powerful base station, such as an attic/roof node. - """ - - 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. - Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead. - """ - 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. - Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain. - """ - 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. - """ - ROUTER_LATE: Config.DeviceConfig.Role.ValueType # 11 - """ - Description: Will always rebroadcast packets, but will do so after all other modes. - Technical Details: Used for router nodes that are intended to provide additional coverage - in areas not already covered by other routers, or to bridge around problematic terrain, - but should not be given priority over other routers in order to avoid unnecessaraily - consuming hops. - """ - CLIENT_BASE: Config.DeviceConfig.Role.ValueType # 12 - """ - Description: Treats packets from or to favorited nodes as ROUTER, and all other packets as CLIENT. - Technical Details: Used for stronger attic/roof nodes to distribute messages more widely - from weaker, indoor, or less-well-positioned nodes. Recommended for users with multiple nodes - where one CLIENT_BASE acts as a more powerful base station, such as an attic/roof node. - """ - - 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) - """ - NONE: Config.DeviceConfig._RebroadcastMode.ValueType # 4 - """ - Only permitted for SENSOR, TRACKER and TAK_TRACKER roles, this will inhibit all rebroadcasts, not unlike CLIENT_MUTE role. - """ - CORE_PORTNUMS_ONLY: Config.DeviceConfig._RebroadcastMode.ValueType # 5 - """ - Ignores packets from non-standard portnums such as: TAK, RangeTest, PaxCounter, etc. - Only rebroadcasts packets with standard portnums: NodeInfo, Text, Position, Telemetry, and Routing. - """ - - 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) - """ - NONE: Config.DeviceConfig.RebroadcastMode.ValueType # 4 - """ - Only permitted for SENSOR, TRACKER and TAK_TRACKER roles, this will inhibit all rebroadcasts, not unlike CLIENT_MUTE role. - """ - CORE_PORTNUMS_ONLY: Config.DeviceConfig.RebroadcastMode.ValueType # 5 - """ - Ignores packets from non-standard portnums such as: TAK, RangeTest, PaxCounter, etc. - Only rebroadcasts packets with standard portnums: NodeInfo, Text, Position, Telemetry, and Routing. - """ - - class _BuzzerMode: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _BuzzerModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DeviceConfig._BuzzerMode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ALL_ENABLED: Config.DeviceConfig._BuzzerMode.ValueType # 0 - """ - Default behavior. - Buzzer is enabled for all audio feedback including button presses and alerts. - """ - DISABLED: Config.DeviceConfig._BuzzerMode.ValueType # 1 - """ - Disabled. - All buzzer audio feedback is disabled. - """ - NOTIFICATIONS_ONLY: Config.DeviceConfig._BuzzerMode.ValueType # 2 - """ - Notifications Only. - Buzzer is enabled only for notifications and alerts, but not for button presses. - External notification config determines the specifics of the notification behavior. - """ - SYSTEM_ONLY: Config.DeviceConfig._BuzzerMode.ValueType # 3 - """ - Non-notification system buzzer tones only. - Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts. - """ - DIRECT_MSG_ONLY: Config.DeviceConfig._BuzzerMode.ValueType # 4 - """ - Direct Message notifications only. - Buzzer is enabled only for direct messages and alerts, but not for button presses. - External notification config determines the specifics of the notification behavior. - """ - - class BuzzerMode(_BuzzerMode, metaclass=_BuzzerModeEnumTypeWrapper): - """ - Defines buzzer behavior for audio feedback - """ - - ALL_ENABLED: Config.DeviceConfig.BuzzerMode.ValueType # 0 - """ - Default behavior. - Buzzer is enabled for all audio feedback including button presses and alerts. - """ - DISABLED: Config.DeviceConfig.BuzzerMode.ValueType # 1 - """ - Disabled. - All buzzer audio feedback is disabled. - """ - NOTIFICATIONS_ONLY: Config.DeviceConfig.BuzzerMode.ValueType # 2 - """ - Notifications Only. - Buzzer is enabled only for notifications and alerts, but not for button presses. - External notification config determines the specifics of the notification behavior. - """ - SYSTEM_ONLY: Config.DeviceConfig.BuzzerMode.ValueType # 3 - """ - Non-notification system buzzer tones only. - Buzzer is enabled only for non-notification tones such as button presses, startup, shutdown, but not for alerts. - """ - DIRECT_MSG_ONLY: Config.DeviceConfig.BuzzerMode.ValueType # 4 - """ - Direct Message notifications only. - Buzzer is enabled only for direct messages and alerts, but not for button presses. - External notification config determines the specifics of the notification behavior. - """ - - ROLE_FIELD_NUMBER: builtins.int - SERIAL_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 - BUZZER_MODE_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 - Moved to SecurityConfig - """ - 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 - Moved to SecurityConfig - """ - 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 - """ - buzzer_mode: global___Config.DeviceConfig.BuzzerMode.ValueType - """ - Controls buzzer behavior for audio feedback - Defaults to ENABLED - """ - def __init__( - self, - *, - role: global___Config.DeviceConfig.Role.ValueType = ..., - serial_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 = ..., - buzzer_mode: global___Config.DeviceConfig.BuzzerMode.ValueType = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["button_gpio", b"button_gpio", "buzzer_gpio", b"buzzer_gpio", "buzzer_mode", b"buzzer_mode", "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 - POWERMON_ENABLES_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 - """ - powermon_enables: builtins.int - """ - If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled. - Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options. - """ - 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 = ..., - powermon_enables: 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", "powermon_enables", b"powermon_enables", "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 - """ - - class _ProtocolFlags: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _ProtocolFlagsEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.NetworkConfig._ProtocolFlags.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - NO_BROADCAST: Config.NetworkConfig._ProtocolFlags.ValueType # 0 - """ - Do not broadcast packets over any network protocol - """ - UDP_BROADCAST: Config.NetworkConfig._ProtocolFlags.ValueType # 1 - """ - Enable broadcasting packets via UDP over the local network - """ - - class ProtocolFlags(_ProtocolFlags, metaclass=_ProtocolFlagsEnumTypeWrapper): - """ - Available flags auxiliary network protocols - """ - - NO_BROADCAST: Config.NetworkConfig.ProtocolFlags.ValueType # 0 - """ - Do not broadcast packets over any network protocol - """ - UDP_BROADCAST: Config.NetworkConfig.ProtocolFlags.ValueType # 1 - """ - Enable broadcasting packets via UDP over the local network - """ - - @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 - ENABLED_PROTOCOLS_FIELD_NUMBER: builtins.int - IPV6_ENABLED_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 `meshtastic.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 - """ - enabled_protocols: builtins.int - """ - Flags for enabling/disabling network protocols - """ - ipv6_enabled: builtins.bool - """ - Enable/Disable ipv6 support - """ - @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 = ..., - enabled_protocols: builtins.int = ..., - ipv6_enabled: builtins.bool = ..., - ) -> 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", "enabled_protocols", b"enabled_protocols", "eth_enabled", b"eth_enabled", "ipv4_config", b"ipv4_config", "ipv6_enabled", b"ipv6_enabled", "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 _DeprecatedGpsCoordinateFormat: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _DeprecatedGpsCoordinateFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._DeprecatedGpsCoordinateFormat.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNUSED: Config.DisplayConfig._DeprecatedGpsCoordinateFormat.ValueType # 0 - - class DeprecatedGpsCoordinateFormat(_DeprecatedGpsCoordinateFormat, metaclass=_DeprecatedGpsCoordinateFormatEnumTypeWrapper): - """ - Deprecated in 2.7.4: Unused - """ - - UNUSED: Config.DisplayConfig.DeprecatedGpsCoordinateFormat.ValueType # 0 - - 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 / Autodetect - """ - OLED_SSD1306: Config.DisplayConfig._OledType.ValueType # 1 - """ - Default / Autodetect - """ - OLED_SH1106: Config.DisplayConfig._OledType.ValueType # 2 - """ - Default / Autodetect - """ - OLED_SH1107: Config.DisplayConfig._OledType.ValueType # 3 - """ - Can not be auto detected but set by proto. Used for 128x64 screens - """ - OLED_SH1107_128_128: Config.DisplayConfig._OledType.ValueType # 4 - """ - 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 / Autodetect - """ - OLED_SSD1306: Config.DisplayConfig.OledType.ValueType # 1 - """ - Default / Autodetect - """ - OLED_SH1106: Config.DisplayConfig.OledType.ValueType # 2 - """ - Default / Autodetect - """ - OLED_SH1107: Config.DisplayConfig.OledType.ValueType # 3 - """ - Can not be auto detected but set by proto. Used for 128x64 screens - """ - OLED_SH1107_128_128: Config.DisplayConfig.OledType.ValueType # 4 - """ - 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) - """ - - class _CompassOrientation: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _CompassOrientationEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._CompassOrientation.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEGREES_0: Config.DisplayConfig._CompassOrientation.ValueType # 0 - """ - The compass and the display are in the same orientation. - """ - DEGREES_90: Config.DisplayConfig._CompassOrientation.ValueType # 1 - """ - Rotate the compass by 90 degrees. - """ - DEGREES_180: Config.DisplayConfig._CompassOrientation.ValueType # 2 - """ - Rotate the compass by 180 degrees. - """ - DEGREES_270: Config.DisplayConfig._CompassOrientation.ValueType # 3 - """ - Rotate the compass by 270 degrees. - """ - DEGREES_0_INVERTED: Config.DisplayConfig._CompassOrientation.ValueType # 4 - """ - Don't rotate the compass, but invert the result. - """ - DEGREES_90_INVERTED: Config.DisplayConfig._CompassOrientation.ValueType # 5 - """ - Rotate the compass by 90 degrees and invert. - """ - DEGREES_180_INVERTED: Config.DisplayConfig._CompassOrientation.ValueType # 6 - """ - Rotate the compass by 180 degrees and invert. - """ - DEGREES_270_INVERTED: Config.DisplayConfig._CompassOrientation.ValueType # 7 - """ - Rotate the compass by 270 degrees and invert. - """ - - class CompassOrientation(_CompassOrientation, metaclass=_CompassOrientationEnumTypeWrapper): ... - DEGREES_0: Config.DisplayConfig.CompassOrientation.ValueType # 0 - """ - The compass and the display are in the same orientation. - """ - DEGREES_90: Config.DisplayConfig.CompassOrientation.ValueType # 1 - """ - Rotate the compass by 90 degrees. - """ - DEGREES_180: Config.DisplayConfig.CompassOrientation.ValueType # 2 - """ - Rotate the compass by 180 degrees. - """ - DEGREES_270: Config.DisplayConfig.CompassOrientation.ValueType # 3 - """ - Rotate the compass by 270 degrees. - """ - DEGREES_0_INVERTED: Config.DisplayConfig.CompassOrientation.ValueType # 4 - """ - Don't rotate the compass, but invert the result. - """ - DEGREES_90_INVERTED: Config.DisplayConfig.CompassOrientation.ValueType # 5 - """ - Rotate the compass by 90 degrees and invert. - """ - DEGREES_180_INVERTED: Config.DisplayConfig.CompassOrientation.ValueType # 6 - """ - Rotate the compass by 180 degrees and invert. - """ - DEGREES_270_INVERTED: Config.DisplayConfig.CompassOrientation.ValueType # 7 - """ - Rotate the compass by 270 degrees and invert. - """ - - 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 - COMPASS_ORIENTATION_FIELD_NUMBER: builtins.int - USE_12H_CLOCK_FIELD_NUMBER: builtins.int - USE_LONG_NODE_NAME_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.DeprecatedGpsCoordinateFormat.ValueType - """ - Deprecated in 2.7.4: Unused - 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 - """ - compass_orientation: global___Config.DisplayConfig.CompassOrientation.ValueType - """ - Indicates how to rotate or invert the compass output to accurate display on the display. - """ - use_12h_clock: builtins.bool - """ - If false (default), the device will display the time in 24-hour format on screen. - If true, the device will display the time in 12-hour format on screen. - """ - use_long_node_name: builtins.bool - """ - If false (default), the device will use short names for various display screens. - If true, node names will show in long format - """ - def __init__( - self, - *, - screen_on_secs: builtins.int = ..., - gps_format: global___Config.DisplayConfig.DeprecatedGpsCoordinateFormat.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 = ..., - compass_orientation: global___Config.DisplayConfig.CompassOrientation.ValueType = ..., - use_12h_clock: builtins.bool = ..., - use_long_node_name: 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", "compass_orientation", b"compass_orientation", "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", "use_12h_clock", b"use_12h_clock", "use_long_node_name", b"use_long_node_name", "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 - """ - PH_433: Config.LoRaConfig._RegionCode.ValueType # 19 - """ - Philippines 433mhz - """ - PH_868: Config.LoRaConfig._RegionCode.ValueType # 20 - """ - Philippines 868mhz - """ - PH_915: Config.LoRaConfig._RegionCode.ValueType # 21 - """ - Philippines 915mhz - """ - ANZ_433: Config.LoRaConfig._RegionCode.ValueType # 22 - """ - Australia / New Zealand 433MHz - """ - KZ_433: Config.LoRaConfig._RegionCode.ValueType # 23 - """ - Kazakhstan 433MHz - """ - KZ_863: Config.LoRaConfig._RegionCode.ValueType # 24 - """ - Kazakhstan 863MHz - """ - NP_865: Config.LoRaConfig._RegionCode.ValueType # 25 - """ - Nepal 865MHz - """ - BR_902: Config.LoRaConfig._RegionCode.ValueType # 26 - """ - Brazil 902MHz - """ - - 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 - """ - PH_433: Config.LoRaConfig.RegionCode.ValueType # 19 - """ - Philippines 433mhz - """ - PH_868: Config.LoRaConfig.RegionCode.ValueType # 20 - """ - Philippines 868mhz - """ - PH_915: Config.LoRaConfig.RegionCode.ValueType # 21 - """ - Philippines 915mhz - """ - ANZ_433: Config.LoRaConfig.RegionCode.ValueType # 22 - """ - Australia / New Zealand 433MHz - """ - KZ_433: Config.LoRaConfig.RegionCode.ValueType # 23 - """ - Kazakhstan 433MHz - """ - KZ_863: Config.LoRaConfig.RegionCode.ValueType # 24 - """ - Kazakhstan 863MHz - """ - NP_865: Config.LoRaConfig.RegionCode.ValueType # 25 - """ - Nepal 865MHz - """ - BR_902: Config.LoRaConfig.RegionCode.ValueType # 26 - """ - Brazil 902MHz - """ - - 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 - Deprecated in 2.5: Works only with txco and is unusably 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 - """ - SHORT_TURBO: Config.LoRaConfig._ModemPreset.ValueType # 8 - """ - Short Range - Turbo - This is the fastest preset and the only one with 500kHz bandwidth. - It is not legal to use in all regions due to this wider bandwidth. - """ - - 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 - Deprecated in 2.5: Works only with txco and is unusably 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 - """ - SHORT_TURBO: Config.LoRaConfig.ModemPreset.ValueType # 8 - """ - Short Range - Turbo - This is the fastest preset and the only one with 500kHz bandwidth. - It is not legal to use in all regions due to this wider bandwidth. - """ - - 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 - PA_FAN_DISABLED_FIELD_NUMBER: builtins.int - IGNORE_INCOMING_FIELD_NUMBER: builtins.int - IGNORE_MQTT_FIELD_NUMBER: builtins.int - CONFIG_OK_TO_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. - """ - pa_fan_disabled: builtins.bool - """ - If true, disable the build-in PA FAN using pin define in RF95_FAN_EN. - """ - 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. - """ - config_ok_to_mqtt: builtins.bool - """ - Sets the ok_to_mqtt bit on outgoing packets - """ - @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 = ..., - pa_fan_disabled: builtins.bool = ..., - ignore_incoming: collections.abc.Iterable[builtins.int] | None = ..., - ignore_mqtt: builtins.bool = ..., - config_ok_to_mqtt: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["bandwidth", b"bandwidth", "channel_num", b"channel_num", "coding_rate", b"coding_rate", "config_ok_to_mqtt", b"config_ok_to_mqtt", "frequency_offset", b"frequency_offset", "hop_limit", b"hop_limit", "ignore_incoming", b"ignore_incoming", "ignore_mqtt", b"ignore_mqtt", "modem_preset", b"modem_preset", "override_duty_cycle", b"override_duty_cycle", "override_frequency", b"override_frequency", "pa_fan_disabled", b"pa_fan_disabled", "region", b"region", "spread_factor", b"spread_factor", "sx126x_rx_boosted_gain", b"sx126x_rx_boosted_gain", "tx_enabled", b"tx_enabled", "tx_power", b"tx_power", "use_preset", b"use_preset"]) -> None: ... - - @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: ... - - @typing.final - class SecurityConfig(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - PUBLIC_KEY_FIELD_NUMBER: builtins.int - PRIVATE_KEY_FIELD_NUMBER: builtins.int - ADMIN_KEY_FIELD_NUMBER: builtins.int - IS_MANAGED_FIELD_NUMBER: builtins.int - SERIAL_ENABLED_FIELD_NUMBER: builtins.int - DEBUG_LOG_API_ENABLED_FIELD_NUMBER: builtins.int - ADMIN_CHANNEL_ENABLED_FIELD_NUMBER: builtins.int - public_key: builtins.bytes - """ - The public key of the user's device. - Sent out to other nodes on the mesh to allow them to compute a shared secret key. - """ - private_key: builtins.bytes - """ - The private key of the device. - Used to create a shared key with a remote device. - """ - is_managed: builtins.bool - """ - If true, device is considered to be "managed" by a mesh administrator via admin messages - Device is managed by a mesh administrator. - """ - serial_enabled: builtins.bool - """ - Serial Console over the Stream API." - """ - debug_log_api_enabled: builtins.bool - """ - By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). - Output live debug logging over serial or bluetooth is set to true. - """ - admin_channel_enabled: builtins.bool - """ - Allow incoming device control over the insecure legacy admin channel. - """ - @property - def admin_key(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: - """ - The public key authorized to send admin messages to this node. - """ - - def __init__( - self, - *, - public_key: builtins.bytes = ..., - private_key: builtins.bytes = ..., - admin_key: collections.abc.Iterable[builtins.bytes] | None = ..., - is_managed: builtins.bool = ..., - serial_enabled: builtins.bool = ..., - debug_log_api_enabled: builtins.bool = ..., - admin_channel_enabled: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["admin_channel_enabled", b"admin_channel_enabled", "admin_key", b"admin_key", "debug_log_api_enabled", b"debug_log_api_enabled", "is_managed", b"is_managed", "private_key", b"private_key", "public_key", b"public_key", "serial_enabled", b"serial_enabled"]) -> None: ... - - @typing.final - class SessionkeyConfig(google.protobuf.message.Message): - """ - Blank config request, strictly for getting the session key - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> 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 - SECURITY_FIELD_NUMBER: builtins.int - SESSIONKEY_FIELD_NUMBER: builtins.int - DEVICE_UI_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: ... - @property - def security(self) -> global___Config.SecurityConfig: ... - @property - def sessionkey(self) -> global___Config.SessionkeyConfig: ... - @property - def device_ui(self) -> meshtastic.protobuf.device_ui_pb2.DeviceUIConfig: ... - 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 = ..., - security: global___Config.SecurityConfig | None = ..., - sessionkey: global___Config.SessionkeyConfig | None = ..., - device_ui: meshtastic.protobuf.device_ui_pb2.DeviceUIConfig | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["bluetooth", b"bluetooth", "device", b"device", "device_ui", b"device_ui", "display", b"display", "lora", b"lora", "network", b"network", "payload_variant", b"payload_variant", "position", b"position", "power", b"power", "security", b"security", "sessionkey", b"sessionkey"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["bluetooth", b"bluetooth", "device", b"device", "device_ui", b"device_ui", "display", b"display", "lora", b"lora", "network", b"network", "payload_variant", b"payload_variant", "position", b"position", "power", b"power", "security", b"security", "sessionkey", b"sessionkey"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["device", "position", "power", "network", "display", "lora", "bluetooth", "security", "sessionkey", "device_ui"] | None: ... - -global___Config = Config +from meshtastic.protobuf import device_ui_pb2 as _device_ui_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class Config(_message.Message): + __slots__ = ["bluetooth", "device", "device_ui", "display", "lora", "network", "position", "power", "security", "sessionkey"] + class BluetoothConfig(_message.Message): + __slots__ = ["enabled", "fixed_pin", "mode"] + class PairingMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ENABLED_FIELD_NUMBER: _ClassVar[int] + FIXED_PIN: Config.BluetoothConfig.PairingMode + FIXED_PIN_FIELD_NUMBER: _ClassVar[int] + MODE_FIELD_NUMBER: _ClassVar[int] + NO_PIN: Config.BluetoothConfig.PairingMode + RANDOM_PIN: Config.BluetoothConfig.PairingMode + enabled: bool + fixed_pin: int + mode: Config.BluetoothConfig.PairingMode + def __init__(self, enabled: bool = ..., mode: _Optional[_Union[Config.BluetoothConfig.PairingMode, str]] = ..., fixed_pin: _Optional[int] = ...) -> None: ... + class DeviceConfig(_message.Message): + __slots__ = ["button_gpio", "buzzer_gpio", "buzzer_mode", "disable_triple_click", "double_tap_as_button_press", "is_managed", "led_heartbeat_disabled", "node_info_broadcast_secs", "rebroadcast_mode", "role", "serial_enabled", "tzdef"] + class BuzzerMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class RebroadcastMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ALL: Config.DeviceConfig.RebroadcastMode + ALL_ENABLED: Config.DeviceConfig.BuzzerMode + ALL_SKIP_DECODING: Config.DeviceConfig.RebroadcastMode + BUTTON_GPIO_FIELD_NUMBER: _ClassVar[int] + BUZZER_GPIO_FIELD_NUMBER: _ClassVar[int] + BUZZER_MODE_FIELD_NUMBER: _ClassVar[int] + CLIENT: Config.DeviceConfig.Role + CLIENT_BASE: Config.DeviceConfig.Role + CLIENT_HIDDEN: Config.DeviceConfig.Role + CLIENT_MUTE: Config.DeviceConfig.Role + CORE_PORTNUMS_ONLY: Config.DeviceConfig.RebroadcastMode + DIRECT_MSG_ONLY: Config.DeviceConfig.BuzzerMode + DISABLED: Config.DeviceConfig.BuzzerMode + DISABLE_TRIPLE_CLICK_FIELD_NUMBER: _ClassVar[int] + DOUBLE_TAP_AS_BUTTON_PRESS_FIELD_NUMBER: _ClassVar[int] + IS_MANAGED_FIELD_NUMBER: _ClassVar[int] + KNOWN_ONLY: Config.DeviceConfig.RebroadcastMode + LED_HEARTBEAT_DISABLED_FIELD_NUMBER: _ClassVar[int] + LOCAL_ONLY: Config.DeviceConfig.RebroadcastMode + LOST_AND_FOUND: Config.DeviceConfig.Role + NODE_INFO_BROADCAST_SECS_FIELD_NUMBER: _ClassVar[int] + NONE: Config.DeviceConfig.RebroadcastMode + NOTIFICATIONS_ONLY: Config.DeviceConfig.BuzzerMode + REBROADCAST_MODE_FIELD_NUMBER: _ClassVar[int] + REPEATER: Config.DeviceConfig.Role + ROLE_FIELD_NUMBER: _ClassVar[int] + ROUTER: Config.DeviceConfig.Role + ROUTER_CLIENT: Config.DeviceConfig.Role + ROUTER_LATE: Config.DeviceConfig.Role + SENSOR: Config.DeviceConfig.Role + SERIAL_ENABLED_FIELD_NUMBER: _ClassVar[int] + SYSTEM_ONLY: Config.DeviceConfig.BuzzerMode + TAK: Config.DeviceConfig.Role + TAK_TRACKER: Config.DeviceConfig.Role + TRACKER: Config.DeviceConfig.Role + TZDEF_FIELD_NUMBER: _ClassVar[int] + button_gpio: int + buzzer_gpio: int + buzzer_mode: Config.DeviceConfig.BuzzerMode + disable_triple_click: bool + double_tap_as_button_press: bool + is_managed: bool + led_heartbeat_disabled: bool + node_info_broadcast_secs: int + rebroadcast_mode: Config.DeviceConfig.RebroadcastMode + role: Config.DeviceConfig.Role + serial_enabled: bool + tzdef: str + def __init__(self, role: _Optional[_Union[Config.DeviceConfig.Role, str]] = ..., serial_enabled: bool = ..., button_gpio: _Optional[int] = ..., buzzer_gpio: _Optional[int] = ..., rebroadcast_mode: _Optional[_Union[Config.DeviceConfig.RebroadcastMode, str]] = ..., node_info_broadcast_secs: _Optional[int] = ..., double_tap_as_button_press: bool = ..., is_managed: bool = ..., disable_triple_click: bool = ..., tzdef: _Optional[str] = ..., led_heartbeat_disabled: bool = ..., buzzer_mode: _Optional[_Union[Config.DeviceConfig.BuzzerMode, str]] = ...) -> None: ... + class DisplayConfig(_message.Message): + __slots__ = ["auto_screen_carousel_secs", "compass_north_top", "compass_orientation", "displaymode", "enable_message_bubbles", "flip_screen", "gps_format", "heading_bold", "oled", "screen_on_secs", "units", "use_12h_clock", "use_long_node_name", "wake_on_tap_or_motion"] + class CompassOrientation(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class DeprecatedGpsCoordinateFormat(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class DisplayMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class DisplayUnits(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class OledType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + AUTO_SCREEN_CAROUSEL_SECS_FIELD_NUMBER: _ClassVar[int] + COLOR: Config.DisplayConfig.DisplayMode + COMPASS_NORTH_TOP_FIELD_NUMBER: _ClassVar[int] + COMPASS_ORIENTATION_FIELD_NUMBER: _ClassVar[int] + DEFAULT: Config.DisplayConfig.DisplayMode + DEGREES_0: Config.DisplayConfig.CompassOrientation + DEGREES_0_INVERTED: Config.DisplayConfig.CompassOrientation + DEGREES_180: Config.DisplayConfig.CompassOrientation + DEGREES_180_INVERTED: Config.DisplayConfig.CompassOrientation + DEGREES_270: Config.DisplayConfig.CompassOrientation + DEGREES_270_INVERTED: Config.DisplayConfig.CompassOrientation + DEGREES_90: Config.DisplayConfig.CompassOrientation + DEGREES_90_INVERTED: Config.DisplayConfig.CompassOrientation + DISPLAYMODE_FIELD_NUMBER: _ClassVar[int] + ENABLE_MESSAGE_BUBBLES_FIELD_NUMBER: _ClassVar[int] + FLIP_SCREEN_FIELD_NUMBER: _ClassVar[int] + GPS_FORMAT_FIELD_NUMBER: _ClassVar[int] + HEADING_BOLD_FIELD_NUMBER: _ClassVar[int] + IMPERIAL: Config.DisplayConfig.DisplayUnits + INVERTED: Config.DisplayConfig.DisplayMode + METRIC: Config.DisplayConfig.DisplayUnits + OLED_AUTO: Config.DisplayConfig.OledType + OLED_FIELD_NUMBER: _ClassVar[int] + OLED_SH1106: Config.DisplayConfig.OledType + OLED_SH1107: Config.DisplayConfig.OledType + OLED_SH1107_128_128: Config.DisplayConfig.OledType + OLED_SH1107_ROTATED: Config.DisplayConfig.OledType + OLED_SSD1306: Config.DisplayConfig.OledType + SCREEN_ON_SECS_FIELD_NUMBER: _ClassVar[int] + TWOCOLOR: Config.DisplayConfig.DisplayMode + UNITS_FIELD_NUMBER: _ClassVar[int] + UNUSED: Config.DisplayConfig.DeprecatedGpsCoordinateFormat + USE_12H_CLOCK_FIELD_NUMBER: _ClassVar[int] + USE_LONG_NODE_NAME_FIELD_NUMBER: _ClassVar[int] + WAKE_ON_TAP_OR_MOTION_FIELD_NUMBER: _ClassVar[int] + auto_screen_carousel_secs: int + compass_north_top: bool + compass_orientation: Config.DisplayConfig.CompassOrientation + displaymode: Config.DisplayConfig.DisplayMode + enable_message_bubbles: bool + flip_screen: bool + gps_format: Config.DisplayConfig.DeprecatedGpsCoordinateFormat + heading_bold: bool + oled: Config.DisplayConfig.OledType + screen_on_secs: int + units: Config.DisplayConfig.DisplayUnits + use_12h_clock: bool + use_long_node_name: bool + wake_on_tap_or_motion: bool + def __init__(self, screen_on_secs: _Optional[int] = ..., gps_format: _Optional[_Union[Config.DisplayConfig.DeprecatedGpsCoordinateFormat, str]] = ..., auto_screen_carousel_secs: _Optional[int] = ..., compass_north_top: bool = ..., flip_screen: bool = ..., units: _Optional[_Union[Config.DisplayConfig.DisplayUnits, str]] = ..., oled: _Optional[_Union[Config.DisplayConfig.OledType, str]] = ..., displaymode: _Optional[_Union[Config.DisplayConfig.DisplayMode, str]] = ..., heading_bold: bool = ..., wake_on_tap_or_motion: bool = ..., compass_orientation: _Optional[_Union[Config.DisplayConfig.CompassOrientation, str]] = ..., use_12h_clock: bool = ..., use_long_node_name: bool = ..., enable_message_bubbles: bool = ...) -> None: ... + class LoRaConfig(_message.Message): + __slots__ = ["bandwidth", "channel_num", "coding_rate", "config_ok_to_mqtt", "fem_lna_mode", "frequency_offset", "hop_limit", "ignore_incoming", "ignore_mqtt", "modem_preset", "override_duty_cycle", "override_frequency", "pa_fan_disabled", "region", "serial_hal_only", "spread_factor", "sx126x_rx_boosted_gain", "tx_enabled", "tx_power", "use_preset"] + class FEM_LNA_Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class ModemPreset(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class RegionCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ANZ: Config.LoRaConfig.RegionCode + ANZ_433: Config.LoRaConfig.RegionCode + BANDWIDTH_FIELD_NUMBER: _ClassVar[int] + BR_902: Config.LoRaConfig.RegionCode + CHANNEL_NUM_FIELD_NUMBER: _ClassVar[int] + CN: Config.LoRaConfig.RegionCode + CODING_RATE_FIELD_NUMBER: _ClassVar[int] + CONFIG_OK_TO_MQTT_FIELD_NUMBER: _ClassVar[int] + DISABLED: Config.LoRaConfig.FEM_LNA_Mode + ENABLED: Config.LoRaConfig.FEM_LNA_Mode + EU_433: Config.LoRaConfig.RegionCode + EU_866: Config.LoRaConfig.RegionCode + EU_868: Config.LoRaConfig.RegionCode + EU_874: Config.LoRaConfig.RegionCode + EU_917: Config.LoRaConfig.RegionCode + EU_N_868: Config.LoRaConfig.RegionCode + FEM_LNA_MODE_FIELD_NUMBER: _ClassVar[int] + FREQUENCY_OFFSET_FIELD_NUMBER: _ClassVar[int] + HOP_LIMIT_FIELD_NUMBER: _ClassVar[int] + IGNORE_INCOMING_FIELD_NUMBER: _ClassVar[int] + IGNORE_MQTT_FIELD_NUMBER: _ClassVar[int] + IN: Config.LoRaConfig.RegionCode + ITU1_2M: Config.LoRaConfig.RegionCode + ITU2_2M: Config.LoRaConfig.RegionCode + ITU3_2M: Config.LoRaConfig.RegionCode + JP: Config.LoRaConfig.RegionCode + KR: Config.LoRaConfig.RegionCode + KZ_433: Config.LoRaConfig.RegionCode + KZ_863: Config.LoRaConfig.RegionCode + LITE_FAST: Config.LoRaConfig.ModemPreset + LITE_SLOW: Config.LoRaConfig.ModemPreset + LONG_FAST: Config.LoRaConfig.ModemPreset + LONG_MODERATE: Config.LoRaConfig.ModemPreset + LONG_SLOW: Config.LoRaConfig.ModemPreset + LONG_TURBO: Config.LoRaConfig.ModemPreset + LORA_24: Config.LoRaConfig.RegionCode + MEDIUM_FAST: Config.LoRaConfig.ModemPreset + MEDIUM_SLOW: Config.LoRaConfig.ModemPreset + MODEM_PRESET_FIELD_NUMBER: _ClassVar[int] + MY_433: Config.LoRaConfig.RegionCode + MY_919: Config.LoRaConfig.RegionCode + NARROW_FAST: Config.LoRaConfig.ModemPreset + NARROW_SLOW: Config.LoRaConfig.ModemPreset + NOT_PRESENT: Config.LoRaConfig.FEM_LNA_Mode + NP_865: Config.LoRaConfig.RegionCode + NZ_865: Config.LoRaConfig.RegionCode + OVERRIDE_DUTY_CYCLE_FIELD_NUMBER: _ClassVar[int] + OVERRIDE_FREQUENCY_FIELD_NUMBER: _ClassVar[int] + PA_FAN_DISABLED_FIELD_NUMBER: _ClassVar[int] + PH_433: Config.LoRaConfig.RegionCode + PH_868: Config.LoRaConfig.RegionCode + PH_915: Config.LoRaConfig.RegionCode + REGION_FIELD_NUMBER: _ClassVar[int] + RU: Config.LoRaConfig.RegionCode + SERIAL_HAL_ONLY_FIELD_NUMBER: _ClassVar[int] + SG_923: Config.LoRaConfig.RegionCode + SHORT_FAST: Config.LoRaConfig.ModemPreset + SHORT_SLOW: Config.LoRaConfig.ModemPreset + SHORT_TURBO: Config.LoRaConfig.ModemPreset + SPREAD_FACTOR_FIELD_NUMBER: _ClassVar[int] + SX126X_RX_BOOSTED_GAIN_FIELD_NUMBER: _ClassVar[int] + TH: Config.LoRaConfig.RegionCode + TW: Config.LoRaConfig.RegionCode + TX_ENABLED_FIELD_NUMBER: _ClassVar[int] + TX_POWER_FIELD_NUMBER: _ClassVar[int] + UA_433: Config.LoRaConfig.RegionCode + UA_868: Config.LoRaConfig.RegionCode + UNSET: Config.LoRaConfig.RegionCode + US: Config.LoRaConfig.RegionCode + USE_PRESET_FIELD_NUMBER: _ClassVar[int] + VERY_LONG_SLOW: Config.LoRaConfig.ModemPreset + bandwidth: int + channel_num: int + coding_rate: int + config_ok_to_mqtt: bool + fem_lna_mode: Config.LoRaConfig.FEM_LNA_Mode + frequency_offset: float + hop_limit: int + ignore_incoming: _containers.RepeatedScalarFieldContainer[int] + ignore_mqtt: bool + modem_preset: Config.LoRaConfig.ModemPreset + override_duty_cycle: bool + override_frequency: float + pa_fan_disabled: bool + region: Config.LoRaConfig.RegionCode + serial_hal_only: bool + spread_factor: int + sx126x_rx_boosted_gain: bool + tx_enabled: bool + tx_power: int + use_preset: bool + def __init__(self, use_preset: bool = ..., modem_preset: _Optional[_Union[Config.LoRaConfig.ModemPreset, str]] = ..., bandwidth: _Optional[int] = ..., spread_factor: _Optional[int] = ..., coding_rate: _Optional[int] = ..., frequency_offset: _Optional[float] = ..., region: _Optional[_Union[Config.LoRaConfig.RegionCode, str]] = ..., hop_limit: _Optional[int] = ..., tx_enabled: bool = ..., tx_power: _Optional[int] = ..., channel_num: _Optional[int] = ..., override_duty_cycle: bool = ..., sx126x_rx_boosted_gain: bool = ..., override_frequency: _Optional[float] = ..., pa_fan_disabled: bool = ..., ignore_incoming: _Optional[_Iterable[int]] = ..., ignore_mqtt: bool = ..., config_ok_to_mqtt: bool = ..., fem_lna_mode: _Optional[_Union[Config.LoRaConfig.FEM_LNA_Mode, str]] = ..., serial_hal_only: bool = ...) -> None: ... + class NetworkConfig(_message.Message): + __slots__ = ["address_mode", "enabled_protocols", "eth_enabled", "ipv4_config", "ipv6_enabled", "ntp_server", "rsyslog_server", "wifi_enabled", "wifi_psk", "wifi_ssid"] + class AddressMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class ProtocolFlags(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class IpV4Config(_message.Message): + __slots__ = ["dns", "gateway", "ip", "subnet"] + DNS_FIELD_NUMBER: _ClassVar[int] + GATEWAY_FIELD_NUMBER: _ClassVar[int] + IP_FIELD_NUMBER: _ClassVar[int] + SUBNET_FIELD_NUMBER: _ClassVar[int] + dns: int + gateway: int + ip: int + subnet: int + def __init__(self, ip: _Optional[int] = ..., gateway: _Optional[int] = ..., subnet: _Optional[int] = ..., dns: _Optional[int] = ...) -> None: ... + ADDRESS_MODE_FIELD_NUMBER: _ClassVar[int] + DHCP: Config.NetworkConfig.AddressMode + ENABLED_PROTOCOLS_FIELD_NUMBER: _ClassVar[int] + ETH_ENABLED_FIELD_NUMBER: _ClassVar[int] + IPV4_CONFIG_FIELD_NUMBER: _ClassVar[int] + IPV6_ENABLED_FIELD_NUMBER: _ClassVar[int] + NO_BROADCAST: Config.NetworkConfig.ProtocolFlags + NTP_SERVER_FIELD_NUMBER: _ClassVar[int] + RSYSLOG_SERVER_FIELD_NUMBER: _ClassVar[int] + STATIC: Config.NetworkConfig.AddressMode + UDP_BROADCAST: Config.NetworkConfig.ProtocolFlags + WIFI_ENABLED_FIELD_NUMBER: _ClassVar[int] + WIFI_PSK_FIELD_NUMBER: _ClassVar[int] + WIFI_SSID_FIELD_NUMBER: _ClassVar[int] + address_mode: Config.NetworkConfig.AddressMode + enabled_protocols: int + eth_enabled: bool + ipv4_config: Config.NetworkConfig.IpV4Config + ipv6_enabled: bool + ntp_server: str + rsyslog_server: str + wifi_enabled: bool + wifi_psk: str + wifi_ssid: str + def __init__(self, wifi_enabled: bool = ..., wifi_ssid: _Optional[str] = ..., wifi_psk: _Optional[str] = ..., ntp_server: _Optional[str] = ..., eth_enabled: bool = ..., address_mode: _Optional[_Union[Config.NetworkConfig.AddressMode, str]] = ..., ipv4_config: _Optional[_Union[Config.NetworkConfig.IpV4Config, _Mapping]] = ..., rsyslog_server: _Optional[str] = ..., enabled_protocols: _Optional[int] = ..., ipv6_enabled: bool = ...) -> None: ... + class PositionConfig(_message.Message): + __slots__ = ["broadcast_smart_minimum_distance", "broadcast_smart_minimum_interval_secs", "fixed_position", "gps_attempt_time", "gps_en_gpio", "gps_enabled", "gps_mode", "gps_update_interval", "position_broadcast_secs", "position_broadcast_smart_enabled", "position_flags", "rx_gpio", "tx_gpio"] + class GpsMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class PositionFlags(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ALTITUDE: Config.PositionConfig.PositionFlags + ALTITUDE_MSL: Config.PositionConfig.PositionFlags + BROADCAST_SMART_MINIMUM_DISTANCE_FIELD_NUMBER: _ClassVar[int] + BROADCAST_SMART_MINIMUM_INTERVAL_SECS_FIELD_NUMBER: _ClassVar[int] + DISABLED: Config.PositionConfig.GpsMode + DOP: Config.PositionConfig.PositionFlags + ENABLED: Config.PositionConfig.GpsMode + FIXED_POSITION_FIELD_NUMBER: _ClassVar[int] + GEOIDAL_SEPARATION: Config.PositionConfig.PositionFlags + GPS_ATTEMPT_TIME_FIELD_NUMBER: _ClassVar[int] + GPS_ENABLED_FIELD_NUMBER: _ClassVar[int] + GPS_EN_GPIO_FIELD_NUMBER: _ClassVar[int] + GPS_MODE_FIELD_NUMBER: _ClassVar[int] + GPS_UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + HEADING: Config.PositionConfig.PositionFlags + HVDOP: Config.PositionConfig.PositionFlags + NOT_PRESENT: Config.PositionConfig.GpsMode + POSITION_BROADCAST_SECS_FIELD_NUMBER: _ClassVar[int] + POSITION_BROADCAST_SMART_ENABLED_FIELD_NUMBER: _ClassVar[int] + POSITION_FLAGS_FIELD_NUMBER: _ClassVar[int] + RX_GPIO_FIELD_NUMBER: _ClassVar[int] + SATINVIEW: Config.PositionConfig.PositionFlags + SEQ_NO: Config.PositionConfig.PositionFlags + SPEED: Config.PositionConfig.PositionFlags + TIMESTAMP: Config.PositionConfig.PositionFlags + TX_GPIO_FIELD_NUMBER: _ClassVar[int] + UNSET: Config.PositionConfig.PositionFlags + broadcast_smart_minimum_distance: int + broadcast_smart_minimum_interval_secs: int + fixed_position: bool + gps_attempt_time: int + gps_en_gpio: int + gps_enabled: bool + gps_mode: Config.PositionConfig.GpsMode + gps_update_interval: int + position_broadcast_secs: int + position_broadcast_smart_enabled: bool + position_flags: int + rx_gpio: int + tx_gpio: int + def __init__(self, position_broadcast_secs: _Optional[int] = ..., position_broadcast_smart_enabled: bool = ..., fixed_position: bool = ..., gps_enabled: bool = ..., gps_update_interval: _Optional[int] = ..., gps_attempt_time: _Optional[int] = ..., position_flags: _Optional[int] = ..., rx_gpio: _Optional[int] = ..., tx_gpio: _Optional[int] = ..., broadcast_smart_minimum_distance: _Optional[int] = ..., broadcast_smart_minimum_interval_secs: _Optional[int] = ..., gps_en_gpio: _Optional[int] = ..., gps_mode: _Optional[_Union[Config.PositionConfig.GpsMode, str]] = ...) -> None: ... + class PowerConfig(_message.Message): + __slots__ = ["adc_multiplier_override", "device_battery_ina_address", "is_power_saving", "ls_secs", "min_wake_secs", "on_battery_shutdown_after_secs", "powermon_enables", "sds_secs", "wait_bluetooth_secs"] + ADC_MULTIPLIER_OVERRIDE_FIELD_NUMBER: _ClassVar[int] + DEVICE_BATTERY_INA_ADDRESS_FIELD_NUMBER: _ClassVar[int] + IS_POWER_SAVING_FIELD_NUMBER: _ClassVar[int] + LS_SECS_FIELD_NUMBER: _ClassVar[int] + MIN_WAKE_SECS_FIELD_NUMBER: _ClassVar[int] + ON_BATTERY_SHUTDOWN_AFTER_SECS_FIELD_NUMBER: _ClassVar[int] + POWERMON_ENABLES_FIELD_NUMBER: _ClassVar[int] + SDS_SECS_FIELD_NUMBER: _ClassVar[int] + WAIT_BLUETOOTH_SECS_FIELD_NUMBER: _ClassVar[int] + adc_multiplier_override: float + device_battery_ina_address: int + is_power_saving: bool + ls_secs: int + min_wake_secs: int + on_battery_shutdown_after_secs: int + powermon_enables: int + sds_secs: int + wait_bluetooth_secs: int + def __init__(self, is_power_saving: bool = ..., on_battery_shutdown_after_secs: _Optional[int] = ..., adc_multiplier_override: _Optional[float] = ..., wait_bluetooth_secs: _Optional[int] = ..., sds_secs: _Optional[int] = ..., ls_secs: _Optional[int] = ..., min_wake_secs: _Optional[int] = ..., device_battery_ina_address: _Optional[int] = ..., powermon_enables: _Optional[int] = ...) -> None: ... + class SecurityConfig(_message.Message): + __slots__ = ["admin_channel_enabled", "admin_key", "debug_log_api_enabled", "is_managed", "private_key", "public_key", "serial_enabled"] + ADMIN_CHANNEL_ENABLED_FIELD_NUMBER: _ClassVar[int] + ADMIN_KEY_FIELD_NUMBER: _ClassVar[int] + DEBUG_LOG_API_ENABLED_FIELD_NUMBER: _ClassVar[int] + IS_MANAGED_FIELD_NUMBER: _ClassVar[int] + PRIVATE_KEY_FIELD_NUMBER: _ClassVar[int] + PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + SERIAL_ENABLED_FIELD_NUMBER: _ClassVar[int] + admin_channel_enabled: bool + admin_key: _containers.RepeatedScalarFieldContainer[bytes] + debug_log_api_enabled: bool + is_managed: bool + private_key: bytes + public_key: bytes + serial_enabled: bool + def __init__(self, public_key: _Optional[bytes] = ..., private_key: _Optional[bytes] = ..., admin_key: _Optional[_Iterable[bytes]] = ..., is_managed: bool = ..., serial_enabled: bool = ..., debug_log_api_enabled: bool = ..., admin_channel_enabled: bool = ...) -> None: ... + class SessionkeyConfig(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + BLUETOOTH_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] + DEVICE_UI_FIELD_NUMBER: _ClassVar[int] + DISPLAY_FIELD_NUMBER: _ClassVar[int] + LORA_FIELD_NUMBER: _ClassVar[int] + NETWORK_FIELD_NUMBER: _ClassVar[int] + POSITION_FIELD_NUMBER: _ClassVar[int] + POWER_FIELD_NUMBER: _ClassVar[int] + SECURITY_FIELD_NUMBER: _ClassVar[int] + SESSIONKEY_FIELD_NUMBER: _ClassVar[int] + bluetooth: Config.BluetoothConfig + device: Config.DeviceConfig + device_ui: _device_ui_pb2.DeviceUIConfig + display: Config.DisplayConfig + lora: Config.LoRaConfig + network: Config.NetworkConfig + position: Config.PositionConfig + power: Config.PowerConfig + security: Config.SecurityConfig + sessionkey: Config.SessionkeyConfig + def __init__(self, device: _Optional[_Union[Config.DeviceConfig, _Mapping]] = ..., position: _Optional[_Union[Config.PositionConfig, _Mapping]] = ..., power: _Optional[_Union[Config.PowerConfig, _Mapping]] = ..., network: _Optional[_Union[Config.NetworkConfig, _Mapping]] = ..., display: _Optional[_Union[Config.DisplayConfig, _Mapping]] = ..., lora: _Optional[_Union[Config.LoRaConfig, _Mapping]] = ..., bluetooth: _Optional[_Union[Config.BluetoothConfig, _Mapping]] = ..., security: _Optional[_Union[Config.SecurityConfig, _Mapping]] = ..., sessionkey: _Optional[_Union[Config.SessionkeyConfig, _Mapping]] = ..., device_ui: _Optional[_Union[_device_ui_pb2.DeviceUIConfig, _Mapping]] = ...) -> None: ... diff --git a/meshtastic/protobuf/connection_status_pb2.py b/meshtastic/protobuf/connection_status_pb2.py index 050e330..2ffc6fc 100644 --- a/meshtastic/protobuf/connection_status_pb2.py +++ b/meshtastic/protobuf/connection_status_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,22 +15,22 @@ _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\x66\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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 + _DEVICECONNECTIONSTATUS._serialized_start=69 + _DEVICECONNECTIONSTATUS._serialized_end=410 + _WIFICONNECTIONSTATUS._serialized_start=412 + _WIFICONNECTIONSTATUS._serialized_end=524 + _ETHERNETCONNECTIONSTATUS._serialized_start=526 + _ETHERNETCONNECTIONSTATUS._serialized_end=614 + _NETWORKCONNECTIONSTATUS._serialized_start=616 + _NETWORKCONNECTIONSTATUS._serialized_end=739 + _BLUETOOTHCONNECTIONSTATUS._serialized_start=741 + _BLUETOOTHCONNECTIONSTATUS._serialized_end=817 + _SERIALCONNECTIONSTATUS._serialized_start=819 + _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 index 7b69140..6f31c5b 100644 --- a/meshtastic/protobuf/connection_status_pb2.pyi +++ b/meshtastic/protobuf/connection_status_pb2.pyi @@ -1,228 +1,63 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing +DESCRIPTOR: _descriptor.FileDescriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class BluetoothConnectionStatus(_message.Message): + __slots__ = ["is_connected", "pin", "rssi"] + IS_CONNECTED_FIELD_NUMBER: _ClassVar[int] + PIN_FIELD_NUMBER: _ClassVar[int] + RSSI_FIELD_NUMBER: _ClassVar[int] + is_connected: bool + pin: int + rssi: int + def __init__(self, pin: _Optional[int] = ..., rssi: _Optional[int] = ..., is_connected: bool = ...) -> None: ... -@typing.final -class DeviceConnectionStatus(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class DeviceConnectionStatus(_message.Message): + __slots__ = ["bluetooth", "ethernet", "serial", "wifi"] + BLUETOOTH_FIELD_NUMBER: _ClassVar[int] + ETHERNET_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + WIFI_FIELD_NUMBER: _ClassVar[int] + bluetooth: BluetoothConnectionStatus + ethernet: EthernetConnectionStatus + serial: SerialConnectionStatus + wifi: WifiConnectionStatus + def __init__(self, wifi: _Optional[_Union[WifiConnectionStatus, _Mapping]] = ..., ethernet: _Optional[_Union[EthernetConnectionStatus, _Mapping]] = ..., bluetooth: _Optional[_Union[BluetoothConnectionStatus, _Mapping]] = ..., serial: _Optional[_Union[SerialConnectionStatus, _Mapping]] = ...) -> None: ... - 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 - """ +class EthernetConnectionStatus(_message.Message): + __slots__ = ["status"] + STATUS_FIELD_NUMBER: _ClassVar[int] + status: NetworkConnectionStatus + def __init__(self, status: _Optional[_Union[NetworkConnectionStatus, _Mapping]] = ...) -> None: ... - @property - def ethernet(self) -> global___EthernetConnectionStatus: - """ - WiFi Status - """ +class NetworkConnectionStatus(_message.Message): + __slots__ = ["ip_address", "is_connected", "is_mqtt_connected", "is_syslog_connected"] + IP_ADDRESS_FIELD_NUMBER: _ClassVar[int] + IS_CONNECTED_FIELD_NUMBER: _ClassVar[int] + IS_MQTT_CONNECTED_FIELD_NUMBER: _ClassVar[int] + IS_SYSLOG_CONNECTED_FIELD_NUMBER: _ClassVar[int] + ip_address: int + is_connected: bool + is_mqtt_connected: bool + is_syslog_connected: bool + def __init__(self, ip_address: _Optional[int] = ..., is_connected: bool = ..., is_mqtt_connected: bool = ..., is_syslog_connected: bool = ...) -> None: ... - @property - def bluetooth(self) -> global___BluetoothConnectionStatus: - """ - Bluetooth Status - """ +class SerialConnectionStatus(_message.Message): + __slots__ = ["baud", "is_connected"] + BAUD_FIELD_NUMBER: _ClassVar[int] + IS_CONNECTED_FIELD_NUMBER: _ClassVar[int] + baud: int + is_connected: bool + def __init__(self, baud: _Optional[int] = ..., is_connected: bool = ...) -> None: ... - @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 +class WifiConnectionStatus(_message.Message): + __slots__ = ["rssi", "ssid", "status"] + RSSI_FIELD_NUMBER: _ClassVar[int] + SSID_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + rssi: int + ssid: str + status: NetworkConnectionStatus + def __init__(self, status: _Optional[_Union[NetworkConnectionStatus, _Mapping]] = ..., ssid: _Optional[str] = ..., rssi: _Optional[int] = ...) -> None: ... diff --git a/meshtastic/protobuf/device_ui_pb2.py b/meshtastic/protobuf/device_ui_pb2.py index 28eb04e..d56d304 100644 --- a/meshtastic/protobuf/device_ui_pb2.py +++ b/meshtastic/protobuf/device_ui_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/device_ui.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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,28 +15,28 @@ _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/device_ui.proto\x12\x13meshtastic.protobuf\"\xff\x05\n\x0e\x44\x65viceUIConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x19\n\x11screen_brightness\x18\x02 \x01(\r\x12\x16\n\x0escreen_timeout\x18\x03 \x01(\r\x12\x13\n\x0bscreen_lock\x18\x04 \x01(\x08\x12\x15\n\rsettings_lock\x18\x05 \x01(\x08\x12\x10\n\x08pin_code\x18\x06 \x01(\r\x12)\n\x05theme\x18\x07 \x01(\x0e\x32\x1a.meshtastic.protobuf.Theme\x12\x15\n\ralert_enabled\x18\x08 \x01(\x08\x12\x16\n\x0e\x62\x61nner_enabled\x18\t \x01(\x08\x12\x14\n\x0cring_tone_id\x18\n \x01(\r\x12/\n\x08language\x18\x0b \x01(\x0e\x32\x1d.meshtastic.protobuf.Language\x12\x34\n\x0bnode_filter\x18\x0c \x01(\x0b\x32\x1f.meshtastic.protobuf.NodeFilter\x12:\n\x0enode_highlight\x18\r \x01(\x0b\x32\".meshtastic.protobuf.NodeHighlight\x12\x18\n\x10\x63\x61libration_data\x18\x0e \x01(\x0c\x12*\n\x08map_data\x18\x0f \x01(\x0b\x32\x18.meshtastic.protobuf.Map\x12\x36\n\x0c\x63ompass_mode\x18\x10 \x01(\x0e\x32 .meshtastic.protobuf.CompassMode\x12\x18\n\x10screen_rgb_color\x18\x11 \x01(\r\x12\x1b\n\x13is_clockface_analog\x18\x12 \x01(\x08\x12K\n\ngps_format\x18\x13 \x01(\x0e\x32\x37.meshtastic.protobuf.DeviceUIConfig.GpsCoordinateFormat\"V\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\x12\x07\n\x03MLS\x10\x06\"\xa7\x01\n\nNodeFilter\x12\x16\n\x0eunknown_switch\x18\x01 \x01(\x08\x12\x16\n\x0eoffline_switch\x18\x02 \x01(\x08\x12\x19\n\x11public_key_switch\x18\x03 \x01(\x08\x12\x11\n\thops_away\x18\x04 \x01(\x05\x12\x17\n\x0fposition_switch\x18\x05 \x01(\x08\x12\x11\n\tnode_name\x18\x06 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\x05\"~\n\rNodeHighlight\x12\x13\n\x0b\x63hat_switch\x18\x01 \x01(\x08\x12\x17\n\x0fposition_switch\x18\x02 \x01(\x08\x12\x18\n\x10telemetry_switch\x18\x03 \x01(\x08\x12\x12\n\niaq_switch\x18\x04 \x01(\x08\x12\x11\n\tnode_name\x18\x05 \x01(\t\"=\n\x08GeoPoint\x12\x0c\n\x04zoom\x18\x01 \x01(\x05\x12\x10\n\x08latitude\x18\x02 \x01(\x05\x12\x11\n\tlongitude\x18\x03 \x01(\x05\"U\n\x03Map\x12+\n\x04home\x18\x01 \x01(\x0b\x32\x1d.meshtastic.protobuf.GeoPoint\x12\r\n\x05style\x18\x02 \x01(\t\x12\x12\n\nfollow_gps\x18\x03 \x01(\x08*>\n\x0b\x43ompassMode\x12\x0b\n\x07\x44YNAMIC\x10\x00\x12\x0e\n\nFIXED_RING\x10\x01\x12\x12\n\x0e\x46REEZE_HEADING\x10\x02*%\n\x05Theme\x12\x08\n\x04\x44\x41RK\x10\x00\x12\t\n\x05LIGHT\x10\x01\x12\x07\n\x03RED\x10\x02*\xc0\x02\n\x08Language\x12\x0b\n\x07\x45NGLISH\x10\x00\x12\n\n\x06\x46RENCH\x10\x01\x12\n\n\x06GERMAN\x10\x02\x12\x0b\n\x07ITALIAN\x10\x03\x12\x0e\n\nPORTUGUESE\x10\x04\x12\x0b\n\x07SPANISH\x10\x05\x12\x0b\n\x07SWEDISH\x10\x06\x12\x0b\n\x07\x46INNISH\x10\x07\x12\n\n\x06POLISH\x10\x08\x12\x0b\n\x07TURKISH\x10\t\x12\x0b\n\x07SERBIAN\x10\n\x12\x0b\n\x07RUSSIAN\x10\x0b\x12\t\n\x05\x44UTCH\x10\x0c\x12\t\n\x05GREEK\x10\r\x12\r\n\tNORWEGIAN\x10\x0e\x12\r\n\tSLOVENIAN\x10\x0f\x12\r\n\tUKRAINIAN\x10\x10\x12\r\n\tBULGARIAN\x10\x11\x12\t\n\x05\x43ZECH\x10\x12\x12\n\n\x06\x44\x41NISH\x10\x13\x12\x16\n\x12SIMPLIFIED_CHINESE\x10\x1e\x12\x17\n\x13TRADITIONAL_CHINESE\x10\x1f\x42\x64\n\x14org.meshtastic.protoB\x0e\x44\x65viceUIProtosZ\"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.device_ui_pb2', _globals) +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.device_ui_pb2', globals()) if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\016DeviceUIProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_COMPASSMODE']._serialized_start=1278 - _globals['_COMPASSMODE']._serialized_end=1340 - _globals['_THEME']._serialized_start=1342 - _globals['_THEME']._serialized_end=1379 - _globals['_LANGUAGE']._serialized_start=1382 - _globals['_LANGUAGE']._serialized_end=1702 - _globals['_DEVICEUICONFIG']._serialized_start=61 - _globals['_DEVICEUICONFIG']._serialized_end=828 - _globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_start=742 - _globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_end=828 - _globals['_NODEFILTER']._serialized_start=831 - _globals['_NODEFILTER']._serialized_end=998 - _globals['_NODEHIGHLIGHT']._serialized_start=1000 - _globals['_NODEHIGHLIGHT']._serialized_end=1126 - _globals['_GEOPOINT']._serialized_start=1128 - _globals['_GEOPOINT']._serialized_end=1189 - _globals['_MAP']._serialized_start=1191 - _globals['_MAP']._serialized_end=1276 + _COMPASSMODE._serialized_start=1278 + _COMPASSMODE._serialized_end=1340 + _THEME._serialized_start=1342 + _THEME._serialized_end=1379 + _LANGUAGE._serialized_start=1382 + _LANGUAGE._serialized_end=1702 + _DEVICEUICONFIG._serialized_start=61 + _DEVICEUICONFIG._serialized_end=828 + _DEVICEUICONFIG_GPSCOORDINATEFORMAT._serialized_start=742 + _DEVICEUICONFIG_GPSCOORDINATEFORMAT._serialized_end=828 + _NODEFILTER._serialized_start=831 + _NODEFILTER._serialized_end=998 + _NODEHIGHLIGHT._serialized_start=1000 + _NODEHIGHLIGHT._serialized_end=1126 + _GEOPOINT._serialized_start=1128 + _GEOPOINT._serialized_end=1189 + _MAP._serialized_start=1191 + _MAP._serialized_end=1276 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/device_ui_pb2.pyi b/meshtastic/protobuf/device_ui_pb2.pyi index 065215b..4b581e9 100644 --- a/meshtastic/protobuf/device_ui_pb2.pyi +++ b/meshtastic/protobuf/device_ui_pb2.pyi @@ -1,649 +1,146 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +BULGARIAN: Language +CZECH: Language +DANISH: Language +DARK: Theme +DESCRIPTOR: _descriptor.FileDescriptor +DUTCH: Language +DYNAMIC: CompassMode +ENGLISH: Language +FINNISH: Language +FIXED_RING: CompassMode +FREEZE_HEADING: CompassMode +FRENCH: Language +GERMAN: Language +GREEK: Language +ITALIAN: Language +LIGHT: Theme +NORWEGIAN: Language +POLISH: Language +PORTUGUESE: Language +RED: Theme +RUSSIAN: Language +SERBIAN: Language +SIMPLIFIED_CHINESE: Language +SLOVENIAN: Language +SPANISH: Language +SWEDISH: Language +TRADITIONAL_CHINESE: Language +TURKISH: Language +UKRAINIAN: Language -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class DeviceUIConfig(_message.Message): + __slots__ = ["alert_enabled", "banner_enabled", "calibration_data", "compass_mode", "gps_format", "is_clockface_analog", "language", "map_data", "node_filter", "node_highlight", "pin_code", "ring_tone_id", "screen_brightness", "screen_lock", "screen_rgb_color", "screen_timeout", "settings_lock", "theme", "version"] + class GpsCoordinateFormat(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ALERT_ENABLED_FIELD_NUMBER: _ClassVar[int] + BANNER_ENABLED_FIELD_NUMBER: _ClassVar[int] + CALIBRATION_DATA_FIELD_NUMBER: _ClassVar[int] + COMPASS_MODE_FIELD_NUMBER: _ClassVar[int] + DEC: DeviceUIConfig.GpsCoordinateFormat + DMS: DeviceUIConfig.GpsCoordinateFormat + GPS_FORMAT_FIELD_NUMBER: _ClassVar[int] + IS_CLOCKFACE_ANALOG_FIELD_NUMBER: _ClassVar[int] + LANGUAGE_FIELD_NUMBER: _ClassVar[int] + MAP_DATA_FIELD_NUMBER: _ClassVar[int] + MGRS: DeviceUIConfig.GpsCoordinateFormat + MLS: DeviceUIConfig.GpsCoordinateFormat + NODE_FILTER_FIELD_NUMBER: _ClassVar[int] + NODE_HIGHLIGHT_FIELD_NUMBER: _ClassVar[int] + OLC: DeviceUIConfig.GpsCoordinateFormat + OSGR: DeviceUIConfig.GpsCoordinateFormat + PIN_CODE_FIELD_NUMBER: _ClassVar[int] + RING_TONE_ID_FIELD_NUMBER: _ClassVar[int] + SCREEN_BRIGHTNESS_FIELD_NUMBER: _ClassVar[int] + SCREEN_LOCK_FIELD_NUMBER: _ClassVar[int] + SCREEN_RGB_COLOR_FIELD_NUMBER: _ClassVar[int] + SCREEN_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + SETTINGS_LOCK_FIELD_NUMBER: _ClassVar[int] + THEME_FIELD_NUMBER: _ClassVar[int] + UTM: DeviceUIConfig.GpsCoordinateFormat + VERSION_FIELD_NUMBER: _ClassVar[int] + alert_enabled: bool + banner_enabled: bool + calibration_data: bytes + compass_mode: CompassMode + gps_format: DeviceUIConfig.GpsCoordinateFormat + is_clockface_analog: bool + language: Language + map_data: Map + node_filter: NodeFilter + node_highlight: NodeHighlight + pin_code: int + ring_tone_id: int + screen_brightness: int + screen_lock: bool + screen_rgb_color: int + screen_timeout: int + settings_lock: bool + theme: Theme + version: int + def __init__(self, version: _Optional[int] = ..., screen_brightness: _Optional[int] = ..., screen_timeout: _Optional[int] = ..., screen_lock: bool = ..., settings_lock: bool = ..., pin_code: _Optional[int] = ..., theme: _Optional[_Union[Theme, str]] = ..., alert_enabled: bool = ..., banner_enabled: bool = ..., ring_tone_id: _Optional[int] = ..., language: _Optional[_Union[Language, str]] = ..., node_filter: _Optional[_Union[NodeFilter, _Mapping]] = ..., node_highlight: _Optional[_Union[NodeHighlight, _Mapping]] = ..., calibration_data: _Optional[bytes] = ..., map_data: _Optional[_Union[Map, _Mapping]] = ..., compass_mode: _Optional[_Union[CompassMode, str]] = ..., screen_rgb_color: _Optional[int] = ..., is_clockface_analog: bool = ..., gps_format: _Optional[_Union[DeviceUIConfig.GpsCoordinateFormat, str]] = ...) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class GeoPoint(_message.Message): + __slots__ = ["latitude", "longitude", "zoom"] + LATITUDE_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_FIELD_NUMBER: _ClassVar[int] + ZOOM_FIELD_NUMBER: _ClassVar[int] + latitude: int + longitude: int + zoom: int + def __init__(self, zoom: _Optional[int] = ..., latitude: _Optional[int] = ..., longitude: _Optional[int] = ...) -> None: ... -class _CompassMode: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class Map(_message.Message): + __slots__ = ["follow_gps", "home", "style"] + FOLLOW_GPS_FIELD_NUMBER: _ClassVar[int] + HOME_FIELD_NUMBER: _ClassVar[int] + STYLE_FIELD_NUMBER: _ClassVar[int] + follow_gps: bool + home: GeoPoint + style: str + def __init__(self, home: _Optional[_Union[GeoPoint, _Mapping]] = ..., style: _Optional[str] = ..., follow_gps: bool = ...) -> None: ... -class _CompassModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CompassMode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DYNAMIC: _CompassMode.ValueType # 0 - """ - Compass with dynamic ring and heading - """ - FIXED_RING: _CompassMode.ValueType # 1 - """ - Compass with fixed ring and heading - """ - FREEZE_HEADING: _CompassMode.ValueType # 2 - """ - Compass with heading and freeze option - """ +class NodeFilter(_message.Message): + __slots__ = ["channel", "hops_away", "node_name", "offline_switch", "position_switch", "public_key_switch", "unknown_switch"] + CHANNEL_FIELD_NUMBER: _ClassVar[int] + HOPS_AWAY_FIELD_NUMBER: _ClassVar[int] + NODE_NAME_FIELD_NUMBER: _ClassVar[int] + OFFLINE_SWITCH_FIELD_NUMBER: _ClassVar[int] + POSITION_SWITCH_FIELD_NUMBER: _ClassVar[int] + PUBLIC_KEY_SWITCH_FIELD_NUMBER: _ClassVar[int] + UNKNOWN_SWITCH_FIELD_NUMBER: _ClassVar[int] + channel: int + hops_away: int + node_name: str + offline_switch: bool + position_switch: bool + public_key_switch: bool + unknown_switch: bool + def __init__(self, unknown_switch: bool = ..., offline_switch: bool = ..., public_key_switch: bool = ..., hops_away: _Optional[int] = ..., position_switch: bool = ..., node_name: _Optional[str] = ..., channel: _Optional[int] = ...) -> None: ... -class CompassMode(_CompassMode, metaclass=_CompassModeEnumTypeWrapper): ... +class NodeHighlight(_message.Message): + __slots__ = ["chat_switch", "iaq_switch", "node_name", "position_switch", "telemetry_switch"] + CHAT_SWITCH_FIELD_NUMBER: _ClassVar[int] + IAQ_SWITCH_FIELD_NUMBER: _ClassVar[int] + NODE_NAME_FIELD_NUMBER: _ClassVar[int] + POSITION_SWITCH_FIELD_NUMBER: _ClassVar[int] + TELEMETRY_SWITCH_FIELD_NUMBER: _ClassVar[int] + chat_switch: bool + iaq_switch: bool + node_name: str + position_switch: bool + telemetry_switch: bool + def __init__(self, chat_switch: bool = ..., position_switch: bool = ..., telemetry_switch: bool = ..., iaq_switch: bool = ..., node_name: _Optional[str] = ...) -> None: ... -DYNAMIC: CompassMode.ValueType # 0 -""" -Compass with dynamic ring and heading -""" -FIXED_RING: CompassMode.ValueType # 1 -""" -Compass with fixed ring and heading -""" -FREEZE_HEADING: CompassMode.ValueType # 2 -""" -Compass with heading and freeze option -""" -global___CompassMode = CompassMode +class CompassMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -class _Theme: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class Theme(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -class _ThemeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Theme.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DARK: _Theme.ValueType # 0 - """ - Dark - """ - LIGHT: _Theme.ValueType # 1 - """ - Light - """ - RED: _Theme.ValueType # 2 - """ - Red - """ - -class Theme(_Theme, metaclass=_ThemeEnumTypeWrapper): ... - -DARK: Theme.ValueType # 0 -""" -Dark -""" -LIGHT: Theme.ValueType # 1 -""" -Light -""" -RED: Theme.ValueType # 2 -""" -Red -""" -global___Theme = Theme - -class _Language: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _LanguageEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Language.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ENGLISH: _Language.ValueType # 0 - """ - English - """ - FRENCH: _Language.ValueType # 1 - """ - French - """ - GERMAN: _Language.ValueType # 2 - """ - German - """ - ITALIAN: _Language.ValueType # 3 - """ - Italian - """ - PORTUGUESE: _Language.ValueType # 4 - """ - Portuguese - """ - SPANISH: _Language.ValueType # 5 - """ - Spanish - """ - SWEDISH: _Language.ValueType # 6 - """ - Swedish - """ - FINNISH: _Language.ValueType # 7 - """ - Finnish - """ - POLISH: _Language.ValueType # 8 - """ - Polish - """ - TURKISH: _Language.ValueType # 9 - """ - Turkish - """ - SERBIAN: _Language.ValueType # 10 - """ - Serbian - """ - RUSSIAN: _Language.ValueType # 11 - """ - Russian - """ - DUTCH: _Language.ValueType # 12 - """ - Dutch - """ - GREEK: _Language.ValueType # 13 - """ - Greek - """ - NORWEGIAN: _Language.ValueType # 14 - """ - Norwegian - """ - SLOVENIAN: _Language.ValueType # 15 - """ - Slovenian - """ - UKRAINIAN: _Language.ValueType # 16 - """ - Ukrainian - """ - BULGARIAN: _Language.ValueType # 17 - """ - Bulgarian - """ - CZECH: _Language.ValueType # 18 - """ - Czech - """ - DANISH: _Language.ValueType # 19 - """ - Danish - """ - SIMPLIFIED_CHINESE: _Language.ValueType # 30 - """ - Simplified Chinese (experimental) - """ - TRADITIONAL_CHINESE: _Language.ValueType # 31 - """ - Traditional Chinese (experimental) - """ - -class Language(_Language, metaclass=_LanguageEnumTypeWrapper): - """ - Localization - """ - -ENGLISH: Language.ValueType # 0 -""" -English -""" -FRENCH: Language.ValueType # 1 -""" -French -""" -GERMAN: Language.ValueType # 2 -""" -German -""" -ITALIAN: Language.ValueType # 3 -""" -Italian -""" -PORTUGUESE: Language.ValueType # 4 -""" -Portuguese -""" -SPANISH: Language.ValueType # 5 -""" -Spanish -""" -SWEDISH: Language.ValueType # 6 -""" -Swedish -""" -FINNISH: Language.ValueType # 7 -""" -Finnish -""" -POLISH: Language.ValueType # 8 -""" -Polish -""" -TURKISH: Language.ValueType # 9 -""" -Turkish -""" -SERBIAN: Language.ValueType # 10 -""" -Serbian -""" -RUSSIAN: Language.ValueType # 11 -""" -Russian -""" -DUTCH: Language.ValueType # 12 -""" -Dutch -""" -GREEK: Language.ValueType # 13 -""" -Greek -""" -NORWEGIAN: Language.ValueType # 14 -""" -Norwegian -""" -SLOVENIAN: Language.ValueType # 15 -""" -Slovenian -""" -UKRAINIAN: Language.ValueType # 16 -""" -Ukrainian -""" -BULGARIAN: Language.ValueType # 17 -""" -Bulgarian -""" -CZECH: Language.ValueType # 18 -""" -Czech -""" -DANISH: Language.ValueType # 19 -""" -Danish -""" -SIMPLIFIED_CHINESE: Language.ValueType # 30 -""" -Simplified Chinese (experimental) -""" -TRADITIONAL_CHINESE: Language.ValueType # 31 -""" -Traditional Chinese (experimental) -""" -global___Language = Language - -@typing.final -class DeviceUIConfig(google.protobuf.message.Message): - """ - Protobuf structures for device-ui persistency - """ - - 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[DeviceUIConfig._GpsCoordinateFormat.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - DEC: DeviceUIConfig._GpsCoordinateFormat.ValueType # 0 - """ - GPS coordinates are displayed in the normal decimal degrees format: - DD.DDDDDD DDD.DDDDDD - """ - DMS: DeviceUIConfig._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: DeviceUIConfig._GpsCoordinateFormat.ValueType # 2 - """ - Universal Transverse Mercator format: - ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing - """ - MGRS: DeviceUIConfig._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: DeviceUIConfig._GpsCoordinateFormat.ValueType # 4 - """ - Open Location Code (aka Plus Codes). - """ - OSGR: DeviceUIConfig._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 - """ - MLS: DeviceUIConfig._GpsCoordinateFormat.ValueType # 6 - """ - Maidenhead Locator System - Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System - """ - - class GpsCoordinateFormat(_GpsCoordinateFormat, metaclass=_GpsCoordinateFormatEnumTypeWrapper): - """ - How the GPS coordinates are displayed on the OLED screen. - """ - - DEC: DeviceUIConfig.GpsCoordinateFormat.ValueType # 0 - """ - GPS coordinates are displayed in the normal decimal degrees format: - DD.DDDDDD DDD.DDDDDD - """ - DMS: DeviceUIConfig.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: DeviceUIConfig.GpsCoordinateFormat.ValueType # 2 - """ - Universal Transverse Mercator format: - ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing - """ - MGRS: DeviceUIConfig.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: DeviceUIConfig.GpsCoordinateFormat.ValueType # 4 - """ - Open Location Code (aka Plus Codes). - """ - OSGR: DeviceUIConfig.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 - """ - MLS: DeviceUIConfig.GpsCoordinateFormat.ValueType # 6 - """ - Maidenhead Locator System - Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System - """ - - VERSION_FIELD_NUMBER: builtins.int - SCREEN_BRIGHTNESS_FIELD_NUMBER: builtins.int - SCREEN_TIMEOUT_FIELD_NUMBER: builtins.int - SCREEN_LOCK_FIELD_NUMBER: builtins.int - SETTINGS_LOCK_FIELD_NUMBER: builtins.int - PIN_CODE_FIELD_NUMBER: builtins.int - THEME_FIELD_NUMBER: builtins.int - ALERT_ENABLED_FIELD_NUMBER: builtins.int - BANNER_ENABLED_FIELD_NUMBER: builtins.int - RING_TONE_ID_FIELD_NUMBER: builtins.int - LANGUAGE_FIELD_NUMBER: builtins.int - NODE_FILTER_FIELD_NUMBER: builtins.int - NODE_HIGHLIGHT_FIELD_NUMBER: builtins.int - CALIBRATION_DATA_FIELD_NUMBER: builtins.int - MAP_DATA_FIELD_NUMBER: builtins.int - COMPASS_MODE_FIELD_NUMBER: builtins.int - SCREEN_RGB_COLOR_FIELD_NUMBER: builtins.int - IS_CLOCKFACE_ANALOG_FIELD_NUMBER: builtins.int - GPS_FORMAT_FIELD_NUMBER: builtins.int - version: builtins.int - """ - A version integer used to invalidate saved files when we make incompatible changes. - """ - screen_brightness: builtins.int - """ - TFT display brightness 1..255 - """ - screen_timeout: builtins.int - """ - Screen timeout 0..900 - """ - screen_lock: builtins.bool - """ - Screen/Settings lock enabled - """ - settings_lock: builtins.bool - pin_code: builtins.int - theme: global___Theme.ValueType - """ - Color theme - """ - alert_enabled: builtins.bool - """ - Audible message, banner and ring tone - """ - banner_enabled: builtins.bool - ring_tone_id: builtins.int - language: global___Language.ValueType - """ - Localization - """ - calibration_data: builtins.bytes - """ - 8 integers for screen calibration data - """ - compass_mode: global___CompassMode.ValueType - """ - Compass mode - """ - screen_rgb_color: builtins.int - """ - RGB color for BaseUI - 0xRRGGBB format, e.g. 0xFF0000 for red - """ - is_clockface_analog: builtins.bool - """ - Clockface analog style - true for analog clockface, false for digital clockface - """ - gps_format: global___DeviceUIConfig.GpsCoordinateFormat.ValueType - """ - How the GPS coordinates are formatted on the OLED screen. - """ - @property - def node_filter(self) -> global___NodeFilter: - """ - Node list filter - """ - - @property - def node_highlight(self) -> global___NodeHighlight: - """ - Node list highlightening - """ - - @property - def map_data(self) -> global___Map: - """ - Map related data - """ - - def __init__( - self, - *, - version: builtins.int = ..., - screen_brightness: builtins.int = ..., - screen_timeout: builtins.int = ..., - screen_lock: builtins.bool = ..., - settings_lock: builtins.bool = ..., - pin_code: builtins.int = ..., - theme: global___Theme.ValueType = ..., - alert_enabled: builtins.bool = ..., - banner_enabled: builtins.bool = ..., - ring_tone_id: builtins.int = ..., - language: global___Language.ValueType = ..., - node_filter: global___NodeFilter | None = ..., - node_highlight: global___NodeHighlight | None = ..., - calibration_data: builtins.bytes = ..., - map_data: global___Map | None = ..., - compass_mode: global___CompassMode.ValueType = ..., - screen_rgb_color: builtins.int = ..., - is_clockface_analog: builtins.bool = ..., - gps_format: global___DeviceUIConfig.GpsCoordinateFormat.ValueType = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["alert_enabled", b"alert_enabled", "banner_enabled", b"banner_enabled", "calibration_data", b"calibration_data", "compass_mode", b"compass_mode", "gps_format", b"gps_format", "is_clockface_analog", b"is_clockface_analog", "language", b"language", "map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight", "pin_code", b"pin_code", "ring_tone_id", b"ring_tone_id", "screen_brightness", b"screen_brightness", "screen_lock", b"screen_lock", "screen_rgb_color", b"screen_rgb_color", "screen_timeout", b"screen_timeout", "settings_lock", b"settings_lock", "theme", b"theme", "version", b"version"]) -> None: ... - -global___DeviceUIConfig = DeviceUIConfig - -@typing.final -class NodeFilter(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - UNKNOWN_SWITCH_FIELD_NUMBER: builtins.int - OFFLINE_SWITCH_FIELD_NUMBER: builtins.int - PUBLIC_KEY_SWITCH_FIELD_NUMBER: builtins.int - HOPS_AWAY_FIELD_NUMBER: builtins.int - POSITION_SWITCH_FIELD_NUMBER: builtins.int - NODE_NAME_FIELD_NUMBER: builtins.int - CHANNEL_FIELD_NUMBER: builtins.int - unknown_switch: builtins.bool - """ - Filter unknown nodes - """ - offline_switch: builtins.bool - """ - Filter offline nodes - """ - public_key_switch: builtins.bool - """ - Filter nodes w/o public key - """ - hops_away: builtins.int - """ - Filter based on hops away - """ - position_switch: builtins.bool - """ - Filter nodes w/o position - """ - node_name: builtins.str - """ - Filter nodes by matching name string - """ - channel: builtins.int - """ - Filter based on channel - """ - def __init__( - self, - *, - unknown_switch: builtins.bool = ..., - offline_switch: builtins.bool = ..., - public_key_switch: builtins.bool = ..., - hops_away: builtins.int = ..., - position_switch: builtins.bool = ..., - node_name: builtins.str = ..., - channel: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["channel", b"channel", "hops_away", b"hops_away", "node_name", b"node_name", "offline_switch", b"offline_switch", "position_switch", b"position_switch", "public_key_switch", b"public_key_switch", "unknown_switch", b"unknown_switch"]) -> None: ... - -global___NodeFilter = NodeFilter - -@typing.final -class NodeHighlight(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CHAT_SWITCH_FIELD_NUMBER: builtins.int - POSITION_SWITCH_FIELD_NUMBER: builtins.int - TELEMETRY_SWITCH_FIELD_NUMBER: builtins.int - IAQ_SWITCH_FIELD_NUMBER: builtins.int - NODE_NAME_FIELD_NUMBER: builtins.int - chat_switch: builtins.bool - """ - Hightlight nodes w/ active chat - """ - position_switch: builtins.bool - """ - Highlight nodes w/ position - """ - telemetry_switch: builtins.bool - """ - Highlight nodes w/ telemetry data - """ - iaq_switch: builtins.bool - """ - Highlight nodes w/ iaq data - """ - node_name: builtins.str - """ - Highlight nodes by matching name string - """ - def __init__( - self, - *, - chat_switch: builtins.bool = ..., - position_switch: builtins.bool = ..., - telemetry_switch: builtins.bool = ..., - iaq_switch: builtins.bool = ..., - node_name: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["chat_switch", b"chat_switch", "iaq_switch", b"iaq_switch", "node_name", b"node_name", "position_switch", b"position_switch", "telemetry_switch", b"telemetry_switch"]) -> None: ... - -global___NodeHighlight = NodeHighlight - -@typing.final -class GeoPoint(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ZOOM_FIELD_NUMBER: builtins.int - LATITUDE_FIELD_NUMBER: builtins.int - LONGITUDE_FIELD_NUMBER: builtins.int - zoom: builtins.int - """ - Zoom level - """ - latitude: builtins.int - """ - Coordinate: latitude - """ - longitude: builtins.int - """ - Coordinate: longitude - """ - def __init__( - self, - *, - zoom: builtins.int = ..., - latitude: builtins.int = ..., - longitude: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["latitude", b"latitude", "longitude", b"longitude", "zoom", b"zoom"]) -> None: ... - -global___GeoPoint = GeoPoint - -@typing.final -class Map(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - HOME_FIELD_NUMBER: builtins.int - STYLE_FIELD_NUMBER: builtins.int - FOLLOW_GPS_FIELD_NUMBER: builtins.int - style: builtins.str - """ - Map tile style - """ - follow_gps: builtins.bool - """ - Map scroll follows GPS - """ - @property - def home(self) -> global___GeoPoint: - """ - Home coordinates - """ - - def __init__( - self, - *, - home: global___GeoPoint | None = ..., - style: builtins.str = ..., - follow_gps: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["home", b"home"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["follow_gps", b"follow_gps", "home", b"home", "style", b"style"]) -> None: ... - -global___Map = Map +class Language(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/deviceonly_pb2.py b/meshtastic/protobuf/deviceonly_pb2.py index 06af5bc..a0fb970 100644 --- a/meshtastic/protobuf/deviceonly_pb2.py +++ b/meshtastic/protobuf/deviceonly_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -21,10 +21,10 @@ from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/deviceonly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/nanopb.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\"\x94\x02\n\x08UserLite\x12\x13\n\x07macaddr\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x34\n\x08hw_model\x18\x04 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x05 \x01(\x08\x12;\n\x04role\x18\x06 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x12\n\npublic_key\x18\x07 \x01(\x0c\x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"\xf0\x02\n\x0cNodeInfoLite\x12\x0b\n\x03num\x18\x01 \x01(\r\x12+\n\x04user\x18\x02 \x01(\x0b\x32\x1d.meshtastic.protobuf.UserLite\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\x16\n\thops_away\x18\t \x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12\x10\n\x08next_hop\x18\x0c \x01(\r\x12\x10\n\x08\x62itfield\x18\r \x01(\rB\x0c\n\n_hops_away\"\xa1\x03\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\x19\n\rdid_gps_reset\x18\x0b \x01(\x08\x42\x02\x18\x01\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\"}\n\x0cNodeDatabase\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\\\n\x05nodes\x18\x02 \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\"\x86\x02\n\x11\x42\x61\x63kupPreferences\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x11\n\ttimestamp\x18\x02 \x01(\x07\x12\x30\n\x06\x63onfig\x18\x03 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfig\x12=\n\rmodule_config\x18\x04 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfig\x12\x32\n\x08\x63hannels\x18\x05 \x01(\x0b\x32 .meshtastic.protobuf.ChannelFile\x12(\n\x05owner\x18\x06 \x01(\x0b\x32\x19.meshtastic.protobuf.UserBn\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000\222?\013\302\001\010' _USERLITE.fields_by_name['macaddr']._options = None @@ -35,18 +35,18 @@ if _descriptor._USE_C_DESCRIPTORS == False: _DEVICESTATE.fields_by_name['did_gps_reset']._serialized_options = b'\030\001' _NODEDATABASE.fields_by_name['nodes']._options = None _NODEDATABASE.fields_by_name['nodes']._serialized_options = b'\222?\'\222\001$std::vector' - _globals['_POSITIONLITE']._serialized_start=271 - _globals['_POSITIONLITE']._serialized_end=424 - _globals['_USERLITE']._serialized_start=427 - _globals['_USERLITE']._serialized_end=703 - _globals['_NODEINFOLITE']._serialized_start=706 - _globals['_NODEINFOLITE']._serialized_end=1074 - _globals['_DEVICESTATE']._serialized_start=1077 - _globals['_DEVICESTATE']._serialized_end=1494 - _globals['_NODEDATABASE']._serialized_start=1496 - _globals['_NODEDATABASE']._serialized_end=1621 - _globals['_CHANNELFILE']._serialized_start=1623 - _globals['_CHANNELFILE']._serialized_end=1701 - _globals['_BACKUPPREFERENCES']._serialized_start=1704 - _globals['_BACKUPPREFERENCES']._serialized_end=1966 + _POSITIONLITE._serialized_start=271 + _POSITIONLITE._serialized_end=424 + _USERLITE._serialized_start=427 + _USERLITE._serialized_end=703 + _NODEINFOLITE._serialized_start=706 + _NODEINFOLITE._serialized_end=1074 + _DEVICESTATE._serialized_start=1077 + _DEVICESTATE._serialized_end=1494 + _NODEDATABASE._serialized_start=1496 + _NODEDATABASE._serialized_end=1621 + _CHANNELFILE._serialized_start=1623 + _CHANNELFILE._serialized_end=1701 + _BACKUPPREFERENCES._serialized_start=1704 + _BACKUPPREFERENCES._serialized_end=1966 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/deviceonly_pb2.pyi b/meshtastic/protobuf/deviceonly_pb2.pyi index 684a7fa..e37bdcf 100644 --- a/meshtastic/protobuf/deviceonly_pb2.pyi +++ b/meshtastic/protobuf/deviceonly_pb2.pyi @@ -1,458 +1,130 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from meshtastic.protobuf import channel_pb2 as _channel_pb2 +from meshtastic.protobuf import config_pb2 as _config_pb2 +from meshtastic.protobuf import localonly_pb2 as _localonly_pb2 +from meshtastic.protobuf import mesh_pb2 as _mesh_pb2 +from meshtastic.protobuf import telemetry_pb2 as _telemetry_pb2 +from meshtastic.protobuf import nanopb_pb2 as _nanopb_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union -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 meshtastic.protobuf.localonly_pb2 -import meshtastic.protobuf.mesh_pb2 -import meshtastic.protobuf.telemetry_pb2 -import typing +DESCRIPTOR: _descriptor.FileDescriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class BackupPreferences(_message.Message): + __slots__ = ["channels", "config", "module_config", "owner", "timestamp", "version"] + CHANNELS_FIELD_NUMBER: _ClassVar[int] + CONFIG_FIELD_NUMBER: _ClassVar[int] + MODULE_CONFIG_FIELD_NUMBER: _ClassVar[int] + OWNER_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + channels: ChannelFile + config: _localonly_pb2.LocalConfig + module_config: _localonly_pb2.LocalModuleConfig + owner: _mesh_pb2.User + timestamp: int + version: int + def __init__(self, version: _Optional[int] = ..., timestamp: _Optional[int] = ..., config: _Optional[_Union[_localonly_pb2.LocalConfig, _Mapping]] = ..., module_config: _Optional[_Union[_localonly_pb2.LocalModuleConfig, _Mapping]] = ..., channels: _Optional[_Union[ChannelFile, _Mapping]] = ..., owner: _Optional[_Union[_mesh_pb2.User, _Mapping]] = ...) -> None: ... -@typing.final -class PositionLite(google.protobuf.message.Message): - """ - Position with static location information only for NodeDBLite - """ +class ChannelFile(_message.Message): + __slots__ = ["channels", "version"] + CHANNELS_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + channels: _containers.RepeatedCompositeFieldContainer[_channel_pb2.Channel] + version: int + def __init__(self, channels: _Optional[_Iterable[_Union[_channel_pb2.Channel, _Mapping]]] = ..., version: _Optional[int] = ...) -> None: ... - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class DeviceState(_message.Message): + __slots__ = ["did_gps_reset", "my_node", "no_save", "node_remote_hardware_pins", "owner", "receive_queue", "rx_text_message", "rx_waypoint", "version"] + DID_GPS_RESET_FIELD_NUMBER: _ClassVar[int] + MY_NODE_FIELD_NUMBER: _ClassVar[int] + NODE_REMOTE_HARDWARE_PINS_FIELD_NUMBER: _ClassVar[int] + NO_SAVE_FIELD_NUMBER: _ClassVar[int] + OWNER_FIELD_NUMBER: _ClassVar[int] + RECEIVE_QUEUE_FIELD_NUMBER: _ClassVar[int] + RX_TEXT_MESSAGE_FIELD_NUMBER: _ClassVar[int] + RX_WAYPOINT_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + did_gps_reset: bool + my_node: _mesh_pb2.MyNodeInfo + no_save: bool + node_remote_hardware_pins: _containers.RepeatedCompositeFieldContainer[_mesh_pb2.NodeRemoteHardwarePin] + owner: _mesh_pb2.User + receive_queue: _containers.RepeatedCompositeFieldContainer[_mesh_pb2.MeshPacket] + rx_text_message: _mesh_pb2.MeshPacket + rx_waypoint: _mesh_pb2.MeshPacket + version: int + def __init__(self, my_node: _Optional[_Union[_mesh_pb2.MyNodeInfo, _Mapping]] = ..., owner: _Optional[_Union[_mesh_pb2.User, _Mapping]] = ..., receive_queue: _Optional[_Iterable[_Union[_mesh_pb2.MeshPacket, _Mapping]]] = ..., version: _Optional[int] = ..., rx_text_message: _Optional[_Union[_mesh_pb2.MeshPacket, _Mapping]] = ..., no_save: bool = ..., did_gps_reset: bool = ..., rx_waypoint: _Optional[_Union[_mesh_pb2.MeshPacket, _Mapping]] = ..., node_remote_hardware_pins: _Optional[_Iterable[_Union[_mesh_pb2.NodeRemoteHardwarePin, _Mapping]]] = ...) -> None: ... - 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: ... +class NodeDatabase(_message.Message): + __slots__ = ["nodes", "version"] + NODES_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + nodes: _containers.RepeatedCompositeFieldContainer[NodeInfoLite] + version: int + def __init__(self, version: _Optional[int] = ..., nodes: _Optional[_Iterable[_Union[NodeInfoLite, _Mapping]]] = ...) -> None: ... -global___PositionLite = PositionLite +class NodeInfoLite(_message.Message): + __slots__ = ["bitfield", "channel", "device_metrics", "hops_away", "is_favorite", "is_ignored", "last_heard", "next_hop", "num", "position", "snr", "user", "via_mqtt"] + BITFIELD_FIELD_NUMBER: _ClassVar[int] + CHANNEL_FIELD_NUMBER: _ClassVar[int] + DEVICE_METRICS_FIELD_NUMBER: _ClassVar[int] + HOPS_AWAY_FIELD_NUMBER: _ClassVar[int] + IS_FAVORITE_FIELD_NUMBER: _ClassVar[int] + IS_IGNORED_FIELD_NUMBER: _ClassVar[int] + LAST_HEARD_FIELD_NUMBER: _ClassVar[int] + NEXT_HOP_FIELD_NUMBER: _ClassVar[int] + NUM_FIELD_NUMBER: _ClassVar[int] + POSITION_FIELD_NUMBER: _ClassVar[int] + SNR_FIELD_NUMBER: _ClassVar[int] + USER_FIELD_NUMBER: _ClassVar[int] + VIA_MQTT_FIELD_NUMBER: _ClassVar[int] + bitfield: int + channel: int + device_metrics: _telemetry_pb2.DeviceMetrics + hops_away: int + is_favorite: bool + is_ignored: bool + last_heard: int + next_hop: int + num: int + position: PositionLite + snr: float + user: UserLite + via_mqtt: bool + def __init__(self, num: _Optional[int] = ..., user: _Optional[_Union[UserLite, _Mapping]] = ..., position: _Optional[_Union[PositionLite, _Mapping]] = ..., snr: _Optional[float] = ..., last_heard: _Optional[int] = ..., device_metrics: _Optional[_Union[_telemetry_pb2.DeviceMetrics, _Mapping]] = ..., channel: _Optional[int] = ..., via_mqtt: bool = ..., hops_away: _Optional[int] = ..., is_favorite: bool = ..., is_ignored: bool = ..., next_hop: _Optional[int] = ..., bitfield: _Optional[int] = ...) -> None: ... -@typing.final -class UserLite(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class PositionLite(_message.Message): + __slots__ = ["altitude", "latitude_i", "location_source", "longitude_i", "time"] + ALTITUDE_FIELD_NUMBER: _ClassVar[int] + LATITUDE_I_FIELD_NUMBER: _ClassVar[int] + LOCATION_SOURCE_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_I_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + altitude: int + latitude_i: int + location_source: _mesh_pb2.Position.LocSource + longitude_i: int + time: int + def __init__(self, latitude_i: _Optional[int] = ..., longitude_i: _Optional[int] = ..., altitude: _Optional[int] = ..., time: _Optional[int] = ..., location_source: _Optional[_Union[_mesh_pb2.Position.LocSource, str]] = ...) -> None: ... - MACADDR_FIELD_NUMBER: builtins.int - LONG_NAME_FIELD_NUMBER: builtins.int - SHORT_NAME_FIELD_NUMBER: builtins.int - HW_MODEL_FIELD_NUMBER: builtins.int - IS_LICENSED_FIELD_NUMBER: builtins.int - ROLE_FIELD_NUMBER: builtins.int - PUBLIC_KEY_FIELD_NUMBER: builtins.int - IS_UNMESSAGABLE_FIELD_NUMBER: builtins.int - macaddr: builtins.bytes - """ - This is the addr of the radio. - """ - 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 - """ - hw_model: meshtastic.protobuf.mesh_pb2.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 - """ - public_key: builtins.bytes - """ - The public key of the user's device. - This is sent out to other nodes on the mesh to allow them to compute a shared secret key. - """ - is_unmessagable: builtins.bool - """ - Whether or not the node can be messaged - """ - def __init__( - self, - *, - macaddr: builtins.bytes = ..., - long_name: builtins.str = ..., - short_name: builtins.str = ..., - hw_model: meshtastic.protobuf.mesh_pb2.HardwareModel.ValueType = ..., - is_licensed: builtins.bool = ..., - role: meshtastic.protobuf.config_pb2.Config.DeviceConfig.Role.ValueType = ..., - public_key: builtins.bytes = ..., - is_unmessagable: builtins.bool | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_is_unmessagable", b"_is_unmessagable", "is_unmessagable", b"is_unmessagable"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_is_unmessagable", b"_is_unmessagable", "hw_model", b"hw_model", "is_licensed", b"is_licensed", "is_unmessagable", b"is_unmessagable", "long_name", b"long_name", "macaddr", b"macaddr", "public_key", b"public_key", "role", b"role", "short_name", b"short_name"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["_is_unmessagable", b"_is_unmessagable"]) -> typing.Literal["is_unmessagable"] | None: ... - -global___UserLite = UserLite - -@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 - IS_IGNORED_FIELD_NUMBER: builtins.int - NEXT_HOP_FIELD_NUMBER: builtins.int - BITFIELD_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 direct neighbor) - """ - is_favorite: builtins.bool - """ - True if node is in our favorites list - Persists between NodeDB internal clean ups - """ - is_ignored: builtins.bool - """ - True if node is in our ignored list - Persists between NodeDB internal clean ups - """ - next_hop: builtins.int - """ - Last byte of the node number of the node that should be used as the next hop to reach this node. - """ - bitfield: builtins.int - """ - Bitfield for storing booleans. - LSB 0 is_key_manually_verified - """ - @property - def user(self) -> global___UserLite: - """ - 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: global___UserLite | 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 | None = ..., - is_favorite: builtins.bool = ..., - is_ignored: builtins.bool = ..., - next_hop: builtins.int = ..., - bitfield: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_hops_away", b"_hops_away", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "position", b"position", "user", b"user"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_hops_away", b"_hops_away", "bitfield", b"bitfield", "channel", b"channel", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "is_favorite", b"is_favorite", "is_ignored", b"is_ignored", "last_heard", b"last_heard", "next_hop", b"next_hop", "num", b"num", "position", b"position", "snr", b"snr", "user", b"user", "via_mqtt", b"via_mqtt"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["_hops_away", b"_hops_away"]) -> typing.Literal["hops_away"] | 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 - 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 - """ - Previously used to manage GPS factory resets. - Deprecated in 2.5.23 - """ - @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 - """ - - 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 = ..., - ) -> 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_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 NodeDatabase(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - VERSION_FIELD_NUMBER: builtins.int - NODES_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 nodes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___NodeInfoLite]: - """ - New lite version of NodeDB to decrease memory footprint - """ - - def __init__( - self, - *, - version: builtins.int = ..., - nodes: collections.abc.Iterable[global___NodeInfoLite] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["nodes", b"nodes", "version", b"version"]) -> None: ... - -global___NodeDatabase = NodeDatabase - -@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 BackupPreferences(google.protobuf.message.Message): - """ - The on-disk backup of the node's preferences - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - VERSION_FIELD_NUMBER: builtins.int - TIMESTAMP_FIELD_NUMBER: builtins.int - CONFIG_FIELD_NUMBER: builtins.int - MODULE_CONFIG_FIELD_NUMBER: builtins.int - CHANNELS_FIELD_NUMBER: builtins.int - OWNER_FIELD_NUMBER: builtins.int - version: builtins.int - """ - The version of the backup - """ - timestamp: builtins.int - """ - The timestamp of the backup (if node has time) - """ - @property - def config(self) -> meshtastic.protobuf.localonly_pb2.LocalConfig: - """ - The node's configuration - """ - - @property - def module_config(self) -> meshtastic.protobuf.localonly_pb2.LocalModuleConfig: - """ - The node's module configuration - """ - - @property - def channels(self) -> global___ChannelFile: - """ - The node's channels - """ - - @property - def owner(self) -> meshtastic.protobuf.mesh_pb2.User: - """ - The node's user (owner) information - """ - - def __init__( - self, - *, - version: builtins.int = ..., - timestamp: builtins.int = ..., - config: meshtastic.protobuf.localonly_pb2.LocalConfig | None = ..., - module_config: meshtastic.protobuf.localonly_pb2.LocalModuleConfig | None = ..., - channels: global___ChannelFile | None = ..., - owner: meshtastic.protobuf.mesh_pb2.User | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["channels", b"channels", "config", b"config", "module_config", b"module_config", "owner", b"owner"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["channels", b"channels", "config", b"config", "module_config", b"module_config", "owner", b"owner", "timestamp", b"timestamp", "version", b"version"]) -> None: ... - -global___BackupPreferences = BackupPreferences +class UserLite(_message.Message): + __slots__ = ["hw_model", "is_licensed", "is_unmessagable", "long_name", "macaddr", "public_key", "role", "short_name"] + HW_MODEL_FIELD_NUMBER: _ClassVar[int] + IS_LICENSED_FIELD_NUMBER: _ClassVar[int] + IS_UNMESSAGABLE_FIELD_NUMBER: _ClassVar[int] + LONG_NAME_FIELD_NUMBER: _ClassVar[int] + MACADDR_FIELD_NUMBER: _ClassVar[int] + PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + SHORT_NAME_FIELD_NUMBER: _ClassVar[int] + hw_model: _mesh_pb2.HardwareModel + is_licensed: bool + is_unmessagable: bool + long_name: str + macaddr: bytes + public_key: bytes + role: _config_pb2.Config.DeviceConfig.Role + short_name: str + def __init__(self, macaddr: _Optional[bytes] = ..., long_name: _Optional[str] = ..., short_name: _Optional[str] = ..., hw_model: _Optional[_Union[_mesh_pb2.HardwareModel, str]] = ..., is_licensed: bool = ..., role: _Optional[_Union[_config_pb2.Config.DeviceConfig.Role, str]] = ..., public_key: _Optional[bytes] = ..., is_unmessagable: bool = ...) -> None: ... diff --git a/meshtastic/protobuf/interdevice_pb2.py b/meshtastic/protobuf/interdevice_pb2.py index dda2ad6..e0a176f 100644 --- a/meshtastic/protobuf/interdevice_pb2.py +++ b/meshtastic/protobuf/interdevice_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/interdevice.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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,16 +15,16 @@ _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%meshtastic/protobuf/interdevice.proto\x12\x13meshtastic.protobuf\"s\n\nSensorData\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .meshtastic.protobuf.MessageType\x12\x15\n\x0b\x66loat_value\x18\x02 \x01(\x02H\x00\x12\x16\n\x0cuint32_value\x18\x03 \x01(\rH\x00\x42\x06\n\x04\x64\x61ta\"_\n\x12InterdeviceMessage\x12\x0e\n\x04nmea\x18\x01 \x01(\tH\x00\x12\x31\n\x06sensor\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.SensorDataH\x00\x42\x06\n\x04\x64\x61ta*\xd5\x01\n\x0bMessageType\x12\x07\n\x03\x41\x43K\x10\x00\x12\x15\n\x10\x43OLLECT_INTERVAL\x10\xa0\x01\x12\x0c\n\x07\x42\x45\x45P_ON\x10\xa1\x01\x12\r\n\x08\x42\x45\x45P_OFF\x10\xa2\x01\x12\r\n\x08SHUTDOWN\x10\xa3\x01\x12\r\n\x08POWER_ON\x10\xa4\x01\x12\x0f\n\nSCD41_TEMP\x10\xb0\x01\x12\x13\n\x0eSCD41_HUMIDITY\x10\xb1\x01\x12\x0e\n\tSCD41_CO2\x10\xb2\x01\x12\x0f\n\nAHT20_TEMP\x10\xb3\x01\x12\x13\n\x0e\x41HT20_HUMIDITY\x10\xb4\x01\x12\x0f\n\nTVOC_INDEX\x10\xb5\x01\x42g\n\x14org.meshtastic.protoB\x11InterdeviceProtosZ\"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.interdevice_pb2', _globals) +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.interdevice_pb2', globals()) if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\021InterdeviceProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_MESSAGETYPE']._serialized_start=277 - _globals['_MESSAGETYPE']._serialized_end=490 - _globals['_SENSORDATA']._serialized_start=62 - _globals['_SENSORDATA']._serialized_end=177 - _globals['_INTERDEVICEMESSAGE']._serialized_start=179 - _globals['_INTERDEVICEMESSAGE']._serialized_end=274 + _MESSAGETYPE._serialized_start=277 + _MESSAGETYPE._serialized_end=490 + _SENSORDATA._serialized_start=62 + _SENSORDATA._serialized_end=177 + _INTERDEVICEMESSAGE._serialized_start=179 + _INTERDEVICEMESSAGE._serialized_end=274 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/interdevice_pb2.pyi b/meshtastic/protobuf/interdevice_pb2.pyi index 6e70f9e..8adf857 100644 --- a/meshtastic/protobuf/interdevice_pb2.pyi +++ b/meshtastic/protobuf/interdevice_pb2.pyi @@ -1,105 +1,39 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +ACK: MessageType +AHT20_HUMIDITY: MessageType +AHT20_TEMP: MessageType +BEEP_OFF: MessageType +BEEP_ON: MessageType +COLLECT_INTERVAL: MessageType +DESCRIPTOR: _descriptor.FileDescriptor +POWER_ON: MessageType +SCD41_CO2: MessageType +SCD41_HUMIDITY: MessageType +SCD41_TEMP: MessageType +SHUTDOWN: MessageType +TVOC_INDEX: MessageType -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class InterdeviceMessage(_message.Message): + __slots__ = ["nmea", "sensor"] + NMEA_FIELD_NUMBER: _ClassVar[int] + SENSOR_FIELD_NUMBER: _ClassVar[int] + nmea: str + sensor: SensorData + def __init__(self, nmea: _Optional[str] = ..., sensor: _Optional[_Union[SensorData, _Mapping]] = ...) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class SensorData(_message.Message): + __slots__ = ["float_value", "type", "uint32_value"] + FLOAT_VALUE_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + UINT32_VALUE_FIELD_NUMBER: _ClassVar[int] + float_value: float + type: MessageType + uint32_value: int + def __init__(self, type: _Optional[_Union[MessageType, str]] = ..., float_value: _Optional[float] = ..., uint32_value: _Optional[int] = ...) -> None: ... -class _MessageType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _MessageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MessageType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - ACK: _MessageType.ValueType # 0 - COLLECT_INTERVAL: _MessageType.ValueType # 160 - """in ms""" - BEEP_ON: _MessageType.ValueType # 161 - """duration ms""" - BEEP_OFF: _MessageType.ValueType # 162 - """cancel prematurely""" - SHUTDOWN: _MessageType.ValueType # 163 - POWER_ON: _MessageType.ValueType # 164 - SCD41_TEMP: _MessageType.ValueType # 176 - SCD41_HUMIDITY: _MessageType.ValueType # 177 - SCD41_CO2: _MessageType.ValueType # 178 - AHT20_TEMP: _MessageType.ValueType # 179 - AHT20_HUMIDITY: _MessageType.ValueType # 180 - TVOC_INDEX: _MessageType.ValueType # 181 - -class MessageType(_MessageType, metaclass=_MessageTypeEnumTypeWrapper): - """encapsulate up to 1k of NMEA string data""" - -ACK: MessageType.ValueType # 0 -COLLECT_INTERVAL: MessageType.ValueType # 160 -"""in ms""" -BEEP_ON: MessageType.ValueType # 161 -"""duration ms""" -BEEP_OFF: MessageType.ValueType # 162 -"""cancel prematurely""" -SHUTDOWN: MessageType.ValueType # 163 -POWER_ON: MessageType.ValueType # 164 -SCD41_TEMP: MessageType.ValueType # 176 -SCD41_HUMIDITY: MessageType.ValueType # 177 -SCD41_CO2: MessageType.ValueType # 178 -AHT20_TEMP: MessageType.ValueType # 179 -AHT20_HUMIDITY: MessageType.ValueType # 180 -TVOC_INDEX: MessageType.ValueType # 181 -global___MessageType = MessageType - -@typing.final -class SensorData(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - TYPE_FIELD_NUMBER: builtins.int - FLOAT_VALUE_FIELD_NUMBER: builtins.int - UINT32_VALUE_FIELD_NUMBER: builtins.int - type: global___MessageType.ValueType - """The message type""" - float_value: builtins.float - uint32_value: builtins.int - def __init__( - self, - *, - type: global___MessageType.ValueType = ..., - float_value: builtins.float = ..., - uint32_value: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["data", b"data", "float_value", b"float_value", "uint32_value", b"uint32_value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["data", b"data", "float_value", b"float_value", "type", b"type", "uint32_value", b"uint32_value"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["data", b"data"]) -> typing.Literal["float_value", "uint32_value"] | None: ... - -global___SensorData = SensorData - -@typing.final -class InterdeviceMessage(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NMEA_FIELD_NUMBER: builtins.int - SENSOR_FIELD_NUMBER: builtins.int - nmea: builtins.str - @property - def sensor(self) -> global___SensorData: ... - def __init__( - self, - *, - nmea: builtins.str = ..., - sensor: global___SensorData | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["data", b"data", "nmea", b"nmea", "sensor", b"sensor"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["data", b"data", "nmea", b"nmea", "sensor", b"sensor"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["data", b"data"]) -> typing.Literal["nmea", "sensor"] | None: ... - -global___InterdeviceMessage = InterdeviceMessage +class MessageType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/localonly_pb2.py b/meshtastic/protobuf/localonly_pb2.py index 985aadd..36a0a48 100644 --- a/meshtastic/protobuf/localonly_pb2.py +++ b/meshtastic/protobuf/localonly_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,16 +15,16 @@ from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/localonly.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xfa\x03\n\x0bLocalConfig\x12\x38\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfig\x12<\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfig\x12\x36\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfig\x12:\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfig\x12:\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfig\x12\x34\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfig\x12>\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\x12<\n\x08security\x18\t \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfig\"\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(\rBe\n\x14org.meshtastic.protoB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/localonly.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xfa\x03\n\x0bLocalConfig\x12\x38\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfig\x12<\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfig\x12\x36\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfig\x12:\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfig\x12:\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfig\x12\x34\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfig\x12>\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\x12<\n\x08security\x18\t \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfig\"\xcf\t\n\x11LocalModuleConfig\x12:\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfig\x12>\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfig\x12[\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfig\x12K\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfig\x12\x45\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfig\x12\x44\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfig\x12M\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfig\x12<\n\x05\x61udio\x18\t \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfig\x12O\n\x0fremote_hardware\x18\n \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfig\x12K\n\rneighbor_info\x18\x0b \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfig\x12Q\n\x10\x61mbient_lighting\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfig\x12Q\n\x10\x64\x65tection_sensor\x18\r \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig\x12\x46\n\npaxcounter\x18\x0e \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfig\x12L\n\rstatusmessage\x18\x0f \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.StatusMessageConfig\x12U\n\x12traffic_management\x18\x10 \x01(\x0b\x32\x39.meshtastic.protobuf.ModuleConfig.TrafficManagementConfig\x12\x38\n\x03tak\x18\x11 \x01(\x0b\x32+.meshtastic.protobuf.ModuleConfig.TAKConfig\x12\x0f\n\x07version\x18\x08 \x01(\rBe\n\x14org.meshtastic.protoB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.localonly_pb2', _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\024org.meshtastic.protoB\017LocalOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_LOCALCONFIG']._serialized_start=136 - _globals['_LOCALCONFIG']._serialized_end=642 - _globals['_LOCALMODULECONFIG']._serialized_start=645 - _globals['_LOCALMODULECONFIG']._serialized_end=1653 + _LOCALCONFIG._serialized_start=136 + _LOCALCONFIG._serialized_end=642 + _LOCALMODULECONFIG._serialized_start=645 + _LOCALMODULECONFIG._serialized_end=1876 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/localonly_pb2.pyi b/meshtastic/protobuf/localonly_pb2.pyi index 059ef1a..804bd76 100644 --- a/meshtastic/protobuf/localonly_pb2.pyi +++ b/meshtastic/protobuf/localonly_pb2.pyi @@ -1,228 +1,67 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from meshtastic.protobuf import config_pb2 as _config_pb2 +from meshtastic.protobuf import module_config_pb2 as _module_config_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import meshtastic.protobuf.config_pb2 -import meshtastic.protobuf.module_config_pb2 -import typing +DESCRIPTOR: _descriptor.FileDescriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class LocalConfig(_message.Message): + __slots__ = ["bluetooth", "device", "display", "lora", "network", "position", "power", "security", "version"] + BLUETOOTH_FIELD_NUMBER: _ClassVar[int] + DEVICE_FIELD_NUMBER: _ClassVar[int] + DISPLAY_FIELD_NUMBER: _ClassVar[int] + LORA_FIELD_NUMBER: _ClassVar[int] + NETWORK_FIELD_NUMBER: _ClassVar[int] + POSITION_FIELD_NUMBER: _ClassVar[int] + POWER_FIELD_NUMBER: _ClassVar[int] + SECURITY_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + bluetooth: _config_pb2.Config.BluetoothConfig + device: _config_pb2.Config.DeviceConfig + display: _config_pb2.Config.DisplayConfig + lora: _config_pb2.Config.LoRaConfig + network: _config_pb2.Config.NetworkConfig + position: _config_pb2.Config.PositionConfig + power: _config_pb2.Config.PowerConfig + security: _config_pb2.Config.SecurityConfig + version: int + def __init__(self, device: _Optional[_Union[_config_pb2.Config.DeviceConfig, _Mapping]] = ..., position: _Optional[_Union[_config_pb2.Config.PositionConfig, _Mapping]] = ..., power: _Optional[_Union[_config_pb2.Config.PowerConfig, _Mapping]] = ..., network: _Optional[_Union[_config_pb2.Config.NetworkConfig, _Mapping]] = ..., display: _Optional[_Union[_config_pb2.Config.DisplayConfig, _Mapping]] = ..., lora: _Optional[_Union[_config_pb2.Config.LoRaConfig, _Mapping]] = ..., bluetooth: _Optional[_Union[_config_pb2.Config.BluetoothConfig, _Mapping]] = ..., version: _Optional[int] = ..., security: _Optional[_Union[_config_pb2.Config.SecurityConfig, _Mapping]] = ...) -> None: ... -@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 - SECURITY_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 - """ - - @property - def security(self) -> meshtastic.protobuf.config_pb2.Config.SecurityConfig: - """ - The part of the config that is specific to Security 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 = ..., - security: meshtastic.protobuf.config_pb2.Config.SecurityConfig | None = ..., - ) -> 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", "security", b"security"]) -> 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", "security", b"security", "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 +class LocalModuleConfig(_message.Message): + __slots__ = ["ambient_lighting", "audio", "canned_message", "detection_sensor", "external_notification", "mqtt", "neighbor_info", "paxcounter", "range_test", "remote_hardware", "serial", "statusmessage", "store_forward", "tak", "telemetry", "traffic_management", "version"] + AMBIENT_LIGHTING_FIELD_NUMBER: _ClassVar[int] + AUDIO_FIELD_NUMBER: _ClassVar[int] + CANNED_MESSAGE_FIELD_NUMBER: _ClassVar[int] + DETECTION_SENSOR_FIELD_NUMBER: _ClassVar[int] + EXTERNAL_NOTIFICATION_FIELD_NUMBER: _ClassVar[int] + MQTT_FIELD_NUMBER: _ClassVar[int] + NEIGHBOR_INFO_FIELD_NUMBER: _ClassVar[int] + PAXCOUNTER_FIELD_NUMBER: _ClassVar[int] + RANGE_TEST_FIELD_NUMBER: _ClassVar[int] + REMOTE_HARDWARE_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + STATUSMESSAGE_FIELD_NUMBER: _ClassVar[int] + STORE_FORWARD_FIELD_NUMBER: _ClassVar[int] + TAK_FIELD_NUMBER: _ClassVar[int] + TELEMETRY_FIELD_NUMBER: _ClassVar[int] + TRAFFIC_MANAGEMENT_FIELD_NUMBER: _ClassVar[int] + VERSION_FIELD_NUMBER: _ClassVar[int] + ambient_lighting: _module_config_pb2.ModuleConfig.AmbientLightingConfig + audio: _module_config_pb2.ModuleConfig.AudioConfig + canned_message: _module_config_pb2.ModuleConfig.CannedMessageConfig + detection_sensor: _module_config_pb2.ModuleConfig.DetectionSensorConfig + external_notification: _module_config_pb2.ModuleConfig.ExternalNotificationConfig + mqtt: _module_config_pb2.ModuleConfig.MQTTConfig + neighbor_info: _module_config_pb2.ModuleConfig.NeighborInfoConfig + paxcounter: _module_config_pb2.ModuleConfig.PaxcounterConfig + range_test: _module_config_pb2.ModuleConfig.RangeTestConfig + remote_hardware: _module_config_pb2.ModuleConfig.RemoteHardwareConfig + serial: _module_config_pb2.ModuleConfig.SerialConfig + statusmessage: _module_config_pb2.ModuleConfig.StatusMessageConfig + store_forward: _module_config_pb2.ModuleConfig.StoreForwardConfig + tak: _module_config_pb2.ModuleConfig.TAKConfig + telemetry: _module_config_pb2.ModuleConfig.TelemetryConfig + traffic_management: _module_config_pb2.ModuleConfig.TrafficManagementConfig + version: int + def __init__(self, mqtt: _Optional[_Union[_module_config_pb2.ModuleConfig.MQTTConfig, _Mapping]] = ..., serial: _Optional[_Union[_module_config_pb2.ModuleConfig.SerialConfig, _Mapping]] = ..., external_notification: _Optional[_Union[_module_config_pb2.ModuleConfig.ExternalNotificationConfig, _Mapping]] = ..., store_forward: _Optional[_Union[_module_config_pb2.ModuleConfig.StoreForwardConfig, _Mapping]] = ..., range_test: _Optional[_Union[_module_config_pb2.ModuleConfig.RangeTestConfig, _Mapping]] = ..., telemetry: _Optional[_Union[_module_config_pb2.ModuleConfig.TelemetryConfig, _Mapping]] = ..., canned_message: _Optional[_Union[_module_config_pb2.ModuleConfig.CannedMessageConfig, _Mapping]] = ..., audio: _Optional[_Union[_module_config_pb2.ModuleConfig.AudioConfig, _Mapping]] = ..., remote_hardware: _Optional[_Union[_module_config_pb2.ModuleConfig.RemoteHardwareConfig, _Mapping]] = ..., neighbor_info: _Optional[_Union[_module_config_pb2.ModuleConfig.NeighborInfoConfig, _Mapping]] = ..., ambient_lighting: _Optional[_Union[_module_config_pb2.ModuleConfig.AmbientLightingConfig, _Mapping]] = ..., detection_sensor: _Optional[_Union[_module_config_pb2.ModuleConfig.DetectionSensorConfig, _Mapping]] = ..., paxcounter: _Optional[_Union[_module_config_pb2.ModuleConfig.PaxcounterConfig, _Mapping]] = ..., statusmessage: _Optional[_Union[_module_config_pb2.ModuleConfig.StatusMessageConfig, _Mapping]] = ..., traffic_management: _Optional[_Union[_module_config_pb2.ModuleConfig.TrafficManagementConfig, _Mapping]] = ..., tak: _Optional[_Union[_module_config_pb2.ModuleConfig.TAKConfig, _Mapping]] = ..., version: _Optional[int] = ...) -> None: ... diff --git a/meshtastic/protobuf/mesh_pb2.py b/meshtastic/protobuf/mesh_pb2.py index 0e6142a..330d2f2 100644 --- a/meshtastic/protobuf/mesh_pb2.py +++ b/meshtastic/protobuf/mesh_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -20,102 +20,116 @@ from meshtastic.protobuf import telemetry_pb2 as meshtastic_dot_protobuf_dot_tel 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/device_ui.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/xmodem.proto\"\x99\x07\n\x08Position\x12\x17\n\nlatitude_i\x18\x01 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x02 \x01(\x0fH\x01\x88\x01\x01\x12\x15\n\x08\x61ltitude\x18\x03 \x01(\x05H\x02\x88\x01\x01\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\x19\n\x0c\x61ltitude_hae\x18\t \x01(\x11H\x03\x88\x01\x01\x12(\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11H\x04\x88\x01\x01\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\x19\n\x0cground_speed\x18\x0f \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cground_track\x18\x10 \x01(\rH\x06\x88\x01\x01\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\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_iB\x0b\n\t_altitudeB\x0f\n\r_altitude_haeB\x1e\n\x1c_altitude_geoidal_separationB\x0f\n\r_ground_speedB\x0f\n\r_ground_track\"\x9c\x02\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\x12\x12\n\npublic_key\x18\x08 \x01(\x0c\x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"Z\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\x12\x13\n\x0bsnr_towards\x18\x02 \x03(\x05\x12\x12\n\nroute_back\x18\x03 \x03(\x07\x12\x10\n\x08snr_back\x18\x04 \x03(\x05\"\x96\x04\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\"\xc9\x02\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!\x12\x0e\n\nPKI_FAILED\x10\"\x12\x16\n\x12PKI_UNKNOWN_PUBKEY\x10#\x12\x19\n\x15\x41\x44MIN_BAD_SESSION_KEY\x10$\x12!\n\x1d\x41\x44MIN_PUBLIC_KEY_UNAUTHORIZED\x10%\x12\x17\n\x13RATE_LIMIT_EXCEEDED\x10&B\t\n\x07variant\"\xd4\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\x12\x15\n\x08\x62itfield\x18\t \x01(\rH\x00\x88\x01\x01\x42\x0b\n\t_bitfield\">\n\x0fKeyVerification\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\r\n\x05hash1\x18\x02 \x01(\x0c\x12\r\n\x05hash2\x18\x03 \x01(\x0c\"\xbc\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x17\n\nlatitude_i\x18\x02 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x03 \x01(\x0fH\x01\x88\x01\x01\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\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_i\"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\"\xd9\x07\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\x12\x12\n\npublic_key\x18\x10 \x01(\x0c\x12\x15\n\rpki_encrypted\x18\x11 \x01(\x08\x12\x10\n\x08next_hop\x18\x12 \x01(\r\x12\x12\n\nrelay_node\x18\x13 \x01(\r\x12\x10\n\x08tx_after\x18\x14 \x01(\r\x12O\n\x13transport_mechanism\x18\x15 \x01(\x0e\x32\x32.meshtastic.protobuf.MeshPacket.TransportMechanism\"~\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\x0c\n\x08RESPONSE\x10P\x12\x08\n\x04HIGH\x10\x64\x12\t\n\x05\x41LERT\x10n\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\"\xcf\x01\n\x12TransportMechanism\x12\x16\n\x12TRANSPORT_INTERNAL\x10\x00\x12\x12\n\x0eTRANSPORT_LORA\x10\x01\x12\x17\n\x13TRANSPORT_LORA_ALT1\x10\x02\x12\x17\n\x13TRANSPORT_LORA_ALT2\x10\x03\x12\x17\n\x13TRANSPORT_LORA_ALT3\x10\x04\x12\x12\n\x0eTRANSPORT_MQTT\x10\x05\x12\x1b\n\x17TRANSPORT_MULTICAST_UDP\x10\x06\x12\x11\n\rTRANSPORT_API\x10\x07\x42\x11\n\x0fpayload_variant\"\xe2\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\x16\n\thops_away\x18\t \x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12 \n\x18is_key_manually_verified\x18\x0c \x01(\x08\x42\x0c\n\n_hops_away\"\xca\x01\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\x12\x11\n\tdevice_id\x18\x0c \x01(\x0c\x12\x0f\n\x07pio_env\x18\r \x01(\t\x12>\n\x10\x66irmware_edition\x18\x0e \x01(\x0e\x32$.meshtastic.protobuf.FirmwareEdition\x12\x14\n\x0cnodedb_count\x18\x0f \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\"\xf7\x06\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\x12\x31\n\x08\x66ileInfo\x18\x0f \x01(\x0b\x32\x1d.meshtastic.protobuf.FileInfoH\x00\x12\x45\n\x12\x63lientNotification\x18\x10 \x01(\x0b\x32\'.meshtastic.protobuf.ClientNotificationH\x00\x12=\n\x0e\x64\x65viceuiConfig\x18\x11 \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x42\x11\n\x0fpayload_variant\"\xb0\x04\n\x12\x43lientNotification\x12\x15\n\x08reply_id\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x33\n\x05level\x18\x03 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\x12\x0f\n\x07message\x18\x04 \x01(\t\x12Z\n\x1ekey_verification_number_inform\x18\x0b \x01(\x0b\x32\x30.meshtastic.protobuf.KeyVerificationNumberInformH\x00\x12\\\n\x1fkey_verification_number_request\x18\x0c \x01(\x0b\x32\x31.meshtastic.protobuf.KeyVerificationNumberRequestH\x00\x12K\n\x16key_verification_final\x18\r \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationFinalH\x00\x12I\n\x15\x64uplicated_public_key\x18\x0e \x01(\x0b\x32(.meshtastic.protobuf.DuplicatedPublicKeyH\x00\x12=\n\x0flow_entropy_key\x18\x0f \x01(\x0b\x32\".meshtastic.protobuf.LowEntropyKeyH\x00\x42\x11\n\x0fpayload_variantB\x0b\n\t_reply_id\"^\n\x1bKeyVerificationNumberInform\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\x12\x17\n\x0fsecurity_number\x18\x03 \x01(\r\"F\n\x1cKeyVerificationNumberRequest\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\"q\n\x14KeyVerificationFinal\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\x12\x10\n\x08isSender\x18\x03 \x01(\x08\x12\x1f\n\x17verification_characters\x18\x04 \x01(\t\"\x15\n\x13\x44uplicatedPublicKey\"\x0f\n\rLowEntropyKey\"1\n\x08\x46ileInfo\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\r\"\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\"\xe9\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\x12\x0e\n\x06hasPKC\x18\x0b \x01(\x08\x12\x18\n\x10\x65xcluded_modules\x18\x0c \x01(\r\"\x1a\n\tHeartbeat\x12\r\n\x05nonce\x18\x01 \x01(\r\"^\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*\xe2\x11\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\x0b\n\x07RAK2560\x10\x16\x12\x13\n\x0fHELTEC_HRU_3601\x10\x17\x12\x1a\n\x16HELTEC_WIRELESS_BRIDGE\x10\x18\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\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x1d\n\x19HELTEC_VISION_MASTER_T190\x10\x42\x12\x1d\n\x19HELTEC_VISION_MASTER_E213\x10\x43\x12\x1d\n\x19HELTEC_VISION_MASTER_E290\x10\x44\x12\x19\n\x15HELTEC_MESH_NODE_T114\x10\x45\x12\x16\n\x12SENSECAP_INDICATOR\x10\x46\x12\x13\n\x0fTRACKER_T1000_E\x10G\x12\x0b\n\x07RAK3172\x10H\x12\n\n\x06WIO_E5\x10I\x12\x1a\n\x16RADIOMASTER_900_BANDIT\x10J\x12\x13\n\x0fME25LS01_4Y10TD\x10K\x12\x18\n\x14RP2040_FEATHER_RFM95\x10L\x12\x15\n\x11M5STACK_COREBASIC\x10M\x12\x11\n\rM5STACK_CORE2\x10N\x12\r\n\tRPI_PICO2\x10O\x12\x12\n\x0eM5STACK_CORES3\x10P\x12\x11\n\rSEEED_XIAO_S3\x10Q\x12\x0b\n\x07MS24SF1\x10R\x12\x0c\n\x08TLORA_C6\x10S\x12\x0f\n\x0bWISMESH_TAP\x10T\x12\r\n\tROUTASTIC\x10U\x12\x0c\n\x08MESH_TAB\x10V\x12\x0c\n\x08MESHLINK\x10W\x12\x12\n\x0eXIAO_NRF52_KIT\x10X\x12\x10\n\x0cTHINKNODE_M1\x10Y\x12\x10\n\x0cTHINKNODE_M2\x10Z\x12\x0f\n\x0bT_ETH_ELITE\x10[\x12\x15\n\x11HELTEC_SENSOR_HUB\x10\\\x12\x1a\n\x16RESERVED_FRIED_CHICKEN\x10]\x12\x16\n\x12HELTEC_MESH_POCKET\x10^\x12\x14\n\x10SEEED_SOLAR_NODE\x10_\x12\x18\n\x14NOMADSTAR_METEOR_PRO\x10`\x12\r\n\tCROWPANEL\x10\x61\x12\x0b\n\x07LINK_32\x10\x62\x12\x18\n\x14SEEED_WIO_TRACKER_L1\x10\x63\x12\x1d\n\x19SEEED_WIO_TRACKER_L1_EINK\x10\x64\x12\x0f\n\x0bMUZI_R1_NEO\x10\x65\x12\x0e\n\nT_DECK_PRO\x10\x66\x12\x10\n\x0cT_LORA_PAGER\x10g\x12\x14\n\x10M5STACK_RESERVED\x10h\x12\x0f\n\x0bWISMESH_TAG\x10i\x12\x0b\n\x07RAK3312\x10j\x12\x10\n\x0cTHINKNODE_M5\x10k\x12\x15\n\x11HELTEC_MESH_SOLAR\x10l\x12\x0f\n\x0bT_ECHO_LITE\x10m\x12\r\n\tHELTEC_V4\x10n\x12\x0f\n\x0bM5STACK_C6L\x10o\x12\x19\n\x15M5STACK_CARDPUTER_ADV\x10p\x12\x1e\n\x1aHELTEC_WIRELESS_TRACKER_V2\x10q\x12\x11\n\rT_WATCH_ULTRA\x10r\x12\x10\n\x0cTHINKNODE_M3\x10s\x12\x12\n\x0eWISMESH_TAP_V2\x10t\x12\x0b\n\x07RAK3401\x10u\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\xe9\x01*\xb4\x02\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\x12 \n\x1c\x46LASH_CORRUPTION_RECOVERABLE\x10\x0c\x12\"\n\x1e\x46LASH_CORRUPTION_UNRECOVERABLE\x10\r*\x7f\n\x0f\x46irmwareEdition\x12\x0b\n\x07VANILLA\x10\x00\x12\x11\n\rSMART_CITIZEN\x10\x01\x12\x0e\n\nOPEN_SAUCE\x10\x10\x12\n\n\x06\x44\x45\x46\x43ON\x10\x11\x12\x0f\n\x0b\x42URNING_MAN\x10\x12\x12\x0e\n\nHAMVENTION\x10\x13\x12\x0f\n\x0b\x44IY_EDITION\x10\x7f*\x80\x03\n\x0f\x45xcludedModules\x12\x11\n\rEXCLUDED_NONE\x10\x00\x12\x0f\n\x0bMQTT_CONFIG\x10\x01\x12\x11\n\rSERIAL_CONFIG\x10\x02\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x04\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x08\x12\x14\n\x10RANGETEST_CONFIG\x10\x10\x12\x14\n\x10TELEMETRY_CONFIG\x10 \x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10@\x12\x11\n\x0c\x41UDIO_CONFIG\x10\x80\x01\x12\x1a\n\x15REMOTEHARDWARE_CONFIG\x10\x80\x02\x12\x18\n\x13NEIGHBORINFO_CONFIG\x10\x80\x04\x12\x1b\n\x16\x41MBIENTLIGHTING_CONFIG\x10\x80\x08\x12\x1b\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x80\x10\x12\x16\n\x11PAXCOUNTER_CONFIG\x10\x80 \x12\x15\n\x10\x42LUETOOTH_CONFIG\x10\x80@\x12\x14\n\x0eNETWORK_CONFIG\x10\x80\x80\x01\x42`\n\x14org.meshtastic.protoB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +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/device_ui.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/xmodem.proto\"\x99\x07\n\x08Position\x12\x17\n\nlatitude_i\x18\x01 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x02 \x01(\x0fH\x01\x88\x01\x01\x12\x15\n\x08\x61ltitude\x18\x03 \x01(\x05H\x02\x88\x01\x01\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\x19\n\x0c\x61ltitude_hae\x18\t \x01(\x11H\x03\x88\x01\x01\x12(\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11H\x04\x88\x01\x01\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\x19\n\x0cground_speed\x18\x0f \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cground_track\x18\x10 \x01(\rH\x06\x88\x01\x01\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\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_iB\x0b\n\t_altitudeB\x0f\n\r_altitude_haeB\x1e\n\x1c_altitude_geoidal_separationB\x0f\n\r_ground_speedB\x0f\n\r_ground_track\"\x9c\x02\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\x12\x12\n\npublic_key\x18\x08 \x01(\x0c\x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"Z\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\x12\x13\n\x0bsnr_towards\x18\x02 \x03(\x05\x12\x12\n\nroute_back\x18\x03 \x03(\x07\x12\x10\n\x08snr_back\x18\x04 \x03(\x05\"\xb4\x04\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\"\xe7\x02\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!\x12\x0e\n\nPKI_FAILED\x10\"\x12\x16\n\x12PKI_UNKNOWN_PUBKEY\x10#\x12\x19\n\x15\x41\x44MIN_BAD_SESSION_KEY\x10$\x12!\n\x1d\x41\x44MIN_PUBLIC_KEY_UNAUTHORIZED\x10%\x12\x17\n\x13RATE_LIMIT_EXCEEDED\x10&\x12\x1c\n\x18PKI_SEND_FAIL_PUBLIC_KEY\x10\'B\t\n\x07variant\"\xd4\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\x12\x15\n\x08\x62itfield\x18\t \x01(\rH\x00\x88\x01\x01\x42\x0b\n\t_bitfield\">\n\x0fKeyVerification\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\r\n\x05hash1\x18\x02 \x01(\x0c\x12\r\n\x05hash2\x18\x03 \x01(\x0c\"\xd4\x03\n\x14StoreForwardPlusPlus\x12V\n\x11sfpp_message_type\x18\x01 \x01(\x0e\x32;.meshtastic.protobuf.StoreForwardPlusPlus.SFPP_message_type\x12\x14\n\x0cmessage_hash\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63ommit_hash\x18\x03 \x01(\x0c\x12\x11\n\troot_hash\x18\x04 \x01(\x0c\x12\x0f\n\x07message\x18\x05 \x01(\x0c\x12\x17\n\x0f\x65ncapsulated_id\x18\x06 \x01(\r\x12\x17\n\x0f\x65ncapsulated_to\x18\x07 \x01(\r\x12\x19\n\x11\x65ncapsulated_from\x18\x08 \x01(\r\x12\x1b\n\x13\x65ncapsulated_rxtime\x18\t \x01(\r\x12\x13\n\x0b\x63hain_count\x18\n \x01(\r\"\x95\x01\n\x11SFPP_message_type\x12\x12\n\x0e\x43\x41NON_ANNOUNCE\x10\x00\x12\x0f\n\x0b\x43HAIN_QUERY\x10\x01\x12\x10\n\x0cLINK_REQUEST\x10\x03\x12\x10\n\x0cLINK_PROVIDE\x10\x04\x12\x1a\n\x16LINK_PROVIDE_FIRSTHALF\x10\x05\x12\x1b\n\x17LINK_PROVIDE_SECONDHALF\x10\x06\"\xec\x02\n\x0bRemoteShell\x12\x33\n\x02op\x18\x01 \x01(\x0e\x32\'.meshtastic.protobuf.RemoteShell.OpCode\x12\x12\n\nsession_id\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x0f\n\x07\x61\x63k_seq\x18\x04 \x01(\r\x12\x0f\n\x07payload\x18\x05 \x01(\x0c\x12\x0c\n\x04\x63ols\x18\x06 \x01(\r\x12\x0c\n\x04rows\x18\x07 \x01(\r\x12\r\n\x05\x66lags\x18\x08 \x01(\r\x12\x13\n\x0blast_tx_seq\x18\t \x01(\r\x12\x13\n\x0blast_rx_seq\x18\n \x01(\r\"\x8f\x01\n\x06OpCode\x12\x0c\n\x08OP_UNSET\x10\x00\x12\x08\n\x04OPEN\x10\x01\x12\t\n\x05INPUT\x10\x02\x12\n\n\x06RESIZE\x10\x03\x12\t\n\x05\x43LOSE\x10\x04\x12\x08\n\x04PING\x10\x05\x12\x07\n\x03\x41\x43K\x10\x06\x12\x0b\n\x07OPEN_OK\x10@\x12\n\n\x06OUTPUT\x10\x41\x12\n\n\x06\x43LOSED\x10\x42\x12\t\n\x05\x45RROR\x10\x43\x12\x08\n\x04PONG\x10\x44\"\xbc\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x17\n\nlatitude_i\x18\x02 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x03 \x01(\x0fH\x01\x88\x01\x01\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\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_i\"\x1f\n\rStatusMessage\x12\x0e\n\x06status\x18\x01 \x01(\t\"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\"\xd9\x07\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\x12\x12\n\npublic_key\x18\x10 \x01(\x0c\x12\x15\n\rpki_encrypted\x18\x11 \x01(\x08\x12\x10\n\x08next_hop\x18\x12 \x01(\r\x12\x12\n\nrelay_node\x18\x13 \x01(\r\x12\x10\n\x08tx_after\x18\x14 \x01(\r\x12O\n\x13transport_mechanism\x18\x15 \x01(\x0e\x32\x32.meshtastic.protobuf.MeshPacket.TransportMechanism\"~\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\x0c\n\x08RESPONSE\x10P\x12\x08\n\x04HIGH\x10\x64\x12\t\n\x05\x41LERT\x10n\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\"\xcf\x01\n\x12TransportMechanism\x12\x16\n\x12TRANSPORT_INTERNAL\x10\x00\x12\x12\n\x0eTRANSPORT_LORA\x10\x01\x12\x17\n\x13TRANSPORT_LORA_ALT1\x10\x02\x12\x17\n\x13TRANSPORT_LORA_ALT2\x10\x03\x12\x17\n\x13TRANSPORT_LORA_ALT3\x10\x04\x12\x12\n\x0eTRANSPORT_MQTT\x10\x05\x12\x1b\n\x17TRANSPORT_MULTICAST_UDP\x10\x06\x12\x11\n\rTRANSPORT_API\x10\x07\x42\x11\n\x0fpayload_variant\"\xf4\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\x16\n\thops_away\x18\t \x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12 \n\x18is_key_manually_verified\x18\x0c \x01(\x08\x12\x10\n\x08is_muted\x18\r \x01(\x08\x42\x0c\n\n_hops_away\"\xca\x01\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\x12\x11\n\tdevice_id\x18\x0c \x01(\x0c\x12\x0f\n\x07pio_env\x18\r \x01(\t\x12>\n\x10\x66irmware_edition\x18\x0e \x01(\x0e\x32$.meshtastic.protobuf.FirmwareEdition\x12\x14\n\x0cnodedb_count\x18\x0f \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\"\xb7\x07\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\x12\x31\n\x08\x66ileInfo\x18\x0f \x01(\x0b\x32\x1d.meshtastic.protobuf.FileInfoH\x00\x12\x45\n\x12\x63lientNotification\x18\x10 \x01(\x0b\x32\'.meshtastic.protobuf.ClientNotificationH\x00\x12=\n\x0e\x64\x65viceuiConfig\x18\x11 \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0flockdown_status\x18\x12 \x01(\x0b\x32#.meshtastic.protobuf.LockdownStatusH\x00\x42\x11\n\x0fpayload_variant\"\x8e\x02\n\x0eLockdownStatus\x12\x38\n\x05state\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.LockdownStatus.State\x12\x13\n\x0block_reason\x18\x02 \x01(\t\x12\x17\n\x0f\x62oots_remaining\x18\x03 \x01(\r\x12\x19\n\x11valid_until_epoch\x18\x04 \x01(\r\x12\x17\n\x0f\x62\x61\x63koff_seconds\x18\x05 \x01(\r\"`\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x13\n\x0fNEEDS_PROVISION\x10\x01\x12\n\n\x06LOCKED\x10\x02\x12\x0c\n\x08UNLOCKED\x10\x03\x12\x11\n\rUNLOCK_FAILED\x10\x04\"\xb0\x04\n\x12\x43lientNotification\x12\x15\n\x08reply_id\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x33\n\x05level\x18\x03 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\x12\x0f\n\x07message\x18\x04 \x01(\t\x12Z\n\x1ekey_verification_number_inform\x18\x0b \x01(\x0b\x32\x30.meshtastic.protobuf.KeyVerificationNumberInformH\x00\x12\\\n\x1fkey_verification_number_request\x18\x0c \x01(\x0b\x32\x31.meshtastic.protobuf.KeyVerificationNumberRequestH\x00\x12K\n\x16key_verification_final\x18\r \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationFinalH\x00\x12I\n\x15\x64uplicated_public_key\x18\x0e \x01(\x0b\x32(.meshtastic.protobuf.DuplicatedPublicKeyH\x00\x12=\n\x0flow_entropy_key\x18\x0f \x01(\x0b\x32\".meshtastic.protobuf.LowEntropyKeyH\x00\x42\x11\n\x0fpayload_variantB\x0b\n\t_reply_id\"^\n\x1bKeyVerificationNumberInform\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\x12\x17\n\x0fsecurity_number\x18\x03 \x01(\r\"F\n\x1cKeyVerificationNumberRequest\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\"q\n\x14KeyVerificationFinal\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\x12\x10\n\x08isSender\x18\x03 \x01(\x08\x12\x1f\n\x17verification_characters\x18\x04 \x01(\t\"\x15\n\x13\x44uplicatedPublicKey\"\x0f\n\rLowEntropyKey\"1\n\x08\x46ileInfo\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\r\"\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\"\xe9\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\x12\x0e\n\x06hasPKC\x18\x0b \x01(\x08\x12\x18\n\x10\x65xcluded_modules\x18\x0c \x01(\r\"\x1a\n\tHeartbeat\x12\r\n\x05nonce\x18\x01 \x01(\r\"^\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*\xce\x14\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\x0b\n\x07RAK2560\x10\x16\x12\x13\n\x0fHELTEC_HRU_3601\x10\x17\x12\x1a\n\x16HELTEC_WIRELESS_BRIDGE\x10\x18\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\x0f\n\x0bT_ECHO_PLUS\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\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x1d\n\x19HELTEC_VISION_MASTER_T190\x10\x42\x12\x1d\n\x19HELTEC_VISION_MASTER_E213\x10\x43\x12\x1d\n\x19HELTEC_VISION_MASTER_E290\x10\x44\x12\x19\n\x15HELTEC_MESH_NODE_T114\x10\x45\x12\x16\n\x12SENSECAP_INDICATOR\x10\x46\x12\x13\n\x0fTRACKER_T1000_E\x10G\x12\x0b\n\x07RAK3172\x10H\x12\n\n\x06WIO_E5\x10I\x12\x1a\n\x16RADIOMASTER_900_BANDIT\x10J\x12\x13\n\x0fME25LS01_4Y10TD\x10K\x12\x18\n\x14RP2040_FEATHER_RFM95\x10L\x12\x15\n\x11M5STACK_COREBASIC\x10M\x12\x11\n\rM5STACK_CORE2\x10N\x12\r\n\tRPI_PICO2\x10O\x12\x12\n\x0eM5STACK_CORES3\x10P\x12\x11\n\rSEEED_XIAO_S3\x10Q\x12\x0b\n\x07MS24SF1\x10R\x12\x0c\n\x08TLORA_C6\x10S\x12\x0f\n\x0bWISMESH_TAP\x10T\x12\r\n\tROUTASTIC\x10U\x12\x0c\n\x08MESH_TAB\x10V\x12\x0c\n\x08MESHLINK\x10W\x12\x12\n\x0eXIAO_NRF52_KIT\x10X\x12\x10\n\x0cTHINKNODE_M1\x10Y\x12\x10\n\x0cTHINKNODE_M2\x10Z\x12\x0f\n\x0bT_ETH_ELITE\x10[\x12\x15\n\x11HELTEC_SENSOR_HUB\x10\\\x12\r\n\tMUZI_BASE\x10]\x12\x16\n\x12HELTEC_MESH_POCKET\x10^\x12\x14\n\x10SEEED_SOLAR_NODE\x10_\x12\x18\n\x14NOMADSTAR_METEOR_PRO\x10`\x12\r\n\tCROWPANEL\x10\x61\x12\x0b\n\x07LINK_32\x10\x62\x12\x18\n\x14SEEED_WIO_TRACKER_L1\x10\x63\x12\x1d\n\x19SEEED_WIO_TRACKER_L1_EINK\x10\x64\x12\x0f\n\x0bMUZI_R1_NEO\x10\x65\x12\x0e\n\nT_DECK_PRO\x10\x66\x12\x10\n\x0cT_LORA_PAGER\x10g\x12\x14\n\x10M5STACK_RESERVED\x10h\x12\x0f\n\x0bWISMESH_TAG\x10i\x12\x0b\n\x07RAK3312\x10j\x12\x10\n\x0cTHINKNODE_M5\x10k\x12\x15\n\x11HELTEC_MESH_SOLAR\x10l\x12\x0f\n\x0bT_ECHO_LITE\x10m\x12\r\n\tHELTEC_V4\x10n\x12\x0f\n\x0bM5STACK_C6L\x10o\x12\x19\n\x15M5STACK_CARDPUTER_ADV\x10p\x12\x1e\n\x1aHELTEC_WIRELESS_TRACKER_V2\x10q\x12\x11\n\rT_WATCH_ULTRA\x10r\x12\x10\n\x0cTHINKNODE_M3\x10s\x12\x12\n\x0eWISMESH_TAP_V2\x10t\x12\x0b\n\x07RAK3401\x10u\x12\x0b\n\x07RAK6421\x10v\x12\x10\n\x0cTHINKNODE_M4\x10w\x12\x10\n\x0cTHINKNODE_M6\x10x\x12\x12\n\x0eMESHSTICK_1262\x10y\x12\x10\n\x0cTBEAM_1_WATT\x10z\x12\x14\n\x10T5_S3_EPAPER_PRO\x10{\x12\r\n\tTBEAM_BPF\x10|\x12\x12\n\x0eMINI_EPAPER_S3\x10}\x12\x13\n\x0fTDISPLAY_S3_PRO\x10~\x12\x19\n\x15HELTEC_MESH_NODE_T096\x10\x7f\x12\x18\n\x13TRACKER_T1000_E_PRO\x10\x80\x01\x12\x11\n\x0cTHINKNODE_M7\x10\x81\x01\x12\x11\n\x0cTHINKNODE_M8\x10\x82\x01\x12\x11\n\x0cTHINKNODE_M9\x10\x83\x01\x12\x11\n\x0cHELTEC_V4_R8\x10\x84\x01\x12\x18\n\x13HELTEC_MESH_NODE_T1\x10\x85\x01\x12\x0f\n\nSTATION_G3\x10\x86\x01\x12\x13\n\x0eT_IMPULSE_PLUS\x10\x87\x01\x12\x10\n\x0bT_ECHO_CARD\x10\x88\x01\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\xe9\x01*\xb4\x02\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\x12 \n\x1c\x46LASH_CORRUPTION_RECOVERABLE\x10\x0c\x12\"\n\x1e\x46LASH_CORRUPTION_UNRECOVERABLE\x10\r*\x7f\n\x0f\x46irmwareEdition\x12\x0b\n\x07VANILLA\x10\x00\x12\x11\n\rSMART_CITIZEN\x10\x01\x12\x0e\n\nOPEN_SAUCE\x10\x10\x12\n\n\x06\x44\x45\x46\x43ON\x10\x11\x12\x0f\n\x0b\x42URNING_MAN\x10\x12\x12\x0e\n\nHAMVENTION\x10\x13\x12\x0f\n\x0b\x44IY_EDITION\x10\x7f*\x80\x03\n\x0f\x45xcludedModules\x12\x11\n\rEXCLUDED_NONE\x10\x00\x12\x0f\n\x0bMQTT_CONFIG\x10\x01\x12\x11\n\rSERIAL_CONFIG\x10\x02\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x04\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x08\x12\x14\n\x10RANGETEST_CONFIG\x10\x10\x12\x14\n\x10TELEMETRY_CONFIG\x10 \x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10@\x12\x11\n\x0c\x41UDIO_CONFIG\x10\x80\x01\x12\x1a\n\x15REMOTEHARDWARE_CONFIG\x10\x80\x02\x12\x18\n\x13NEIGHBORINFO_CONFIG\x10\x80\x04\x12\x1b\n\x16\x41MBIENTLIGHTING_CONFIG\x10\x80\x08\x12\x1b\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x80\x10\x12\x16\n\x11PAXCOUNTER_CONFIG\x10\x80 \x12\x15\n\x10\x42LUETOOTH_CONFIG\x10\x80@\x12\x14\n\x0eNETWORK_CONFIG\x10\x80\x80\x01\x42`\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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=7838 - _globals['_HARDWAREMODEL']._serialized_end=10112 - _globals['_CONSTANTS']._serialized_start=10114 - _globals['_CONSTANTS']._serialized_end=10158 - _globals['_CRITICALERRORCODE']._serialized_start=10161 - _globals['_CRITICALERRORCODE']._serialized_end=10469 - _globals['_FIRMWAREEDITION']._serialized_start=10471 - _globals['_FIRMWAREEDITION']._serialized_end=10598 - _globals['_EXCLUDEDMODULES']._serialized_start=10601 - _globals['_EXCLUDEDMODULES']._serialized_end=10985 - _globals['_POSITION']._serialized_start=310 - _globals['_POSITION']._serialized_end=1231 - _globals['_POSITION_LOCSOURCE']._serialized_start=926 - _globals['_POSITION_LOCSOURCE']._serialized_end=1004 - _globals['_POSITION_ALTSOURCE']._serialized_start=1006 - _globals['_POSITION_ALTSOURCE']._serialized_end=1104 - _globals['_USER']._serialized_start=1234 - _globals['_USER']._serialized_end=1518 - _globals['_ROUTEDISCOVERY']._serialized_start=1520 - _globals['_ROUTEDISCOVERY']._serialized_end=1610 - _globals['_ROUTING']._serialized_start=1613 - _globals['_ROUTING']._serialized_end=2147 - _globals['_ROUTING_ERROR']._serialized_start=1807 - _globals['_ROUTING_ERROR']._serialized_end=2136 - _globals['_DATA']._serialized_start=2150 - _globals['_DATA']._serialized_end=2362 - _globals['_KEYVERIFICATION']._serialized_start=2364 - _globals['_KEYVERIFICATION']._serialized_end=2426 - _globals['_WAYPOINT']._serialized_start=2429 - _globals['_WAYPOINT']._serialized_end=2617 - _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_start=2619 - _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_end=2727 - _globals['_MESHPACKET']._serialized_start=2730 - _globals['_MESHPACKET']._serialized_end=3715 - _globals['_MESHPACKET_PRIORITY']._serialized_start=3292 - _globals['_MESHPACKET_PRIORITY']._serialized_end=3418 - _globals['_MESHPACKET_DELAYED']._serialized_start=3420 - _globals['_MESHPACKET_DELAYED']._serialized_end=3486 - _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_start=3489 - _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_end=3696 - _globals['_NODEINFO']._serialized_start=3718 - _globals['_NODEINFO']._serialized_end=4072 - _globals['_MYNODEINFO']._serialized_start=4075 - _globals['_MYNODEINFO']._serialized_end=4277 - _globals['_LOGRECORD']._serialized_start=4280 - _globals['_LOGRECORD']._serialized_end=4481 - _globals['_LOGRECORD_LEVEL']._serialized_start=4393 - _globals['_LOGRECORD_LEVEL']._serialized_end=4481 - _globals['_QUEUESTATUS']._serialized_start=4483 - _globals['_QUEUESTATUS']._serialized_end=4563 - _globals['_FROMRADIO']._serialized_start=4566 - _globals['_FROMRADIO']._serialized_end=5453 - _globals['_CLIENTNOTIFICATION']._serialized_start=5456 - _globals['_CLIENTNOTIFICATION']._serialized_end=6016 - _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_start=6018 - _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_end=6112 - _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_start=6114 - _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_end=6184 - _globals['_KEYVERIFICATIONFINAL']._serialized_start=6186 - _globals['_KEYVERIFICATIONFINAL']._serialized_end=6299 - _globals['_DUPLICATEDPUBLICKEY']._serialized_start=6301 - _globals['_DUPLICATEDPUBLICKEY']._serialized_end=6322 - _globals['_LOWENTROPYKEY']._serialized_start=6324 - _globals['_LOWENTROPYKEY']._serialized_end=6339 - _globals['_FILEINFO']._serialized_start=6341 - _globals['_FILEINFO']._serialized_end=6390 - _globals['_TORADIO']._serialized_start=6393 - _globals['_TORADIO']._serialized_end=6705 - _globals['_COMPRESSED']._serialized_start=6707 - _globals['_COMPRESSED']._serialized_end=6780 - _globals['_NEIGHBORINFO']._serialized_start=6783 - _globals['_NEIGHBORINFO']._serialized_end=6927 - _globals['_NEIGHBOR']._serialized_start=6929 - _globals['_NEIGHBOR']._serialized_end=7029 - _globals['_DEVICEMETADATA']._serialized_start=7032 - _globals['_DEVICEMETADATA']._serialized_end=7393 - _globals['_HEARTBEAT']._serialized_start=7395 - _globals['_HEARTBEAT']._serialized_end=7421 - _globals['_NODEREMOTEHARDWAREPIN']._serialized_start=7423 - _globals['_NODEREMOTEHARDWAREPIN']._serialized_end=7517 - _globals['_CHUNKEDPAYLOAD']._serialized_start=7519 - _globals['_CHUNKEDPAYLOAD']._serialized_end=7620 - _globals['_RESEND_CHUNKS']._serialized_start=7622 - _globals['_RESEND_CHUNKS']._serialized_end=7653 - _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_start=7656 - _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_end=7835 + _HARDWAREMODEL._serialized_start=9094 + _HARDWAREMODEL._serialized_end=11732 + _CONSTANTS._serialized_start=11734 + _CONSTANTS._serialized_end=11778 + _CRITICALERRORCODE._serialized_start=11781 + _CRITICALERRORCODE._serialized_end=12089 + _FIRMWAREEDITION._serialized_start=12091 + _FIRMWAREEDITION._serialized_end=12218 + _EXCLUDEDMODULES._serialized_start=12221 + _EXCLUDEDMODULES._serialized_end=12605 + _POSITION._serialized_start=310 + _POSITION._serialized_end=1231 + _POSITION_LOCSOURCE._serialized_start=926 + _POSITION_LOCSOURCE._serialized_end=1004 + _POSITION_ALTSOURCE._serialized_start=1006 + _POSITION_ALTSOURCE._serialized_end=1104 + _USER._serialized_start=1234 + _USER._serialized_end=1518 + _ROUTEDISCOVERY._serialized_start=1520 + _ROUTEDISCOVERY._serialized_end=1610 + _ROUTING._serialized_start=1613 + _ROUTING._serialized_end=2177 + _ROUTING_ERROR._serialized_start=1807 + _ROUTING_ERROR._serialized_end=2166 + _DATA._serialized_start=2180 + _DATA._serialized_end=2392 + _KEYVERIFICATION._serialized_start=2394 + _KEYVERIFICATION._serialized_end=2456 + _STOREFORWARDPLUSPLUS._serialized_start=2459 + _STOREFORWARDPLUSPLUS._serialized_end=2927 + _STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE._serialized_start=2778 + _STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE._serialized_end=2927 + _REMOTESHELL._serialized_start=2930 + _REMOTESHELL._serialized_end=3294 + _REMOTESHELL_OPCODE._serialized_start=3151 + _REMOTESHELL_OPCODE._serialized_end=3294 + _WAYPOINT._serialized_start=3297 + _WAYPOINT._serialized_end=3485 + _STATUSMESSAGE._serialized_start=3487 + _STATUSMESSAGE._serialized_end=3518 + _MQTTCLIENTPROXYMESSAGE._serialized_start=3520 + _MQTTCLIENTPROXYMESSAGE._serialized_end=3628 + _MESHPACKET._serialized_start=3631 + _MESHPACKET._serialized_end=4616 + _MESHPACKET_PRIORITY._serialized_start=4193 + _MESHPACKET_PRIORITY._serialized_end=4319 + _MESHPACKET_DELAYED._serialized_start=4321 + _MESHPACKET_DELAYED._serialized_end=4387 + _MESHPACKET_TRANSPORTMECHANISM._serialized_start=4390 + _MESHPACKET_TRANSPORTMECHANISM._serialized_end=4597 + _NODEINFO._serialized_start=4619 + _NODEINFO._serialized_end=4991 + _MYNODEINFO._serialized_start=4994 + _MYNODEINFO._serialized_end=5196 + _LOGRECORD._serialized_start=5199 + _LOGRECORD._serialized_end=5400 + _LOGRECORD_LEVEL._serialized_start=5312 + _LOGRECORD_LEVEL._serialized_end=5400 + _QUEUESTATUS._serialized_start=5402 + _QUEUESTATUS._serialized_end=5482 + _FROMRADIO._serialized_start=5485 + _FROMRADIO._serialized_end=6436 + _LOCKDOWNSTATUS._serialized_start=6439 + _LOCKDOWNSTATUS._serialized_end=6709 + _LOCKDOWNSTATUS_STATE._serialized_start=6613 + _LOCKDOWNSTATUS_STATE._serialized_end=6709 + _CLIENTNOTIFICATION._serialized_start=6712 + _CLIENTNOTIFICATION._serialized_end=7272 + _KEYVERIFICATIONNUMBERINFORM._serialized_start=7274 + _KEYVERIFICATIONNUMBERINFORM._serialized_end=7368 + _KEYVERIFICATIONNUMBERREQUEST._serialized_start=7370 + _KEYVERIFICATIONNUMBERREQUEST._serialized_end=7440 + _KEYVERIFICATIONFINAL._serialized_start=7442 + _KEYVERIFICATIONFINAL._serialized_end=7555 + _DUPLICATEDPUBLICKEY._serialized_start=7557 + _DUPLICATEDPUBLICKEY._serialized_end=7578 + _LOWENTROPYKEY._serialized_start=7580 + _LOWENTROPYKEY._serialized_end=7595 + _FILEINFO._serialized_start=7597 + _FILEINFO._serialized_end=7646 + _TORADIO._serialized_start=7649 + _TORADIO._serialized_end=7961 + _COMPRESSED._serialized_start=7963 + _COMPRESSED._serialized_end=8036 + _NEIGHBORINFO._serialized_start=8039 + _NEIGHBORINFO._serialized_end=8183 + _NEIGHBOR._serialized_start=8185 + _NEIGHBOR._serialized_end=8285 + _DEVICEMETADATA._serialized_start=8288 + _DEVICEMETADATA._serialized_end=8649 + _HEARTBEAT._serialized_start=8651 + _HEARTBEAT._serialized_end=8677 + _NODEREMOTEHARDWAREPIN._serialized_start=8679 + _NODEREMOTEHARDWAREPIN._serialized_end=8773 + _CHUNKEDPAYLOAD._serialized_start=8775 + _CHUNKEDPAYLOAD._serialized_end=8876 + _RESEND_CHUNKS._serialized_start=8878 + _RESEND_CHUNKS._serialized_end=8909 + _CHUNKEDPAYLOADRESPONSE._serialized_start=8912 + _CHUNKEDPAYLOADRESPONSE._serialized_end=9091 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mesh_pb2.pyi b/meshtastic/protobuf/mesh_pb2.pyi index 6578763..84d09ad 100644 --- a/meshtastic/protobuf/mesh_pb2.pyi +++ b/meshtastic/protobuf/mesh_pb2.pyi @@ -1,3796 +1,875 @@ -""" -@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.device_ui_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 - """ - RAK2560: _HardwareModel.ValueType # 22 - """ - RAK2560 Solar base station based on RAK4630 - """ - HELTEC_HRU_3601: _HardwareModel.ValueType # 23 - """ - Heltec HRU-3601: https://heltec.org/project/hru-3601/ - """ - HELTEC_WIRELESS_BRIDGE: _HardwareModel.ValueType # 24 - """ - Heltec Wireless Bridge - """ - 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, CoreS3, 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 - """ - HELTEC_CAPSULE_SENSOR_V3: _HardwareModel.ValueType # 65 - """ - Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors - """ - HELTEC_VISION_MASTER_T190: _HardwareModel.ValueType # 66 - """ - Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display - """ - HELTEC_VISION_MASTER_E213: _HardwareModel.ValueType # 67 - """ - Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display - """ - HELTEC_VISION_MASTER_E290: _HardwareModel.ValueType # 68 - """ - Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display - """ - HELTEC_MESH_NODE_T114: _HardwareModel.ValueType # 69 - """ - Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, - specifically adapted for the Meshtatic project - """ - SENSECAP_INDICATOR: _HardwareModel.ValueType # 70 - """ - Sensecap Indicator from Seeed Studio. ESP32-S3 device with TFT and RP2040 coprocessor - """ - TRACKER_T1000_E: _HardwareModel.ValueType # 71 - """ - Seeed studio T1000-E tracker card. NRF52840 w/ LR1110 radio, GPS, button, buzzer, and sensors. - """ - RAK3172: _HardwareModel.ValueType # 72 - """ - RAK3172 STM32WLE5 Module (https://store.rakwireless.com/products/wisduo-lpwan-module-rak3172) - """ - WIO_E5: _HardwareModel.ValueType # 73 - """ - Seeed Studio Wio-E5 (either mini or Dev kit) using STM32WL chip. - """ - RADIOMASTER_900_BANDIT: _HardwareModel.ValueType # 74 - """ - RadioMaster 900 Bandit, https://www.radiomasterrc.com/products/bandit-expresslrs-rf-module - SSD1306 OLED and No GPS - """ - ME25LS01_4Y10TD: _HardwareModel.ValueType # 75 - """ - Minewsemi ME25LS01 (ME25LE01_V1.0). NRF52840 w/ LR1110 radio, buttons and leds and pins. - """ - RP2040_FEATHER_RFM95: _HardwareModel.ValueType # 76 - """ - RP2040_FEATHER_RFM95 - Adafruit Feather RP2040 with RFM95 LoRa Radio RFM95 with SX1272, SSD1306 OLED - https://www.adafruit.com/product/5714 - https://www.adafruit.com/product/326 - https://www.adafruit.com/product/938 - ^^^ short A0 to switch to I2C address 0x3C - """ - M5STACK_COREBASIC: _HardwareModel.ValueType # 77 - """M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/""" - M5STACK_CORE2: _HardwareModel.ValueType # 78 - RPI_PICO2: _HardwareModel.ValueType # 79 - """Pico2 with Waveshare Hat, same as Pico""" - M5STACK_CORES3: _HardwareModel.ValueType # 80 - """M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/""" - SEEED_XIAO_S3: _HardwareModel.ValueType # 81 - """Seeed XIAO S3 DK""" - MS24SF1: _HardwareModel.ValueType # 82 - """ - Nordic nRF52840+Semtech SX1262 LoRa BLE Combo Module. nRF52840+SX1262 MS24SF1 - """ - TLORA_C6: _HardwareModel.ValueType # 83 - """ - Lilygo TLora-C6 with the new ESP32-C6 MCU - """ - WISMESH_TAP: _HardwareModel.ValueType # 84 - """ - WisMesh Tap - RAK-4631 w/ TFT in injection modled case - """ - ROUTASTIC: _HardwareModel.ValueType # 85 - """ - Similar to PORTDUINO but used by Routastic devices, this is not any - particular device and does not run Meshtastic's code but supports - the same frame format. - Runs on linux, see https://github.com/Jorropo/routastic - """ - MESH_TAB: _HardwareModel.ValueType # 86 - """ - Mesh-Tab, esp32 based - https://github.com/valzzu/Mesh-Tab - """ - MESHLINK: _HardwareModel.ValueType # 87 - """ - MeshLink board developed by LoraItalia. NRF52840, eByte E22900M22S (Will also come with other frequencies), 25w MPPT solar charger (5v,12v,18v selectable), support for gps, buzzer, oled or e-ink display, 10 gpios, hardware watchdog - https://www.loraitalia.it - """ - XIAO_NRF52_KIT: _HardwareModel.ValueType # 88 - """ - Seeed XIAO nRF52840 + Wio SX1262 kit - """ - THINKNODE_M1: _HardwareModel.ValueType # 89 - """ - Elecrow ThinkNode M1 & M2 - https://www.elecrow.com/wiki/ThinkNode-M1_Transceiver_Device(Meshtastic)_Power_By_nRF52840.html - https://www.elecrow.com/wiki/ThinkNode-M2_Transceiver_Device(Meshtastic)_Power_By_NRF52840.html (this actually uses ESP32-S3) - """ - THINKNODE_M2: _HardwareModel.ValueType # 90 - T_ETH_ELITE: _HardwareModel.ValueType # 91 - """ - Lilygo T-ETH-Elite - """ - HELTEC_SENSOR_HUB: _HardwareModel.ValueType # 92 - """ - Heltec HRI-3621 industrial probe - """ - RESERVED_FRIED_CHICKEN: _HardwareModel.ValueType # 93 - """ - Reserved Fried Chicken ID for future use - """ - HELTEC_MESH_POCKET: _HardwareModel.ValueType # 94 - """ - Heltec Magnetic Power Bank with Meshtastic compatible - """ - SEEED_SOLAR_NODE: _HardwareModel.ValueType # 95 - """ - Seeed Solar Node - """ - NOMADSTAR_METEOR_PRO: _HardwareModel.ValueType # 96 - """ - NomadStar Meteor Pro https://nomadstar.ch/ - """ - CROWPANEL: _HardwareModel.ValueType # 97 - """ - Elecrow CrowPanel Advance models, ESP32-S3 and TFT with SX1262 radio plugin - """ - LINK_32: _HardwareModel.ValueType # 98 - """ - Lilygo LINK32 board with sensors - """ - SEEED_WIO_TRACKER_L1: _HardwareModel.ValueType # 99 - """ - Seeed Tracker L1 - """ - SEEED_WIO_TRACKER_L1_EINK: _HardwareModel.ValueType # 100 - """ - Seeed Tracker L1 EINK driver - """ - MUZI_R1_NEO: _HardwareModel.ValueType # 101 - """ - Muzi Works R1 Neo - """ - T_DECK_PRO: _HardwareModel.ValueType # 102 - """ - Lilygo T-Deck Pro - """ - T_LORA_PAGER: _HardwareModel.ValueType # 103 - """ - Lilygo TLora Pager - """ - M5STACK_RESERVED: _HardwareModel.ValueType # 104 - """ - M5Stack Reserved - 0x68 - """ - WISMESH_TAG: _HardwareModel.ValueType # 105 - """ - RAKwireless WisMesh Tag - """ - RAK3312: _HardwareModel.ValueType # 106 - """ - RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ - """ - THINKNODE_M5: _HardwareModel.ValueType # 107 - """ - Elecrow ThinkNode M5 https://www.elecrow.com/wiki/ThinkNode_M5_Meshtastic_LoRa_Signal_Transceiver_ESP32-S3.html - """ - HELTEC_MESH_SOLAR: _HardwareModel.ValueType # 108 - """ - MeshSolar is an integrated power management and communication solution designed for outdoor low-power devices. - https://heltec.org/project/meshsolar/ - """ - T_ECHO_LITE: _HardwareModel.ValueType # 109 - """ - Lilygo T-Echo Lite - """ - HELTEC_V4: _HardwareModel.ValueType # 110 - """ - New Heltec LoRA32 with ESP32-S3 CPU - """ - M5STACK_C6L: _HardwareModel.ValueType # 111 - """ - M5Stack C6L - """ - M5STACK_CARDPUTER_ADV: _HardwareModel.ValueType # 112 - """ - M5Stack Cardputer Adv - """ - HELTEC_WIRELESS_TRACKER_V2: _HardwareModel.ValueType # 113 - """ - ESP32S3 main controller with GPS and TFT screen. - """ - T_WATCH_ULTRA: _HardwareModel.ValueType # 114 - """ - LilyGo T-Watch Ultra - """ - THINKNODE_M3: _HardwareModel.ValueType # 115 - """ - Elecrow ThinkNode M3 - """ - WISMESH_TAP_V2: _HardwareModel.ValueType # 116 - """ - RAK WISMESH_TAP_V2 with ESP32-S3 CPU - """ - RAK3401: _HardwareModel.ValueType # 117 - """ - RAK3401 - """ - 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 -""" -RAK2560: HardwareModel.ValueType # 22 -""" -RAK2560 Solar base station based on RAK4630 -""" -HELTEC_HRU_3601: HardwareModel.ValueType # 23 -""" -Heltec HRU-3601: https://heltec.org/project/hru-3601/ -""" -HELTEC_WIRELESS_BRIDGE: HardwareModel.ValueType # 24 -""" -Heltec Wireless Bridge -""" -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, CoreS3, 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 -""" -HELTEC_CAPSULE_SENSOR_V3: HardwareModel.ValueType # 65 -""" -Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors -""" -HELTEC_VISION_MASTER_T190: HardwareModel.ValueType # 66 -""" -Heltec Vision Master T190 with ESP32-S3 CPU, and a 1.90 inch TFT display -""" -HELTEC_VISION_MASTER_E213: HardwareModel.ValueType # 67 -""" -Heltec Vision Master E213 with ESP32-S3 CPU, and a 2.13 inch E-Ink display -""" -HELTEC_VISION_MASTER_E290: HardwareModel.ValueType # 68 -""" -Heltec Vision Master E290 with ESP32-S3 CPU, and a 2.9 inch E-Ink display -""" -HELTEC_MESH_NODE_T114: HardwareModel.ValueType # 69 -""" -Heltec Mesh Node T114 board with nRF52840 CPU, and a 1.14 inch TFT display, Ultimate low-power design, -specifically adapted for the Meshtatic project -""" -SENSECAP_INDICATOR: HardwareModel.ValueType # 70 -""" -Sensecap Indicator from Seeed Studio. ESP32-S3 device with TFT and RP2040 coprocessor -""" -TRACKER_T1000_E: HardwareModel.ValueType # 71 -""" -Seeed studio T1000-E tracker card. NRF52840 w/ LR1110 radio, GPS, button, buzzer, and sensors. -""" -RAK3172: HardwareModel.ValueType # 72 -""" -RAK3172 STM32WLE5 Module (https://store.rakwireless.com/products/wisduo-lpwan-module-rak3172) -""" -WIO_E5: HardwareModel.ValueType # 73 -""" -Seeed Studio Wio-E5 (either mini or Dev kit) using STM32WL chip. -""" -RADIOMASTER_900_BANDIT: HardwareModel.ValueType # 74 -""" -RadioMaster 900 Bandit, https://www.radiomasterrc.com/products/bandit-expresslrs-rf-module -SSD1306 OLED and No GPS -""" -ME25LS01_4Y10TD: HardwareModel.ValueType # 75 -""" -Minewsemi ME25LS01 (ME25LE01_V1.0). NRF52840 w/ LR1110 radio, buttons and leds and pins. -""" -RP2040_FEATHER_RFM95: HardwareModel.ValueType # 76 -""" -RP2040_FEATHER_RFM95 -Adafruit Feather RP2040 with RFM95 LoRa Radio RFM95 with SX1272, SSD1306 OLED -https://www.adafruit.com/product/5714 -https://www.adafruit.com/product/326 -https://www.adafruit.com/product/938 - ^^^ short A0 to switch to I2C address 0x3C -""" -M5STACK_COREBASIC: HardwareModel.ValueType # 77 -"""M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/""" -M5STACK_CORE2: HardwareModel.ValueType # 78 -RPI_PICO2: HardwareModel.ValueType # 79 -"""Pico2 with Waveshare Hat, same as Pico""" -M5STACK_CORES3: HardwareModel.ValueType # 80 -"""M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, CoreS3, Paper) https://m5stack.com/""" -SEEED_XIAO_S3: HardwareModel.ValueType # 81 -"""Seeed XIAO S3 DK""" -MS24SF1: HardwareModel.ValueType # 82 -""" -Nordic nRF52840+Semtech SX1262 LoRa BLE Combo Module. nRF52840+SX1262 MS24SF1 -""" -TLORA_C6: HardwareModel.ValueType # 83 -""" -Lilygo TLora-C6 with the new ESP32-C6 MCU -""" -WISMESH_TAP: HardwareModel.ValueType # 84 -""" -WisMesh Tap -RAK-4631 w/ TFT in injection modled case -""" -ROUTASTIC: HardwareModel.ValueType # 85 -""" -Similar to PORTDUINO but used by Routastic devices, this is not any -particular device and does not run Meshtastic's code but supports -the same frame format. -Runs on linux, see https://github.com/Jorropo/routastic -""" -MESH_TAB: HardwareModel.ValueType # 86 -""" -Mesh-Tab, esp32 based -https://github.com/valzzu/Mesh-Tab -""" -MESHLINK: HardwareModel.ValueType # 87 -""" -MeshLink board developed by LoraItalia. NRF52840, eByte E22900M22S (Will also come with other frequencies), 25w MPPT solar charger (5v,12v,18v selectable), support for gps, buzzer, oled or e-ink display, 10 gpios, hardware watchdog -https://www.loraitalia.it -""" -XIAO_NRF52_KIT: HardwareModel.ValueType # 88 -""" -Seeed XIAO nRF52840 + Wio SX1262 kit -""" -THINKNODE_M1: HardwareModel.ValueType # 89 -""" -Elecrow ThinkNode M1 & M2 -https://www.elecrow.com/wiki/ThinkNode-M1_Transceiver_Device(Meshtastic)_Power_By_nRF52840.html -https://www.elecrow.com/wiki/ThinkNode-M2_Transceiver_Device(Meshtastic)_Power_By_NRF52840.html (this actually uses ESP32-S3) -""" -THINKNODE_M2: HardwareModel.ValueType # 90 -T_ETH_ELITE: HardwareModel.ValueType # 91 -""" -Lilygo T-ETH-Elite -""" -HELTEC_SENSOR_HUB: HardwareModel.ValueType # 92 -""" -Heltec HRI-3621 industrial probe -""" -RESERVED_FRIED_CHICKEN: HardwareModel.ValueType # 93 -""" -Reserved Fried Chicken ID for future use -""" -HELTEC_MESH_POCKET: HardwareModel.ValueType # 94 -""" -Heltec Magnetic Power Bank with Meshtastic compatible -""" -SEEED_SOLAR_NODE: HardwareModel.ValueType # 95 -""" -Seeed Solar Node -""" -NOMADSTAR_METEOR_PRO: HardwareModel.ValueType # 96 -""" -NomadStar Meteor Pro https://nomadstar.ch/ -""" -CROWPANEL: HardwareModel.ValueType # 97 -""" -Elecrow CrowPanel Advance models, ESP32-S3 and TFT with SX1262 radio plugin -""" -LINK_32: HardwareModel.ValueType # 98 -""" -Lilygo LINK32 board with sensors -""" -SEEED_WIO_TRACKER_L1: HardwareModel.ValueType # 99 -""" -Seeed Tracker L1 -""" -SEEED_WIO_TRACKER_L1_EINK: HardwareModel.ValueType # 100 -""" -Seeed Tracker L1 EINK driver -""" -MUZI_R1_NEO: HardwareModel.ValueType # 101 -""" -Muzi Works R1 Neo -""" -T_DECK_PRO: HardwareModel.ValueType # 102 -""" -Lilygo T-Deck Pro -""" -T_LORA_PAGER: HardwareModel.ValueType # 103 -""" -Lilygo TLora Pager -""" -M5STACK_RESERVED: HardwareModel.ValueType # 104 -""" -M5Stack Reserved -0x68 -""" -WISMESH_TAG: HardwareModel.ValueType # 105 -""" -RAKwireless WisMesh Tag -""" -RAK3312: HardwareModel.ValueType # 106 -""" -RAKwireless WisBlock Core RAK3312 https://docs.rakwireless.com/product-categories/wisduo/rak3112-module/overview/ -""" -THINKNODE_M5: HardwareModel.ValueType # 107 -""" -Elecrow ThinkNode M5 https://www.elecrow.com/wiki/ThinkNode_M5_Meshtastic_LoRa_Signal_Transceiver_ESP32-S3.html -""" -HELTEC_MESH_SOLAR: HardwareModel.ValueType # 108 -""" -MeshSolar is an integrated power management and communication solution designed for outdoor low-power devices. -https://heltec.org/project/meshsolar/ -""" -T_ECHO_LITE: HardwareModel.ValueType # 109 -""" -Lilygo T-Echo Lite -""" -HELTEC_V4: HardwareModel.ValueType # 110 -""" -New Heltec LoRA32 with ESP32-S3 CPU -""" -M5STACK_C6L: HardwareModel.ValueType # 111 -""" -M5Stack C6L -""" -M5STACK_CARDPUTER_ADV: HardwareModel.ValueType # 112 -""" -M5Stack Cardputer Adv -""" -HELTEC_WIRELESS_TRACKER_V2: HardwareModel.ValueType # 113 -""" -ESP32S3 main controller with GPS and TFT screen. -""" -T_WATCH_ULTRA: HardwareModel.ValueType # 114 -""" -LilyGo T-Watch Ultra -""" -THINKNODE_M3: HardwareModel.ValueType # 115 -""" -Elecrow ThinkNode M3 -""" -WISMESH_TAP_V2: HardwareModel.ValueType # 116 -""" -RAK WISMESH_TAP_V2 with ESP32-S3 CPU -""" -RAK3401: HardwareModel.ValueType # 117 -""" -RAK3401 -""" -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 # 233 - """ - 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 # 233 -""" -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 - """ - FLASH_CORRUPTION_RECOVERABLE: _CriticalErrorCode.ValueType # 12 - """ - Corruption was detected on the flash filesystem but we were able to repair things. - If you see this failure in the field please post in the forum because we are interested in seeing if this is occurring in the field. - """ - FLASH_CORRUPTION_UNRECOVERABLE: _CriticalErrorCode.ValueType # 13 - """ - Corruption was detected on the flash filesystem but we were unable to repair things. - NOTE: Your node will probably need to be reconfigured the next time it reboots (it will lose the region code etc...) - If you see this failure in the field please post in the forum because we are interested in seeing if this is occurring in the field. - """ - -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 -""" -FLASH_CORRUPTION_RECOVERABLE: CriticalErrorCode.ValueType # 12 -""" -Corruption was detected on the flash filesystem but we were able to repair things. -If you see this failure in the field please post in the forum because we are interested in seeing if this is occurring in the field. -""" -FLASH_CORRUPTION_UNRECOVERABLE: CriticalErrorCode.ValueType # 13 -""" -Corruption was detected on the flash filesystem but we were unable to repair things. -NOTE: Your node will probably need to be reconfigured the next time it reboots (it will lose the region code etc...) -If you see this failure in the field please post in the forum because we are interested in seeing if this is occurring in the field. -""" -global___CriticalErrorCode = CriticalErrorCode - -class _FirmwareEdition: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _FirmwareEditionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FirmwareEdition.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - VANILLA: _FirmwareEdition.ValueType # 0 - """ - Vanilla firmware - """ - SMART_CITIZEN: _FirmwareEdition.ValueType # 1 - """ - Firmware for use in the Smart Citizen environmental monitoring network - """ - OPEN_SAUCE: _FirmwareEdition.ValueType # 16 - """ - Open Sauce, the maker conference held yearly in CA - """ - DEFCON: _FirmwareEdition.ValueType # 17 - """ - DEFCON, the yearly hacker conference - """ - BURNING_MAN: _FirmwareEdition.ValueType # 18 - """ - Burning Man, the yearly hippie gathering in the desert - """ - HAMVENTION: _FirmwareEdition.ValueType # 19 - """ - Hamvention, the Dayton amateur radio convention - """ - DIY_EDITION: _FirmwareEdition.ValueType # 127 - """ - Placeholder for DIY and unofficial events - """ - -class FirmwareEdition(_FirmwareEdition, metaclass=_FirmwareEditionEnumTypeWrapper): - """ - Enum to indicate to clients whether this firmware is a special firmware build, like an event. - The first 16 values are reserved for non-event special firmwares, like the Smart Citizen use case. - """ - -VANILLA: FirmwareEdition.ValueType # 0 -""" -Vanilla firmware -""" -SMART_CITIZEN: FirmwareEdition.ValueType # 1 -""" -Firmware for use in the Smart Citizen environmental monitoring network -""" -OPEN_SAUCE: FirmwareEdition.ValueType # 16 -""" -Open Sauce, the maker conference held yearly in CA -""" -DEFCON: FirmwareEdition.ValueType # 17 -""" -DEFCON, the yearly hacker conference -""" -BURNING_MAN: FirmwareEdition.ValueType # 18 -""" -Burning Man, the yearly hippie gathering in the desert -""" -HAMVENTION: FirmwareEdition.ValueType # 19 -""" -Hamvention, the Dayton amateur radio convention -""" -DIY_EDITION: FirmwareEdition.ValueType # 127 -""" -Placeholder for DIY and unofficial events -""" -global___FirmwareEdition = FirmwareEdition - -class _ExcludedModules: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - -class _ExcludedModulesEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ExcludedModules.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - EXCLUDED_NONE: _ExcludedModules.ValueType # 0 - """ - Default value of 0 indicates no modules are excluded. - """ - MQTT_CONFIG: _ExcludedModules.ValueType # 1 - """ - MQTT module - """ - SERIAL_CONFIG: _ExcludedModules.ValueType # 2 - """ - Serial module - """ - EXTNOTIF_CONFIG: _ExcludedModules.ValueType # 4 - """ - External Notification module - """ - STOREFORWARD_CONFIG: _ExcludedModules.ValueType # 8 - """ - Store and Forward module - """ - RANGETEST_CONFIG: _ExcludedModules.ValueType # 16 - """ - Range Test module - """ - TELEMETRY_CONFIG: _ExcludedModules.ValueType # 32 - """ - Telemetry module - """ - CANNEDMSG_CONFIG: _ExcludedModules.ValueType # 64 - """ - Canned Message module - """ - AUDIO_CONFIG: _ExcludedModules.ValueType # 128 - """ - Audio module - """ - REMOTEHARDWARE_CONFIG: _ExcludedModules.ValueType # 256 - """ - Remote Hardware module - """ - NEIGHBORINFO_CONFIG: _ExcludedModules.ValueType # 512 - """ - Neighbor Info module - """ - AMBIENTLIGHTING_CONFIG: _ExcludedModules.ValueType # 1024 - """ - Ambient Lighting module - """ - DETECTIONSENSOR_CONFIG: _ExcludedModules.ValueType # 2048 - """ - Detection Sensor module - """ - PAXCOUNTER_CONFIG: _ExcludedModules.ValueType # 4096 - """ - Paxcounter module - """ - BLUETOOTH_CONFIG: _ExcludedModules.ValueType # 8192 - """ - Bluetooth config (not technically a module, but used to indicate bluetooth capabilities) - """ - NETWORK_CONFIG: _ExcludedModules.ValueType # 16384 - """ - Network config (not technically a module, but used to indicate network capabilities) - """ - -class ExcludedModules(_ExcludedModules, metaclass=_ExcludedModulesEnumTypeWrapper): - """ - Enum for modules excluded from a device's configuration. - Each value represents a ModuleConfigType that can be toggled as excluded - by setting its corresponding bit in the `excluded_modules` bitmask field. - """ - -EXCLUDED_NONE: ExcludedModules.ValueType # 0 -""" -Default value of 0 indicates no modules are excluded. -""" -MQTT_CONFIG: ExcludedModules.ValueType # 1 -""" -MQTT module -""" -SERIAL_CONFIG: ExcludedModules.ValueType # 2 -""" -Serial module -""" -EXTNOTIF_CONFIG: ExcludedModules.ValueType # 4 -""" -External Notification module -""" -STOREFORWARD_CONFIG: ExcludedModules.ValueType # 8 -""" -Store and Forward module -""" -RANGETEST_CONFIG: ExcludedModules.ValueType # 16 -""" -Range Test module -""" -TELEMETRY_CONFIG: ExcludedModules.ValueType # 32 -""" -Telemetry module -""" -CANNEDMSG_CONFIG: ExcludedModules.ValueType # 64 -""" -Canned Message module -""" -AUDIO_CONFIG: ExcludedModules.ValueType # 128 -""" -Audio module -""" -REMOTEHARDWARE_CONFIG: ExcludedModules.ValueType # 256 -""" -Remote Hardware module -""" -NEIGHBORINFO_CONFIG: ExcludedModules.ValueType # 512 -""" -Neighbor Info module -""" -AMBIENTLIGHTING_CONFIG: ExcludedModules.ValueType # 1024 -""" -Ambient Lighting module -""" -DETECTIONSENSOR_CONFIG: ExcludedModules.ValueType # 2048 -""" -Detection Sensor module -""" -PAXCOUNTER_CONFIG: ExcludedModules.ValueType # 4096 -""" -Paxcounter module -""" -BLUETOOTH_CONFIG: ExcludedModules.ValueType # 8192 -""" -Bluetooth config (not technically a module, but used to indicate bluetooth capabilities) -""" -NETWORK_CONFIG: ExcludedModules.ValueType # 16384 -""" -Network config (not technically a module, but used to indicate network capabilities) -""" -global___ExcludedModules = ExcludedModules - -@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 | None = ..., - longitude_i: builtins.int | None = ..., - altitude: builtins.int | None = ..., - 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 | None = ..., - altitude_geoidal_separation: builtins.int | None = ..., - PDOP: builtins.int = ..., - HDOP: builtins.int = ..., - VDOP: builtins.int = ..., - gps_accuracy: builtins.int = ..., - ground_speed: builtins.int | None = ..., - ground_track: builtins.int | None = ..., - 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 HasField(self, field_name: typing.Literal["_altitude", b"_altitude", "_altitude_geoidal_separation", b"_altitude_geoidal_separation", "_altitude_hae", b"_altitude_hae", "_ground_speed", b"_ground_speed", "_ground_track", b"_ground_track", "_latitude_i", b"_latitude_i", "_longitude_i", b"_longitude_i", "altitude", b"altitude", "altitude_geoidal_separation", b"altitude_geoidal_separation", "altitude_hae", b"altitude_hae", "ground_speed", b"ground_speed", "ground_track", b"ground_track", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i"]) -> builtins.bool: ... - 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", "_ground_speed", b"_ground_speed", "_ground_track", b"_ground_track", "_latitude_i", b"_latitude_i", "_longitude_i", b"_longitude_i", "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: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_altitude", b"_altitude"]) -> typing.Literal["altitude"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_altitude_geoidal_separation", b"_altitude_geoidal_separation"]) -> typing.Literal["altitude_geoidal_separation"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_altitude_hae", b"_altitude_hae"]) -> typing.Literal["altitude_hae"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ground_speed", b"_ground_speed"]) -> typing.Literal["ground_speed"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ground_track", b"_ground_track"]) -> typing.Literal["ground_track"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_latitude_i", b"_latitude_i"]) -> typing.Literal["latitude_i"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_longitude_i", b"_longitude_i"]) -> typing.Literal["longitude_i"] | 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 - PUBLIC_KEY_FIELD_NUMBER: builtins.int - IS_UNMESSAGABLE_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 - """ - public_key: builtins.bytes - """ - The public key of the user's device. - This is sent out to other nodes on the mesh to allow them to compute a shared secret key. - """ - is_unmessagable: builtins.bool - """ - Whether or not the node can be messaged - """ - 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 = ..., - public_key: builtins.bytes = ..., - is_unmessagable: builtins.bool | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_is_unmessagable", b"_is_unmessagable", "is_unmessagable", b"is_unmessagable"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_is_unmessagable", b"_is_unmessagable", "hw_model", b"hw_model", "id", b"id", "is_licensed", b"is_licensed", "is_unmessagable", b"is_unmessagable", "long_name", b"long_name", "macaddr", b"macaddr", "public_key", b"public_key", "role", b"role", "short_name", b"short_name"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["_is_unmessagable", b"_is_unmessagable"]) -> typing.Literal["is_unmessagable"] | None: ... - -global___User = User - -@typing.final -class RouteDiscovery(google.protobuf.message.Message): - """ - A message used in a traceroute - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ROUTE_FIELD_NUMBER: builtins.int - SNR_TOWARDS_FIELD_NUMBER: builtins.int - ROUTE_BACK_FIELD_NUMBER: builtins.int - SNR_BACK_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 to the destination. - """ - - @property - def snr_towards(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: - """ - The list of SNRs (in dB, scaled by 4) in the route towards the destination. - """ - - @property - def route_back(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: - """ - The list of nodenums the packet has visited on the way back from the destination. - """ - - @property - def snr_back(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: - """ - The list of SNRs (in dB, scaled by 4) in the route back from the destination. - """ - - def __init__( - self, - *, - route: collections.abc.Iterable[builtins.int] | None = ..., - snr_towards: collections.abc.Iterable[builtins.int] | None = ..., - route_back: collections.abc.Iterable[builtins.int] | None = ..., - snr_back: collections.abc.Iterable[builtins.int] | None = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["route", b"route", "route_back", b"route_back", "snr_back", b"snr_back", "snr_towards", b"snr_towards"]) -> 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) - """ - PKI_FAILED: Routing._Error.ValueType # 34 - """ - The client specified a PKI transport, but the node was unable to send the packet using PKI (and did not send the message at all) - """ - PKI_UNKNOWN_PUBKEY: Routing._Error.ValueType # 35 - """ - The receiving node does not have a Public Key to decode with - """ - ADMIN_BAD_SESSION_KEY: Routing._Error.ValueType # 36 - """ - Admin packet otherwise checks out, but uses a bogus or expired session key - """ - ADMIN_PUBLIC_KEY_UNAUTHORIZED: Routing._Error.ValueType # 37 - """ - Admin packet sent using PKC, but not from a public key on the admin key list - """ - RATE_LIMIT_EXCEEDED: Routing._Error.ValueType # 38 - """ - Airtime fairness rate limit exceeded for a packet - This typically enforced per portnum and is used to prevent a single node from monopolizing airtime - """ - - 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) - """ - PKI_FAILED: Routing.Error.ValueType # 34 - """ - The client specified a PKI transport, but the node was unable to send the packet using PKI (and did not send the message at all) - """ - PKI_UNKNOWN_PUBKEY: Routing.Error.ValueType # 35 - """ - The receiving node does not have a Public Key to decode with - """ - ADMIN_BAD_SESSION_KEY: Routing.Error.ValueType # 36 - """ - Admin packet otherwise checks out, but uses a bogus or expired session key - """ - ADMIN_PUBLIC_KEY_UNAUTHORIZED: Routing.Error.ValueType # 37 - """ - Admin packet sent using PKC, but not from a public key on the admin key list - """ - RATE_LIMIT_EXCEEDED: Routing.Error.ValueType # 38 - """ - Airtime fairness rate limit exceeded for a packet - This typically enforced per portnum and is used to prevent a single node from monopolizing airtime - """ - - 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 - BITFIELD_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. - """ - bitfield: builtins.int - """ - Bitfield for extra flags. First use is to indicate that user approves the packet being uploaded to MQTT. - """ - 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 = ..., - bitfield: builtins.int | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_bitfield", b"_bitfield", "bitfield", b"bitfield"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_bitfield", b"_bitfield", "bitfield", b"bitfield", "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: ... - def WhichOneof(self, oneof_group: typing.Literal["_bitfield", b"_bitfield"]) -> typing.Literal["bitfield"] | None: ... - -global___Data = Data - -@typing.final -class KeyVerification(google.protobuf.message.Message): - """ - The actual over-the-mesh message doing KeyVerification - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NONCE_FIELD_NUMBER: builtins.int - HASH1_FIELD_NUMBER: builtins.int - HASH2_FIELD_NUMBER: builtins.int - nonce: builtins.int - """ - random value Selected by the requesting node - """ - hash1: builtins.bytes - """ - The final authoritative hash, only to be sent by NodeA at the end of the handshake - """ - hash2: builtins.bytes - """ - The intermediary hash (actually derived from hash1), - sent from NodeB to NodeA in response to the initial message. - """ - def __init__( - self, - *, - nonce: builtins.int = ..., - hash1: builtins.bytes = ..., - hash2: builtins.bytes = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["hash1", b"hash1", "hash2", b"hash2", "nonce", b"nonce"]) -> None: ... - -global___KeyVerification = KeyVerification - -@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 | None = ..., - longitude_i: builtins.int | None = ..., - expire: builtins.int = ..., - locked_to: builtins.int = ..., - name: builtins.str = ..., - description: builtins.str = ..., - icon: builtins.int = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_latitude_i", b"_latitude_i", "_longitude_i", b"_longitude_i", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_latitude_i", b"_latitude_i", "_longitude_i", b"_longitude_i", "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: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_latitude_i", b"_latitude_i"]) -> typing.Literal["latitude_i"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_longitude_i", b"_longitude_i"]) -> typing.Literal["longitude_i"] | 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 - """ - RESPONSE: MeshPacket._Priority.ValueType # 80 - """ - If priority is unset but the packet is a response to a request, we want it to get there relatively quickly. - Furthermore, responses stop relaying packets directed to a node early. - """ - HIGH: MeshPacket._Priority.ValueType # 100 - """ - Higher priority for specific message types (portnums) to distinguish between other reliable packets. - """ - ALERT: MeshPacket._Priority.ValueType # 110 - """ - Higher priority alert message used for critical alerts which take priority over other reliable packets. - """ - 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 - """ - RESPONSE: MeshPacket.Priority.ValueType # 80 - """ - If priority is unset but the packet is a response to a request, we want it to get there relatively quickly. - Furthermore, responses stop relaying packets directed to a node early. - """ - HIGH: MeshPacket.Priority.ValueType # 100 - """ - Higher priority for specific message types (portnums) to distinguish between other reliable packets. - """ - ALERT: MeshPacket.Priority.ValueType # 110 - """ - Higher priority alert message used for critical alerts which take priority over other reliable packets. - """ - 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 - """ - - class _TransportMechanism: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _TransportMechanismEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MeshPacket._TransportMechanism.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - TRANSPORT_INTERNAL: MeshPacket._TransportMechanism.ValueType # 0 - """ - The default case is that the node generated a packet itself - """ - TRANSPORT_LORA: MeshPacket._TransportMechanism.ValueType # 1 - """ - Arrived via the primary LoRa radio - """ - TRANSPORT_LORA_ALT1: MeshPacket._TransportMechanism.ValueType # 2 - """ - Arrived via a secondary LoRa radio - """ - TRANSPORT_LORA_ALT2: MeshPacket._TransportMechanism.ValueType # 3 - """ - Arrived via a tertiary LoRa radio - """ - TRANSPORT_LORA_ALT3: MeshPacket._TransportMechanism.ValueType # 4 - """ - Arrived via a quaternary LoRa radio - """ - TRANSPORT_MQTT: MeshPacket._TransportMechanism.ValueType # 5 - """ - Arrived via an MQTT connection - """ - TRANSPORT_MULTICAST_UDP: MeshPacket._TransportMechanism.ValueType # 6 - """ - Arrived via Multicast UDP - """ - TRANSPORT_API: MeshPacket._TransportMechanism.ValueType # 7 - """ - Arrived via API connection - """ - - class TransportMechanism(_TransportMechanism, metaclass=_TransportMechanismEnumTypeWrapper): - """ - Enum to identify which transport mechanism this packet arrived over - """ - - TRANSPORT_INTERNAL: MeshPacket.TransportMechanism.ValueType # 0 - """ - The default case is that the node generated a packet itself - """ - TRANSPORT_LORA: MeshPacket.TransportMechanism.ValueType # 1 - """ - Arrived via the primary LoRa radio - """ - TRANSPORT_LORA_ALT1: MeshPacket.TransportMechanism.ValueType # 2 - """ - Arrived via a secondary LoRa radio - """ - TRANSPORT_LORA_ALT2: MeshPacket.TransportMechanism.ValueType # 3 - """ - Arrived via a tertiary LoRa radio - """ - TRANSPORT_LORA_ALT3: MeshPacket.TransportMechanism.ValueType # 4 - """ - Arrived via a quaternary LoRa radio - """ - TRANSPORT_MQTT: MeshPacket.TransportMechanism.ValueType # 5 - """ - Arrived via an MQTT connection - """ - TRANSPORT_MULTICAST_UDP: MeshPacket.TransportMechanism.ValueType # 6 - """ - Arrived via Multicast UDP - """ - TRANSPORT_API: MeshPacket.TransportMechanism.ValueType # 7 - """ - Arrived via API connection - """ - - 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 - PUBLIC_KEY_FIELD_NUMBER: builtins.int - PKI_ENCRYPTED_FIELD_NUMBER: builtins.int - NEXT_HOP_FIELD_NUMBER: builtins.int - RELAY_NODE_FIELD_NUMBER: builtins.int - TX_AFTER_FIELD_NUMBER: builtins.int - TRANSPORT_MECHANISM_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 direct neighbor 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. - """ - public_key: builtins.bytes - """ - Records the public key the packet was encrypted with, if applicable. - """ - pki_encrypted: builtins.bool - """ - Indicates whether the packet was en/decrypted using PKI - """ - next_hop: builtins.int - """ - Last byte of the node number of the node that should be used as the next hop in routing. - Set by the firmware internally, clients are not supposed to set this. - """ - relay_node: builtins.int - """ - Last byte of the node number of the node that will relay/relayed this packet. - Set by the firmware internally, clients are not supposed to set this. - """ - tx_after: builtins.int - """ - *Never* sent over the radio links. - Timestamp after which this packet may be sent. - Set by the firmware internally, clients are not supposed to set this. - """ - transport_mechanism: global___MeshPacket.TransportMechanism.ValueType - """ - Indicates which transport mechanism this packet arrived over - """ - @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 = ..., - public_key: builtins.bytes = ..., - pki_encrypted: builtins.bool = ..., - next_hop: builtins.int = ..., - relay_node: builtins.int = ..., - tx_after: builtins.int = ..., - transport_mechanism: global___MeshPacket.TransportMechanism.ValueType = ..., - ) -> 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", "next_hop", b"next_hop", "payload_variant", b"payload_variant", "pki_encrypted", b"pki_encrypted", "priority", b"priority", "public_key", b"public_key", "relay_node", b"relay_node", "rx_rssi", b"rx_rssi", "rx_snr", b"rx_snr", "rx_time", b"rx_time", "to", b"to", "transport_mechanism", b"transport_mechanism", "tx_after", b"tx_after", "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 - IS_IGNORED_FIELD_NUMBER: builtins.int - IS_KEY_MANUALLY_VERIFIED_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 direct neighbor 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 direct neighbor) - """ - is_favorite: builtins.bool - """ - True if node is in our favorites list - Persists between NodeDB internal clean ups - """ - is_ignored: builtins.bool - """ - True if node is in our ignored list - Persists between NodeDB internal clean ups - """ - is_key_manually_verified: builtins.bool - """ - True if node public key has been verified. - Persists between NodeDB internal clean ups - LSB 0 of the bitfield - """ - @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 | None = ..., - is_favorite: builtins.bool = ..., - is_ignored: builtins.bool = ..., - is_key_manually_verified: builtins.bool = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_hops_away", b"_hops_away", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "position", b"position", "user", b"user"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_hops_away", b"_hops_away", "channel", b"channel", "device_metrics", b"device_metrics", "hops_away", b"hops_away", "is_favorite", b"is_favorite", "is_ignored", b"is_ignored", "is_key_manually_verified", b"is_key_manually_verified", "last_heard", b"last_heard", "num", b"num", "position", b"position", "snr", b"snr", "user", b"user", "via_mqtt", b"via_mqtt"]) -> None: ... - def WhichOneof(self, oneof_group: typing.Literal["_hops_away", b"_hops_away"]) -> typing.Literal["hops_away"] | 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 - DEVICE_ID_FIELD_NUMBER: builtins.int - PIO_ENV_FIELD_NUMBER: builtins.int - FIRMWARE_EDITION_FIELD_NUMBER: builtins.int - NODEDB_COUNT_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 - """ - device_id: builtins.bytes - """ - Unique hardware identifier for this device - """ - pio_env: builtins.str - """ - The PlatformIO environment used to build this firmware - """ - firmware_edition: global___FirmwareEdition.ValueType - """ - The indicator for whether this device is running event firmware and which - """ - nodedb_count: builtins.int - """ - The number of nodes in the nodedb. - This is used by the phone to know how many NodeInfo packets to expect on want_config - """ - def __init__( - self, - *, - my_node_num: builtins.int = ..., - reboot_count: builtins.int = ..., - min_app_version: builtins.int = ..., - device_id: builtins.bytes = ..., - pio_env: builtins.str = ..., - firmware_edition: global___FirmwareEdition.ValueType = ..., - nodedb_count: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["device_id", b"device_id", "firmware_edition", b"firmware_edition", "min_app_version", b"min_app_version", "my_node_num", b"my_node_num", "nodedb_count", b"nodedb_count", "pio_env", b"pio_env", "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 - FILEINFO_FIELD_NUMBER: builtins.int - CLIENTNOTIFICATION_FIELD_NUMBER: builtins.int - DEVICEUICONFIG_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) - """ - - @property - def fileInfo(self) -> global___FileInfo: - """ - File system manifest messages - """ - - @property - def clientNotification(self) -> global___ClientNotification: - """ - Notification message to the client - """ - - @property - def deviceuiConfig(self) -> meshtastic.protobuf.device_ui_pb2.DeviceUIConfig: - """ - Persistent data for device-ui - """ - - 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 = ..., - fileInfo: global___FileInfo | None = ..., - clientNotification: global___ClientNotification | None = ..., - deviceuiConfig: meshtastic.protobuf.device_ui_pb2.DeviceUIConfig | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["channel", b"channel", "clientNotification", b"clientNotification", "config", b"config", "config_complete_id", b"config_complete_id", "deviceuiConfig", b"deviceuiConfig", "fileInfo", b"fileInfo", "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", "clientNotification", b"clientNotification", "config", b"config", "config_complete_id", b"config_complete_id", "deviceuiConfig", b"deviceuiConfig", "fileInfo", b"fileInfo", "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", "fileInfo", "clientNotification", "deviceuiConfig"] | None: ... - -global___FromRadio = FromRadio - -@typing.final -class ClientNotification(google.protobuf.message.Message): - """ - A notification message from the device to the client - To be used for important messages that should to be displayed to the user - in the form of push notifications or validation messages when saving - invalid configuration. - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - REPLY_ID_FIELD_NUMBER: builtins.int - TIME_FIELD_NUMBER: builtins.int - LEVEL_FIELD_NUMBER: builtins.int - MESSAGE_FIELD_NUMBER: builtins.int - KEY_VERIFICATION_NUMBER_INFORM_FIELD_NUMBER: builtins.int - KEY_VERIFICATION_NUMBER_REQUEST_FIELD_NUMBER: builtins.int - KEY_VERIFICATION_FINAL_FIELD_NUMBER: builtins.int - DUPLICATED_PUBLIC_KEY_FIELD_NUMBER: builtins.int - LOW_ENTROPY_KEY_FIELD_NUMBER: builtins.int - reply_id: builtins.int - """ - The id of the packet we're notifying in response to - """ - time: builtins.int - """ - Seconds since 1970 - or 0 for unknown/unset - """ - level: global___LogRecord.Level.ValueType - """ - The level type of notification - """ - message: builtins.str - """ - The message body of the notification - """ - @property - def key_verification_number_inform(self) -> global___KeyVerificationNumberInform: ... - @property - def key_verification_number_request(self) -> global___KeyVerificationNumberRequest: ... - @property - def key_verification_final(self) -> global___KeyVerificationFinal: ... - @property - def duplicated_public_key(self) -> global___DuplicatedPublicKey: ... - @property - def low_entropy_key(self) -> global___LowEntropyKey: ... - def __init__( - self, - *, - reply_id: builtins.int | None = ..., - time: builtins.int = ..., - level: global___LogRecord.Level.ValueType = ..., - message: builtins.str = ..., - key_verification_number_inform: global___KeyVerificationNumberInform | None = ..., - key_verification_number_request: global___KeyVerificationNumberRequest | None = ..., - key_verification_final: global___KeyVerificationFinal | None = ..., - duplicated_public_key: global___DuplicatedPublicKey | None = ..., - low_entropy_key: global___LowEntropyKey | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_reply_id", b"_reply_id", "duplicated_public_key", b"duplicated_public_key", "key_verification_final", b"key_verification_final", "key_verification_number_inform", b"key_verification_number_inform", "key_verification_number_request", b"key_verification_number_request", "low_entropy_key", b"low_entropy_key", "payload_variant", b"payload_variant", "reply_id", b"reply_id"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_reply_id", b"_reply_id", "duplicated_public_key", b"duplicated_public_key", "key_verification_final", b"key_verification_final", "key_verification_number_inform", b"key_verification_number_inform", "key_verification_number_request", b"key_verification_number_request", "level", b"level", "low_entropy_key", b"low_entropy_key", "message", b"message", "payload_variant", b"payload_variant", "reply_id", b"reply_id", "time", b"time"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_reply_id", b"_reply_id"]) -> typing.Literal["reply_id"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["key_verification_number_inform", "key_verification_number_request", "key_verification_final", "duplicated_public_key", "low_entropy_key"] | None: ... - -global___ClientNotification = ClientNotification - -@typing.final -class KeyVerificationNumberInform(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NONCE_FIELD_NUMBER: builtins.int - REMOTE_LONGNAME_FIELD_NUMBER: builtins.int - SECURITY_NUMBER_FIELD_NUMBER: builtins.int - nonce: builtins.int - remote_longname: builtins.str - security_number: builtins.int - def __init__( - self, - *, - nonce: builtins.int = ..., - remote_longname: builtins.str = ..., - security_number: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["nonce", b"nonce", "remote_longname", b"remote_longname", "security_number", b"security_number"]) -> None: ... - -global___KeyVerificationNumberInform = KeyVerificationNumberInform - -@typing.final -class KeyVerificationNumberRequest(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NONCE_FIELD_NUMBER: builtins.int - REMOTE_LONGNAME_FIELD_NUMBER: builtins.int - nonce: builtins.int - remote_longname: builtins.str - def __init__( - self, - *, - nonce: builtins.int = ..., - remote_longname: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["nonce", b"nonce", "remote_longname", b"remote_longname"]) -> None: ... - -global___KeyVerificationNumberRequest = KeyVerificationNumberRequest - -@typing.final -class KeyVerificationFinal(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - NONCE_FIELD_NUMBER: builtins.int - REMOTE_LONGNAME_FIELD_NUMBER: builtins.int - ISSENDER_FIELD_NUMBER: builtins.int - VERIFICATION_CHARACTERS_FIELD_NUMBER: builtins.int - nonce: builtins.int - remote_longname: builtins.str - isSender: builtins.bool - verification_characters: builtins.str - def __init__( - self, - *, - nonce: builtins.int = ..., - remote_longname: builtins.str = ..., - isSender: builtins.bool = ..., - verification_characters: builtins.str = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["isSender", b"isSender", "nonce", b"nonce", "remote_longname", b"remote_longname", "verification_characters", b"verification_characters"]) -> None: ... - -global___KeyVerificationFinal = KeyVerificationFinal - -@typing.final -class DuplicatedPublicKey(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___DuplicatedPublicKey = DuplicatedPublicKey - -@typing.final -class LowEntropyKey(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -global___LowEntropyKey = LowEntropyKey - -@typing.final -class FileInfo(google.protobuf.message.Message): - """ - Individual File info for the device - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - FILE_NAME_FIELD_NUMBER: builtins.int - SIZE_BYTES_FIELD_NUMBER: builtins.int - file_name: builtins.str - """ - The fully qualified path of the file - """ - size_bytes: builtins.int - """ - The size of the file in bytes - """ - def __init__( - self, - *, - file_name: builtins.str = ..., - size_bytes: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["file_name", b"file_name", "size_bytes", b"size_bytes"]) -> None: ... - -global___FileInfo = FileInfo - -@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 - HASPKC_FIELD_NUMBER: builtins.int - EXCLUDED_MODULES_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 - """ - hasPKC: builtins.bool - """ - Has PKC capabilities - """ - excluded_modules: builtins.int - """ - Bit field of boolean for excluded modules - (bitwise OR of ExcludedModules) - """ - 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 = ..., - hasPKC: builtins.bool = ..., - excluded_modules: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["canShutdown", b"canShutdown", "device_state_version", b"device_state_version", "excluded_modules", b"excluded_modules", "firmware_version", b"firmware_version", "hasBluetooth", b"hasBluetooth", "hasEthernet", b"hasEthernet", "hasPKC", b"hasPKC", "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 - - NONCE_FIELD_NUMBER: builtins.int - nonce: builtins.int - """ - The nonce of the heartbeat message - """ - def __init__( - self, - *, - nonce: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["nonce", b"nonce"]) -> 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 +from meshtastic.protobuf import channel_pb2 as _channel_pb2 +from meshtastic.protobuf import config_pb2 as _config_pb2 +from meshtastic.protobuf import device_ui_pb2 as _device_ui_pb2 +from meshtastic.protobuf import module_config_pb2 as _module_config_pb2 +from meshtastic.protobuf import portnums_pb2 as _portnums_pb2 +from meshtastic.protobuf import telemetry_pb2 as _telemetry_pb2 +from meshtastic.protobuf import xmodem_pb2 as _xmodem_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +AMBIENTLIGHTING_CONFIG: ExcludedModules +ANDROID_SIM: HardwareModel +AUDIO_CONFIG: ExcludedModules +BETAFPV_2400_TX: HardwareModel +BETAFPV_900_NANO_TX: HardwareModel +BLUETOOTH_CONFIG: ExcludedModules +BROWNOUT: CriticalErrorCode +BURNING_MAN: FirmwareEdition +CANARYONE: HardwareModel +CANNEDMSG_CONFIG: ExcludedModules +CDEBYTE_EORA_S3: HardwareModel +CHATTER_2: HardwareModel +CROWPANEL: HardwareModel +DATA_PAYLOAD_LEN: Constants +DEFCON: FirmwareEdition +DESCRIPTOR: _descriptor.FileDescriptor +DETECTIONSENSOR_CONFIG: ExcludedModules +DIY_EDITION: FirmwareEdition +DIY_V1: HardwareModel +DR_DEV: HardwareModel +EBYTE_ESP32_S3: HardwareModel +ESP32_S3_PICO: HardwareModel +EXCLUDED_NONE: ExcludedModules +EXTNOTIF_CONFIG: ExcludedModules +FLASH_CORRUPTION_RECOVERABLE: CriticalErrorCode +FLASH_CORRUPTION_UNRECOVERABLE: CriticalErrorCode +GENIEBLOCKS: HardwareModel +HAMVENTION: FirmwareEdition +HELTEC_CAPSULE_SENSOR_V3: HardwareModel +HELTEC_HRU_3601: HardwareModel +HELTEC_HT62: HardwareModel +HELTEC_MESH_NODE_T096: HardwareModel +HELTEC_MESH_NODE_T1: HardwareModel +HELTEC_MESH_NODE_T114: HardwareModel +HELTEC_MESH_POCKET: HardwareModel +HELTEC_MESH_SOLAR: HardwareModel +HELTEC_SENSOR_HUB: HardwareModel +HELTEC_V1: HardwareModel +HELTEC_V2_0: HardwareModel +HELTEC_V2_1: HardwareModel +HELTEC_V3: HardwareModel +HELTEC_V4: HardwareModel +HELTEC_V4_R8: HardwareModel +HELTEC_VISION_MASTER_E213: HardwareModel +HELTEC_VISION_MASTER_E290: HardwareModel +HELTEC_VISION_MASTER_T190: HardwareModel +HELTEC_WIRELESS_BRIDGE: HardwareModel +HELTEC_WIRELESS_PAPER: HardwareModel +HELTEC_WIRELESS_PAPER_V1_0: HardwareModel +HELTEC_WIRELESS_TRACKER: HardwareModel +HELTEC_WIRELESS_TRACKER_V1_0: HardwareModel +HELTEC_WIRELESS_TRACKER_V2: HardwareModel +HELTEC_WSL_V3: HardwareModel +INVALID_RADIO_SETTING: CriticalErrorCode +LILYGO_TBEAM_S3_CORE: HardwareModel +LINK_32: HardwareModel +LORA_RELAY_V1: HardwareModel +LORA_TYPE: HardwareModel +M5STACK: HardwareModel +M5STACK_C6L: HardwareModel +M5STACK_CARDPUTER_ADV: HardwareModel +M5STACK_CORE2: HardwareModel +M5STACK_COREBASIC: HardwareModel +M5STACK_CORES3: HardwareModel +M5STACK_RESERVED: HardwareModel +ME25LS01_4Y10TD: HardwareModel +MESHLINK: HardwareModel +MESHSTICK_1262: HardwareModel +MESH_TAB: HardwareModel +MINI_EPAPER_S3: HardwareModel +MQTT_CONFIG: ExcludedModules +MS24SF1: HardwareModel +MUZI_BASE: HardwareModel +MUZI_R1_NEO: HardwareModel +NANO_G1: HardwareModel +NANO_G1_EXPLORER: HardwareModel +NANO_G2_ULTRA: HardwareModel +NEIGHBORINFO_CONFIG: ExcludedModules +NETWORK_CONFIG: ExcludedModules +NOMADSTAR_METEOR_PRO: HardwareModel +NONE: CriticalErrorCode +NO_AXP192: CriticalErrorCode +NO_RADIO: CriticalErrorCode +NRF52840_PCA10059: HardwareModel +NRF52_PROMICRO_DIY: HardwareModel +NRF52_UNKNOWN: HardwareModel +OPEN_SAUCE: FirmwareEdition +PAXCOUNTER_CONFIG: ExcludedModules +PICOMPUTER_S3: HardwareModel +PORTDUINO: HardwareModel +PPR: HardwareModel +PRIVATE_HW: HardwareModel +RADIOMASTER_900_BANDIT: HardwareModel +RADIOMASTER_900_BANDIT_NANO: HardwareModel +RADIO_SPI_BUG: CriticalErrorCode +RAK11200: HardwareModel +RAK11310: HardwareModel +RAK2560: HardwareModel +RAK3172: HardwareModel +RAK3312: HardwareModel +RAK3401: HardwareModel +RAK4631: HardwareModel +RAK6421: HardwareModel +RANGETEST_CONFIG: ExcludedModules +REMOTEHARDWARE_CONFIG: ExcludedModules +ROUTASTIC: HardwareModel +RP2040_FEATHER_RFM95: HardwareModel +RP2040_LORA: HardwareModel +RPI_PICO: HardwareModel +RPI_PICO2: HardwareModel +SEEED_SOLAR_NODE: HardwareModel +SEEED_WIO_TRACKER_L1: HardwareModel +SEEED_WIO_TRACKER_L1_EINK: HardwareModel +SEEED_XIAO_S3: HardwareModel +SENSECAP_INDICATOR: HardwareModel +SENSELORA_RP2040: HardwareModel +SENSELORA_S3: HardwareModel +SERIAL_CONFIG: ExcludedModules +SLEEP_ENTER_WAIT: CriticalErrorCode +SMART_CITIZEN: FirmwareEdition +STATION_G1: HardwareModel +STATION_G2: HardwareModel +STATION_G3: HardwareModel +STOREFORWARD_CONFIG: ExcludedModules +SX1262_FAILURE: CriticalErrorCode +T5_S3_EPAPER_PRO: HardwareModel +TBEAM: HardwareModel +TBEAM_1_WATT: HardwareModel +TBEAM_BPF: HardwareModel +TBEAM_V0P7: HardwareModel +TDISPLAY_S3_PRO: HardwareModel +TD_LORAC: HardwareModel +TELEMETRY_CONFIG: ExcludedModules +THINKNODE_M1: HardwareModel +THINKNODE_M2: HardwareModel +THINKNODE_M3: HardwareModel +THINKNODE_M4: HardwareModel +THINKNODE_M5: HardwareModel +THINKNODE_M6: HardwareModel +THINKNODE_M7: HardwareModel +THINKNODE_M8: HardwareModel +THINKNODE_M9: HardwareModel +TLORA_C6: HardwareModel +TLORA_T3_S3: HardwareModel +TLORA_V1: HardwareModel +TLORA_V1_1P3: HardwareModel +TLORA_V2: HardwareModel +TLORA_V2_1_1P6: HardwareModel +TLORA_V2_1_1P8: HardwareModel +TRACKER_T1000_E: HardwareModel +TRACKER_T1000_E_PRO: HardwareModel +TRANSMIT_FAILED: CriticalErrorCode +TWC_MESH_V4: HardwareModel +TX_WATCHDOG: CriticalErrorCode +T_DECK: HardwareModel +T_DECK_PRO: HardwareModel +T_ECHO: HardwareModel +T_ECHO_CARD: HardwareModel +T_ECHO_LITE: HardwareModel +T_ECHO_PLUS: HardwareModel +T_ETH_ELITE: HardwareModel +T_IMPULSE_PLUS: HardwareModel +T_LORA_PAGER: HardwareModel +T_WATCH_S3: HardwareModel +T_WATCH_ULTRA: HardwareModel +UBLOX_UNIT_FAILED: CriticalErrorCode +UNPHONE: HardwareModel +UNSET: HardwareModel +UNSPECIFIED: CriticalErrorCode +VANILLA: FirmwareEdition +WIO_E5: HardwareModel +WIO_WM1110: HardwareModel +WIPHONE: HardwareModel +WISMESH_TAG: HardwareModel +WISMESH_TAP: HardwareModel +WISMESH_TAP_V2: HardwareModel +XIAO_NRF52_KIT: HardwareModel +ZERO: Constants + +class ChunkedPayload(_message.Message): + __slots__ = ["chunk_count", "chunk_index", "payload_chunk", "payload_id"] + CHUNK_COUNT_FIELD_NUMBER: _ClassVar[int] + CHUNK_INDEX_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_CHUNK_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] + chunk_count: int + chunk_index: int + payload_chunk: bytes + payload_id: int + def __init__(self, payload_id: _Optional[int] = ..., chunk_count: _Optional[int] = ..., chunk_index: _Optional[int] = ..., payload_chunk: _Optional[bytes] = ...) -> None: ... + +class ChunkedPayloadResponse(_message.Message): + __slots__ = ["accept_transfer", "payload_id", "request_transfer", "resend_chunks"] + ACCEPT_TRANSFER_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_ID_FIELD_NUMBER: _ClassVar[int] + REQUEST_TRANSFER_FIELD_NUMBER: _ClassVar[int] + RESEND_CHUNKS_FIELD_NUMBER: _ClassVar[int] + accept_transfer: bool + payload_id: int + request_transfer: bool + resend_chunks: resend_chunks + def __init__(self, payload_id: _Optional[int] = ..., request_transfer: bool = ..., accept_transfer: bool = ..., resend_chunks: _Optional[_Union[resend_chunks, _Mapping]] = ...) -> None: ... + +class ClientNotification(_message.Message): + __slots__ = ["duplicated_public_key", "key_verification_final", "key_verification_number_inform", "key_verification_number_request", "level", "low_entropy_key", "message", "reply_id", "time"] + DUPLICATED_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + KEY_VERIFICATION_FINAL_FIELD_NUMBER: _ClassVar[int] + KEY_VERIFICATION_NUMBER_INFORM_FIELD_NUMBER: _ClassVar[int] + KEY_VERIFICATION_NUMBER_REQUEST_FIELD_NUMBER: _ClassVar[int] + LEVEL_FIELD_NUMBER: _ClassVar[int] + LOW_ENTROPY_KEY_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + REPLY_ID_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + duplicated_public_key: DuplicatedPublicKey + key_verification_final: KeyVerificationFinal + key_verification_number_inform: KeyVerificationNumberInform + key_verification_number_request: KeyVerificationNumberRequest + level: LogRecord.Level + low_entropy_key: LowEntropyKey + message: str + reply_id: int + time: int + def __init__(self, reply_id: _Optional[int] = ..., time: _Optional[int] = ..., level: _Optional[_Union[LogRecord.Level, str]] = ..., message: _Optional[str] = ..., key_verification_number_inform: _Optional[_Union[KeyVerificationNumberInform, _Mapping]] = ..., key_verification_number_request: _Optional[_Union[KeyVerificationNumberRequest, _Mapping]] = ..., key_verification_final: _Optional[_Union[KeyVerificationFinal, _Mapping]] = ..., duplicated_public_key: _Optional[_Union[DuplicatedPublicKey, _Mapping]] = ..., low_entropy_key: _Optional[_Union[LowEntropyKey, _Mapping]] = ...) -> None: ... + +class Compressed(_message.Message): + __slots__ = ["data", "portnum"] + DATA_FIELD_NUMBER: _ClassVar[int] + PORTNUM_FIELD_NUMBER: _ClassVar[int] + data: bytes + portnum: _portnums_pb2.PortNum + def __init__(self, portnum: _Optional[_Union[_portnums_pb2.PortNum, str]] = ..., data: _Optional[bytes] = ...) -> None: ... + +class Data(_message.Message): + __slots__ = ["bitfield", "dest", "emoji", "payload", "portnum", "reply_id", "request_id", "source", "want_response"] + BITFIELD_FIELD_NUMBER: _ClassVar[int] + DEST_FIELD_NUMBER: _ClassVar[int] + EMOJI_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_FIELD_NUMBER: _ClassVar[int] + PORTNUM_FIELD_NUMBER: _ClassVar[int] + REPLY_ID_FIELD_NUMBER: _ClassVar[int] + REQUEST_ID_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + WANT_RESPONSE_FIELD_NUMBER: _ClassVar[int] + bitfield: int + dest: int + emoji: int + payload: bytes + portnum: _portnums_pb2.PortNum + reply_id: int + request_id: int + source: int + want_response: bool + def __init__(self, portnum: _Optional[_Union[_portnums_pb2.PortNum, str]] = ..., payload: _Optional[bytes] = ..., want_response: bool = ..., dest: _Optional[int] = ..., source: _Optional[int] = ..., request_id: _Optional[int] = ..., reply_id: _Optional[int] = ..., emoji: _Optional[int] = ..., bitfield: _Optional[int] = ...) -> None: ... + +class DeviceMetadata(_message.Message): + __slots__ = ["canShutdown", "device_state_version", "excluded_modules", "firmware_version", "hasBluetooth", "hasEthernet", "hasPKC", "hasRemoteHardware", "hasWifi", "hw_model", "position_flags", "role"] + CANSHUTDOWN_FIELD_NUMBER: _ClassVar[int] + DEVICE_STATE_VERSION_FIELD_NUMBER: _ClassVar[int] + EXCLUDED_MODULES_FIELD_NUMBER: _ClassVar[int] + FIRMWARE_VERSION_FIELD_NUMBER: _ClassVar[int] + HASBLUETOOTH_FIELD_NUMBER: _ClassVar[int] + HASETHERNET_FIELD_NUMBER: _ClassVar[int] + HASPKC_FIELD_NUMBER: _ClassVar[int] + HASREMOTEHARDWARE_FIELD_NUMBER: _ClassVar[int] + HASWIFI_FIELD_NUMBER: _ClassVar[int] + HW_MODEL_FIELD_NUMBER: _ClassVar[int] + POSITION_FLAGS_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + canShutdown: bool + device_state_version: int + excluded_modules: int + firmware_version: str + hasBluetooth: bool + hasEthernet: bool + hasPKC: bool + hasRemoteHardware: bool + hasWifi: bool + hw_model: HardwareModel + position_flags: int + role: _config_pb2.Config.DeviceConfig.Role + def __init__(self, firmware_version: _Optional[str] = ..., device_state_version: _Optional[int] = ..., canShutdown: bool = ..., hasWifi: bool = ..., hasBluetooth: bool = ..., hasEthernet: bool = ..., role: _Optional[_Union[_config_pb2.Config.DeviceConfig.Role, str]] = ..., position_flags: _Optional[int] = ..., hw_model: _Optional[_Union[HardwareModel, str]] = ..., hasRemoteHardware: bool = ..., hasPKC: bool = ..., excluded_modules: _Optional[int] = ...) -> None: ... + +class DuplicatedPublicKey(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class FileInfo(_message.Message): + __slots__ = ["file_name", "size_bytes"] + FILE_NAME_FIELD_NUMBER: _ClassVar[int] + SIZE_BYTES_FIELD_NUMBER: _ClassVar[int] + file_name: str + size_bytes: int + def __init__(self, file_name: _Optional[str] = ..., size_bytes: _Optional[int] = ...) -> None: ... + +class FromRadio(_message.Message): + __slots__ = ["channel", "clientNotification", "config", "config_complete_id", "deviceuiConfig", "fileInfo", "id", "lockdown_status", "log_record", "metadata", "moduleConfig", "mqttClientProxyMessage", "my_info", "node_info", "packet", "queueStatus", "rebooted", "xmodemPacket"] + CHANNEL_FIELD_NUMBER: _ClassVar[int] + CLIENTNOTIFICATION_FIELD_NUMBER: _ClassVar[int] + CONFIG_COMPLETE_ID_FIELD_NUMBER: _ClassVar[int] + CONFIG_FIELD_NUMBER: _ClassVar[int] + DEVICEUICONFIG_FIELD_NUMBER: _ClassVar[int] + FILEINFO_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + LOCKDOWN_STATUS_FIELD_NUMBER: _ClassVar[int] + LOG_RECORD_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + MODULECONFIG_FIELD_NUMBER: _ClassVar[int] + MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER: _ClassVar[int] + MY_INFO_FIELD_NUMBER: _ClassVar[int] + NODE_INFO_FIELD_NUMBER: _ClassVar[int] + PACKET_FIELD_NUMBER: _ClassVar[int] + QUEUESTATUS_FIELD_NUMBER: _ClassVar[int] + REBOOTED_FIELD_NUMBER: _ClassVar[int] + XMODEMPACKET_FIELD_NUMBER: _ClassVar[int] + channel: _channel_pb2.Channel + clientNotification: ClientNotification + config: _config_pb2.Config + config_complete_id: int + deviceuiConfig: _device_ui_pb2.DeviceUIConfig + fileInfo: FileInfo + id: int + lockdown_status: LockdownStatus + log_record: LogRecord + metadata: DeviceMetadata + moduleConfig: _module_config_pb2.ModuleConfig + mqttClientProxyMessage: MqttClientProxyMessage + my_info: MyNodeInfo + node_info: NodeInfo + packet: MeshPacket + queueStatus: QueueStatus + rebooted: bool + xmodemPacket: _xmodem_pb2.XModem + def __init__(self, id: _Optional[int] = ..., packet: _Optional[_Union[MeshPacket, _Mapping]] = ..., my_info: _Optional[_Union[MyNodeInfo, _Mapping]] = ..., node_info: _Optional[_Union[NodeInfo, _Mapping]] = ..., config: _Optional[_Union[_config_pb2.Config, _Mapping]] = ..., log_record: _Optional[_Union[LogRecord, _Mapping]] = ..., config_complete_id: _Optional[int] = ..., rebooted: bool = ..., moduleConfig: _Optional[_Union[_module_config_pb2.ModuleConfig, _Mapping]] = ..., channel: _Optional[_Union[_channel_pb2.Channel, _Mapping]] = ..., queueStatus: _Optional[_Union[QueueStatus, _Mapping]] = ..., xmodemPacket: _Optional[_Union[_xmodem_pb2.XModem, _Mapping]] = ..., metadata: _Optional[_Union[DeviceMetadata, _Mapping]] = ..., mqttClientProxyMessage: _Optional[_Union[MqttClientProxyMessage, _Mapping]] = ..., fileInfo: _Optional[_Union[FileInfo, _Mapping]] = ..., clientNotification: _Optional[_Union[ClientNotification, _Mapping]] = ..., deviceuiConfig: _Optional[_Union[_device_ui_pb2.DeviceUIConfig, _Mapping]] = ..., lockdown_status: _Optional[_Union[LockdownStatus, _Mapping]] = ...) -> None: ... + +class Heartbeat(_message.Message): + __slots__ = ["nonce"] + NONCE_FIELD_NUMBER: _ClassVar[int] + nonce: int + def __init__(self, nonce: _Optional[int] = ...) -> None: ... + +class KeyVerification(_message.Message): + __slots__ = ["hash1", "hash2", "nonce"] + HASH1_FIELD_NUMBER: _ClassVar[int] + HASH2_FIELD_NUMBER: _ClassVar[int] + NONCE_FIELD_NUMBER: _ClassVar[int] + hash1: bytes + hash2: bytes + nonce: int + def __init__(self, nonce: _Optional[int] = ..., hash1: _Optional[bytes] = ..., hash2: _Optional[bytes] = ...) -> None: ... + +class KeyVerificationFinal(_message.Message): + __slots__ = ["isSender", "nonce", "remote_longname", "verification_characters"] + ISSENDER_FIELD_NUMBER: _ClassVar[int] + NONCE_FIELD_NUMBER: _ClassVar[int] + REMOTE_LONGNAME_FIELD_NUMBER: _ClassVar[int] + VERIFICATION_CHARACTERS_FIELD_NUMBER: _ClassVar[int] + isSender: bool + nonce: int + remote_longname: str + verification_characters: str + def __init__(self, nonce: _Optional[int] = ..., remote_longname: _Optional[str] = ..., isSender: bool = ..., verification_characters: _Optional[str] = ...) -> None: ... + +class KeyVerificationNumberInform(_message.Message): + __slots__ = ["nonce", "remote_longname", "security_number"] + NONCE_FIELD_NUMBER: _ClassVar[int] + REMOTE_LONGNAME_FIELD_NUMBER: _ClassVar[int] + SECURITY_NUMBER_FIELD_NUMBER: _ClassVar[int] + nonce: int + remote_longname: str + security_number: int + def __init__(self, nonce: _Optional[int] = ..., remote_longname: _Optional[str] = ..., security_number: _Optional[int] = ...) -> None: ... + +class KeyVerificationNumberRequest(_message.Message): + __slots__ = ["nonce", "remote_longname"] + NONCE_FIELD_NUMBER: _ClassVar[int] + REMOTE_LONGNAME_FIELD_NUMBER: _ClassVar[int] + nonce: int + remote_longname: str + def __init__(self, nonce: _Optional[int] = ..., remote_longname: _Optional[str] = ...) -> None: ... + +class LockdownStatus(_message.Message): + __slots__ = ["backoff_seconds", "boots_remaining", "lock_reason", "state", "valid_until_epoch"] + class State(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + BACKOFF_SECONDS_FIELD_NUMBER: _ClassVar[int] + BOOTS_REMAINING_FIELD_NUMBER: _ClassVar[int] + LOCKED: LockdownStatus.State + LOCK_REASON_FIELD_NUMBER: _ClassVar[int] + NEEDS_PROVISION: LockdownStatus.State + STATE_FIELD_NUMBER: _ClassVar[int] + STATE_UNSPECIFIED: LockdownStatus.State + UNLOCKED: LockdownStatus.State + UNLOCK_FAILED: LockdownStatus.State + VALID_UNTIL_EPOCH_FIELD_NUMBER: _ClassVar[int] + backoff_seconds: int + boots_remaining: int + lock_reason: str + state: LockdownStatus.State + valid_until_epoch: int + def __init__(self, state: _Optional[_Union[LockdownStatus.State, str]] = ..., lock_reason: _Optional[str] = ..., boots_remaining: _Optional[int] = ..., valid_until_epoch: _Optional[int] = ..., backoff_seconds: _Optional[int] = ...) -> None: ... + +class LogRecord(_message.Message): + __slots__ = ["level", "message", "source", "time"] + class Level(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + CRITICAL: LogRecord.Level + DEBUG: LogRecord.Level + ERROR: LogRecord.Level + INFO: LogRecord.Level + LEVEL_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + TRACE: LogRecord.Level + UNSET: LogRecord.Level + WARNING: LogRecord.Level + level: LogRecord.Level + message: str + source: str + time: int + def __init__(self, message: _Optional[str] = ..., time: _Optional[int] = ..., source: _Optional[str] = ..., level: _Optional[_Union[LogRecord.Level, str]] = ...) -> None: ... + +class LowEntropyKey(_message.Message): + __slots__ = [] + def __init__(self) -> None: ... + +class MeshPacket(_message.Message): + __slots__ = ["channel", "decoded", "delayed", "encrypted", "hop_limit", "hop_start", "id", "next_hop", "pki_encrypted", "priority", "public_key", "relay_node", "rx_rssi", "rx_snr", "rx_time", "to", "transport_mechanism", "tx_after", "via_mqtt", "want_ack"] + class Delayed(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Priority(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class TransportMechanism(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ACK: MeshPacket.Priority + ALERT: MeshPacket.Priority + BACKGROUND: MeshPacket.Priority + CHANNEL_FIELD_NUMBER: _ClassVar[int] + DECODED_FIELD_NUMBER: _ClassVar[int] + DEFAULT: MeshPacket.Priority + DELAYED_BROADCAST: MeshPacket.Delayed + DELAYED_DIRECT: MeshPacket.Delayed + DELAYED_FIELD_NUMBER: _ClassVar[int] + ENCRYPTED_FIELD_NUMBER: _ClassVar[int] + FROM_FIELD_NUMBER: _ClassVar[int] + HIGH: MeshPacket.Priority + HOP_LIMIT_FIELD_NUMBER: _ClassVar[int] + HOP_START_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + MAX: MeshPacket.Priority + MIN: MeshPacket.Priority + NEXT_HOP_FIELD_NUMBER: _ClassVar[int] + NO_DELAY: MeshPacket.Delayed + PKI_ENCRYPTED_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + RELAY_NODE_FIELD_NUMBER: _ClassVar[int] + RELIABLE: MeshPacket.Priority + RESPONSE: MeshPacket.Priority + RX_RSSI_FIELD_NUMBER: _ClassVar[int] + RX_SNR_FIELD_NUMBER: _ClassVar[int] + RX_TIME_FIELD_NUMBER: _ClassVar[int] + TO_FIELD_NUMBER: _ClassVar[int] + TRANSPORT_API: MeshPacket.TransportMechanism + TRANSPORT_INTERNAL: MeshPacket.TransportMechanism + TRANSPORT_LORA: MeshPacket.TransportMechanism + TRANSPORT_LORA_ALT1: MeshPacket.TransportMechanism + TRANSPORT_LORA_ALT2: MeshPacket.TransportMechanism + TRANSPORT_LORA_ALT3: MeshPacket.TransportMechanism + TRANSPORT_MECHANISM_FIELD_NUMBER: _ClassVar[int] + TRANSPORT_MQTT: MeshPacket.TransportMechanism + TRANSPORT_MULTICAST_UDP: MeshPacket.TransportMechanism + TX_AFTER_FIELD_NUMBER: _ClassVar[int] + UNSET: MeshPacket.Priority + VIA_MQTT_FIELD_NUMBER: _ClassVar[int] + WANT_ACK_FIELD_NUMBER: _ClassVar[int] + channel: int + decoded: Data + delayed: MeshPacket.Delayed + encrypted: bytes + hop_limit: int + hop_start: int + id: int + next_hop: int + pki_encrypted: bool + priority: MeshPacket.Priority + public_key: bytes + relay_node: int + rx_rssi: int + rx_snr: float + rx_time: int + to: int + transport_mechanism: MeshPacket.TransportMechanism + tx_after: int + via_mqtt: bool + want_ack: bool + def __init__(self, to: _Optional[int] = ..., channel: _Optional[int] = ..., decoded: _Optional[_Union[Data, _Mapping]] = ..., encrypted: _Optional[bytes] = ..., id: _Optional[int] = ..., rx_time: _Optional[int] = ..., rx_snr: _Optional[float] = ..., hop_limit: _Optional[int] = ..., want_ack: bool = ..., priority: _Optional[_Union[MeshPacket.Priority, str]] = ..., rx_rssi: _Optional[int] = ..., delayed: _Optional[_Union[MeshPacket.Delayed, str]] = ..., via_mqtt: bool = ..., hop_start: _Optional[int] = ..., public_key: _Optional[bytes] = ..., pki_encrypted: bool = ..., next_hop: _Optional[int] = ..., relay_node: _Optional[int] = ..., tx_after: _Optional[int] = ..., transport_mechanism: _Optional[_Union[MeshPacket.TransportMechanism, str]] = ..., **kwargs) -> None: ... + +class MqttClientProxyMessage(_message.Message): + __slots__ = ["data", "retained", "text", "topic"] + DATA_FIELD_NUMBER: _ClassVar[int] + RETAINED_FIELD_NUMBER: _ClassVar[int] + TEXT_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + data: bytes + retained: bool + text: str + topic: str + def __init__(self, topic: _Optional[str] = ..., data: _Optional[bytes] = ..., text: _Optional[str] = ..., retained: bool = ...) -> None: ... + +class MyNodeInfo(_message.Message): + __slots__ = ["device_id", "firmware_edition", "min_app_version", "my_node_num", "nodedb_count", "pio_env", "reboot_count"] + DEVICE_ID_FIELD_NUMBER: _ClassVar[int] + FIRMWARE_EDITION_FIELD_NUMBER: _ClassVar[int] + MIN_APP_VERSION_FIELD_NUMBER: _ClassVar[int] + MY_NODE_NUM_FIELD_NUMBER: _ClassVar[int] + NODEDB_COUNT_FIELD_NUMBER: _ClassVar[int] + PIO_ENV_FIELD_NUMBER: _ClassVar[int] + REBOOT_COUNT_FIELD_NUMBER: _ClassVar[int] + device_id: bytes + firmware_edition: FirmwareEdition + min_app_version: int + my_node_num: int + nodedb_count: int + pio_env: str + reboot_count: int + def __init__(self, my_node_num: _Optional[int] = ..., reboot_count: _Optional[int] = ..., min_app_version: _Optional[int] = ..., device_id: _Optional[bytes] = ..., pio_env: _Optional[str] = ..., firmware_edition: _Optional[_Union[FirmwareEdition, str]] = ..., nodedb_count: _Optional[int] = ...) -> None: ... + +class Neighbor(_message.Message): + __slots__ = ["last_rx_time", "node_broadcast_interval_secs", "node_id", "snr"] + LAST_RX_TIME_FIELD_NUMBER: _ClassVar[int] + NODE_BROADCAST_INTERVAL_SECS_FIELD_NUMBER: _ClassVar[int] + NODE_ID_FIELD_NUMBER: _ClassVar[int] + SNR_FIELD_NUMBER: _ClassVar[int] + last_rx_time: int + node_broadcast_interval_secs: int + node_id: int + snr: float + def __init__(self, node_id: _Optional[int] = ..., snr: _Optional[float] = ..., last_rx_time: _Optional[int] = ..., node_broadcast_interval_secs: _Optional[int] = ...) -> None: ... + +class NeighborInfo(_message.Message): + __slots__ = ["last_sent_by_id", "neighbors", "node_broadcast_interval_secs", "node_id"] + LAST_SENT_BY_ID_FIELD_NUMBER: _ClassVar[int] + NEIGHBORS_FIELD_NUMBER: _ClassVar[int] + NODE_BROADCAST_INTERVAL_SECS_FIELD_NUMBER: _ClassVar[int] + NODE_ID_FIELD_NUMBER: _ClassVar[int] + last_sent_by_id: int + neighbors: _containers.RepeatedCompositeFieldContainer[Neighbor] + node_broadcast_interval_secs: int + node_id: int + def __init__(self, node_id: _Optional[int] = ..., last_sent_by_id: _Optional[int] = ..., node_broadcast_interval_secs: _Optional[int] = ..., neighbors: _Optional[_Iterable[_Union[Neighbor, _Mapping]]] = ...) -> None: ... + +class NodeInfo(_message.Message): + __slots__ = ["channel", "device_metrics", "hops_away", "is_favorite", "is_ignored", "is_key_manually_verified", "is_muted", "last_heard", "num", "position", "snr", "user", "via_mqtt"] + CHANNEL_FIELD_NUMBER: _ClassVar[int] + DEVICE_METRICS_FIELD_NUMBER: _ClassVar[int] + HOPS_AWAY_FIELD_NUMBER: _ClassVar[int] + IS_FAVORITE_FIELD_NUMBER: _ClassVar[int] + IS_IGNORED_FIELD_NUMBER: _ClassVar[int] + IS_KEY_MANUALLY_VERIFIED_FIELD_NUMBER: _ClassVar[int] + IS_MUTED_FIELD_NUMBER: _ClassVar[int] + LAST_HEARD_FIELD_NUMBER: _ClassVar[int] + NUM_FIELD_NUMBER: _ClassVar[int] + POSITION_FIELD_NUMBER: _ClassVar[int] + SNR_FIELD_NUMBER: _ClassVar[int] + USER_FIELD_NUMBER: _ClassVar[int] + VIA_MQTT_FIELD_NUMBER: _ClassVar[int] + channel: int + device_metrics: _telemetry_pb2.DeviceMetrics + hops_away: int + is_favorite: bool + is_ignored: bool + is_key_manually_verified: bool + is_muted: bool + last_heard: int + num: int + position: Position + snr: float + user: User + via_mqtt: bool + def __init__(self, num: _Optional[int] = ..., user: _Optional[_Union[User, _Mapping]] = ..., position: _Optional[_Union[Position, _Mapping]] = ..., snr: _Optional[float] = ..., last_heard: _Optional[int] = ..., device_metrics: _Optional[_Union[_telemetry_pb2.DeviceMetrics, _Mapping]] = ..., channel: _Optional[int] = ..., via_mqtt: bool = ..., hops_away: _Optional[int] = ..., is_favorite: bool = ..., is_ignored: bool = ..., is_key_manually_verified: bool = ..., is_muted: bool = ...) -> None: ... + +class NodeRemoteHardwarePin(_message.Message): + __slots__ = ["node_num", "pin"] + NODE_NUM_FIELD_NUMBER: _ClassVar[int] + PIN_FIELD_NUMBER: _ClassVar[int] + node_num: int + pin: _module_config_pb2.RemoteHardwarePin + def __init__(self, node_num: _Optional[int] = ..., pin: _Optional[_Union[_module_config_pb2.RemoteHardwarePin, _Mapping]] = ...) -> None: ... + +class Position(_message.Message): + __slots__ = ["HDOP", "PDOP", "VDOP", "altitude", "altitude_geoidal_separation", "altitude_hae", "altitude_source", "fix_quality", "fix_type", "gps_accuracy", "ground_speed", "ground_track", "latitude_i", "location_source", "longitude_i", "next_update", "precision_bits", "sats_in_view", "sensor_id", "seq_number", "time", "timestamp", "timestamp_millis_adjust"] + class AltSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class LocSource(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ALTITUDE_FIELD_NUMBER: _ClassVar[int] + ALTITUDE_GEOIDAL_SEPARATION_FIELD_NUMBER: _ClassVar[int] + ALTITUDE_HAE_FIELD_NUMBER: _ClassVar[int] + ALTITUDE_SOURCE_FIELD_NUMBER: _ClassVar[int] + ALT_BAROMETRIC: Position.AltSource + ALT_EXTERNAL: Position.AltSource + ALT_INTERNAL: Position.AltSource + ALT_MANUAL: Position.AltSource + ALT_UNSET: Position.AltSource + FIX_QUALITY_FIELD_NUMBER: _ClassVar[int] + FIX_TYPE_FIELD_NUMBER: _ClassVar[int] + GPS_ACCURACY_FIELD_NUMBER: _ClassVar[int] + GROUND_SPEED_FIELD_NUMBER: _ClassVar[int] + GROUND_TRACK_FIELD_NUMBER: _ClassVar[int] + HDOP: int + HDOP_FIELD_NUMBER: _ClassVar[int] + LATITUDE_I_FIELD_NUMBER: _ClassVar[int] + LOCATION_SOURCE_FIELD_NUMBER: _ClassVar[int] + LOC_EXTERNAL: Position.LocSource + LOC_INTERNAL: Position.LocSource + LOC_MANUAL: Position.LocSource + LOC_UNSET: Position.LocSource + LONGITUDE_I_FIELD_NUMBER: _ClassVar[int] + NEXT_UPDATE_FIELD_NUMBER: _ClassVar[int] + PDOP: int + PDOP_FIELD_NUMBER: _ClassVar[int] + PRECISION_BITS_FIELD_NUMBER: _ClassVar[int] + SATS_IN_VIEW_FIELD_NUMBER: _ClassVar[int] + SENSOR_ID_FIELD_NUMBER: _ClassVar[int] + SEQ_NUMBER_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_FIELD_NUMBER: _ClassVar[int] + TIMESTAMP_MILLIS_ADJUST_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + VDOP: int + VDOP_FIELD_NUMBER: _ClassVar[int] + altitude: int + altitude_geoidal_separation: int + altitude_hae: int + altitude_source: Position.AltSource + fix_quality: int + fix_type: int + gps_accuracy: int + ground_speed: int + ground_track: int + latitude_i: int + location_source: Position.LocSource + longitude_i: int + next_update: int + precision_bits: int + sats_in_view: int + sensor_id: int + seq_number: int + time: int + timestamp: int + timestamp_millis_adjust: int + def __init__(self, latitude_i: _Optional[int] = ..., longitude_i: _Optional[int] = ..., altitude: _Optional[int] = ..., time: _Optional[int] = ..., location_source: _Optional[_Union[Position.LocSource, str]] = ..., altitude_source: _Optional[_Union[Position.AltSource, str]] = ..., timestamp: _Optional[int] = ..., timestamp_millis_adjust: _Optional[int] = ..., altitude_hae: _Optional[int] = ..., altitude_geoidal_separation: _Optional[int] = ..., PDOP: _Optional[int] = ..., HDOP: _Optional[int] = ..., VDOP: _Optional[int] = ..., gps_accuracy: _Optional[int] = ..., ground_speed: _Optional[int] = ..., ground_track: _Optional[int] = ..., fix_quality: _Optional[int] = ..., fix_type: _Optional[int] = ..., sats_in_view: _Optional[int] = ..., sensor_id: _Optional[int] = ..., next_update: _Optional[int] = ..., seq_number: _Optional[int] = ..., precision_bits: _Optional[int] = ...) -> None: ... + +class QueueStatus(_message.Message): + __slots__ = ["free", "maxlen", "mesh_packet_id", "res"] + FREE_FIELD_NUMBER: _ClassVar[int] + MAXLEN_FIELD_NUMBER: _ClassVar[int] + MESH_PACKET_ID_FIELD_NUMBER: _ClassVar[int] + RES_FIELD_NUMBER: _ClassVar[int] + free: int + maxlen: int + mesh_packet_id: int + res: int + def __init__(self, res: _Optional[int] = ..., free: _Optional[int] = ..., maxlen: _Optional[int] = ..., mesh_packet_id: _Optional[int] = ...) -> None: ... + +class RemoteShell(_message.Message): + __slots__ = ["ack_seq", "cols", "flags", "last_rx_seq", "last_tx_seq", "op", "payload", "rows", "seq", "session_id"] + class OpCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ACK: RemoteShell.OpCode + ACK_SEQ_FIELD_NUMBER: _ClassVar[int] + CLOSE: RemoteShell.OpCode + CLOSED: RemoteShell.OpCode + COLS_FIELD_NUMBER: _ClassVar[int] + ERROR: RemoteShell.OpCode + FLAGS_FIELD_NUMBER: _ClassVar[int] + INPUT: RemoteShell.OpCode + LAST_RX_SEQ_FIELD_NUMBER: _ClassVar[int] + LAST_TX_SEQ_FIELD_NUMBER: _ClassVar[int] + OPEN: RemoteShell.OpCode + OPEN_OK: RemoteShell.OpCode + OP_FIELD_NUMBER: _ClassVar[int] + OP_UNSET: RemoteShell.OpCode + OUTPUT: RemoteShell.OpCode + PAYLOAD_FIELD_NUMBER: _ClassVar[int] + PING: RemoteShell.OpCode + PONG: RemoteShell.OpCode + RESIZE: RemoteShell.OpCode + ROWS_FIELD_NUMBER: _ClassVar[int] + SEQ_FIELD_NUMBER: _ClassVar[int] + SESSION_ID_FIELD_NUMBER: _ClassVar[int] + ack_seq: int + cols: int + flags: int + last_rx_seq: int + last_tx_seq: int + op: RemoteShell.OpCode + payload: bytes + rows: int + seq: int + session_id: int + def __init__(self, op: _Optional[_Union[RemoteShell.OpCode, str]] = ..., session_id: _Optional[int] = ..., seq: _Optional[int] = ..., ack_seq: _Optional[int] = ..., payload: _Optional[bytes] = ..., cols: _Optional[int] = ..., rows: _Optional[int] = ..., flags: _Optional[int] = ..., last_tx_seq: _Optional[int] = ..., last_rx_seq: _Optional[int] = ...) -> None: ... + +class RouteDiscovery(_message.Message): + __slots__ = ["route", "route_back", "snr_back", "snr_towards"] + ROUTE_BACK_FIELD_NUMBER: _ClassVar[int] + ROUTE_FIELD_NUMBER: _ClassVar[int] + SNR_BACK_FIELD_NUMBER: _ClassVar[int] + SNR_TOWARDS_FIELD_NUMBER: _ClassVar[int] + route: _containers.RepeatedScalarFieldContainer[int] + route_back: _containers.RepeatedScalarFieldContainer[int] + snr_back: _containers.RepeatedScalarFieldContainer[int] + snr_towards: _containers.RepeatedScalarFieldContainer[int] + def __init__(self, route: _Optional[_Iterable[int]] = ..., snr_towards: _Optional[_Iterable[int]] = ..., route_back: _Optional[_Iterable[int]] = ..., snr_back: _Optional[_Iterable[int]] = ...) -> None: ... + +class Routing(_message.Message): + __slots__ = ["error_reason", "route_reply", "route_request"] + class Error(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ADMIN_BAD_SESSION_KEY: Routing.Error + ADMIN_PUBLIC_KEY_UNAUTHORIZED: Routing.Error + BAD_REQUEST: Routing.Error + DUTY_CYCLE_LIMIT: Routing.Error + ERROR_REASON_FIELD_NUMBER: _ClassVar[int] + GOT_NAK: Routing.Error + MAX_RETRANSMIT: Routing.Error + NONE: Routing.Error + NOT_AUTHORIZED: Routing.Error + NO_CHANNEL: Routing.Error + NO_INTERFACE: Routing.Error + NO_RESPONSE: Routing.Error + NO_ROUTE: Routing.Error + PKI_FAILED: Routing.Error + PKI_SEND_FAIL_PUBLIC_KEY: Routing.Error + PKI_UNKNOWN_PUBKEY: Routing.Error + RATE_LIMIT_EXCEEDED: Routing.Error + ROUTE_REPLY_FIELD_NUMBER: _ClassVar[int] + ROUTE_REQUEST_FIELD_NUMBER: _ClassVar[int] + TIMEOUT: Routing.Error + TOO_LARGE: Routing.Error + error_reason: Routing.Error + route_reply: RouteDiscovery + route_request: RouteDiscovery + def __init__(self, route_request: _Optional[_Union[RouteDiscovery, _Mapping]] = ..., route_reply: _Optional[_Union[RouteDiscovery, _Mapping]] = ..., error_reason: _Optional[_Union[Routing.Error, str]] = ...) -> None: ... + +class StatusMessage(_message.Message): + __slots__ = ["status"] + STATUS_FIELD_NUMBER: _ClassVar[int] + status: str + def __init__(self, status: _Optional[str] = ...) -> None: ... + +class StoreForwardPlusPlus(_message.Message): + __slots__ = ["chain_count", "commit_hash", "encapsulated_from", "encapsulated_id", "encapsulated_rxtime", "encapsulated_to", "message", "message_hash", "root_hash", "sfpp_message_type"] + class SFPP_message_type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + CANON_ANNOUNCE: StoreForwardPlusPlus.SFPP_message_type + CHAIN_COUNT_FIELD_NUMBER: _ClassVar[int] + CHAIN_QUERY: StoreForwardPlusPlus.SFPP_message_type + COMMIT_HASH_FIELD_NUMBER: _ClassVar[int] + ENCAPSULATED_FROM_FIELD_NUMBER: _ClassVar[int] + ENCAPSULATED_ID_FIELD_NUMBER: _ClassVar[int] + ENCAPSULATED_RXTIME_FIELD_NUMBER: _ClassVar[int] + ENCAPSULATED_TO_FIELD_NUMBER: _ClassVar[int] + LINK_PROVIDE: StoreForwardPlusPlus.SFPP_message_type + LINK_PROVIDE_FIRSTHALF: StoreForwardPlusPlus.SFPP_message_type + LINK_PROVIDE_SECONDHALF: StoreForwardPlusPlus.SFPP_message_type + LINK_REQUEST: StoreForwardPlusPlus.SFPP_message_type + MESSAGE_FIELD_NUMBER: _ClassVar[int] + MESSAGE_HASH_FIELD_NUMBER: _ClassVar[int] + ROOT_HASH_FIELD_NUMBER: _ClassVar[int] + SFPP_MESSAGE_TYPE_FIELD_NUMBER: _ClassVar[int] + chain_count: int + commit_hash: bytes + encapsulated_from: int + encapsulated_id: int + encapsulated_rxtime: int + encapsulated_to: int + message: bytes + message_hash: bytes + root_hash: bytes + sfpp_message_type: StoreForwardPlusPlus.SFPP_message_type + def __init__(self, sfpp_message_type: _Optional[_Union[StoreForwardPlusPlus.SFPP_message_type, str]] = ..., message_hash: _Optional[bytes] = ..., commit_hash: _Optional[bytes] = ..., root_hash: _Optional[bytes] = ..., message: _Optional[bytes] = ..., encapsulated_id: _Optional[int] = ..., encapsulated_to: _Optional[int] = ..., encapsulated_from: _Optional[int] = ..., encapsulated_rxtime: _Optional[int] = ..., chain_count: _Optional[int] = ...) -> None: ... + +class ToRadio(_message.Message): + __slots__ = ["disconnect", "heartbeat", "mqttClientProxyMessage", "packet", "want_config_id", "xmodemPacket"] + DISCONNECT_FIELD_NUMBER: _ClassVar[int] + HEARTBEAT_FIELD_NUMBER: _ClassVar[int] + MQTTCLIENTPROXYMESSAGE_FIELD_NUMBER: _ClassVar[int] + PACKET_FIELD_NUMBER: _ClassVar[int] + WANT_CONFIG_ID_FIELD_NUMBER: _ClassVar[int] + XMODEMPACKET_FIELD_NUMBER: _ClassVar[int] + disconnect: bool + heartbeat: Heartbeat + mqttClientProxyMessage: MqttClientProxyMessage + packet: MeshPacket + want_config_id: int + xmodemPacket: _xmodem_pb2.XModem + def __init__(self, packet: _Optional[_Union[MeshPacket, _Mapping]] = ..., want_config_id: _Optional[int] = ..., disconnect: bool = ..., xmodemPacket: _Optional[_Union[_xmodem_pb2.XModem, _Mapping]] = ..., mqttClientProxyMessage: _Optional[_Union[MqttClientProxyMessage, _Mapping]] = ..., heartbeat: _Optional[_Union[Heartbeat, _Mapping]] = ...) -> None: ... + +class User(_message.Message): + __slots__ = ["hw_model", "id", "is_licensed", "is_unmessagable", "long_name", "macaddr", "public_key", "role", "short_name"] + HW_MODEL_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + IS_LICENSED_FIELD_NUMBER: _ClassVar[int] + IS_UNMESSAGABLE_FIELD_NUMBER: _ClassVar[int] + LONG_NAME_FIELD_NUMBER: _ClassVar[int] + MACADDR_FIELD_NUMBER: _ClassVar[int] + PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + SHORT_NAME_FIELD_NUMBER: _ClassVar[int] + hw_model: HardwareModel + id: str + is_licensed: bool + is_unmessagable: bool + long_name: str + macaddr: bytes + public_key: bytes + role: _config_pb2.Config.DeviceConfig.Role + short_name: str + def __init__(self, id: _Optional[str] = ..., long_name: _Optional[str] = ..., short_name: _Optional[str] = ..., macaddr: _Optional[bytes] = ..., hw_model: _Optional[_Union[HardwareModel, str]] = ..., is_licensed: bool = ..., role: _Optional[_Union[_config_pb2.Config.DeviceConfig.Role, str]] = ..., public_key: _Optional[bytes] = ..., is_unmessagable: bool = ...) -> None: ... + +class Waypoint(_message.Message): + __slots__ = ["description", "expire", "icon", "id", "latitude_i", "locked_to", "longitude_i", "name"] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + EXPIRE_FIELD_NUMBER: _ClassVar[int] + ICON_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + LATITUDE_I_FIELD_NUMBER: _ClassVar[int] + LOCKED_TO_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_I_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + description: str + expire: int + icon: int + id: int + latitude_i: int + locked_to: int + longitude_i: int + name: str + def __init__(self, id: _Optional[int] = ..., latitude_i: _Optional[int] = ..., longitude_i: _Optional[int] = ..., expire: _Optional[int] = ..., locked_to: _Optional[int] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., icon: _Optional[int] = ...) -> None: ... + +class resend_chunks(_message.Message): + __slots__ = ["chunks"] + CHUNKS_FIELD_NUMBER: _ClassVar[int] + chunks: _containers.RepeatedScalarFieldContainer[int] + def __init__(self, chunks: _Optional[_Iterable[int]] = ...) -> None: ... + +class HardwareModel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + +class Constants(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + +class CriticalErrorCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + +class FirmwareEdition(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + +class ExcludedModules(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/module_config_pb2.py b/meshtastic/protobuf/module_config_pb2.py index 44d0bc5..3d16365 100644 --- a/meshtastic/protobuf/module_config_pb2.py +++ b/meshtastic/protobuf/module_config_pb2.py @@ -2,71 +2,80 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() +from meshtastic.protobuf import atak_pb2 as meshtastic_dot_protobuf_dot_atak__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtastic/protobuf/module_config.proto\x12\x13meshtastic.protobuf\"\xfb\'\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\x12\x1e\n\x16should_report_location\x18\x03 \x01(\x08\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\x1aZ\n\x12NeighborInfoConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0fupdate_interval\x18\x02 \x01(\r\x12\x1a\n\x12transmit_over_lora\x18\x03 \x01(\x08\x1a\xa0\x03\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\x63\n\x16\x64\x65tection_trigger_type\x18\x07 \x01(\x0e\x32\x43.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig.TriggerType\x12\x12\n\nuse_pullup\x18\x08 \x01(\x08\"\x88\x01\n\x0bTriggerType\x12\r\n\tLOGIC_LOW\x10\x00\x12\x0e\n\nLOGIC_HIGH\x10\x01\x12\x10\n\x0c\x46\x41LLING_EDGE\x10\x02\x12\x0f\n\x0bRISING_EDGE\x10\x03\x12\x1a\n\x16\x45ITHER_EDGE_ACTIVE_LOW\x10\x04\x12\x1b\n\x17\x45ITHER_EDGE_ACTIVE_HIGH\x10\x05\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\x9e\x05\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\"}\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\x12\x08\n\x04WS85\x10\x06\x12\r\n\tVE_DIRECT\x10\x07\x12\r\n\tMS_CONFIG\x10\x08\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\x97\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\x12\x11\n\tis_server\x18\x06 \x01(\x08\x1aY\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\x12\x17\n\x0f\x63lear_on_reboot\x18\x04 \x01(\x08\x1a\xeb\x03\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\x12\"\n\x1ahealth_measurement_enabled\x18\x0b \x01(\x08\x12\x1e\n\x16health_update_interval\x18\x0c \x01(\r\x12\x1d\n\x15health_screen_enabled\x18\r \x01(\x08\x12 \n\x18\x64\x65vice_telemetry_enabled\x18\x0e \x01(\x08\x1a\xf9\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\x13\n\x07\x65nabled\x18\t \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x12\x61llow_input_source\x18\n \x01(\tB\x02\x18\x01\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\x42h\n\x14org.meshtastic.protoB\x12ModuleConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtastic/protobuf/module_config.proto\x12\x13meshtastic.protobuf\x1a\x1emeshtastic/protobuf/atak.proto\"\x86/\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\x12N\n\rstatusmessage\x18\x0e \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.StatusMessageConfigH\x00\x12W\n\x12traffic_management\x18\x0f \x01(\x0b\x32\x39.meshtastic.protobuf.ModuleConfig.TrafficManagementConfigH\x00\x12:\n\x03tak\x18\x10 \x01(\x0b\x32+.meshtastic.protobuf.ModuleConfig.TAKConfigH\x00\x1a\xbd\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\x18\n\x0cjson_enabled\x18\x06 \x01(\x08\x42\x02\x18\x01\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\x12\x1e\n\x16should_report_location\x18\x03 \x01(\x08\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\x1aZ\n\x12NeighborInfoConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0fupdate_interval\x18\x02 \x01(\r\x12\x1a\n\x12transmit_over_lora\x18\x03 \x01(\x08\x1a\xa0\x03\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\x63\n\x16\x64\x65tection_trigger_type\x18\x07 \x01(\x0e\x32\x43.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig.TriggerType\x12\x12\n\nuse_pullup\x18\x08 \x01(\x08\"\x88\x01\n\x0bTriggerType\x12\r\n\tLOGIC_LOW\x10\x00\x12\x0e\n\nLOGIC_HIGH\x10\x01\x12\x10\n\x0c\x46\x41LLING_EDGE\x10\x02\x12\x0f\n\x0bRISING_EDGE\x10\x03\x12\x1a\n\x16\x45ITHER_EDGE_ACTIVE_LOW\x10\x04\x12\x1b\n\x17\x45ITHER_EDGE_ACTIVE_HIGH\x10\x05\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\xd3\x03\n\x17TrafficManagementConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16position_dedup_enabled\x18\x02 \x01(\x08\x12\x1f\n\x17position_precision_bits\x18\x03 \x01(\r\x12\"\n\x1aposition_min_interval_secs\x18\x04 \x01(\r\x12 \n\x18nodeinfo_direct_response\x18\x05 \x01(\x08\x12)\n!nodeinfo_direct_response_max_hops\x18\x06 \x01(\r\x12\x1a\n\x12rate_limit_enabled\x18\x07 \x01(\x08\x12\x1e\n\x16rate_limit_window_secs\x18\x08 \x01(\r\x12\x1e\n\x16rate_limit_max_packets\x18\t \x01(\r\x12\x1c\n\x14\x64rop_unknown_enabled\x18\n \x01(\x08\x12 \n\x18unknown_packet_threshold\x18\x0b \x01(\r\x12\x1d\n\x15\x65xhaust_hop_telemetry\x18\x0c \x01(\x08\x12\x1c\n\x14\x65xhaust_hop_position\x18\r \x01(\x08\x12\x1c\n\x14router_preserve_hops\x18\x0e \x01(\x08\x1a\xb5\x05\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\"\x93\x01\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\x12\x08\n\x04WS85\x10\x06\x12\r\n\tVE_DIRECT\x10\x07\x12\r\n\tMS_CONFIG\x10\x08\x12\x07\n\x03LOG\x10\t\x12\x0b\n\x07LOGTEXT\x10\n\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\x97\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\x12\x11\n\tis_server\x18\x06 \x01(\x08\x1aY\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\x12\x17\n\x0f\x63lear_on_reboot\x18\x04 \x01(\x08\x1a\x8f\x04\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\x12\"\n\x1ahealth_measurement_enabled\x18\x0b \x01(\x08\x12\x1e\n\x16health_update_interval\x18\x0c \x01(\r\x12\x1d\n\x15health_screen_enabled\x18\r \x01(\x08\x12 \n\x18\x64\x65vice_telemetry_enabled\x18\x0e \x01(\x08\x12\"\n\x1a\x61ir_quality_screen_enabled\x18\x0f \x01(\x08\x1a\xf9\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\x13\n\x07\x65nabled\x18\t \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x12\x61llow_input_source\x18\n \x01(\tB\x02\x18\x01\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(\r\x1a*\n\x13StatusMessageConfig\x12\x13\n\x0bnode_status\x18\x01 \x01(\t\x1a\x63\n\tTAKConfig\x12\'\n\x04team\x18\x01 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12-\n\x04role\x18\x02 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRoleB\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\x42h\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\022ModuleConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _MODULECONFIG_MQTTCONFIG.fields_by_name['json_enabled']._options = None + _MODULECONFIG_MQTTCONFIG.fields_by_name['json_enabled']._serialized_options = b'\030\001' _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['enabled']._options = None _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['enabled']._serialized_options = b'\030\001' _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['allow_input_source']._options = None _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['allow_input_source']._serialized_options = b'\030\001' - _globals['_REMOTEHARDWAREPINTYPE']._serialized_start=5293 - _globals['_REMOTEHARDWAREPINTYPE']._serialized_end=5366 - _globals['_MODULECONFIG']._serialized_start=65 - _globals['_MODULECONFIG']._serialized_end=5180 - _globals['_MODULECONFIG_MQTTCONFIG']._serialized_start=1080 - _globals['_MODULECONFIG_MQTTCONFIG']._serialized_end=1393 - _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_start=1395 - _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_end=1505 - _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_start=1508 - _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_end=1647 - _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_start=1649 - _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_end=1739 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_start=1742 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_end=2158 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_start=2022 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_end=2158 - _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_start=2161 - _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_end=2526 - _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_start=2359 - _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_end=2526 - _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_start=2528 - _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_end=2646 - _globals['_MODULECONFIG_SERIALCONFIG']._serialized_start=2649 - _globals['_MODULECONFIG_SERIALCONFIG']._serialized_end=3319 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_start=2926 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_end=3192 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_start=3194 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_end=3319 - _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_start=3322 - _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_end=3683 - _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_start=3686 - _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_end=3837 - _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_start=3839 - _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_end=3928 - _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_start=3931 - _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_end=4422 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_start=4425 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_end=5058 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_start=4959 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_end=5058 - _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_start=5060 - _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_end=5161 - _globals['_REMOTEHARDWAREPIN']._serialized_start=5182 - _globals['_REMOTEHARDWAREPIN']._serialized_end=5291 + _REMOTEHARDWAREPINTYPE._serialized_start=6232 + _REMOTEHARDWAREPINTYPE._serialized_end=6305 + _MODULECONFIG._serialized_start=97 + _MODULECONFIG._serialized_end=6119 + _MODULECONFIG_MQTTCONFIG._serialized_start=1341 + _MODULECONFIG_MQTTCONFIG._serialized_end=1658 + _MODULECONFIG_MAPREPORTSETTINGS._serialized_start=1660 + _MODULECONFIG_MAPREPORTSETTINGS._serialized_end=1770 + _MODULECONFIG_REMOTEHARDWARECONFIG._serialized_start=1773 + _MODULECONFIG_REMOTEHARDWARECONFIG._serialized_end=1912 + _MODULECONFIG_NEIGHBORINFOCONFIG._serialized_start=1914 + _MODULECONFIG_NEIGHBORINFOCONFIG._serialized_end=2004 + _MODULECONFIG_DETECTIONSENSORCONFIG._serialized_start=2007 + _MODULECONFIG_DETECTIONSENSORCONFIG._serialized_end=2423 + _MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE._serialized_start=2287 + _MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE._serialized_end=2423 + _MODULECONFIG_AUDIOCONFIG._serialized_start=2426 + _MODULECONFIG_AUDIOCONFIG._serialized_end=2791 + _MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD._serialized_start=2624 + _MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD._serialized_end=2791 + _MODULECONFIG_PAXCOUNTERCONFIG._serialized_start=2793 + _MODULECONFIG_PAXCOUNTERCONFIG._serialized_end=2911 + _MODULECONFIG_TRAFFICMANAGEMENTCONFIG._serialized_start=2914 + _MODULECONFIG_TRAFFICMANAGEMENTCONFIG._serialized_end=3381 + _MODULECONFIG_SERIALCONFIG._serialized_start=3384 + _MODULECONFIG_SERIALCONFIG._serialized_end=4077 + _MODULECONFIG_SERIALCONFIG_SERIAL_BAUD._serialized_start=3661 + _MODULECONFIG_SERIALCONFIG_SERIAL_BAUD._serialized_end=3927 + _MODULECONFIG_SERIALCONFIG_SERIAL_MODE._serialized_start=3930 + _MODULECONFIG_SERIALCONFIG_SERIAL_MODE._serialized_end=4077 + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG._serialized_start=4080 + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG._serialized_end=4441 + _MODULECONFIG_STOREFORWARDCONFIG._serialized_start=4444 + _MODULECONFIG_STOREFORWARDCONFIG._serialized_end=4595 + _MODULECONFIG_RANGETESTCONFIG._serialized_start=4597 + _MODULECONFIG_RANGETESTCONFIG._serialized_end=4686 + _MODULECONFIG_TELEMETRYCONFIG._serialized_start=4689 + _MODULECONFIG_TELEMETRYCONFIG._serialized_end=5216 + _MODULECONFIG_CANNEDMESSAGECONFIG._serialized_start=5219 + _MODULECONFIG_CANNEDMESSAGECONFIG._serialized_end=5852 + _MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR._serialized_start=5753 + _MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR._serialized_end=5852 + _MODULECONFIG_AMBIENTLIGHTINGCONFIG._serialized_start=5854 + _MODULECONFIG_AMBIENTLIGHTINGCONFIG._serialized_end=5955 + _MODULECONFIG_STATUSMESSAGECONFIG._serialized_start=5957 + _MODULECONFIG_STATUSMESSAGECONFIG._serialized_end=5999 + _MODULECONFIG_TAKCONFIG._serialized_start=6001 + _MODULECONFIG_TAKCONFIG._serialized_end=6100 + _REMOTEHARDWAREPIN._serialized_start=6121 + _REMOTEHARDWAREPIN._serialized_end=6230 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/module_config_pb2.pyi b/meshtastic/protobuf/module_config_pb2.pyi index 500528e..b6442fc 100644 --- a/meshtastic/protobuf/module_config_pb2.pyi +++ b/meshtastic/protobuf/module_config_pb2.pyi @@ -1,1313 +1,411 @@ -""" -@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 - SHOULD_REPORT_LOCATION_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). - """ - should_report_location: builtins.bool - """ - Whether we have opted-in to report our location to the map - """ - def __init__( - self, - *, - publish_interval_secs: builtins.int = ..., - position_precision: builtins.int = ..., - should_report_location: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["position_precision", b"position_precision", "publish_interval_secs", b"publish_interval_secs", "should_report_location", b"should_report_location"]) -> 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 - TRANSMIT_OVER_LORA_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 (minimum is 14400, i.e., 4 hours) - """ - transmit_over_lora: builtins.bool - """ - Whether in addition to sending it to MQTT and the PhoneAPI, our NeighborInfo should be transmitted over LoRa. - Note that this is not available on a channel with default key and name. - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - update_interval: builtins.int = ..., - transmit_over_lora: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["enabled", b"enabled", "transmit_over_lora", b"transmit_over_lora", "update_interval", b"update_interval"]) -> None: ... - - @typing.final - class DetectionSensorConfig(google.protobuf.message.Message): - """ - Detection Sensor Module Config - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _TriggerType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _TriggerTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ModuleConfig.DetectionSensorConfig._TriggerType.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - LOGIC_LOW: ModuleConfig.DetectionSensorConfig._TriggerType.ValueType # 0 - """Event is triggered if pin is low""" - LOGIC_HIGH: ModuleConfig.DetectionSensorConfig._TriggerType.ValueType # 1 - """Event is triggered if pin is high""" - FALLING_EDGE: ModuleConfig.DetectionSensorConfig._TriggerType.ValueType # 2 - """Event is triggered when pin goes high to low""" - RISING_EDGE: ModuleConfig.DetectionSensorConfig._TriggerType.ValueType # 3 - """Event is triggered when pin goes low to high""" - EITHER_EDGE_ACTIVE_LOW: ModuleConfig.DetectionSensorConfig._TriggerType.ValueType # 4 - """Event is triggered on every pin state change, low is considered to be - "active" - """ - EITHER_EDGE_ACTIVE_HIGH: ModuleConfig.DetectionSensorConfig._TriggerType.ValueType # 5 - """Event is triggered on every pin state change, high is considered to be - "active" - """ - - class TriggerType(_TriggerType, metaclass=_TriggerTypeEnumTypeWrapper): ... - LOGIC_LOW: ModuleConfig.DetectionSensorConfig.TriggerType.ValueType # 0 - """Event is triggered if pin is low""" - LOGIC_HIGH: ModuleConfig.DetectionSensorConfig.TriggerType.ValueType # 1 - """Event is triggered if pin is high""" - FALLING_EDGE: ModuleConfig.DetectionSensorConfig.TriggerType.ValueType # 2 - """Event is triggered when pin goes high to low""" - RISING_EDGE: ModuleConfig.DetectionSensorConfig.TriggerType.ValueType # 3 - """Event is triggered when pin goes low to high""" - EITHER_EDGE_ACTIVE_LOW: ModuleConfig.DetectionSensorConfig.TriggerType.ValueType # 4 - """Event is triggered on every pin state change, low is considered to be - "active" - """ - EITHER_EDGE_ACTIVE_HIGH: ModuleConfig.DetectionSensorConfig.TriggerType.ValueType # 5 - """Event is triggered on every pin state change, high is considered to be - "active" - """ - - 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_TRIGGER_TYPE_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 - trigger event 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 trigger events When set to 0, only - trigger events 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_trigger_type: global___ModuleConfig.DetectionSensorConfig.TriggerType.ValueType - """ - The type of trigger event to be used - """ - 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_trigger_type: global___ModuleConfig.DetectionSensorConfig.TriggerType.ValueType = ..., - use_pullup: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["detection_trigger_type", b"detection_trigger_type", "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""" - WS85: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 6 - """Ecowitt WS85 weather station""" - VE_DIRECT: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 7 - """VE.Direct is a serial protocol used by Victron Energy products - https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable - """ - MS_CONFIG: ModuleConfig.SerialConfig._Serial_Mode.ValueType # 8 - """Used to configure and view some parameters of MeshSolar. - https://heltec.org/project/meshsolar/ - """ - - 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""" - WS85: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 6 - """Ecowitt WS85 weather station""" - VE_DIRECT: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 7 - """VE.Direct is a serial protocol used by Victron Energy products - https://beta.ivc.no/wiki/index.php/Victron_VE_Direct_DIY_Cable - """ - MS_CONFIG: ModuleConfig.SerialConfig.Serial_Mode.ValueType # 8 - """Used to configure and view some parameters of MeshSolar. - https://heltec.org/project/meshsolar/ - """ - - 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 - IS_SERVER_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 - """ - is_server: builtins.bool - """ - Set to true to let this node act as a server that stores received messages and resends them upon request. - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - heartbeat: builtins.bool = ..., - records: builtins.int = ..., - history_return_max: builtins.int = ..., - history_return_window: builtins.int = ..., - is_server: builtins.bool = ..., - ) -> 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", "is_server", b"is_server", "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 - CLEAR_ON_REBOOT_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 - """ - clear_on_reboot: builtins.bool - """ - Bool indicating that the node should cleanup / destroy it's RangeTest.csv file. - ESP32 Only - """ - def __init__( - self, - *, - enabled: builtins.bool = ..., - sender: builtins.int = ..., - save: builtins.bool = ..., - clear_on_reboot: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["clear_on_reboot", b"clear_on_reboot", "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 - HEALTH_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int - HEALTH_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int - HEALTH_SCREEN_ENABLED_FIELD_NUMBER: builtins.int - DEVICE_TELEMETRY_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 - """ - Enable/disable Power metrics - """ - power_update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - power metrics to the mesh - """ - power_screen_enabled: builtins.bool - """ - Enable/Disable the power measurement module on-device display - """ - health_measurement_enabled: builtins.bool - """ - Preferences for the (Health) Telemetry Module - Enable/Disable the telemetry measurement module measurement collection - """ - health_update_interval: builtins.int - """ - Interval in seconds of how often we should try to send our - health metrics to the mesh - """ - health_screen_enabled: builtins.bool - """ - Enable/Disable the health telemetry module on-device display - """ - device_telemetry_enabled: builtins.bool - """ - Enable/Disable the device telemetry module to send metrics to the mesh - Note: We will still send telemtry to the connected phone / client every minute over the API - """ - 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 = ..., - health_measurement_enabled: builtins.bool = ..., - health_update_interval: builtins.int = ..., - health_screen_enabled: builtins.bool = ..., - device_telemetry_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_telemetry_enabled", b"device_telemetry_enabled", "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", "health_measurement_enabled", b"health_measurement_enabled", "health_screen_enabled", b"health_screen_enabled", "health_update_interval", b"health_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): - """ - Canned Messages Module Config - """ - - 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", "scanAndSelect", "cardkb", "serialkb", 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 +from meshtastic.protobuf import atak_pb2 as _atak_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor +DIGITAL_READ: RemoteHardwarePinType +DIGITAL_WRITE: RemoteHardwarePinType +UNKNOWN: RemoteHardwarePinType + +class ModuleConfig(_message.Message): + __slots__ = ["ambient_lighting", "audio", "canned_message", "detection_sensor", "external_notification", "mqtt", "neighbor_info", "paxcounter", "range_test", "remote_hardware", "serial", "statusmessage", "store_forward", "tak", "telemetry", "traffic_management"] + class AmbientLightingConfig(_message.Message): + __slots__ = ["blue", "current", "green", "led_state", "red"] + BLUE_FIELD_NUMBER: _ClassVar[int] + CURRENT_FIELD_NUMBER: _ClassVar[int] + GREEN_FIELD_NUMBER: _ClassVar[int] + LED_STATE_FIELD_NUMBER: _ClassVar[int] + RED_FIELD_NUMBER: _ClassVar[int] + blue: int + current: int + green: int + led_state: bool + red: int + def __init__(self, led_state: bool = ..., current: _Optional[int] = ..., red: _Optional[int] = ..., green: _Optional[int] = ..., blue: _Optional[int] = ...) -> None: ... + class AudioConfig(_message.Message): + __slots__ = ["bitrate", "codec2_enabled", "i2s_din", "i2s_sck", "i2s_sd", "i2s_ws", "ptt_pin"] + class Audio_Baud(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + BITRATE_FIELD_NUMBER: _ClassVar[int] + CODEC2_1200: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_1300: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_1400: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_1600: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_2400: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_3200: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_700: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_700B: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_DEFAULT: ModuleConfig.AudioConfig.Audio_Baud + CODEC2_ENABLED_FIELD_NUMBER: _ClassVar[int] + I2S_DIN_FIELD_NUMBER: _ClassVar[int] + I2S_SCK_FIELD_NUMBER: _ClassVar[int] + I2S_SD_FIELD_NUMBER: _ClassVar[int] + I2S_WS_FIELD_NUMBER: _ClassVar[int] + PTT_PIN_FIELD_NUMBER: _ClassVar[int] + bitrate: ModuleConfig.AudioConfig.Audio_Baud + codec2_enabled: bool + i2s_din: int + i2s_sck: int + i2s_sd: int + i2s_ws: int + ptt_pin: int + def __init__(self, codec2_enabled: bool = ..., ptt_pin: _Optional[int] = ..., bitrate: _Optional[_Union[ModuleConfig.AudioConfig.Audio_Baud, str]] = ..., i2s_ws: _Optional[int] = ..., i2s_sd: _Optional[int] = ..., i2s_din: _Optional[int] = ..., i2s_sck: _Optional[int] = ...) -> None: ... + class CannedMessageConfig(_message.Message): + __slots__ = ["allow_input_source", "enabled", "inputbroker_event_ccw", "inputbroker_event_cw", "inputbroker_event_press", "inputbroker_pin_a", "inputbroker_pin_b", "inputbroker_pin_press", "rotary1_enabled", "send_bell", "updown1_enabled"] + class InputEventChar(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ALLOW_INPUT_SOURCE_FIELD_NUMBER: _ClassVar[int] + BACK: ModuleConfig.CannedMessageConfig.InputEventChar + CANCEL: ModuleConfig.CannedMessageConfig.InputEventChar + DOWN: ModuleConfig.CannedMessageConfig.InputEventChar + ENABLED_FIELD_NUMBER: _ClassVar[int] + INPUTBROKER_EVENT_CCW_FIELD_NUMBER: _ClassVar[int] + INPUTBROKER_EVENT_CW_FIELD_NUMBER: _ClassVar[int] + INPUTBROKER_EVENT_PRESS_FIELD_NUMBER: _ClassVar[int] + INPUTBROKER_PIN_A_FIELD_NUMBER: _ClassVar[int] + INPUTBROKER_PIN_B_FIELD_NUMBER: _ClassVar[int] + INPUTBROKER_PIN_PRESS_FIELD_NUMBER: _ClassVar[int] + LEFT: ModuleConfig.CannedMessageConfig.InputEventChar + NONE: ModuleConfig.CannedMessageConfig.InputEventChar + RIGHT: ModuleConfig.CannedMessageConfig.InputEventChar + ROTARY1_ENABLED_FIELD_NUMBER: _ClassVar[int] + SELECT: ModuleConfig.CannedMessageConfig.InputEventChar + SEND_BELL_FIELD_NUMBER: _ClassVar[int] + UP: ModuleConfig.CannedMessageConfig.InputEventChar + UPDOWN1_ENABLED_FIELD_NUMBER: _ClassVar[int] + allow_input_source: str + enabled: bool + inputbroker_event_ccw: ModuleConfig.CannedMessageConfig.InputEventChar + inputbroker_event_cw: ModuleConfig.CannedMessageConfig.InputEventChar + inputbroker_event_press: ModuleConfig.CannedMessageConfig.InputEventChar + inputbroker_pin_a: int + inputbroker_pin_b: int + inputbroker_pin_press: int + rotary1_enabled: bool + send_bell: bool + updown1_enabled: bool + def __init__(self, rotary1_enabled: bool = ..., inputbroker_pin_a: _Optional[int] = ..., inputbroker_pin_b: _Optional[int] = ..., inputbroker_pin_press: _Optional[int] = ..., inputbroker_event_cw: _Optional[_Union[ModuleConfig.CannedMessageConfig.InputEventChar, str]] = ..., inputbroker_event_ccw: _Optional[_Union[ModuleConfig.CannedMessageConfig.InputEventChar, str]] = ..., inputbroker_event_press: _Optional[_Union[ModuleConfig.CannedMessageConfig.InputEventChar, str]] = ..., updown1_enabled: bool = ..., enabled: bool = ..., allow_input_source: _Optional[str] = ..., send_bell: bool = ...) -> None: ... + class DetectionSensorConfig(_message.Message): + __slots__ = ["detection_trigger_type", "enabled", "minimum_broadcast_secs", "monitor_pin", "name", "send_bell", "state_broadcast_secs", "use_pullup"] + class TriggerType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + DETECTION_TRIGGER_TYPE_FIELD_NUMBER: _ClassVar[int] + EITHER_EDGE_ACTIVE_HIGH: ModuleConfig.DetectionSensorConfig.TriggerType + EITHER_EDGE_ACTIVE_LOW: ModuleConfig.DetectionSensorConfig.TriggerType + ENABLED_FIELD_NUMBER: _ClassVar[int] + FALLING_EDGE: ModuleConfig.DetectionSensorConfig.TriggerType + LOGIC_HIGH: ModuleConfig.DetectionSensorConfig.TriggerType + LOGIC_LOW: ModuleConfig.DetectionSensorConfig.TriggerType + MINIMUM_BROADCAST_SECS_FIELD_NUMBER: _ClassVar[int] + MONITOR_PIN_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + RISING_EDGE: ModuleConfig.DetectionSensorConfig.TriggerType + SEND_BELL_FIELD_NUMBER: _ClassVar[int] + STATE_BROADCAST_SECS_FIELD_NUMBER: _ClassVar[int] + USE_PULLUP_FIELD_NUMBER: _ClassVar[int] + detection_trigger_type: ModuleConfig.DetectionSensorConfig.TriggerType + enabled: bool + minimum_broadcast_secs: int + monitor_pin: int + name: str + send_bell: bool + state_broadcast_secs: int + use_pullup: bool + def __init__(self, enabled: bool = ..., minimum_broadcast_secs: _Optional[int] = ..., state_broadcast_secs: _Optional[int] = ..., send_bell: bool = ..., name: _Optional[str] = ..., monitor_pin: _Optional[int] = ..., detection_trigger_type: _Optional[_Union[ModuleConfig.DetectionSensorConfig.TriggerType, str]] = ..., use_pullup: bool = ...) -> None: ... + class ExternalNotificationConfig(_message.Message): + __slots__ = ["active", "alert_bell", "alert_bell_buzzer", "alert_bell_vibra", "alert_message", "alert_message_buzzer", "alert_message_vibra", "enabled", "nag_timeout", "output", "output_buzzer", "output_ms", "output_vibra", "use_i2s_as_buzzer", "use_pwm"] + ACTIVE_FIELD_NUMBER: _ClassVar[int] + ALERT_BELL_BUZZER_FIELD_NUMBER: _ClassVar[int] + ALERT_BELL_FIELD_NUMBER: _ClassVar[int] + ALERT_BELL_VIBRA_FIELD_NUMBER: _ClassVar[int] + ALERT_MESSAGE_BUZZER_FIELD_NUMBER: _ClassVar[int] + ALERT_MESSAGE_FIELD_NUMBER: _ClassVar[int] + ALERT_MESSAGE_VIBRA_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + NAG_TIMEOUT_FIELD_NUMBER: _ClassVar[int] + OUTPUT_BUZZER_FIELD_NUMBER: _ClassVar[int] + OUTPUT_FIELD_NUMBER: _ClassVar[int] + OUTPUT_MS_FIELD_NUMBER: _ClassVar[int] + OUTPUT_VIBRA_FIELD_NUMBER: _ClassVar[int] + USE_I2S_AS_BUZZER_FIELD_NUMBER: _ClassVar[int] + USE_PWM_FIELD_NUMBER: _ClassVar[int] + active: bool + alert_bell: bool + alert_bell_buzzer: bool + alert_bell_vibra: bool + alert_message: bool + alert_message_buzzer: bool + alert_message_vibra: bool + enabled: bool + nag_timeout: int + output: int + output_buzzer: int + output_ms: int + output_vibra: int + use_i2s_as_buzzer: bool + use_pwm: bool + def __init__(self, enabled: bool = ..., output_ms: _Optional[int] = ..., output: _Optional[int] = ..., output_vibra: _Optional[int] = ..., output_buzzer: _Optional[int] = ..., active: bool = ..., alert_message: bool = ..., alert_message_vibra: bool = ..., alert_message_buzzer: bool = ..., alert_bell: bool = ..., alert_bell_vibra: bool = ..., alert_bell_buzzer: bool = ..., use_pwm: bool = ..., nag_timeout: _Optional[int] = ..., use_i2s_as_buzzer: bool = ...) -> None: ... + class MQTTConfig(_message.Message): + __slots__ = ["address", "enabled", "encryption_enabled", "json_enabled", "map_report_settings", "map_reporting_enabled", "password", "proxy_to_client_enabled", "root", "tls_enabled", "username"] + ADDRESS_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + ENCRYPTION_ENABLED_FIELD_NUMBER: _ClassVar[int] + JSON_ENABLED_FIELD_NUMBER: _ClassVar[int] + MAP_REPORTING_ENABLED_FIELD_NUMBER: _ClassVar[int] + MAP_REPORT_SETTINGS_FIELD_NUMBER: _ClassVar[int] + PASSWORD_FIELD_NUMBER: _ClassVar[int] + PROXY_TO_CLIENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + ROOT_FIELD_NUMBER: _ClassVar[int] + TLS_ENABLED_FIELD_NUMBER: _ClassVar[int] + USERNAME_FIELD_NUMBER: _ClassVar[int] + address: str + enabled: bool + encryption_enabled: bool + json_enabled: bool + map_report_settings: ModuleConfig.MapReportSettings + map_reporting_enabled: bool + password: str + proxy_to_client_enabled: bool + root: str + tls_enabled: bool + username: str + def __init__(self, enabled: bool = ..., address: _Optional[str] = ..., username: _Optional[str] = ..., password: _Optional[str] = ..., encryption_enabled: bool = ..., json_enabled: bool = ..., tls_enabled: bool = ..., root: _Optional[str] = ..., proxy_to_client_enabled: bool = ..., map_reporting_enabled: bool = ..., map_report_settings: _Optional[_Union[ModuleConfig.MapReportSettings, _Mapping]] = ...) -> None: ... + class MapReportSettings(_message.Message): + __slots__ = ["position_precision", "publish_interval_secs", "should_report_location"] + POSITION_PRECISION_FIELD_NUMBER: _ClassVar[int] + PUBLISH_INTERVAL_SECS_FIELD_NUMBER: _ClassVar[int] + SHOULD_REPORT_LOCATION_FIELD_NUMBER: _ClassVar[int] + position_precision: int + publish_interval_secs: int + should_report_location: bool + def __init__(self, publish_interval_secs: _Optional[int] = ..., position_precision: _Optional[int] = ..., should_report_location: bool = ...) -> None: ... + class NeighborInfoConfig(_message.Message): + __slots__ = ["enabled", "transmit_over_lora", "update_interval"] + ENABLED_FIELD_NUMBER: _ClassVar[int] + TRANSMIT_OVER_LORA_FIELD_NUMBER: _ClassVar[int] + UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + enabled: bool + transmit_over_lora: bool + update_interval: int + def __init__(self, enabled: bool = ..., update_interval: _Optional[int] = ..., transmit_over_lora: bool = ...) -> None: ... + class PaxcounterConfig(_message.Message): + __slots__ = ["ble_threshold", "enabled", "paxcounter_update_interval", "wifi_threshold"] + BLE_THRESHOLD_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + PAXCOUNTER_UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + WIFI_THRESHOLD_FIELD_NUMBER: _ClassVar[int] + ble_threshold: int + enabled: bool + paxcounter_update_interval: int + wifi_threshold: int + def __init__(self, enabled: bool = ..., paxcounter_update_interval: _Optional[int] = ..., wifi_threshold: _Optional[int] = ..., ble_threshold: _Optional[int] = ...) -> None: ... + class RangeTestConfig(_message.Message): + __slots__ = ["clear_on_reboot", "enabled", "save", "sender"] + CLEAR_ON_REBOOT_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + SAVE_FIELD_NUMBER: _ClassVar[int] + SENDER_FIELD_NUMBER: _ClassVar[int] + clear_on_reboot: bool + enabled: bool + save: bool + sender: int + def __init__(self, enabled: bool = ..., sender: _Optional[int] = ..., save: bool = ..., clear_on_reboot: bool = ...) -> None: ... + class RemoteHardwareConfig(_message.Message): + __slots__ = ["allow_undefined_pin_access", "available_pins", "enabled"] + ALLOW_UNDEFINED_PIN_ACCESS_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_PINS_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + allow_undefined_pin_access: bool + available_pins: _containers.RepeatedCompositeFieldContainer[RemoteHardwarePin] + enabled: bool + def __init__(self, enabled: bool = ..., allow_undefined_pin_access: bool = ..., available_pins: _Optional[_Iterable[_Union[RemoteHardwarePin, _Mapping]]] = ...) -> None: ... + class SerialConfig(_message.Message): + __slots__ = ["baud", "echo", "enabled", "mode", "override_console_serial_port", "rxd", "timeout", "txd"] + class Serial_Baud(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Serial_Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + BAUD_110: ModuleConfig.SerialConfig.Serial_Baud + BAUD_115200: ModuleConfig.SerialConfig.Serial_Baud + BAUD_1200: ModuleConfig.SerialConfig.Serial_Baud + BAUD_19200: ModuleConfig.SerialConfig.Serial_Baud + BAUD_230400: ModuleConfig.SerialConfig.Serial_Baud + BAUD_2400: ModuleConfig.SerialConfig.Serial_Baud + BAUD_300: ModuleConfig.SerialConfig.Serial_Baud + BAUD_38400: ModuleConfig.SerialConfig.Serial_Baud + BAUD_460800: ModuleConfig.SerialConfig.Serial_Baud + BAUD_4800: ModuleConfig.SerialConfig.Serial_Baud + BAUD_57600: ModuleConfig.SerialConfig.Serial_Baud + BAUD_576000: ModuleConfig.SerialConfig.Serial_Baud + BAUD_600: ModuleConfig.SerialConfig.Serial_Baud + BAUD_921600: ModuleConfig.SerialConfig.Serial_Baud + BAUD_9600: ModuleConfig.SerialConfig.Serial_Baud + BAUD_DEFAULT: ModuleConfig.SerialConfig.Serial_Baud + BAUD_FIELD_NUMBER: _ClassVar[int] + CALTOPO: ModuleConfig.SerialConfig.Serial_Mode + DEFAULT: ModuleConfig.SerialConfig.Serial_Mode + ECHO_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + LOG: ModuleConfig.SerialConfig.Serial_Mode + LOGTEXT: ModuleConfig.SerialConfig.Serial_Mode + MODE_FIELD_NUMBER: _ClassVar[int] + MS_CONFIG: ModuleConfig.SerialConfig.Serial_Mode + NMEA: ModuleConfig.SerialConfig.Serial_Mode + OVERRIDE_CONSOLE_SERIAL_PORT_FIELD_NUMBER: _ClassVar[int] + PROTO: ModuleConfig.SerialConfig.Serial_Mode + RXD_FIELD_NUMBER: _ClassVar[int] + SIMPLE: ModuleConfig.SerialConfig.Serial_Mode + TEXTMSG: ModuleConfig.SerialConfig.Serial_Mode + TIMEOUT_FIELD_NUMBER: _ClassVar[int] + TXD_FIELD_NUMBER: _ClassVar[int] + VE_DIRECT: ModuleConfig.SerialConfig.Serial_Mode + WS85: ModuleConfig.SerialConfig.Serial_Mode + baud: ModuleConfig.SerialConfig.Serial_Baud + echo: bool + enabled: bool + mode: ModuleConfig.SerialConfig.Serial_Mode + override_console_serial_port: bool + rxd: int + timeout: int + txd: int + def __init__(self, enabled: bool = ..., echo: bool = ..., rxd: _Optional[int] = ..., txd: _Optional[int] = ..., baud: _Optional[_Union[ModuleConfig.SerialConfig.Serial_Baud, str]] = ..., timeout: _Optional[int] = ..., mode: _Optional[_Union[ModuleConfig.SerialConfig.Serial_Mode, str]] = ..., override_console_serial_port: bool = ...) -> None: ... + class StatusMessageConfig(_message.Message): + __slots__ = ["node_status"] + NODE_STATUS_FIELD_NUMBER: _ClassVar[int] + node_status: str + def __init__(self, node_status: _Optional[str] = ...) -> None: ... + class StoreForwardConfig(_message.Message): + __slots__ = ["enabled", "heartbeat", "history_return_max", "history_return_window", "is_server", "records"] + ENABLED_FIELD_NUMBER: _ClassVar[int] + HEARTBEAT_FIELD_NUMBER: _ClassVar[int] + HISTORY_RETURN_MAX_FIELD_NUMBER: _ClassVar[int] + HISTORY_RETURN_WINDOW_FIELD_NUMBER: _ClassVar[int] + IS_SERVER_FIELD_NUMBER: _ClassVar[int] + RECORDS_FIELD_NUMBER: _ClassVar[int] + enabled: bool + heartbeat: bool + history_return_max: int + history_return_window: int + is_server: bool + records: int + def __init__(self, enabled: bool = ..., heartbeat: bool = ..., records: _Optional[int] = ..., history_return_max: _Optional[int] = ..., history_return_window: _Optional[int] = ..., is_server: bool = ...) -> None: ... + class TAKConfig(_message.Message): + __slots__ = ["role", "team"] + ROLE_FIELD_NUMBER: _ClassVar[int] + TEAM_FIELD_NUMBER: _ClassVar[int] + role: _atak_pb2.MemberRole + team: _atak_pb2.Team + def __init__(self, team: _Optional[_Union[_atak_pb2.Team, str]] = ..., role: _Optional[_Union[_atak_pb2.MemberRole, str]] = ...) -> None: ... + class TelemetryConfig(_message.Message): + __slots__ = ["air_quality_enabled", "air_quality_interval", "air_quality_screen_enabled", "device_telemetry_enabled", "device_update_interval", "environment_display_fahrenheit", "environment_measurement_enabled", "environment_screen_enabled", "environment_update_interval", "health_measurement_enabled", "health_screen_enabled", "health_update_interval", "power_measurement_enabled", "power_screen_enabled", "power_update_interval"] + AIR_QUALITY_ENABLED_FIELD_NUMBER: _ClassVar[int] + AIR_QUALITY_INTERVAL_FIELD_NUMBER: _ClassVar[int] + AIR_QUALITY_SCREEN_ENABLED_FIELD_NUMBER: _ClassVar[int] + DEVICE_TELEMETRY_ENABLED_FIELD_NUMBER: _ClassVar[int] + DEVICE_UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_DISPLAY_FAHRENHEIT_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_MEASUREMENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_SCREEN_ENABLED_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + HEALTH_MEASUREMENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + HEALTH_SCREEN_ENABLED_FIELD_NUMBER: _ClassVar[int] + HEALTH_UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + POWER_MEASUREMENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + POWER_SCREEN_ENABLED_FIELD_NUMBER: _ClassVar[int] + POWER_UPDATE_INTERVAL_FIELD_NUMBER: _ClassVar[int] + air_quality_enabled: bool + air_quality_interval: int + air_quality_screen_enabled: bool + device_telemetry_enabled: bool + device_update_interval: int + environment_display_fahrenheit: bool + environment_measurement_enabled: bool + environment_screen_enabled: bool + environment_update_interval: int + health_measurement_enabled: bool + health_screen_enabled: bool + health_update_interval: int + power_measurement_enabled: bool + power_screen_enabled: bool + power_update_interval: int + def __init__(self, device_update_interval: _Optional[int] = ..., environment_update_interval: _Optional[int] = ..., environment_measurement_enabled: bool = ..., environment_screen_enabled: bool = ..., environment_display_fahrenheit: bool = ..., air_quality_enabled: bool = ..., air_quality_interval: _Optional[int] = ..., power_measurement_enabled: bool = ..., power_update_interval: _Optional[int] = ..., power_screen_enabled: bool = ..., health_measurement_enabled: bool = ..., health_update_interval: _Optional[int] = ..., health_screen_enabled: bool = ..., device_telemetry_enabled: bool = ..., air_quality_screen_enabled: bool = ...) -> None: ... + class TrafficManagementConfig(_message.Message): + __slots__ = ["drop_unknown_enabled", "enabled", "exhaust_hop_position", "exhaust_hop_telemetry", "nodeinfo_direct_response", "nodeinfo_direct_response_max_hops", "position_dedup_enabled", "position_min_interval_secs", "position_precision_bits", "rate_limit_enabled", "rate_limit_max_packets", "rate_limit_window_secs", "router_preserve_hops", "unknown_packet_threshold"] + DROP_UNKNOWN_ENABLED_FIELD_NUMBER: _ClassVar[int] + ENABLED_FIELD_NUMBER: _ClassVar[int] + EXHAUST_HOP_POSITION_FIELD_NUMBER: _ClassVar[int] + EXHAUST_HOP_TELEMETRY_FIELD_NUMBER: _ClassVar[int] + NODEINFO_DIRECT_RESPONSE_FIELD_NUMBER: _ClassVar[int] + NODEINFO_DIRECT_RESPONSE_MAX_HOPS_FIELD_NUMBER: _ClassVar[int] + POSITION_DEDUP_ENABLED_FIELD_NUMBER: _ClassVar[int] + POSITION_MIN_INTERVAL_SECS_FIELD_NUMBER: _ClassVar[int] + POSITION_PRECISION_BITS_FIELD_NUMBER: _ClassVar[int] + RATE_LIMIT_ENABLED_FIELD_NUMBER: _ClassVar[int] + RATE_LIMIT_MAX_PACKETS_FIELD_NUMBER: _ClassVar[int] + RATE_LIMIT_WINDOW_SECS_FIELD_NUMBER: _ClassVar[int] + ROUTER_PRESERVE_HOPS_FIELD_NUMBER: _ClassVar[int] + UNKNOWN_PACKET_THRESHOLD_FIELD_NUMBER: _ClassVar[int] + drop_unknown_enabled: bool + enabled: bool + exhaust_hop_position: bool + exhaust_hop_telemetry: bool + nodeinfo_direct_response: bool + nodeinfo_direct_response_max_hops: int + position_dedup_enabled: bool + position_min_interval_secs: int + position_precision_bits: int + rate_limit_enabled: bool + rate_limit_max_packets: int + rate_limit_window_secs: int + router_preserve_hops: bool + unknown_packet_threshold: int + def __init__(self, enabled: bool = ..., position_dedup_enabled: bool = ..., position_precision_bits: _Optional[int] = ..., position_min_interval_secs: _Optional[int] = ..., nodeinfo_direct_response: bool = ..., nodeinfo_direct_response_max_hops: _Optional[int] = ..., rate_limit_enabled: bool = ..., rate_limit_window_secs: _Optional[int] = ..., rate_limit_max_packets: _Optional[int] = ..., drop_unknown_enabled: bool = ..., unknown_packet_threshold: _Optional[int] = ..., exhaust_hop_telemetry: bool = ..., exhaust_hop_position: bool = ..., router_preserve_hops: bool = ...) -> None: ... + AMBIENT_LIGHTING_FIELD_NUMBER: _ClassVar[int] + AUDIO_FIELD_NUMBER: _ClassVar[int] + CANNED_MESSAGE_FIELD_NUMBER: _ClassVar[int] + DETECTION_SENSOR_FIELD_NUMBER: _ClassVar[int] + EXTERNAL_NOTIFICATION_FIELD_NUMBER: _ClassVar[int] + MQTT_FIELD_NUMBER: _ClassVar[int] + NEIGHBOR_INFO_FIELD_NUMBER: _ClassVar[int] + PAXCOUNTER_FIELD_NUMBER: _ClassVar[int] + RANGE_TEST_FIELD_NUMBER: _ClassVar[int] + REMOTE_HARDWARE_FIELD_NUMBER: _ClassVar[int] + SERIAL_FIELD_NUMBER: _ClassVar[int] + STATUSMESSAGE_FIELD_NUMBER: _ClassVar[int] + STORE_FORWARD_FIELD_NUMBER: _ClassVar[int] + TAK_FIELD_NUMBER: _ClassVar[int] + TELEMETRY_FIELD_NUMBER: _ClassVar[int] + TRAFFIC_MANAGEMENT_FIELD_NUMBER: _ClassVar[int] + ambient_lighting: ModuleConfig.AmbientLightingConfig + audio: ModuleConfig.AudioConfig + canned_message: ModuleConfig.CannedMessageConfig + detection_sensor: ModuleConfig.DetectionSensorConfig + external_notification: ModuleConfig.ExternalNotificationConfig + mqtt: ModuleConfig.MQTTConfig + neighbor_info: ModuleConfig.NeighborInfoConfig + paxcounter: ModuleConfig.PaxcounterConfig + range_test: ModuleConfig.RangeTestConfig + remote_hardware: ModuleConfig.RemoteHardwareConfig + serial: ModuleConfig.SerialConfig + statusmessage: ModuleConfig.StatusMessageConfig + store_forward: ModuleConfig.StoreForwardConfig + tak: ModuleConfig.TAKConfig + telemetry: ModuleConfig.TelemetryConfig + traffic_management: ModuleConfig.TrafficManagementConfig + def __init__(self, mqtt: _Optional[_Union[ModuleConfig.MQTTConfig, _Mapping]] = ..., serial: _Optional[_Union[ModuleConfig.SerialConfig, _Mapping]] = ..., external_notification: _Optional[_Union[ModuleConfig.ExternalNotificationConfig, _Mapping]] = ..., store_forward: _Optional[_Union[ModuleConfig.StoreForwardConfig, _Mapping]] = ..., range_test: _Optional[_Union[ModuleConfig.RangeTestConfig, _Mapping]] = ..., telemetry: _Optional[_Union[ModuleConfig.TelemetryConfig, _Mapping]] = ..., canned_message: _Optional[_Union[ModuleConfig.CannedMessageConfig, _Mapping]] = ..., audio: _Optional[_Union[ModuleConfig.AudioConfig, _Mapping]] = ..., remote_hardware: _Optional[_Union[ModuleConfig.RemoteHardwareConfig, _Mapping]] = ..., neighbor_info: _Optional[_Union[ModuleConfig.NeighborInfoConfig, _Mapping]] = ..., ambient_lighting: _Optional[_Union[ModuleConfig.AmbientLightingConfig, _Mapping]] = ..., detection_sensor: _Optional[_Union[ModuleConfig.DetectionSensorConfig, _Mapping]] = ..., paxcounter: _Optional[_Union[ModuleConfig.PaxcounterConfig, _Mapping]] = ..., statusmessage: _Optional[_Union[ModuleConfig.StatusMessageConfig, _Mapping]] = ..., traffic_management: _Optional[_Union[ModuleConfig.TrafficManagementConfig, _Mapping]] = ..., tak: _Optional[_Union[ModuleConfig.TAKConfig, _Mapping]] = ...) -> None: ... + +class RemoteHardwarePin(_message.Message): + __slots__ = ["gpio_pin", "name", "type"] + GPIO_PIN_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + gpio_pin: int + name: str + type: RemoteHardwarePinType + def __init__(self, gpio_pin: _Optional[int] = ..., name: _Optional[str] = ..., type: _Optional[_Union[RemoteHardwarePinType, str]] = ...) -> None: ... + +class RemoteHardwarePinType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/mqtt_pb2.py b/meshtastic/protobuf/mqtt_pb2.py index 7b4e4c0..58d15e5 100644 --- a/meshtastic/protobuf/mqtt_pb2.py +++ b/meshtastic/protobuf/mqtt_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -17,14 +17,14 @@ from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb 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\"\x83\x04\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(\r\x12!\n\x19has_opted_report_location\x18\x0e \x01(\x08\x42`\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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=745 + _SERVICEENVELOPE._serialized_start=121 + _SERVICEENVELOPE._serialized_end=227 + _MAPREPORT._serialized_start=230 + _MAPREPORT._serialized_end=745 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mqtt_pb2.pyi b/meshtastic/protobuf/mqtt_pb2.pyi index 597fa07..21c7053 100644 --- a/meshtastic/protobuf/mqtt_pb2.pyi +++ b/meshtastic/protobuf/mqtt_pb2.pyi @@ -1,155 +1,49 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from meshtastic.protobuf import config_pb2 as _config_pb2 +from meshtastic.protobuf import mesh_pb2 as _mesh_pb2 +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import meshtastic.protobuf.config_pb2 -import meshtastic.protobuf.mesh_pb2 -import typing +DESCRIPTOR: _descriptor.FileDescriptor -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class MapReport(_message.Message): + __slots__ = ["altitude", "firmware_version", "has_default_channel", "has_opted_report_location", "hw_model", "latitude_i", "long_name", "longitude_i", "modem_preset", "num_online_local_nodes", "position_precision", "region", "role", "short_name"] + ALTITUDE_FIELD_NUMBER: _ClassVar[int] + FIRMWARE_VERSION_FIELD_NUMBER: _ClassVar[int] + HAS_DEFAULT_CHANNEL_FIELD_NUMBER: _ClassVar[int] + HAS_OPTED_REPORT_LOCATION_FIELD_NUMBER: _ClassVar[int] + HW_MODEL_FIELD_NUMBER: _ClassVar[int] + LATITUDE_I_FIELD_NUMBER: _ClassVar[int] + LONGITUDE_I_FIELD_NUMBER: _ClassVar[int] + LONG_NAME_FIELD_NUMBER: _ClassVar[int] + MODEM_PRESET_FIELD_NUMBER: _ClassVar[int] + NUM_ONLINE_LOCAL_NODES_FIELD_NUMBER: _ClassVar[int] + POSITION_PRECISION_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + ROLE_FIELD_NUMBER: _ClassVar[int] + SHORT_NAME_FIELD_NUMBER: _ClassVar[int] + altitude: int + firmware_version: str + has_default_channel: bool + has_opted_report_location: bool + hw_model: _mesh_pb2.HardwareModel + latitude_i: int + long_name: str + longitude_i: int + modem_preset: _config_pb2.Config.LoRaConfig.ModemPreset + num_online_local_nodes: int + position_precision: int + region: _config_pb2.Config.LoRaConfig.RegionCode + role: _config_pb2.Config.DeviceConfig.Role + short_name: str + def __init__(self, long_name: _Optional[str] = ..., short_name: _Optional[str] = ..., role: _Optional[_Union[_config_pb2.Config.DeviceConfig.Role, str]] = ..., hw_model: _Optional[_Union[_mesh_pb2.HardwareModel, str]] = ..., firmware_version: _Optional[str] = ..., region: _Optional[_Union[_config_pb2.Config.LoRaConfig.RegionCode, str]] = ..., modem_preset: _Optional[_Union[_config_pb2.Config.LoRaConfig.ModemPreset, str]] = ..., has_default_channel: bool = ..., latitude_i: _Optional[int] = ..., longitude_i: _Optional[int] = ..., altitude: _Optional[int] = ..., position_precision: _Optional[int] = ..., num_online_local_nodes: _Optional[int] = ..., has_opted_report_location: bool = ...) -> None: ... -@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 - HAS_OPTED_REPORT_LOCATION_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) - """ - has_opted_report_location: builtins.bool - """ - User has opted in to share their location (map report) with the mqtt server - Controlled by map_report.should_report_location - """ - 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 = ..., - has_opted_report_location: builtins.bool = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["altitude", b"altitude", "firmware_version", b"firmware_version", "has_default_channel", b"has_default_channel", "has_opted_report_location", b"has_opted_report_location", "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 +class ServiceEnvelope(_message.Message): + __slots__ = ["channel_id", "gateway_id", "packet"] + CHANNEL_ID_FIELD_NUMBER: _ClassVar[int] + GATEWAY_ID_FIELD_NUMBER: _ClassVar[int] + PACKET_FIELD_NUMBER: _ClassVar[int] + channel_id: str + gateway_id: str + packet: _mesh_pb2.MeshPacket + def __init__(self, packet: _Optional[_Union[_mesh_pb2.MeshPacket, _Mapping]] = ..., channel_id: _Optional[str] = ..., gateway_id: _Optional[str] = ...) -> None: ... diff --git a/meshtastic/protobuf/nanopb_pb2.py b/meshtastic/protobuf/nanopb_pb2.py index 797b8a0..73cb4ba 100644 --- a/meshtastic/protobuf/nanopb_pb2.py +++ b/meshtastic/protobuf/nanopb_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -16,20 +16,24 @@ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/nanopb.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>\n\x18\x66i.kapsi.koti.jpa.nanopbZ\"github.com/meshtastic/go/generated') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.nanopb_pb2', _globals) +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.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.nanopbZ\"github.com/meshtastic/go/generated' - _globals['_FIELDTYPE']._serialized_start=1005 - _globals['_FIELDTYPE']._serialized_end=1110 - _globals['_INTSIZE']._serialized_start=1112 - _globals['_INTSIZE']._serialized_end=1180 - _globals['_TYPENAMEMANGLING']._serialized_start=1182 - _globals['_TYPENAMEMANGLING']._serialized_end=1272 - _globals['_DESCRIPTORSIZE']._serialized_start=1274 - _globals['_DESCRIPTORSIZE']._serialized_end=1343 - _globals['_NANOPBOPTIONS']._serialized_start=71 - _globals['_NANOPBOPTIONS']._serialized_end=1003 + _FIELDTYPE._serialized_start=1005 + _FIELDTYPE._serialized_end=1110 + _INTSIZE._serialized_start=1112 + _INTSIZE._serialized_end=1180 + _TYPENAMEMANGLING._serialized_start=1182 + _TYPENAMEMANGLING._serialized_end=1272 + _DESCRIPTORSIZE._serialized_start=1274 + _DESCRIPTORSIZE._serialized_end=1343 + _NANOPBOPTIONS._serialized_start=71 + _NANOPBOPTIONS._serialized_end=1003 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/nanopb_pb2.pyi b/meshtastic/protobuf/nanopb_pb2.pyi index c5d7d87..404b5d0 100644 --- a/meshtastic/protobuf/nanopb_pb2.pyi +++ b/meshtastic/protobuf/nanopb_pb2.pyi @@ -1,324 +1,110 @@ -""" -@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 +from google.protobuf import descriptor_pb2 as _descriptor_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Optional as _Optional, Union as _Union -These are used by nanopb to generate statically allocable structures -for memory-limited environments. -""" +DESCRIPTOR: _descriptor.FileDescriptor +DS_1: DescriptorSize +DS_2: DescriptorSize +DS_4: DescriptorSize +DS_8: DescriptorSize +DS_AUTO: DescriptorSize +FT_CALLBACK: FieldType +FT_DEFAULT: FieldType +FT_IGNORE: FieldType +FT_INLINE: FieldType +FT_POINTER: FieldType +FT_STATIC: FieldType +IS_16: IntSize +IS_32: IntSize +IS_64: IntSize +IS_8: IntSize +IS_DEFAULT: IntSize +M_FLATTEN: TypenameMangling +M_NONE: TypenameMangling +M_PACKAGE_INITIALS: TypenameMangling +M_STRIP_PACKAGE: TypenameMangling +NANOPB_ENUMOPT_FIELD_NUMBER: _ClassVar[int] +NANOPB_FIELD_NUMBER: _ClassVar[int] +NANOPB_FILEOPT_FIELD_NUMBER: _ClassVar[int] +NANOPB_MSGOPT_FIELD_NUMBER: _ClassVar[int] +nanopb: _descriptor.FieldDescriptor +nanopb_enumopt: _descriptor.FieldDescriptor +nanopb_fileopt: _descriptor.FieldDescriptor +nanopb_msgopt: _descriptor.FieldDescriptor -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 +class NanoPBOptions(_message.Message): + __slots__ = ["anonymous_oneof", "callback_datatype", "callback_function", "default_has", "descriptorsize", "enum_to_string", "exclude", "fallback_type", "fixed_count", "fixed_length", "include", "int_size", "long_names", "mangle_names", "max_count", "max_length", "max_size", "msgid", "no_unions", "package", "packed_enum", "packed_struct", "proto3", "proto3_singular_msgs", "skip_message", "sort_by_tag", "submsg_callback", "type", "type_override"] + ANONYMOUS_ONEOF_FIELD_NUMBER: _ClassVar[int] + CALLBACK_DATATYPE_FIELD_NUMBER: _ClassVar[int] + CALLBACK_FUNCTION_FIELD_NUMBER: _ClassVar[int] + DEFAULT_HAS_FIELD_NUMBER: _ClassVar[int] + DESCRIPTORSIZE_FIELD_NUMBER: _ClassVar[int] + ENUM_TO_STRING_FIELD_NUMBER: _ClassVar[int] + EXCLUDE_FIELD_NUMBER: _ClassVar[int] + FALLBACK_TYPE_FIELD_NUMBER: _ClassVar[int] + FIXED_COUNT_FIELD_NUMBER: _ClassVar[int] + FIXED_LENGTH_FIELD_NUMBER: _ClassVar[int] + INCLUDE_FIELD_NUMBER: _ClassVar[int] + INT_SIZE_FIELD_NUMBER: _ClassVar[int] + LONG_NAMES_FIELD_NUMBER: _ClassVar[int] + MANGLE_NAMES_FIELD_NUMBER: _ClassVar[int] + MAX_COUNT_FIELD_NUMBER: _ClassVar[int] + MAX_LENGTH_FIELD_NUMBER: _ClassVar[int] + MAX_SIZE_FIELD_NUMBER: _ClassVar[int] + MSGID_FIELD_NUMBER: _ClassVar[int] + NO_UNIONS_FIELD_NUMBER: _ClassVar[int] + PACKAGE_FIELD_NUMBER: _ClassVar[int] + PACKED_ENUM_FIELD_NUMBER: _ClassVar[int] + PACKED_STRUCT_FIELD_NUMBER: _ClassVar[int] + PROTO3_FIELD_NUMBER: _ClassVar[int] + PROTO3_SINGULAR_MSGS_FIELD_NUMBER: _ClassVar[int] + SKIP_MESSAGE_FIELD_NUMBER: _ClassVar[int] + SORT_BY_TAG_FIELD_NUMBER: _ClassVar[int] + SUBMSG_CALLBACK_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + TYPE_OVERRIDE_FIELD_NUMBER: _ClassVar[int] + anonymous_oneof: bool + callback_datatype: str + callback_function: str + default_has: bool + descriptorsize: DescriptorSize + enum_to_string: bool + exclude: _containers.RepeatedScalarFieldContainer[str] + fallback_type: FieldType + fixed_count: bool + fixed_length: bool + include: _containers.RepeatedScalarFieldContainer[str] + int_size: IntSize + long_names: bool + mangle_names: TypenameMangling + max_count: int + max_length: int + max_size: int + msgid: int + no_unions: bool + package: str + packed_enum: bool + packed_struct: bool + proto3: bool + proto3_singular_msgs: bool + skip_message: bool + sort_by_tag: bool + submsg_callback: bool + type: FieldType + type_override: _descriptor_pb2.FieldDescriptorProto.Type + def __init__(self, max_size: _Optional[int] = ..., max_length: _Optional[int] = ..., max_count: _Optional[int] = ..., int_size: _Optional[_Union[IntSize, str]] = ..., type: _Optional[_Union[FieldType, str]] = ..., long_names: bool = ..., packed_struct: bool = ..., packed_enum: bool = ..., skip_message: bool = ..., no_unions: bool = ..., msgid: _Optional[int] = ..., anonymous_oneof: bool = ..., proto3: bool = ..., proto3_singular_msgs: bool = ..., enum_to_string: bool = ..., fixed_length: bool = ..., fixed_count: bool = ..., submsg_callback: bool = ..., mangle_names: _Optional[_Union[TypenameMangling, str]] = ..., callback_datatype: _Optional[str] = ..., callback_function: _Optional[str] = ..., descriptorsize: _Optional[_Union[DescriptorSize, str]] = ..., default_has: bool = ..., include: _Optional[_Iterable[str]] = ..., exclude: _Optional[_Iterable[str]] = ..., package: _Optional[str] = ..., type_override: _Optional[_Union[_descriptor_pb2.FieldDescriptorProto.Type, str]] = ..., sort_by_tag: bool = ..., fallback_type: _Optional[_Union[FieldType, str]] = ...) -> None: ... -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class FieldType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class IntSize(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -class _FieldType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class TypenameMangling(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] -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.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.""" - 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. - """ - @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. - """ - - 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.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.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] +class DescriptorSize(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/paxcount_pb2.py b/meshtastic/protobuf/paxcount_pb2.py index f2be49e..846641a 100644 --- a/meshtastic/protobuf/paxcount_pb2.py +++ b/meshtastic/protobuf/paxcount_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,12 +15,12 @@ _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(\rBd\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\016PaxcountProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_PAXCOUNT']._serialized_start=59 - _globals['_PAXCOUNT']._serialized_end=112 + _PAXCOUNT._serialized_start=59 + _PAXCOUNT._serialized_end=112 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/paxcount_pb2.pyi b/meshtastic/protobuf/paxcount_pb2.pyi index cc7ed0d..38b5d39 100644 --- a/meshtastic/protobuf/paxcount_pb2.pyi +++ b/meshtastic/protobuf/paxcount_pb2.pyi @@ -1,45 +1,15 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 +class Paxcount(_message.Message): + __slots__ = ["ble", "uptime", "wifi"] + BLE_FIELD_NUMBER: _ClassVar[int] + UPTIME_FIELD_NUMBER: _ClassVar[int] + WIFI_FIELD_NUMBER: _ClassVar[int] + ble: int + uptime: int + wifi: int + def __init__(self, wifi: _Optional[int] = ..., ble: _Optional[int] = ..., uptime: _Optional[int] = ...) -> None: ... diff --git a/meshtastic/protobuf/portnums_pb2.py b/meshtastic/protobuf/portnums_pb2.py index 5364c58..f55d7e5 100644 --- a/meshtastic/protobuf/portnums_pb2.py +++ b/meshtastic/protobuf/portnums_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xf6\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\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42^\n\x14org.meshtastic.protoB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xfd\x05\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\x1f\n\x1bTEXT_MESSAGE_COMPRESSED_APP\x10\x07\x12\x10\n\x0cWAYPOINT_APP\x10\x08\x12\r\n\tAUDIO_APP\x10\t\x12\x18\n\x14\x44\x45TECTION_SENSOR_APP\x10\n\x12\r\n\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\x14\n\x10REMOTE_SHELL_APP\x10\r\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x1e\n\x1aSTORE_FORWARD_PLUSPLUS_APP\x10#\x12\x13\n\x0fNODE_STATUS_APP\x10$\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x12\n\x0eLORAWAN_BRIDGE\x10K\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x12\n\x0e\x41TAK_PLUGIN_V2\x10N\x12\x12\n\x0eGROUPALARM_APP\x10p\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42^\n\x14org.meshtastic.protoB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.portnums_pb2', _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\024org.meshtastic.protoB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_PORTNUM']._serialized_start=60 - _globals['_PORTNUM']._serialized_end=690 + _PORTNUM._serialized_start=60 + _PORTNUM._serialized_end=825 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/portnums_pb2.pyi b/meshtastic/protobuf/portnums_pb2.pyi index c5b626f..04ea3a2 100644 --- a/meshtastic/protobuf/portnums_pb2.pyi +++ b/meshtastic/protobuf/portnums_pb2.pyi @@ -1,416 +1,46 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from typing import ClassVar as _ClassVar -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import sys -import typing +ADMIN_APP: PortNum +ALERT_APP: PortNum +ATAK_FORWARDER: PortNum +ATAK_PLUGIN: PortNum +ATAK_PLUGIN_V2: PortNum +AUDIO_APP: PortNum +CAYENNE_APP: PortNum +DESCRIPTOR: _descriptor.FileDescriptor +DETECTION_SENSOR_APP: PortNum +GROUPALARM_APP: PortNum +IP_TUNNEL_APP: PortNum +KEY_VERIFICATION_APP: PortNum +LORAWAN_BRIDGE: PortNum +MAP_REPORT_APP: PortNum +MAX: PortNum +NEIGHBORINFO_APP: PortNum +NODEINFO_APP: PortNum +NODE_STATUS_APP: PortNum +PAXCOUNTER_APP: PortNum +POSITION_APP: PortNum +POWERSTRESS_APP: PortNum +PRIVATE_APP: PortNum +RANGE_TEST_APP: PortNum +REMOTE_HARDWARE_APP: PortNum +REMOTE_SHELL_APP: PortNum +REPLY_APP: PortNum +RETICULUM_TUNNEL_APP: PortNum +ROUTING_APP: PortNum +SERIAL_APP: PortNum +SIMULATOR_APP: PortNum +STORE_FORWARD_APP: PortNum +STORE_FORWARD_PLUSPLUS_APP: PortNum +TELEMETRY_APP: PortNum +TEXT_MESSAGE_APP: PortNum +TEXT_MESSAGE_COMPRESSED_APP: PortNum +TRACEROUTE_APP: PortNum +UNKNOWN_APP: PortNum +WAYPOINT_APP: PortNum +ZPS_APP: PortNum -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 - """ - ALERT_APP: _PortNum.ValueType # 11 - """ - Same as Text Message but used for critical alerts. - """ - KEY_VERIFICATION_APP: _PortNum.ValueType # 12 - """ - Module/port for handling key verification requests. - """ - 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. Contains a RouteDiscovery message as payload. - 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 - """ - POWERSTRESS_APP: _PortNum.ValueType # 74 - """ - PowerStress based monitoring support (for automated power consumption testing) - """ - RETICULUM_TUNNEL_APP: _PortNum.ValueType # 76 - """ - Reticulum Network Stack Tunnel App - ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface - """ - CAYENNE_APP: _PortNum.ValueType # 77 - """ - App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes. Offers ability to send - arbitrary telemetry over meshtastic that is not covered by telemetry.proto - ENCODING: CayenneLLP - """ - 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 -""" -ALERT_APP: PortNum.ValueType # 11 -""" -Same as Text Message but used for critical alerts. -""" -KEY_VERIFICATION_APP: PortNum.ValueType # 12 -""" -Module/port for handling key verification requests. -""" -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. Contains a RouteDiscovery message as payload. -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 -""" -POWERSTRESS_APP: PortNum.ValueType # 74 -""" -PowerStress based monitoring support (for automated power consumption testing) -""" -RETICULUM_TUNNEL_APP: PortNum.ValueType # 76 -""" -Reticulum Network Stack Tunnel App -ENCODING: Fragmented RNS Packet. Handled by Meshtastic RNS interface -""" -CAYENNE_APP: PortNum.ValueType # 77 -""" -App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes. Offers ability to send -arbitrary telemetry over meshtastic that is not covered by telemetry.proto -ENCODING: CayenneLLP -""" -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 +class PortNum(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/powermon_pb2.py b/meshtastic/protobuf/powermon_pb2.py index 1895a95..1654348 100644 --- a/meshtastic/protobuf/powermon_pb2.py +++ b/meshtastic/protobuf/powermon_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/powermon.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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,18 +15,18 @@ _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/powermon.proto\x12\x13meshtastic.protobuf\"\xe0\x01\n\x08PowerMon\"\xd3\x01\n\x05State\x12\x08\n\x04None\x10\x00\x12\x11\n\rCPU_DeepSleep\x10\x01\x12\x12\n\x0e\x43PU_LightSleep\x10\x02\x12\x0c\n\x08Vext1_On\x10\x04\x12\r\n\tLora_RXOn\x10\x08\x12\r\n\tLora_TXOn\x10\x10\x12\x11\n\rLora_RXActive\x10 \x12\t\n\x05\x42T_On\x10@\x12\x0b\n\x06LED_On\x10\x80\x01\x12\x0e\n\tScreen_On\x10\x80\x02\x12\x13\n\x0eScreen_Drawing\x10\x80\x04\x12\x0c\n\x07Wifi_On\x10\x80\x08\x12\x0f\n\nGPS_Active\x10\x80\x10\"\x88\x03\n\x12PowerStressMessage\x12;\n\x03\x63md\x18\x01 \x01(\x0e\x32..meshtastic.protobuf.PowerStressMessage.Opcode\x12\x13\n\x0bnum_seconds\x18\x02 \x01(\x02\"\x9f\x02\n\x06Opcode\x12\t\n\x05UNSET\x10\x00\x12\x0e\n\nPRINT_INFO\x10\x01\x12\x0f\n\x0b\x46ORCE_QUIET\x10\x02\x12\r\n\tEND_QUIET\x10\x03\x12\r\n\tSCREEN_ON\x10\x10\x12\x0e\n\nSCREEN_OFF\x10\x11\x12\x0c\n\x08\x43PU_IDLE\x10 \x12\x11\n\rCPU_DEEPSLEEP\x10!\x12\x0e\n\nCPU_FULLON\x10\"\x12\n\n\x06LED_ON\x10\x30\x12\x0b\n\x07LED_OFF\x10\x31\x12\x0c\n\x08LORA_OFF\x10@\x12\x0b\n\x07LORA_TX\x10\x41\x12\x0b\n\x07LORA_RX\x10\x42\x12\n\n\x06\x42T_OFF\x10P\x12\t\n\x05\x42T_ON\x10Q\x12\x0c\n\x08WIFI_OFF\x10`\x12\x0b\n\x07WIFI_ON\x10\x61\x12\x0b\n\x07GPS_OFF\x10p\x12\n\n\x06GPS_ON\x10qBd\n\x14org.meshtastic.protoB\x0ePowerMonProtosZ\"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.powermon_pb2', _globals) +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.powermon_pb2', globals()) if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\016PowerMonProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_POWERMON']._serialized_start=60 - _globals['_POWERMON']._serialized_end=284 - _globals['_POWERMON_STATE']._serialized_start=73 - _globals['_POWERMON_STATE']._serialized_end=284 - _globals['_POWERSTRESSMESSAGE']._serialized_start=287 - _globals['_POWERSTRESSMESSAGE']._serialized_end=679 - _globals['_POWERSTRESSMESSAGE_OPCODE']._serialized_start=392 - _globals['_POWERSTRESSMESSAGE_OPCODE']._serialized_end=679 + _POWERMON._serialized_start=60 + _POWERMON._serialized_end=284 + _POWERMON_STATE._serialized_start=73 + _POWERMON_STATE._serialized_end=284 + _POWERSTRESSMESSAGE._serialized_start=287 + _POWERSTRESSMESSAGE._serialized_end=679 + _POWERSTRESSMESSAGE_OPCODE._serialized_start=392 + _POWERSTRESSMESSAGE_OPCODE._serialized_end=679 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/powermon_pb2.pyi b/meshtastic/protobuf/powermon_pb2.pyi index 6c51a28..cf22263 100644 --- a/meshtastic/protobuf/powermon_pb2.pyi +++ b/meshtastic/protobuf/powermon_pb2.pyi @@ -1,221 +1,55 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +DESCRIPTOR: _descriptor.FileDescriptor -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class PowerMon(_message.Message): + __slots__ = [] + class State(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + BT_On: PowerMon.State + CPU_DeepSleep: PowerMon.State + CPU_LightSleep: PowerMon.State + GPS_Active: PowerMon.State + LED_On: PowerMon.State + Lora_RXActive: PowerMon.State + Lora_RXOn: PowerMon.State + Lora_TXOn: PowerMon.State + None: PowerMon.State + Screen_Drawing: PowerMon.State + Screen_On: PowerMon.State + Vext1_On: PowerMon.State + Wifi_On: PowerMon.State + def __init__(self) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor - -@typing.final -class PowerMon(google.protobuf.message.Message): - """Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs). - But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us) - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _State: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _StateEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PowerMon._State.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - CPU_DeepSleep: PowerMon._State.ValueType # 1 - CPU_LightSleep: PowerMon._State.ValueType # 2 - Vext1_On: PowerMon._State.ValueType # 4 - """ - The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only - occasionally. In cases where that rail has multiple devices on it we usually want to have logging on - the state of that rail as an independent record. - For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. - - The log messages will be short and complete (see PowerMon.Event in the protobufs for details). - something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states. - (We use a bitmask for states so that if a log message gets lost it won't be fatal) - """ - Lora_RXOn: PowerMon._State.ValueType # 8 - Lora_TXOn: PowerMon._State.ValueType # 16 - Lora_RXActive: PowerMon._State.ValueType # 32 - BT_On: PowerMon._State.ValueType # 64 - LED_On: PowerMon._State.ValueType # 128 - Screen_On: PowerMon._State.ValueType # 256 - Screen_Drawing: PowerMon._State.ValueType # 512 - Wifi_On: PowerMon._State.ValueType # 1024 - GPS_Active: PowerMon._State.ValueType # 2048 - """ - GPS is actively trying to find our location - See GPSPowerState for more details - """ - - class State(_State, metaclass=_StateEnumTypeWrapper): - """Any significant power changing event in meshtastic should be tagged with a powermon state transition. - If you are making new meshtastic features feel free to add new entries at the end of this definition. - """ - - CPU_DeepSleep: PowerMon.State.ValueType # 1 - CPU_LightSleep: PowerMon.State.ValueType # 2 - Vext1_On: PowerMon.State.ValueType # 4 - """ - The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only - occasionally. In cases where that rail has multiple devices on it we usually want to have logging on - the state of that rail as an independent record. - For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen. - - The log messages will be short and complete (see PowerMon.Event in the protobufs for details). - something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states. - (We use a bitmask for states so that if a log message gets lost it won't be fatal) - """ - Lora_RXOn: PowerMon.State.ValueType # 8 - Lora_TXOn: PowerMon.State.ValueType # 16 - Lora_RXActive: PowerMon.State.ValueType # 32 - BT_On: PowerMon.State.ValueType # 64 - LED_On: PowerMon.State.ValueType # 128 - Screen_On: PowerMon.State.ValueType # 256 - Screen_Drawing: PowerMon.State.ValueType # 512 - Wifi_On: PowerMon.State.ValueType # 1024 - GPS_Active: PowerMon.State.ValueType # 2048 - """ - GPS is actively trying to find our location - See GPSPowerState for more details - """ - - def __init__( - self, - ) -> None: ... - -global___PowerMon = PowerMon - -@typing.final -class PowerStressMessage(google.protobuf.message.Message): - """ - PowerStress testing support via the C++ PowerStress module - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - class _Opcode: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType - - class _OpcodeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PowerStressMessage._Opcode.ValueType], builtins.type): - DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor - UNSET: PowerStressMessage._Opcode.ValueType # 0 - """ - Unset/unused - """ - PRINT_INFO: PowerStressMessage._Opcode.ValueType # 1 - """Print board version slog and send an ack that we are alive and ready to process commands""" - FORCE_QUIET: PowerStressMessage._Opcode.ValueType # 2 - """Try to turn off all automatic processing of packets, screen, sleeping, etc (to make it easier to measure in isolation)""" - END_QUIET: PowerStressMessage._Opcode.ValueType # 3 - """Stop powerstress processing - probably by just rebooting the board""" - SCREEN_ON: PowerStressMessage._Opcode.ValueType # 16 - """Turn the screen on""" - SCREEN_OFF: PowerStressMessage._Opcode.ValueType # 17 - """Turn the screen off""" - CPU_IDLE: PowerStressMessage._Opcode.ValueType # 32 - """Let the CPU run but we assume mostly idling for num_seconds""" - CPU_DEEPSLEEP: PowerStressMessage._Opcode.ValueType # 33 - """Force deep sleep for FIXME seconds""" - CPU_FULLON: PowerStressMessage._Opcode.ValueType # 34 - """Spin the CPU as fast as possible for num_seconds""" - LED_ON: PowerStressMessage._Opcode.ValueType # 48 - """Turn the LED on for num_seconds (and leave it on - for baseline power measurement purposes)""" - LED_OFF: PowerStressMessage._Opcode.ValueType # 49 - """Force the LED off for num_seconds""" - LORA_OFF: PowerStressMessage._Opcode.ValueType # 64 - """Completely turn off the LORA radio for num_seconds""" - LORA_TX: PowerStressMessage._Opcode.ValueType # 65 - """Send Lora packets for num_seconds""" - LORA_RX: PowerStressMessage._Opcode.ValueType # 66 - """Receive Lora packets for num_seconds (node will be mostly just listening, unless an external agent is helping stress this by sending packets on the current channel)""" - BT_OFF: PowerStressMessage._Opcode.ValueType # 80 - """Turn off the BT radio for num_seconds""" - BT_ON: PowerStressMessage._Opcode.ValueType # 81 - """Turn on the BT radio for num_seconds""" - WIFI_OFF: PowerStressMessage._Opcode.ValueType # 96 - """Turn off the WIFI radio for num_seconds""" - WIFI_ON: PowerStressMessage._Opcode.ValueType # 97 - """Turn on the WIFI radio for num_seconds""" - GPS_OFF: PowerStressMessage._Opcode.ValueType # 112 - """Turn off the GPS radio for num_seconds""" - GPS_ON: PowerStressMessage._Opcode.ValueType # 113 - """Turn on the GPS radio for num_seconds""" - - class Opcode(_Opcode, metaclass=_OpcodeEnumTypeWrapper): - """ - What operation would we like the UUT to perform. - note: senders should probably set want_response in their request packets, so that they can know when the state - machine has started processing their request - """ - - UNSET: PowerStressMessage.Opcode.ValueType # 0 - """ - Unset/unused - """ - PRINT_INFO: PowerStressMessage.Opcode.ValueType # 1 - """Print board version slog and send an ack that we are alive and ready to process commands""" - FORCE_QUIET: PowerStressMessage.Opcode.ValueType # 2 - """Try to turn off all automatic processing of packets, screen, sleeping, etc (to make it easier to measure in isolation)""" - END_QUIET: PowerStressMessage.Opcode.ValueType # 3 - """Stop powerstress processing - probably by just rebooting the board""" - SCREEN_ON: PowerStressMessage.Opcode.ValueType # 16 - """Turn the screen on""" - SCREEN_OFF: PowerStressMessage.Opcode.ValueType # 17 - """Turn the screen off""" - CPU_IDLE: PowerStressMessage.Opcode.ValueType # 32 - """Let the CPU run but we assume mostly idling for num_seconds""" - CPU_DEEPSLEEP: PowerStressMessage.Opcode.ValueType # 33 - """Force deep sleep for FIXME seconds""" - CPU_FULLON: PowerStressMessage.Opcode.ValueType # 34 - """Spin the CPU as fast as possible for num_seconds""" - LED_ON: PowerStressMessage.Opcode.ValueType # 48 - """Turn the LED on for num_seconds (and leave it on - for baseline power measurement purposes)""" - LED_OFF: PowerStressMessage.Opcode.ValueType # 49 - """Force the LED off for num_seconds""" - LORA_OFF: PowerStressMessage.Opcode.ValueType # 64 - """Completely turn off the LORA radio for num_seconds""" - LORA_TX: PowerStressMessage.Opcode.ValueType # 65 - """Send Lora packets for num_seconds""" - LORA_RX: PowerStressMessage.Opcode.ValueType # 66 - """Receive Lora packets for num_seconds (node will be mostly just listening, unless an external agent is helping stress this by sending packets on the current channel)""" - BT_OFF: PowerStressMessage.Opcode.ValueType # 80 - """Turn off the BT radio for num_seconds""" - BT_ON: PowerStressMessage.Opcode.ValueType # 81 - """Turn on the BT radio for num_seconds""" - WIFI_OFF: PowerStressMessage.Opcode.ValueType # 96 - """Turn off the WIFI radio for num_seconds""" - WIFI_ON: PowerStressMessage.Opcode.ValueType # 97 - """Turn on the WIFI radio for num_seconds""" - GPS_OFF: PowerStressMessage.Opcode.ValueType # 112 - """Turn off the GPS radio for num_seconds""" - GPS_ON: PowerStressMessage.Opcode.ValueType # 113 - """Turn on the GPS radio for num_seconds""" - - CMD_FIELD_NUMBER: builtins.int - NUM_SECONDS_FIELD_NUMBER: builtins.int - cmd: global___PowerStressMessage.Opcode.ValueType - """ - What type of HardwareMessage is this? - """ - num_seconds: builtins.float - def __init__( - self, - *, - cmd: global___PowerStressMessage.Opcode.ValueType = ..., - num_seconds: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["cmd", b"cmd", "num_seconds", b"num_seconds"]) -> None: ... - -global___PowerStressMessage = PowerStressMessage +class PowerStressMessage(_message.Message): + __slots__ = ["cmd", "num_seconds"] + class Opcode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + BT_OFF: PowerStressMessage.Opcode + BT_ON: PowerStressMessage.Opcode + CMD_FIELD_NUMBER: _ClassVar[int] + CPU_DEEPSLEEP: PowerStressMessage.Opcode + CPU_FULLON: PowerStressMessage.Opcode + CPU_IDLE: PowerStressMessage.Opcode + END_QUIET: PowerStressMessage.Opcode + FORCE_QUIET: PowerStressMessage.Opcode + GPS_OFF: PowerStressMessage.Opcode + GPS_ON: PowerStressMessage.Opcode + LED_OFF: PowerStressMessage.Opcode + LED_ON: PowerStressMessage.Opcode + LORA_OFF: PowerStressMessage.Opcode + LORA_RX: PowerStressMessage.Opcode + LORA_TX: PowerStressMessage.Opcode + NUM_SECONDS_FIELD_NUMBER: _ClassVar[int] + PRINT_INFO: PowerStressMessage.Opcode + SCREEN_OFF: PowerStressMessage.Opcode + SCREEN_ON: PowerStressMessage.Opcode + UNSET: PowerStressMessage.Opcode + WIFI_OFF: PowerStressMessage.Opcode + WIFI_ON: PowerStressMessage.Opcode + cmd: PowerStressMessage.Opcode + num_seconds: float + def __init__(self, cmd: _Optional[_Union[PowerStressMessage.Opcode, str]] = ..., num_seconds: _Optional[float] = ...) -> None: ... diff --git a/meshtastic/protobuf/remote_hardware_pb2.py b/meshtastic/protobuf/remote_hardware_pb2.py index dab1f09..c48c901 100644 --- a/meshtastic/protobuf/remote_hardware_pb2.py +++ b/meshtastic/protobuf/remote_hardware_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,14 +15,14 @@ _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\x64\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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 + _HARDWAREMESSAGE._serialized_start=67 + _HARDWAREMESSAGE._serialized_end=290 + _HARDWAREMESSAGE_TYPE._serialized_start=182 + _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 index c2f7afa..e45739e 100644 --- a/meshtastic/protobuf/remote_hardware_pb2.pyi +++ b/meshtastic/protobuf/remote_hardware_pb2.pyi @@ -1,126 +1,24 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 +class HardwareMessage(_message.Message): + __slots__ = ["gpio_mask", "gpio_value", "type"] + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + GPIOS_CHANGED: HardwareMessage.Type + GPIO_MASK_FIELD_NUMBER: _ClassVar[int] + GPIO_VALUE_FIELD_NUMBER: _ClassVar[int] + READ_GPIOS: HardwareMessage.Type + READ_GPIOS_REPLY: HardwareMessage.Type + TYPE_FIELD_NUMBER: _ClassVar[int] + UNSET: HardwareMessage.Type + WATCH_GPIOS: HardwareMessage.Type + WRITE_GPIOS: HardwareMessage.Type + gpio_mask: int + gpio_value: int + type: HardwareMessage.Type + def __init__(self, type: _Optional[_Union[HardwareMessage.Type, str]] = ..., gpio_mask: _Optional[int] = ..., gpio_value: _Optional[int] = ...) -> None: ... diff --git a/meshtastic/protobuf/rtttl_pb2.py b/meshtastic/protobuf/rtttl_pb2.py index 12842c2..78ef80a 100644 --- a/meshtastic/protobuf/rtttl_pb2.py +++ b/meshtastic/protobuf/rtttl_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,12 +15,12 @@ _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(\tBg\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\021RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_RTTTLCONFIG']._serialized_start=56 - _globals['_RTTTLCONFIG']._serialized_end=87 + _RTTTLCONFIG._serialized_start=56 + _RTTTLCONFIG._serialized_end=87 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/rtttl_pb2.pyi b/meshtastic/protobuf/rtttl_pb2.pyi index fe91f94..2fbe7a9 100644 --- a/meshtastic/protobuf/rtttl_pb2.pyi +++ b/meshtastic/protobuf/rtttl_pb2.pyi @@ -1,33 +1,11 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional -import builtins -import google.protobuf.descriptor -import google.protobuf.message -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 +class RTTTLConfig(_message.Message): + __slots__ = ["ringtone"] + RINGTONE_FIELD_NUMBER: _ClassVar[int] + ringtone: str + def __init__(self, ringtone: _Optional[str] = ...) -> None: ... diff --git a/meshtastic/protobuf/serial_hal_pb2.py b/meshtastic/protobuf/serial_hal_pb2.py new file mode 100644 index 0000000..0118051 --- /dev/null +++ b/meshtastic/protobuf/serial_hal_pb2.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: meshtastic/protobuf/serial_hal.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/protobuf/serial_hal.proto\x12\x13meshtastic.protobuf\"\xab\x02\n\x10SerialHalCommand\x12\x16\n\x0etransaction_id\x18\x01 \x01(\r\x12\x38\n\x04type\x18\x02 \x01(\x0e\x32*.meshtastic.protobuf.SerialHalCommand.Type\x12\x0b\n\x03pin\x18\x03 \x01(\r\x12\r\n\x05value\x18\x04 \x01(\r\x12\x0c\n\x04mode\x18\x05 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\"\x8c\x01\n\x04Type\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08PIN_MODE\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x12\x10\n\x0c\x44IGITAL_READ\x10\x03\x12\x14\n\x10\x41TTACH_INTERRUPT\x10\x04\x12\x14\n\x10\x44\x45TACH_INTERRUPT\x10\x05\x12\x10\n\x0cSPI_TRANSFER\x10\x06\x12\x08\n\x04NOOP\x10\x07\"\xd5\x01\n\x11SerialHalResponse\x12\x16\n\x0etransaction_id\x18\x01 \x01(\r\x12=\n\x06result\x18\x02 \x01(\x0e\x32-.meshtastic.protobuf.SerialHalResponse.Result\x12\r\n\x05value\x18\x03 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\r\n\x05\x65rror\x18\x05 \x01(\t\"=\n\x06Result\x12\x06\n\x02OK\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10\x02\x12\x0f\n\x0bUNSUPPORTED\x10\x03\x42_\n\x14org.meshtastic.protoB\tSerialHalZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') + +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.serial_hal_pb2', globals()) +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\tSerialHalZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _SERIALHALCOMMAND._serialized_start=62 + _SERIALHALCOMMAND._serialized_end=361 + _SERIALHALCOMMAND_TYPE._serialized_start=221 + _SERIALHALCOMMAND_TYPE._serialized_end=361 + _SERIALHALRESPONSE._serialized_start=364 + _SERIALHALRESPONSE._serialized_end=577 + _SERIALHALRESPONSE_RESULT._serialized_start=516 + _SERIALHALRESPONSE_RESULT._serialized_end=577 +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/serial_hal_pb2.pyi b/meshtastic/protobuf/serial_hal_pb2.pyi new file mode 100644 index 0000000..7275610 --- /dev/null +++ b/meshtastic/protobuf/serial_hal_pb2.pyi @@ -0,0 +1,52 @@ +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class SerialHalCommand(_message.Message): + __slots__ = ["data", "mode", "pin", "transaction_id", "type", "value"] + class Type(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ATTACH_INTERRUPT: SerialHalCommand.Type + DATA_FIELD_NUMBER: _ClassVar[int] + DETACH_INTERRUPT: SerialHalCommand.Type + DIGITAL_READ: SerialHalCommand.Type + DIGITAL_WRITE: SerialHalCommand.Type + MODE_FIELD_NUMBER: _ClassVar[int] + NOOP: SerialHalCommand.Type + PIN_FIELD_NUMBER: _ClassVar[int] + PIN_MODE: SerialHalCommand.Type + SPI_TRANSFER: SerialHalCommand.Type + TRANSACTION_ID_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + UNSET: SerialHalCommand.Type + VALUE_FIELD_NUMBER: _ClassVar[int] + data: bytes + mode: int + pin: int + transaction_id: int + type: SerialHalCommand.Type + value: int + def __init__(self, transaction_id: _Optional[int] = ..., type: _Optional[_Union[SerialHalCommand.Type, str]] = ..., pin: _Optional[int] = ..., value: _Optional[int] = ..., mode: _Optional[int] = ..., data: _Optional[bytes] = ...) -> None: ... + +class SerialHalResponse(_message.Message): + __slots__ = ["data", "error", "result", "transaction_id", "value"] + class Result(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + BAD_REQUEST: SerialHalResponse.Result + DATA_FIELD_NUMBER: _ClassVar[int] + ERROR: SerialHalResponse.Result + ERROR_FIELD_NUMBER: _ClassVar[int] + OK: SerialHalResponse.Result + RESULT_FIELD_NUMBER: _ClassVar[int] + TRANSACTION_ID_FIELD_NUMBER: _ClassVar[int] + UNSUPPORTED: SerialHalResponse.Result + VALUE_FIELD_NUMBER: _ClassVar[int] + data: bytes + error: str + result: SerialHalResponse.Result + transaction_id: int + value: int + def __init__(self, transaction_id: _Optional[int] = ..., result: _Optional[_Union[SerialHalResponse.Result, str]] = ..., value: _Optional[int] = ..., data: _Optional[bytes] = ..., error: _Optional[str] = ...) -> None: ... diff --git a/meshtastic/protobuf/storeforward_pb2.py b/meshtastic/protobuf/storeforward_pb2.py index cd57ff6..1985463 100644 --- a/meshtastic/protobuf/storeforward_pb2.py +++ b/meshtastic/protobuf/storeforward_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,20 +15,20 @@ _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\x07variantBk\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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 + _STOREANDFORWARD._serialized_start=64 + _STOREANDFORWARD._serialized_end=1024 + _STOREANDFORWARD_STATISTICS._serialized_start=366 + _STOREANDFORWARD_STATISTICS._serialized_end=571 + _STOREANDFORWARD_HISTORY._serialized_start=573 + _STOREANDFORWARD_HISTORY._serialized_end=646 + _STOREANDFORWARD_HEARTBEAT._serialized_start=648 + _STOREANDFORWARD_HEARTBEAT._serialized_end=694 + _STOREANDFORWARD_REQUESTRESPONSE._serialized_start=697 + _STOREANDFORWARD_REQUESTRESPONSE._serialized_end=1013 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/storeforward_pb2.pyi b/meshtastic/protobuf/storeforward_pb2.pyi index aff4f74..6064118 100644 --- a/meshtastic/protobuf/storeforward_pb2.pyi +++ b/meshtastic/protobuf/storeforward_pb2.pyi @@ -1,345 +1,75 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 +class StoreAndForward(_message.Message): + __slots__ = ["heartbeat", "history", "rr", "stats", "text"] + class RequestResponse(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + class Heartbeat(_message.Message): + __slots__ = ["period", "secondary"] + PERIOD_FIELD_NUMBER: _ClassVar[int] + SECONDARY_FIELD_NUMBER: _ClassVar[int] + period: int + secondary: int + def __init__(self, period: _Optional[int] = ..., secondary: _Optional[int] = ...) -> None: ... + class History(_message.Message): + __slots__ = ["history_messages", "last_request", "window"] + HISTORY_MESSAGES_FIELD_NUMBER: _ClassVar[int] + LAST_REQUEST_FIELD_NUMBER: _ClassVar[int] + WINDOW_FIELD_NUMBER: _ClassVar[int] + history_messages: int + last_request: int + window: int + def __init__(self, history_messages: _Optional[int] = ..., window: _Optional[int] = ..., last_request: _Optional[int] = ...) -> None: ... + class Statistics(_message.Message): + __slots__ = ["heartbeat", "messages_max", "messages_saved", "messages_total", "requests", "requests_history", "return_max", "return_window", "up_time"] + HEARTBEAT_FIELD_NUMBER: _ClassVar[int] + MESSAGES_MAX_FIELD_NUMBER: _ClassVar[int] + MESSAGES_SAVED_FIELD_NUMBER: _ClassVar[int] + MESSAGES_TOTAL_FIELD_NUMBER: _ClassVar[int] + REQUESTS_FIELD_NUMBER: _ClassVar[int] + REQUESTS_HISTORY_FIELD_NUMBER: _ClassVar[int] + RETURN_MAX_FIELD_NUMBER: _ClassVar[int] + RETURN_WINDOW_FIELD_NUMBER: _ClassVar[int] + UP_TIME_FIELD_NUMBER: _ClassVar[int] + heartbeat: bool + messages_max: int + messages_saved: int + messages_total: int + requests: int + requests_history: int + return_max: int + return_window: int + up_time: int + def __init__(self, messages_total: _Optional[int] = ..., messages_saved: _Optional[int] = ..., messages_max: _Optional[int] = ..., up_time: _Optional[int] = ..., requests: _Optional[int] = ..., requests_history: _Optional[int] = ..., heartbeat: bool = ..., return_max: _Optional[int] = ..., return_window: _Optional[int] = ...) -> None: ... + CLIENT_ABORT: StoreAndForward.RequestResponse + CLIENT_ERROR: StoreAndForward.RequestResponse + CLIENT_HISTORY: StoreAndForward.RequestResponse + CLIENT_PING: StoreAndForward.RequestResponse + CLIENT_PONG: StoreAndForward.RequestResponse + CLIENT_STATS: StoreAndForward.RequestResponse + HEARTBEAT_FIELD_NUMBER: _ClassVar[int] + HISTORY_FIELD_NUMBER: _ClassVar[int] + ROUTER_BUSY: StoreAndForward.RequestResponse + ROUTER_ERROR: StoreAndForward.RequestResponse + ROUTER_HEARTBEAT: StoreAndForward.RequestResponse + ROUTER_HISTORY: StoreAndForward.RequestResponse + ROUTER_PING: StoreAndForward.RequestResponse + ROUTER_PONG: StoreAndForward.RequestResponse + ROUTER_STATS: StoreAndForward.RequestResponse + ROUTER_TEXT_BROADCAST: StoreAndForward.RequestResponse + ROUTER_TEXT_DIRECT: StoreAndForward.RequestResponse + RR_FIELD_NUMBER: _ClassVar[int] + STATS_FIELD_NUMBER: _ClassVar[int] + TEXT_FIELD_NUMBER: _ClassVar[int] + UNSET: StoreAndForward.RequestResponse + heartbeat: StoreAndForward.Heartbeat + history: StoreAndForward.History + rr: StoreAndForward.RequestResponse + stats: StoreAndForward.Statistics + text: bytes + def __init__(self, rr: _Optional[_Union[StoreAndForward.RequestResponse, str]] = ..., stats: _Optional[_Union[StoreAndForward.Statistics, _Mapping]] = ..., history: _Optional[_Union[StoreAndForward.History, _Mapping]] = ..., heartbeat: _Optional[_Union[StoreAndForward.Heartbeat, _Mapping]] = ..., text: _Optional[bytes] = ...) -> None: ... diff --git a/meshtastic/protobuf/telemetry_pb2.py b/meshtastic/protobuf/telemetry_pb2.py index 20f5c47..064bc5a 100644 --- a/meshtastic/protobuf/telemetry_pb2.py +++ b/meshtastic/protobuf/telemetry_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -13,32 +13,36 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/telemetry.proto\x12\x13meshtastic.protobuf\"\xf3\x01\n\rDeviceMetrics\x12\x1a\n\rbattery_level\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07voltage\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x63hannel_utilization\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x1b\n\x0euptime_seconds\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x10\n\x0e_battery_levelB\n\n\x08_voltageB\x16\n\x14_channel_utilizationB\x0e\n\x0c_air_util_txB\x11\n\x0f_uptime_seconds\"\x82\x07\n\x12\x45nvironmentMetrics\x12\x18\n\x0btemperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11relative_humidity\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1b\n\x0egas_resistance\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x14\n\x07voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x14\n\x07\x63urrent\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x10\n\x03iaq\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x10\n\x03lux\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x16\n\twhite_lux\x18\n \x01(\x02H\t\x88\x01\x01\x12\x13\n\x06ir_lux\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x13\n\x06uv_lux\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x1b\n\x0ewind_direction\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x17\n\nwind_speed\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x13\n\x06weight\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x16\n\twind_gust\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x16\n\twind_lull\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x16\n\tradiation\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x18\n\x0brainfall_1h\x18\x13 \x01(\x02H\x12\x88\x01\x01\x12\x19\n\x0crainfall_24h\x18\x14 \x01(\x02H\x13\x88\x01\x01\x12\x1a\n\rsoil_moisture\x18\x15 \x01(\rH\x14\x88\x01\x01\x12\x1d\n\x10soil_temperature\x18\x16 \x01(\x02H\x15\x88\x01\x01\x42\x0e\n\x0c_temperatureB\x14\n\x12_relative_humidityB\x16\n\x14_barometric_pressureB\x11\n\x0f_gas_resistanceB\n\n\x08_voltageB\n\n\x08_currentB\x06\n\x04_iaqB\x0b\n\t_distanceB\x06\n\x04_luxB\x0c\n\n_white_luxB\t\n\x07_ir_luxB\t\n\x07_uv_luxB\x11\n\x0f_wind_directionB\r\n\x0b_wind_speedB\t\n\x07_weightB\x0c\n\n_wind_gustB\x0c\n\n_wind_lullB\x0c\n\n_radiationB\x0e\n\x0c_rainfall_1hB\x0f\n\r_rainfall_24hB\x10\n\x0e_soil_moistureB\x13\n\x11_soil_temperature\"\xae\x05\n\x0cPowerMetrics\x12\x18\n\x0b\x63h1_voltage\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x18\n\x0b\x63h1_current\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0b\x63h2_voltage\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x63h2_current\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x18\n\x0b\x63h3_voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x18\n\x0b\x63h3_current\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x18\n\x0b\x63h4_voltage\x18\x07 \x01(\x02H\x06\x88\x01\x01\x12\x18\n\x0b\x63h4_current\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x18\n\x0b\x63h5_voltage\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x18\n\x0b\x63h5_current\x18\n \x01(\x02H\t\x88\x01\x01\x12\x18\n\x0b\x63h6_voltage\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x18\n\x0b\x63h6_current\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x18\n\x0b\x63h7_voltage\x18\r \x01(\x02H\x0c\x88\x01\x01\x12\x18\n\x0b\x63h7_current\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x18\n\x0b\x63h8_voltage\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x18\n\x0b\x63h8_current\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x42\x0e\n\x0c_ch1_voltageB\x0e\n\x0c_ch1_currentB\x0e\n\x0c_ch2_voltageB\x0e\n\x0c_ch2_currentB\x0e\n\x0c_ch3_voltageB\x0e\n\x0c_ch3_currentB\x0e\n\x0c_ch4_voltageB\x0e\n\x0c_ch4_currentB\x0e\n\x0c_ch5_voltageB\x0e\n\x0c_ch5_currentB\x0e\n\x0c_ch6_voltageB\x0e\n\x0c_ch6_currentB\x0e\n\x0c_ch7_voltageB\x0e\n\x0c_ch7_currentB\x0e\n\x0c_ch8_voltageB\x0e\n\x0c_ch8_current\"\xb1\t\n\x11\x41irQualityMetrics\x12\x1a\n\rpm10_standard\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\rpm25_standard\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0epm100_standard\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12pm10_environmental\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1f\n\x12pm25_environmental\x18\x05 \x01(\rH\x04\x88\x01\x01\x12 \n\x13pm100_environmental\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1b\n\x0eparticles_03um\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x1b\n\x0eparticles_05um\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x1b\n\x0eparticles_10um\x18\t \x01(\rH\x08\x88\x01\x01\x12\x1b\n\x0eparticles_25um\x18\n \x01(\rH\t\x88\x01\x01\x12\x1b\n\x0eparticles_50um\x18\x0b \x01(\rH\n\x88\x01\x01\x12\x1c\n\x0fparticles_100um\x18\x0c \x01(\rH\x0b\x88\x01\x01\x12\x10\n\x03\x63o2\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x1c\n\x0f\x63o2_temperature\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x19\n\x0c\x63o2_humidity\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x1e\n\x11\x66orm_formaldehyde\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x1a\n\rform_humidity\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x1d\n\x10\x66orm_temperature\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x1a\n\rpm40_standard\x18\x13 \x01(\rH\x12\x88\x01\x01\x12\x1b\n\x0eparticles_40um\x18\x14 \x01(\rH\x13\x88\x01\x01\x12\x1b\n\x0epm_temperature\x18\x15 \x01(\x02H\x14\x88\x01\x01\x12\x18\n\x0bpm_humidity\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12\x17\n\npm_voc_idx\x18\x17 \x01(\x02H\x16\x88\x01\x01\x12\x17\n\npm_nox_idx\x18\x18 \x01(\x02H\x17\x88\x01\x01\x12\x1a\n\rparticles_tps\x18\x19 \x01(\x02H\x18\x88\x01\x01\x42\x10\n\x0e_pm10_standardB\x10\n\x0e_pm25_standardB\x11\n\x0f_pm100_standardB\x15\n\x13_pm10_environmentalB\x15\n\x13_pm25_environmentalB\x16\n\x14_pm100_environmentalB\x11\n\x0f_particles_03umB\x11\n\x0f_particles_05umB\x11\n\x0f_particles_10umB\x11\n\x0f_particles_25umB\x11\n\x0f_particles_50umB\x12\n\x10_particles_100umB\x06\n\x04_co2B\x12\n\x10_co2_temperatureB\x0f\n\r_co2_humidityB\x14\n\x12_form_formaldehydeB\x10\n\x0e_form_humidityB\x13\n\x11_form_temperatureB\x10\n\x0e_pm40_standardB\x11\n\x0f_particles_40umB\x11\n\x0f_pm_temperatureB\x0e\n\x0c_pm_humidityB\r\n\x0b_pm_voc_idxB\r\n\x0b_pm_nox_idxB\x10\n\x0e_particles_tps\"\xea\x02\n\nLocalStats\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x1b\n\x13\x63hannel_utilization\x18\x02 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x03 \x01(\x02\x12\x16\n\x0enum_packets_tx\x18\x04 \x01(\r\x12\x16\n\x0enum_packets_rx\x18\x05 \x01(\r\x12\x1a\n\x12num_packets_rx_bad\x18\x06 \x01(\r\x12\x18\n\x10num_online_nodes\x18\x07 \x01(\r\x12\x17\n\x0fnum_total_nodes\x18\x08 \x01(\r\x12\x13\n\x0bnum_rx_dupe\x18\t \x01(\r\x12\x14\n\x0cnum_tx_relay\x18\n \x01(\r\x12\x1d\n\x15num_tx_relay_canceled\x18\x0b \x01(\r\x12\x18\n\x10heap_total_bytes\x18\x0c \x01(\r\x12\x17\n\x0fheap_free_bytes\x18\r \x01(\r\x12\x16\n\x0enum_tx_dropped\x18\x0e \x01(\r\"{\n\rHealthMetrics\x12\x16\n\theart_bpm\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04spO2\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0btemperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x42\x0c\n\n_heart_bpmB\x07\n\x05_spO2B\x0e\n\x0c_temperature\"\x91\x02\n\x0bHostMetrics\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x15\n\rfreemem_bytes\x18\x02 \x01(\x04\x12\x17\n\x0f\x64iskfree1_bytes\x18\x03 \x01(\x04\x12\x1c\n\x0f\x64iskfree2_bytes\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1c\n\x0f\x64iskfree3_bytes\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\r\n\x05load1\x18\x06 \x01(\r\x12\r\n\x05load5\x18\x07 \x01(\r\x12\x0e\n\x06load15\x18\x08 \x01(\r\x12\x18\n\x0buser_string\x18\t \x01(\tH\x02\x88\x01\x01\x42\x12\n\x10_diskfree2_bytesB\x12\n\x10_diskfree3_bytesB\x0e\n\x0c_user_string\"\xdd\x03\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\x12\x36\n\x0blocal_stats\x18\x06 \x01(\x0b\x32\x1f.meshtastic.protobuf.LocalStatsH\x00\x12<\n\x0ehealth_metrics\x18\x07 \x01(\x0b\x32\".meshtastic.protobuf.HealthMetricsH\x00\x12\x38\n\x0chost_metrics\x18\x08 \x01(\x0b\x32 .meshtastic.protobuf.HostMetricsH\x00\x42\t\n\x07variant\">\n\rNau7802Config\x12\x12\n\nzeroOffset\x18\x01 \x01(\x05\x12\x19\n\x11\x63\x61librationFactor\x18\x02 \x01(\x02*\xf9\x04\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\x12\x0b\n\x07NAU7802\x10\x19\x12\n\n\x06\x42MP3XX\x10\x1a\x12\x0c\n\x08ICM20948\x10\x1b\x12\x0c\n\x08MAX17048\x10\x1c\x12\x11\n\rCUSTOM_SENSOR\x10\x1d\x12\x0c\n\x08MAX30102\x10\x1e\x12\x0c\n\x08MLX90614\x10\x1f\x12\t\n\x05SCD4X\x10 \x12\x0b\n\x07RADSENS\x10!\x12\n\n\x06INA226\x10\"\x12\x10\n\x0c\x44\x46ROBOT_RAIN\x10#\x12\n\n\x06\x44PS310\x10$\x12\x0c\n\x08RAK12035\x10%\x12\x0c\n\x08MAX17261\x10&\x12\x0b\n\x07PCT2075\x10\'\x12\x0b\n\x07\x41\x44S1X15\x10(\x12\x0f\n\x0b\x41\x44S1X15_ALT\x10)\x12\t\n\x05SFA30\x10*\x12\t\n\x05SEN5X\x10+\x12\x0b\n\x07TSL2561\x10,\x12\n\n\x06\x42H1750\x10-Be\n\x14org.meshtastic.protoB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/telemetry.proto\x12\x13meshtastic.protobuf\"\xf3\x01\n\rDeviceMetrics\x12\x1a\n\rbattery_level\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07voltage\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x63hannel_utilization\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x1b\n\x0euptime_seconds\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x10\n\x0e_battery_levelB\n\n\x08_voltageB\x16\n\x14_channel_utilizationB\x0e\n\x0c_air_util_txB\x11\n\x0f_uptime_seconds\"\xa0\x07\n\x12\x45nvironmentMetrics\x12\x18\n\x0btemperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11relative_humidity\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1b\n\x0egas_resistance\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x14\n\x07voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x14\n\x07\x63urrent\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x10\n\x03iaq\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x10\n\x03lux\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x16\n\twhite_lux\x18\n \x01(\x02H\t\x88\x01\x01\x12\x13\n\x06ir_lux\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x13\n\x06uv_lux\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x1b\n\x0ewind_direction\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x17\n\nwind_speed\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x13\n\x06weight\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x16\n\twind_gust\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x16\n\twind_lull\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x16\n\tradiation\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x18\n\x0brainfall_1h\x18\x13 \x01(\x02H\x12\x88\x01\x01\x12\x19\n\x0crainfall_24h\x18\x14 \x01(\x02H\x13\x88\x01\x01\x12\x1a\n\rsoil_moisture\x18\x15 \x01(\rH\x14\x88\x01\x01\x12\x1d\n\x10soil_temperature\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12\x1c\n\x14one_wire_temperature\x18\x17 \x03(\x02\x42\x0e\n\x0c_temperatureB\x14\n\x12_relative_humidityB\x16\n\x14_barometric_pressureB\x11\n\x0f_gas_resistanceB\n\n\x08_voltageB\n\n\x08_currentB\x06\n\x04_iaqB\x0b\n\t_distanceB\x06\n\x04_luxB\x0c\n\n_white_luxB\t\n\x07_ir_luxB\t\n\x07_uv_luxB\x11\n\x0f_wind_directionB\r\n\x0b_wind_speedB\t\n\x07_weightB\x0c\n\n_wind_gustB\x0c\n\n_wind_lullB\x0c\n\n_radiationB\x0e\n\x0c_rainfall_1hB\x0f\n\r_rainfall_24hB\x10\n\x0e_soil_moistureB\x13\n\x11_soil_temperature\"\xae\x05\n\x0cPowerMetrics\x12\x18\n\x0b\x63h1_voltage\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x18\n\x0b\x63h1_current\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0b\x63h2_voltage\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x63h2_current\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x18\n\x0b\x63h3_voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x18\n\x0b\x63h3_current\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x18\n\x0b\x63h4_voltage\x18\x07 \x01(\x02H\x06\x88\x01\x01\x12\x18\n\x0b\x63h4_current\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x18\n\x0b\x63h5_voltage\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x18\n\x0b\x63h5_current\x18\n \x01(\x02H\t\x88\x01\x01\x12\x18\n\x0b\x63h6_voltage\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x18\n\x0b\x63h6_current\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x18\n\x0b\x63h7_voltage\x18\r \x01(\x02H\x0c\x88\x01\x01\x12\x18\n\x0b\x63h7_current\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x18\n\x0b\x63h8_voltage\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x18\n\x0b\x63h8_current\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x42\x0e\n\x0c_ch1_voltageB\x0e\n\x0c_ch1_currentB\x0e\n\x0c_ch2_voltageB\x0e\n\x0c_ch2_currentB\x0e\n\x0c_ch3_voltageB\x0e\n\x0c_ch3_currentB\x0e\n\x0c_ch4_voltageB\x0e\n\x0c_ch4_currentB\x0e\n\x0c_ch5_voltageB\x0e\n\x0c_ch5_currentB\x0e\n\x0c_ch6_voltageB\x0e\n\x0c_ch6_currentB\x0e\n\x0c_ch7_voltageB\x0e\n\x0c_ch7_currentB\x0e\n\x0c_ch8_voltageB\x0e\n\x0c_ch8_current\"\xb1\t\n\x11\x41irQualityMetrics\x12\x1a\n\rpm10_standard\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\rpm25_standard\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0epm100_standard\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12pm10_environmental\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1f\n\x12pm25_environmental\x18\x05 \x01(\rH\x04\x88\x01\x01\x12 \n\x13pm100_environmental\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1b\n\x0eparticles_03um\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x1b\n\x0eparticles_05um\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x1b\n\x0eparticles_10um\x18\t \x01(\rH\x08\x88\x01\x01\x12\x1b\n\x0eparticles_25um\x18\n \x01(\rH\t\x88\x01\x01\x12\x1b\n\x0eparticles_50um\x18\x0b \x01(\rH\n\x88\x01\x01\x12\x1c\n\x0fparticles_100um\x18\x0c \x01(\rH\x0b\x88\x01\x01\x12\x10\n\x03\x63o2\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x1c\n\x0f\x63o2_temperature\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x19\n\x0c\x63o2_humidity\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x1e\n\x11\x66orm_formaldehyde\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x1a\n\rform_humidity\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x1d\n\x10\x66orm_temperature\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x1a\n\rpm40_standard\x18\x13 \x01(\rH\x12\x88\x01\x01\x12\x1b\n\x0eparticles_40um\x18\x14 \x01(\rH\x13\x88\x01\x01\x12\x1b\n\x0epm_temperature\x18\x15 \x01(\x02H\x14\x88\x01\x01\x12\x18\n\x0bpm_humidity\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12\x17\n\npm_voc_idx\x18\x17 \x01(\x02H\x16\x88\x01\x01\x12\x17\n\npm_nox_idx\x18\x18 \x01(\x02H\x17\x88\x01\x01\x12\x1a\n\rparticles_tps\x18\x19 \x01(\x02H\x18\x88\x01\x01\x42\x10\n\x0e_pm10_standardB\x10\n\x0e_pm25_standardB\x11\n\x0f_pm100_standardB\x15\n\x13_pm10_environmentalB\x15\n\x13_pm25_environmentalB\x16\n\x14_pm100_environmentalB\x11\n\x0f_particles_03umB\x11\n\x0f_particles_05umB\x11\n\x0f_particles_10umB\x11\n\x0f_particles_25umB\x11\n\x0f_particles_50umB\x12\n\x10_particles_100umB\x06\n\x04_co2B\x12\n\x10_co2_temperatureB\x0f\n\r_co2_humidityB\x14\n\x12_form_formaldehydeB\x10\n\x0e_form_humidityB\x13\n\x11_form_temperatureB\x10\n\x0e_pm40_standardB\x11\n\x0f_particles_40umB\x11\n\x0f_pm_temperatureB\x0e\n\x0c_pm_humidityB\r\n\x0b_pm_voc_idxB\r\n\x0b_pm_nox_idxB\x10\n\x0e_particles_tps\"\xff\x02\n\nLocalStats\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x1b\n\x13\x63hannel_utilization\x18\x02 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x03 \x01(\x02\x12\x16\n\x0enum_packets_tx\x18\x04 \x01(\r\x12\x16\n\x0enum_packets_rx\x18\x05 \x01(\r\x12\x1a\n\x12num_packets_rx_bad\x18\x06 \x01(\r\x12\x18\n\x10num_online_nodes\x18\x07 \x01(\r\x12\x17\n\x0fnum_total_nodes\x18\x08 \x01(\r\x12\x13\n\x0bnum_rx_dupe\x18\t \x01(\r\x12\x14\n\x0cnum_tx_relay\x18\n \x01(\r\x12\x1d\n\x15num_tx_relay_canceled\x18\x0b \x01(\r\x12\x18\n\x10heap_total_bytes\x18\x0c \x01(\r\x12\x17\n\x0fheap_free_bytes\x18\r \x01(\r\x12\x16\n\x0enum_tx_dropped\x18\x0e \x01(\r\x12\x13\n\x0bnoise_floor\x18\x0f \x01(\x05\"\xe4\x01\n\x16TrafficManagementStats\x12\x19\n\x11packets_inspected\x18\x01 \x01(\r\x12\x1c\n\x14position_dedup_drops\x18\x02 \x01(\r\x12\x1b\n\x13nodeinfo_cache_hits\x18\x03 \x01(\r\x12\x18\n\x10rate_limit_drops\x18\x04 \x01(\r\x12\x1c\n\x14unknown_packet_drops\x18\x05 \x01(\r\x12\x1d\n\x15hop_exhausted_packets\x18\x06 \x01(\r\x12\x1d\n\x15router_hops_preserved\x18\x07 \x01(\r\"{\n\rHealthMetrics\x12\x16\n\theart_bpm\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04spO2\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0btemperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x42\x0c\n\n_heart_bpmB\x07\n\x05_spO2B\x0e\n\x0c_temperature\"\x91\x02\n\x0bHostMetrics\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x15\n\rfreemem_bytes\x18\x02 \x01(\x04\x12\x17\n\x0f\x64iskfree1_bytes\x18\x03 \x01(\x04\x12\x1c\n\x0f\x64iskfree2_bytes\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1c\n\x0f\x64iskfree3_bytes\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\r\n\x05load1\x18\x06 \x01(\r\x12\r\n\x05load5\x18\x07 \x01(\r\x12\x0e\n\x06load15\x18\x08 \x01(\r\x12\x18\n\x0buser_string\x18\t \x01(\tH\x02\x88\x01\x01\x42\x12\n\x10_diskfree2_bytesB\x12\n\x10_diskfree3_bytesB\x0e\n\x0c_user_string\"\xae\x04\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\x12\x36\n\x0blocal_stats\x18\x06 \x01(\x0b\x32\x1f.meshtastic.protobuf.LocalStatsH\x00\x12<\n\x0ehealth_metrics\x18\x07 \x01(\x0b\x32\".meshtastic.protobuf.HealthMetricsH\x00\x12\x38\n\x0chost_metrics\x18\x08 \x01(\x0b\x32 .meshtastic.protobuf.HostMetricsH\x00\x12O\n\x18traffic_management_stats\x18\t \x01(\x0b\x32+.meshtastic.protobuf.TrafficManagementStatsH\x00\x42\t\n\x07variant\">\n\rNau7802Config\x12\x12\n\nzeroOffset\x18\x01 \x01(\x05\x12\x19\n\x11\x63\x61librationFactor\x18\x02 \x01(\x02\"\xf0\x01\n\nSEN5XState\x12\x1a\n\x12last_cleaning_time\x18\x01 \x01(\r\x12\x1b\n\x13last_cleaning_valid\x18\x02 \x01(\x08\x12\x15\n\rone_shot_mode\x18\x03 \x01(\x08\x12\x1b\n\x0evoc_state_time\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0fvoc_state_valid\x18\x05 \x01(\x08H\x01\x88\x01\x01\x12\x1c\n\x0fvoc_state_array\x18\x06 \x01(\x06H\x02\x88\x01\x01\x42\x11\n\x0f_voc_state_timeB\x12\n\x10_voc_state_validB\x12\n\x10_voc_state_array*\xdc\x05\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\x12\x0b\n\x07NAU7802\x10\x19\x12\n\n\x06\x42MP3XX\x10\x1a\x12\x0c\n\x08ICM20948\x10\x1b\x12\x0c\n\x08MAX17048\x10\x1c\x12\x11\n\rCUSTOM_SENSOR\x10\x1d\x12\x0c\n\x08MAX30102\x10\x1e\x12\x0c\n\x08MLX90614\x10\x1f\x12\t\n\x05SCD4X\x10 \x12\x0b\n\x07RADSENS\x10!\x12\n\n\x06INA226\x10\"\x12\x10\n\x0c\x44\x46ROBOT_RAIN\x10#\x12\n\n\x06\x44PS310\x10$\x12\x0c\n\x08RAK12035\x10%\x12\x0c\n\x08MAX17261\x10&\x12\x0b\n\x07PCT2075\x10\'\x12\x0b\n\x07\x41\x44S1X15\x10(\x12\x0f\n\x0b\x41\x44S1X15_ALT\x10)\x12\t\n\x05SFA30\x10*\x12\t\n\x05SEN5X\x10+\x12\x0b\n\x07TSL2561\x10,\x12\n\n\x06\x42H1750\x10-\x12\x0b\n\x07HDC1080\x10.\x12\t\n\x05SHT21\x10/\x12\t\n\x05STC31\x10\x30\x12\t\n\x05SCD30\x10\x31\x12\t\n\x05SHTXX\x10\x32\x12\n\n\x06\x44S248X\x10\x33\x12\r\n\tMMC5983MA\x10\x34\x12\r\n\tICM42607P\x10\x35\x42\x65\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\017TelemetryProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_TELEMETRYSENSORTYPE']._serialized_start=4411 - _globals['_TELEMETRYSENSORTYPE']._serialized_end=5044 - _globals['_DEVICEMETRICS']._serialized_start=61 - _globals['_DEVICEMETRICS']._serialized_end=304 - _globals['_ENVIRONMENTMETRICS']._serialized_start=307 - _globals['_ENVIRONMENTMETRICS']._serialized_end=1205 - _globals['_POWERMETRICS']._serialized_start=1208 - _globals['_POWERMETRICS']._serialized_end=1894 - _globals['_AIRQUALITYMETRICS']._serialized_start=1897 - _globals['_AIRQUALITYMETRICS']._serialized_end=3098 - _globals['_LOCALSTATS']._serialized_start=3101 - _globals['_LOCALSTATS']._serialized_end=3463 - _globals['_HEALTHMETRICS']._serialized_start=3465 - _globals['_HEALTHMETRICS']._serialized_end=3588 - _globals['_HOSTMETRICS']._serialized_start=3591 - _globals['_HOSTMETRICS']._serialized_end=3864 - _globals['_TELEMETRY']._serialized_start=3867 - _globals['_TELEMETRY']._serialized_end=4344 - _globals['_NAU7802CONFIG']._serialized_start=4346 - _globals['_NAU7802CONFIG']._serialized_end=4408 + _TELEMETRYSENSORTYPE._serialized_start=5017 + _TELEMETRYSENSORTYPE._serialized_end=5749 + _DEVICEMETRICS._serialized_start=61 + _DEVICEMETRICS._serialized_end=304 + _ENVIRONMENTMETRICS._serialized_start=307 + _ENVIRONMENTMETRICS._serialized_end=1235 + _POWERMETRICS._serialized_start=1238 + _POWERMETRICS._serialized_end=1924 + _AIRQUALITYMETRICS._serialized_start=1927 + _AIRQUALITYMETRICS._serialized_end=3128 + _LOCALSTATS._serialized_start=3131 + _LOCALSTATS._serialized_end=3514 + _TRAFFICMANAGEMENTSTATS._serialized_start=3517 + _TRAFFICMANAGEMENTSTATS._serialized_end=3745 + _HEALTHMETRICS._serialized_start=3747 + _HEALTHMETRICS._serialized_end=3870 + _HOSTMETRICS._serialized_start=3873 + _HOSTMETRICS._serialized_end=4146 + _TELEMETRY._serialized_start=4149 + _TELEMETRY._serialized_end=4707 + _NAU7802CONFIG._serialized_start=4709 + _NAU7802CONFIG._serialized_end=4771 + _SEN5XSTATE._serialized_start=4774 + _SEN5XSTATE._serialized_end=5014 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/telemetry_pb2.pyi b/meshtastic/protobuf/telemetry_pb2.pyi index 3e3c406..f8d88d9 100644 --- a/meshtastic/protobuf/telemetry_pb2.pyi +++ b/meshtastic/protobuf/telemetry_pb2.pyi @@ -1,1343 +1,348 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +ADS1X15: TelemetrySensorType +ADS1X15_ALT: TelemetrySensorType +AHT10: TelemetrySensorType +BH1750: TelemetrySensorType +BME280: TelemetrySensorType +BME680: TelemetrySensorType +BMP085: TelemetrySensorType +BMP280: TelemetrySensorType +BMP3XX: TelemetrySensorType +CUSTOM_SENSOR: TelemetrySensorType +DESCRIPTOR: _descriptor.FileDescriptor +DFROBOT_LARK: TelemetrySensorType +DFROBOT_RAIN: TelemetrySensorType +DPS310: TelemetrySensorType +DS248X: TelemetrySensorType +HDC1080: TelemetrySensorType +ICM20948: TelemetrySensorType +ICM42607P: TelemetrySensorType +INA219: TelemetrySensorType +INA226: TelemetrySensorType +INA260: TelemetrySensorType +INA3221: TelemetrySensorType +LPS22: TelemetrySensorType +LTR390UV: TelemetrySensorType +MAX17048: TelemetrySensorType +MAX17261: TelemetrySensorType +MAX30102: TelemetrySensorType +MCP9808: TelemetrySensorType +MLX90614: TelemetrySensorType +MLX90632: TelemetrySensorType +MMC5983MA: TelemetrySensorType +NAU7802: TelemetrySensorType +OPT3001: TelemetrySensorType +PCT2075: TelemetrySensorType +PMSA003I: TelemetrySensorType +QMC5883L: TelemetrySensorType +QMC6310: TelemetrySensorType +QMI8658: TelemetrySensorType +RADSENS: TelemetrySensorType +RAK12035: TelemetrySensorType +RCWL9620: TelemetrySensorType +SCD30: TelemetrySensorType +SCD4X: TelemetrySensorType +SEN5X: TelemetrySensorType +SENSOR_UNSET: TelemetrySensorType +SFA30: TelemetrySensorType +SHT21: TelemetrySensorType +SHT31: TelemetrySensorType +SHT4X: TelemetrySensorType +SHTC3: TelemetrySensorType +SHTXX: TelemetrySensorType +STC31: TelemetrySensorType +TSL2561: TelemetrySensorType +TSL25911FN: TelemetrySensorType +VEML7700: TelemetrySensorType -if sys.version_info >= (3, 10): - import typing as typing_extensions -else: - import typing_extensions +class AirQualityMetrics(_message.Message): + __slots__ = ["co2", "co2_humidity", "co2_temperature", "form_formaldehyde", "form_humidity", "form_temperature", "particles_03um", "particles_05um", "particles_100um", "particles_10um", "particles_25um", "particles_40um", "particles_50um", "particles_tps", "pm100_environmental", "pm100_standard", "pm10_environmental", "pm10_standard", "pm25_environmental", "pm25_standard", "pm40_standard", "pm_humidity", "pm_nox_idx", "pm_temperature", "pm_voc_idx"] + CO2_FIELD_NUMBER: _ClassVar[int] + CO2_HUMIDITY_FIELD_NUMBER: _ClassVar[int] + CO2_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + FORM_FORMALDEHYDE_FIELD_NUMBER: _ClassVar[int] + FORM_HUMIDITY_FIELD_NUMBER: _ClassVar[int] + FORM_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + PARTICLES_03UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_05UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_100UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_10UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_25UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_40UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_50UM_FIELD_NUMBER: _ClassVar[int] + PARTICLES_TPS_FIELD_NUMBER: _ClassVar[int] + PM100_ENVIRONMENTAL_FIELD_NUMBER: _ClassVar[int] + PM100_STANDARD_FIELD_NUMBER: _ClassVar[int] + PM10_ENVIRONMENTAL_FIELD_NUMBER: _ClassVar[int] + PM10_STANDARD_FIELD_NUMBER: _ClassVar[int] + PM25_ENVIRONMENTAL_FIELD_NUMBER: _ClassVar[int] + PM25_STANDARD_FIELD_NUMBER: _ClassVar[int] + PM40_STANDARD_FIELD_NUMBER: _ClassVar[int] + PM_HUMIDITY_FIELD_NUMBER: _ClassVar[int] + PM_NOX_IDX_FIELD_NUMBER: _ClassVar[int] + PM_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + PM_VOC_IDX_FIELD_NUMBER: _ClassVar[int] + co2: int + co2_humidity: float + co2_temperature: float + form_formaldehyde: float + form_humidity: float + form_temperature: float + particles_03um: int + particles_05um: int + particles_100um: int + particles_10um: int + particles_25um: int + particles_40um: int + particles_50um: int + particles_tps: float + pm100_environmental: int + pm100_standard: int + pm10_environmental: int + pm10_standard: int + pm25_environmental: int + pm25_standard: int + pm40_standard: int + pm_humidity: float + pm_nox_idx: float + pm_temperature: float + pm_voc_idx: float + def __init__(self, pm10_standard: _Optional[int] = ..., pm25_standard: _Optional[int] = ..., pm100_standard: _Optional[int] = ..., pm10_environmental: _Optional[int] = ..., pm25_environmental: _Optional[int] = ..., pm100_environmental: _Optional[int] = ..., particles_03um: _Optional[int] = ..., particles_05um: _Optional[int] = ..., particles_10um: _Optional[int] = ..., particles_25um: _Optional[int] = ..., particles_50um: _Optional[int] = ..., particles_100um: _Optional[int] = ..., co2: _Optional[int] = ..., co2_temperature: _Optional[float] = ..., co2_humidity: _Optional[float] = ..., form_formaldehyde: _Optional[float] = ..., form_humidity: _Optional[float] = ..., form_temperature: _Optional[float] = ..., pm40_standard: _Optional[int] = ..., particles_40um: _Optional[int] = ..., pm_temperature: _Optional[float] = ..., pm_humidity: _Optional[float] = ..., pm_voc_idx: _Optional[float] = ..., pm_nox_idx: _Optional[float] = ..., particles_tps: _Optional[float] = ...) -> None: ... -DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class DeviceMetrics(_message.Message): + __slots__ = ["air_util_tx", "battery_level", "channel_utilization", "uptime_seconds", "voltage"] + AIR_UTIL_TX_FIELD_NUMBER: _ClassVar[int] + BATTERY_LEVEL_FIELD_NUMBER: _ClassVar[int] + CHANNEL_UTILIZATION_FIELD_NUMBER: _ClassVar[int] + UPTIME_SECONDS_FIELD_NUMBER: _ClassVar[int] + VOLTAGE_FIELD_NUMBER: _ClassVar[int] + air_util_tx: float + battery_level: int + channel_utilization: float + uptime_seconds: int + voltage: float + def __init__(self, battery_level: _Optional[int] = ..., voltage: _Optional[float] = ..., channel_utilization: _Optional[float] = ..., air_util_tx: _Optional[float] = ..., uptime_seconds: _Optional[int] = ...) -> None: ... -class _TelemetrySensorType: - ValueType = typing.NewType("ValueType", builtins.int) - V: typing_extensions.TypeAlias = ValueType +class EnvironmentMetrics(_message.Message): + __slots__ = ["barometric_pressure", "current", "distance", "gas_resistance", "iaq", "ir_lux", "lux", "one_wire_temperature", "radiation", "rainfall_1h", "rainfall_24h", "relative_humidity", "soil_moisture", "soil_temperature", "temperature", "uv_lux", "voltage", "weight", "white_lux", "wind_direction", "wind_gust", "wind_lull", "wind_speed"] + BAROMETRIC_PRESSURE_FIELD_NUMBER: _ClassVar[int] + CURRENT_FIELD_NUMBER: _ClassVar[int] + DISTANCE_FIELD_NUMBER: _ClassVar[int] + GAS_RESISTANCE_FIELD_NUMBER: _ClassVar[int] + IAQ_FIELD_NUMBER: _ClassVar[int] + IR_LUX_FIELD_NUMBER: _ClassVar[int] + LUX_FIELD_NUMBER: _ClassVar[int] + ONE_WIRE_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + RADIATION_FIELD_NUMBER: _ClassVar[int] + RAINFALL_1H_FIELD_NUMBER: _ClassVar[int] + RAINFALL_24H_FIELD_NUMBER: _ClassVar[int] + RELATIVE_HUMIDITY_FIELD_NUMBER: _ClassVar[int] + SOIL_MOISTURE_FIELD_NUMBER: _ClassVar[int] + SOIL_TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + UV_LUX_FIELD_NUMBER: _ClassVar[int] + VOLTAGE_FIELD_NUMBER: _ClassVar[int] + WEIGHT_FIELD_NUMBER: _ClassVar[int] + WHITE_LUX_FIELD_NUMBER: _ClassVar[int] + WIND_DIRECTION_FIELD_NUMBER: _ClassVar[int] + WIND_GUST_FIELD_NUMBER: _ClassVar[int] + WIND_LULL_FIELD_NUMBER: _ClassVar[int] + WIND_SPEED_FIELD_NUMBER: _ClassVar[int] + barometric_pressure: float + current: float + distance: float + gas_resistance: float + iaq: int + ir_lux: float + lux: float + one_wire_temperature: _containers.RepeatedScalarFieldContainer[float] + radiation: float + rainfall_1h: float + rainfall_24h: float + relative_humidity: float + soil_moisture: int + soil_temperature: float + temperature: float + uv_lux: float + voltage: float + weight: float + white_lux: float + wind_direction: int + wind_gust: float + wind_lull: float + wind_speed: float + def __init__(self, temperature: _Optional[float] = ..., relative_humidity: _Optional[float] = ..., barometric_pressure: _Optional[float] = ..., gas_resistance: _Optional[float] = ..., voltage: _Optional[float] = ..., current: _Optional[float] = ..., iaq: _Optional[int] = ..., distance: _Optional[float] = ..., lux: _Optional[float] = ..., white_lux: _Optional[float] = ..., ir_lux: _Optional[float] = ..., uv_lux: _Optional[float] = ..., wind_direction: _Optional[int] = ..., wind_speed: _Optional[float] = ..., weight: _Optional[float] = ..., wind_gust: _Optional[float] = ..., wind_lull: _Optional[float] = ..., radiation: _Optional[float] = ..., rainfall_1h: _Optional[float] = ..., rainfall_24h: _Optional[float] = ..., soil_moisture: _Optional[int] = ..., soil_temperature: _Optional[float] = ..., one_wire_temperature: _Optional[_Iterable[float]] = ...) -> None: ... -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) - """ - NAU7802: _TelemetrySensorType.ValueType # 25 - """ - NAU7802 Scale Chip or compatible - """ - BMP3XX: _TelemetrySensorType.ValueType # 26 - """ - BMP3XX High accuracy temperature and pressure - """ - ICM20948: _TelemetrySensorType.ValueType # 27 - """ - ICM-20948 9-Axis digital motion processor - """ - MAX17048: _TelemetrySensorType.ValueType # 28 - """ - MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) - """ - CUSTOM_SENSOR: _TelemetrySensorType.ValueType # 29 - """ - Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor - """ - MAX30102: _TelemetrySensorType.ValueType # 30 - """ - MAX30102 Pulse Oximeter and Heart-Rate Sensor - """ - MLX90614: _TelemetrySensorType.ValueType # 31 - """ - MLX90614 non-contact IR temperature sensor - """ - SCD4X: _TelemetrySensorType.ValueType # 32 - """ - SCD40/SCD41 CO2, humidity, temperature sensor - """ - RADSENS: _TelemetrySensorType.ValueType # 33 - """ - ClimateGuard RadSens, radiation, Geiger-Muller Tube - """ - INA226: _TelemetrySensorType.ValueType # 34 - """ - High accuracy current and voltage - """ - DFROBOT_RAIN: _TelemetrySensorType.ValueType # 35 - """ - DFRobot Gravity tipping bucket rain gauge - """ - DPS310: _TelemetrySensorType.ValueType # 36 - """ - Infineon DPS310 High accuracy pressure and temperature - """ - RAK12035: _TelemetrySensorType.ValueType # 37 - """ - RAKWireless RAK12035 Soil Moisture Sensor Module - """ - MAX17261: _TelemetrySensorType.ValueType # 38 - """ - MAX17261 lipo battery gauge - """ - PCT2075: _TelemetrySensorType.ValueType # 39 - """ - PCT2075 Temperature Sensor - """ - ADS1X15: _TelemetrySensorType.ValueType # 40 - """ - ADS1X15 ADC - """ - ADS1X15_ALT: _TelemetrySensorType.ValueType # 41 - """ - ADS1X15 ADC_ALT - """ - SFA30: _TelemetrySensorType.ValueType # 42 - """ - Sensirion SFA30 Formaldehyde sensor - """ - SEN5X: _TelemetrySensorType.ValueType # 43 - """ - SEN5X PM SENSORS - """ - TSL2561: _TelemetrySensorType.ValueType # 44 - """ - TSL2561 light sensor - """ - BH1750: _TelemetrySensorType.ValueType # 45 - """ - BH1750 light sensor - """ +class HealthMetrics(_message.Message): + __slots__ = ["heart_bpm", "spO2", "temperature"] + HEART_BPM_FIELD_NUMBER: _ClassVar[int] + SPO2_FIELD_NUMBER: _ClassVar[int] + TEMPERATURE_FIELD_NUMBER: _ClassVar[int] + heart_bpm: int + spO2: int + temperature: float + def __init__(self, heart_bpm: _Optional[int] = ..., spO2: _Optional[int] = ..., temperature: _Optional[float] = ...) -> None: ... -class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper): - """ - Supported I2C Sensors for telemetry in Meshtastic - """ +class HostMetrics(_message.Message): + __slots__ = ["diskfree1_bytes", "diskfree2_bytes", "diskfree3_bytes", "freemem_bytes", "load1", "load15", "load5", "uptime_seconds", "user_string"] + DISKFREE1_BYTES_FIELD_NUMBER: _ClassVar[int] + DISKFREE2_BYTES_FIELD_NUMBER: _ClassVar[int] + DISKFREE3_BYTES_FIELD_NUMBER: _ClassVar[int] + FREEMEM_BYTES_FIELD_NUMBER: _ClassVar[int] + LOAD15_FIELD_NUMBER: _ClassVar[int] + LOAD1_FIELD_NUMBER: _ClassVar[int] + LOAD5_FIELD_NUMBER: _ClassVar[int] + UPTIME_SECONDS_FIELD_NUMBER: _ClassVar[int] + USER_STRING_FIELD_NUMBER: _ClassVar[int] + diskfree1_bytes: int + diskfree2_bytes: int + diskfree3_bytes: int + freemem_bytes: int + load1: int + load15: int + load5: int + uptime_seconds: int + user_string: str + def __init__(self, uptime_seconds: _Optional[int] = ..., freemem_bytes: _Optional[int] = ..., diskfree1_bytes: _Optional[int] = ..., diskfree2_bytes: _Optional[int] = ..., diskfree3_bytes: _Optional[int] = ..., load1: _Optional[int] = ..., load5: _Optional[int] = ..., load15: _Optional[int] = ..., user_string: _Optional[str] = ...) -> None: ... -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) -""" -NAU7802: TelemetrySensorType.ValueType # 25 -""" -NAU7802 Scale Chip or compatible -""" -BMP3XX: TelemetrySensorType.ValueType # 26 -""" -BMP3XX High accuracy temperature and pressure -""" -ICM20948: TelemetrySensorType.ValueType # 27 -""" -ICM-20948 9-Axis digital motion processor -""" -MAX17048: TelemetrySensorType.ValueType # 28 -""" -MAX17048 1S lipo battery sensor (voltage, state of charge, time to go) -""" -CUSTOM_SENSOR: TelemetrySensorType.ValueType # 29 -""" -Custom I2C sensor implementation based on https://github.com/meshtastic/i2c-sensor -""" -MAX30102: TelemetrySensorType.ValueType # 30 -""" -MAX30102 Pulse Oximeter and Heart-Rate Sensor -""" -MLX90614: TelemetrySensorType.ValueType # 31 -""" -MLX90614 non-contact IR temperature sensor -""" -SCD4X: TelemetrySensorType.ValueType # 32 -""" -SCD40/SCD41 CO2, humidity, temperature sensor -""" -RADSENS: TelemetrySensorType.ValueType # 33 -""" -ClimateGuard RadSens, radiation, Geiger-Muller Tube -""" -INA226: TelemetrySensorType.ValueType # 34 -""" -High accuracy current and voltage -""" -DFROBOT_RAIN: TelemetrySensorType.ValueType # 35 -""" -DFRobot Gravity tipping bucket rain gauge -""" -DPS310: TelemetrySensorType.ValueType # 36 -""" -Infineon DPS310 High accuracy pressure and temperature -""" -RAK12035: TelemetrySensorType.ValueType # 37 -""" -RAKWireless RAK12035 Soil Moisture Sensor Module -""" -MAX17261: TelemetrySensorType.ValueType # 38 -""" -MAX17261 lipo battery gauge -""" -PCT2075: TelemetrySensorType.ValueType # 39 -""" -PCT2075 Temperature Sensor -""" -ADS1X15: TelemetrySensorType.ValueType # 40 -""" -ADS1X15 ADC -""" -ADS1X15_ALT: TelemetrySensorType.ValueType # 41 -""" -ADS1X15 ADC_ALT -""" -SFA30: TelemetrySensorType.ValueType # 42 -""" -Sensirion SFA30 Formaldehyde sensor -""" -SEN5X: TelemetrySensorType.ValueType # 43 -""" -SEN5X PM SENSORS -""" -TSL2561: TelemetrySensorType.ValueType # 44 -""" -TSL2561 light sensor -""" -BH1750: TelemetrySensorType.ValueType # 45 -""" -BH1750 light sensor -""" -global___TelemetrySensorType = TelemetrySensorType +class LocalStats(_message.Message): + __slots__ = ["air_util_tx", "channel_utilization", "heap_free_bytes", "heap_total_bytes", "noise_floor", "num_online_nodes", "num_packets_rx", "num_packets_rx_bad", "num_packets_tx", "num_rx_dupe", "num_total_nodes", "num_tx_dropped", "num_tx_relay", "num_tx_relay_canceled", "uptime_seconds"] + AIR_UTIL_TX_FIELD_NUMBER: _ClassVar[int] + CHANNEL_UTILIZATION_FIELD_NUMBER: _ClassVar[int] + HEAP_FREE_BYTES_FIELD_NUMBER: _ClassVar[int] + HEAP_TOTAL_BYTES_FIELD_NUMBER: _ClassVar[int] + NOISE_FLOOR_FIELD_NUMBER: _ClassVar[int] + NUM_ONLINE_NODES_FIELD_NUMBER: _ClassVar[int] + NUM_PACKETS_RX_BAD_FIELD_NUMBER: _ClassVar[int] + NUM_PACKETS_RX_FIELD_NUMBER: _ClassVar[int] + NUM_PACKETS_TX_FIELD_NUMBER: _ClassVar[int] + NUM_RX_DUPE_FIELD_NUMBER: _ClassVar[int] + NUM_TOTAL_NODES_FIELD_NUMBER: _ClassVar[int] + NUM_TX_DROPPED_FIELD_NUMBER: _ClassVar[int] + NUM_TX_RELAY_CANCELED_FIELD_NUMBER: _ClassVar[int] + NUM_TX_RELAY_FIELD_NUMBER: _ClassVar[int] + UPTIME_SECONDS_FIELD_NUMBER: _ClassVar[int] + air_util_tx: float + channel_utilization: float + heap_free_bytes: int + heap_total_bytes: int + noise_floor: int + num_online_nodes: int + num_packets_rx: int + num_packets_rx_bad: int + num_packets_tx: int + num_rx_dupe: int + num_total_nodes: int + num_tx_dropped: int + num_tx_relay: int + num_tx_relay_canceled: int + uptime_seconds: int + def __init__(self, uptime_seconds: _Optional[int] = ..., channel_utilization: _Optional[float] = ..., air_util_tx: _Optional[float] = ..., num_packets_tx: _Optional[int] = ..., num_packets_rx: _Optional[int] = ..., num_packets_rx_bad: _Optional[int] = ..., num_online_nodes: _Optional[int] = ..., num_total_nodes: _Optional[int] = ..., num_rx_dupe: _Optional[int] = ..., num_tx_relay: _Optional[int] = ..., num_tx_relay_canceled: _Optional[int] = ..., heap_total_bytes: _Optional[int] = ..., heap_free_bytes: _Optional[int] = ..., num_tx_dropped: _Optional[int] = ..., noise_floor: _Optional[int] = ...) -> None: ... -@typing.final -class DeviceMetrics(google.protobuf.message.Message): - """ - Key native device metrics such as battery level - """ +class Nau7802Config(_message.Message): + __slots__ = ["calibrationFactor", "zeroOffset"] + CALIBRATIONFACTOR_FIELD_NUMBER: _ClassVar[int] + ZEROOFFSET_FIELD_NUMBER: _ClassVar[int] + calibrationFactor: float + zeroOffset: int + def __init__(self, zeroOffset: _Optional[int] = ..., calibrationFactor: _Optional[float] = ...) -> None: ... - DESCRIPTOR: google.protobuf.descriptor.Descriptor +class PowerMetrics(_message.Message): + __slots__ = ["ch1_current", "ch1_voltage", "ch2_current", "ch2_voltage", "ch3_current", "ch3_voltage", "ch4_current", "ch4_voltage", "ch5_current", "ch5_voltage", "ch6_current", "ch6_voltage", "ch7_current", "ch7_voltage", "ch8_current", "ch8_voltage"] + CH1_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH1_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH2_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH2_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH3_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH3_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH4_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH4_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH5_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH5_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH6_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH6_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH7_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH7_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + CH8_CURRENT_FIELD_NUMBER: _ClassVar[int] + CH8_VOLTAGE_FIELD_NUMBER: _ClassVar[int] + ch1_current: float + ch1_voltage: float + ch2_current: float + ch2_voltage: float + ch3_current: float + ch3_voltage: float + ch4_current: float + ch4_voltage: float + ch5_current: float + ch5_voltage: float + ch6_current: float + ch6_voltage: float + ch7_current: float + ch7_voltage: float + ch8_current: float + ch8_voltage: float + def __init__(self, ch1_voltage: _Optional[float] = ..., ch1_current: _Optional[float] = ..., ch2_voltage: _Optional[float] = ..., ch2_current: _Optional[float] = ..., ch3_voltage: _Optional[float] = ..., ch3_current: _Optional[float] = ..., ch4_voltage: _Optional[float] = ..., ch4_current: _Optional[float] = ..., ch5_voltage: _Optional[float] = ..., ch5_current: _Optional[float] = ..., ch6_voltage: _Optional[float] = ..., ch6_current: _Optional[float] = ..., ch7_voltage: _Optional[float] = ..., ch7_current: _Optional[float] = ..., ch8_voltage: _Optional[float] = ..., ch8_current: _Optional[float] = ...) -> None: ... - 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 | None = ..., - voltage: builtins.float | None = ..., - channel_utilization: builtins.float | None = ..., - air_util_tx: builtins.float | None = ..., - uptime_seconds: builtins.int | None = ..., - ) -> None: ... - def HasField(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", "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"]) -> builtins.bool: ... - 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", "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: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_air_util_tx", b"_air_util_tx"]) -> typing.Literal["air_util_tx"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_battery_level", b"_battery_level"]) -> typing.Literal["battery_level"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_channel_utilization", b"_channel_utilization"]) -> typing.Literal["channel_utilization"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_uptime_seconds", b"_uptime_seconds"]) -> typing.Literal["uptime_seconds"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_voltage", b"_voltage"]) -> typing.Literal["voltage"] | None: ... +class SEN5XState(_message.Message): + __slots__ = ["last_cleaning_time", "last_cleaning_valid", "one_shot_mode", "voc_state_array", "voc_state_time", "voc_state_valid"] + LAST_CLEANING_TIME_FIELD_NUMBER: _ClassVar[int] + LAST_CLEANING_VALID_FIELD_NUMBER: _ClassVar[int] + ONE_SHOT_MODE_FIELD_NUMBER: _ClassVar[int] + VOC_STATE_ARRAY_FIELD_NUMBER: _ClassVar[int] + VOC_STATE_TIME_FIELD_NUMBER: _ClassVar[int] + VOC_STATE_VALID_FIELD_NUMBER: _ClassVar[int] + last_cleaning_time: int + last_cleaning_valid: bool + one_shot_mode: bool + voc_state_array: int + voc_state_time: int + voc_state_valid: bool + def __init__(self, last_cleaning_time: _Optional[int] = ..., last_cleaning_valid: bool = ..., one_shot_mode: bool = ..., voc_state_time: _Optional[int] = ..., voc_state_valid: bool = ..., voc_state_array: _Optional[int] = ...) -> None: ... -global___DeviceMetrics = DeviceMetrics +class Telemetry(_message.Message): + __slots__ = ["air_quality_metrics", "device_metrics", "environment_metrics", "health_metrics", "host_metrics", "local_stats", "power_metrics", "time", "traffic_management_stats"] + AIR_QUALITY_METRICS_FIELD_NUMBER: _ClassVar[int] + DEVICE_METRICS_FIELD_NUMBER: _ClassVar[int] + ENVIRONMENT_METRICS_FIELD_NUMBER: _ClassVar[int] + HEALTH_METRICS_FIELD_NUMBER: _ClassVar[int] + HOST_METRICS_FIELD_NUMBER: _ClassVar[int] + LOCAL_STATS_FIELD_NUMBER: _ClassVar[int] + POWER_METRICS_FIELD_NUMBER: _ClassVar[int] + TIME_FIELD_NUMBER: _ClassVar[int] + TRAFFIC_MANAGEMENT_STATS_FIELD_NUMBER: _ClassVar[int] + air_quality_metrics: AirQualityMetrics + device_metrics: DeviceMetrics + environment_metrics: EnvironmentMetrics + health_metrics: HealthMetrics + host_metrics: HostMetrics + local_stats: LocalStats + power_metrics: PowerMetrics + time: int + traffic_management_stats: TrafficManagementStats + def __init__(self, time: _Optional[int] = ..., device_metrics: _Optional[_Union[DeviceMetrics, _Mapping]] = ..., environment_metrics: _Optional[_Union[EnvironmentMetrics, _Mapping]] = ..., air_quality_metrics: _Optional[_Union[AirQualityMetrics, _Mapping]] = ..., power_metrics: _Optional[_Union[PowerMetrics, _Mapping]] = ..., local_stats: _Optional[_Union[LocalStats, _Mapping]] = ..., health_metrics: _Optional[_Union[HealthMetrics, _Mapping]] = ..., host_metrics: _Optional[_Union[HostMetrics, _Mapping]] = ..., traffic_management_stats: _Optional[_Union[TrafficManagementStats, _Mapping]] = ...) -> None: ... -@typing.final -class EnvironmentMetrics(google.protobuf.message.Message): - """ - Weather station or other environmental metrics - """ +class TrafficManagementStats(_message.Message): + __slots__ = ["hop_exhausted_packets", "nodeinfo_cache_hits", "packets_inspected", "position_dedup_drops", "rate_limit_drops", "router_hops_preserved", "unknown_packet_drops"] + HOP_EXHAUSTED_PACKETS_FIELD_NUMBER: _ClassVar[int] + NODEINFO_CACHE_HITS_FIELD_NUMBER: _ClassVar[int] + PACKETS_INSPECTED_FIELD_NUMBER: _ClassVar[int] + POSITION_DEDUP_DROPS_FIELD_NUMBER: _ClassVar[int] + RATE_LIMIT_DROPS_FIELD_NUMBER: _ClassVar[int] + ROUTER_HOPS_PRESERVED_FIELD_NUMBER: _ClassVar[int] + UNKNOWN_PACKET_DROPS_FIELD_NUMBER: _ClassVar[int] + hop_exhausted_packets: int + nodeinfo_cache_hits: int + packets_inspected: int + position_dedup_drops: int + rate_limit_drops: int + router_hops_preserved: int + unknown_packet_drops: int + def __init__(self, packets_inspected: _Optional[int] = ..., position_dedup_drops: _Optional[int] = ..., nodeinfo_cache_hits: _Optional[int] = ..., rate_limit_drops: _Optional[int] = ..., unknown_packet_drops: _Optional[int] = ..., hop_exhausted_packets: _Optional[int] = ..., router_hops_preserved: _Optional[int] = ...) -> None: ... - 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 - WEIGHT_FIELD_NUMBER: builtins.int - WIND_GUST_FIELD_NUMBER: builtins.int - WIND_LULL_FIELD_NUMBER: builtins.int - RADIATION_FIELD_NUMBER: builtins.int - RAINFALL_1H_FIELD_NUMBER: builtins.int - RAINFALL_24H_FIELD_NUMBER: builtins.int - SOIL_MOISTURE_FIELD_NUMBER: builtins.int - SOIL_TEMPERATURE_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 - """ - weight: builtins.float - """ - Weight in KG - """ - wind_gust: builtins.float - """ - Wind gust in m/s - """ - wind_lull: builtins.float - """ - Wind lull in m/s - """ - radiation: builtins.float - """ - Radiation in µR/h - """ - rainfall_1h: builtins.float - """ - Rainfall in the last hour in mm - """ - rainfall_24h: builtins.float - """ - Rainfall in the last 24 hours in mm - """ - soil_moisture: builtins.int - """ - Soil moisture measured (% 1-100) - """ - soil_temperature: builtins.float - """ - Soil temperature measured (*C) - """ - def __init__( - self, - *, - temperature: builtins.float | None = ..., - relative_humidity: builtins.float | None = ..., - barometric_pressure: builtins.float | None = ..., - gas_resistance: builtins.float | None = ..., - voltage: builtins.float | None = ..., - current: builtins.float | None = ..., - iaq: builtins.int | None = ..., - distance: builtins.float | None = ..., - lux: builtins.float | None = ..., - white_lux: builtins.float | None = ..., - ir_lux: builtins.float | None = ..., - uv_lux: builtins.float | None = ..., - wind_direction: builtins.int | None = ..., - wind_speed: builtins.float | None = ..., - weight: builtins.float | None = ..., - wind_gust: builtins.float | None = ..., - wind_lull: builtins.float | None = ..., - radiation: builtins.float | None = ..., - rainfall_1h: builtins.float | None = ..., - rainfall_24h: builtins.float | None = ..., - soil_moisture: builtins.int | None = ..., - soil_temperature: builtins.float | None = ..., - ) -> None: ... - def HasField(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", "_radiation", b"_radiation", "_rainfall_1h", b"_rainfall_1h", "_rainfall_24h", b"_rainfall_24h", "_relative_humidity", b"_relative_humidity", "_soil_moisture", b"_soil_moisture", "_soil_temperature", b"_soil_temperature", "_temperature", b"_temperature", "_uv_lux", b"_uv_lux", "_voltage", b"_voltage", "_weight", b"_weight", "_white_lux", b"_white_lux", "_wind_direction", b"_wind_direction", "_wind_gust", b"_wind_gust", "_wind_lull", b"_wind_lull", "_wind_speed", b"_wind_speed", "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", "radiation", b"radiation", "rainfall_1h", b"rainfall_1h", "rainfall_24h", b"rainfall_24h", "relative_humidity", b"relative_humidity", "soil_moisture", b"soil_moisture", "soil_temperature", b"soil_temperature", "temperature", b"temperature", "uv_lux", b"uv_lux", "voltage", b"voltage", "weight", b"weight", "white_lux", b"white_lux", "wind_direction", b"wind_direction", "wind_gust", b"wind_gust", "wind_lull", b"wind_lull", "wind_speed", b"wind_speed"]) -> builtins.bool: ... - 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", "_radiation", b"_radiation", "_rainfall_1h", b"_rainfall_1h", "_rainfall_24h", b"_rainfall_24h", "_relative_humidity", b"_relative_humidity", "_soil_moisture", b"_soil_moisture", "_soil_temperature", b"_soil_temperature", "_temperature", b"_temperature", "_uv_lux", b"_uv_lux", "_voltage", b"_voltage", "_weight", b"_weight", "_white_lux", b"_white_lux", "_wind_direction", b"_wind_direction", "_wind_gust", b"_wind_gust", "_wind_lull", b"_wind_lull", "_wind_speed", b"_wind_speed", "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", "radiation", b"radiation", "rainfall_1h", b"rainfall_1h", "rainfall_24h", b"rainfall_24h", "relative_humidity", b"relative_humidity", "soil_moisture", b"soil_moisture", "soil_temperature", b"soil_temperature", "temperature", b"temperature", "uv_lux", b"uv_lux", "voltage", b"voltage", "weight", b"weight", "white_lux", b"white_lux", "wind_direction", b"wind_direction", "wind_gust", b"wind_gust", "wind_lull", b"wind_lull", "wind_speed", b"wind_speed"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_barometric_pressure", b"_barometric_pressure"]) -> typing.Literal["barometric_pressure"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_current", b"_current"]) -> typing.Literal["current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_distance", b"_distance"]) -> typing.Literal["distance"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_gas_resistance", b"_gas_resistance"]) -> typing.Literal["gas_resistance"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_iaq", b"_iaq"]) -> typing.Literal["iaq"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ir_lux", b"_ir_lux"]) -> typing.Literal["ir_lux"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_lux", b"_lux"]) -> typing.Literal["lux"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_radiation", b"_radiation"]) -> typing.Literal["radiation"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_rainfall_1h", b"_rainfall_1h"]) -> typing.Literal["rainfall_1h"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_rainfall_24h", b"_rainfall_24h"]) -> typing.Literal["rainfall_24h"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_relative_humidity", b"_relative_humidity"]) -> typing.Literal["relative_humidity"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_soil_moisture", b"_soil_moisture"]) -> typing.Literal["soil_moisture"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_soil_temperature", b"_soil_temperature"]) -> typing.Literal["soil_temperature"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_temperature", b"_temperature"]) -> typing.Literal["temperature"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_uv_lux", b"_uv_lux"]) -> typing.Literal["uv_lux"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_voltage", b"_voltage"]) -> typing.Literal["voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_weight", b"_weight"]) -> typing.Literal["weight"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_white_lux", b"_white_lux"]) -> typing.Literal["white_lux"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_wind_direction", b"_wind_direction"]) -> typing.Literal["wind_direction"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_wind_gust", b"_wind_gust"]) -> typing.Literal["wind_gust"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_wind_lull", b"_wind_lull"]) -> typing.Literal["wind_lull"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_wind_speed", b"_wind_speed"]) -> typing.Literal["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 - CH4_VOLTAGE_FIELD_NUMBER: builtins.int - CH4_CURRENT_FIELD_NUMBER: builtins.int - CH5_VOLTAGE_FIELD_NUMBER: builtins.int - CH5_CURRENT_FIELD_NUMBER: builtins.int - CH6_VOLTAGE_FIELD_NUMBER: builtins.int - CH6_CURRENT_FIELD_NUMBER: builtins.int - CH7_VOLTAGE_FIELD_NUMBER: builtins.int - CH7_CURRENT_FIELD_NUMBER: builtins.int - CH8_VOLTAGE_FIELD_NUMBER: builtins.int - CH8_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) - """ - ch4_voltage: builtins.float - """ - Voltage (Ch4) - """ - ch4_current: builtins.float - """ - Current (Ch4) - """ - ch5_voltage: builtins.float - """ - Voltage (Ch5) - """ - ch5_current: builtins.float - """ - Current (Ch5) - """ - ch6_voltage: builtins.float - """ - Voltage (Ch6) - """ - ch6_current: builtins.float - """ - Current (Ch6) - """ - ch7_voltage: builtins.float - """ - Voltage (Ch7) - """ - ch7_current: builtins.float - """ - Current (Ch7) - """ - ch8_voltage: builtins.float - """ - Voltage (Ch8) - """ - ch8_current: builtins.float - """ - Current (Ch8) - """ - def __init__( - self, - *, - ch1_voltage: builtins.float | None = ..., - ch1_current: builtins.float | None = ..., - ch2_voltage: builtins.float | None = ..., - ch2_current: builtins.float | None = ..., - ch3_voltage: builtins.float | None = ..., - ch3_current: builtins.float | None = ..., - ch4_voltage: builtins.float | None = ..., - ch4_current: builtins.float | None = ..., - ch5_voltage: builtins.float | None = ..., - ch5_current: builtins.float | None = ..., - ch6_voltage: builtins.float | None = ..., - ch6_current: builtins.float | None = ..., - ch7_voltage: builtins.float | None = ..., - ch7_current: builtins.float | None = ..., - ch8_voltage: builtins.float | None = ..., - ch8_current: builtins.float | None = ..., - ) -> None: ... - def HasField(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", "_ch4_current", b"_ch4_current", "_ch4_voltage", b"_ch4_voltage", "_ch5_current", b"_ch5_current", "_ch5_voltage", b"_ch5_voltage", "_ch6_current", b"_ch6_current", "_ch6_voltage", b"_ch6_voltage", "_ch7_current", b"_ch7_current", "_ch7_voltage", b"_ch7_voltage", "_ch8_current", b"_ch8_current", "_ch8_voltage", b"_ch8_voltage", "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", "ch4_current", b"ch4_current", "ch4_voltage", b"ch4_voltage", "ch5_current", b"ch5_current", "ch5_voltage", b"ch5_voltage", "ch6_current", b"ch6_current", "ch6_voltage", b"ch6_voltage", "ch7_current", b"ch7_current", "ch7_voltage", b"ch7_voltage", "ch8_current", b"ch8_current", "ch8_voltage", b"ch8_voltage"]) -> builtins.bool: ... - 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", "_ch4_current", b"_ch4_current", "_ch4_voltage", b"_ch4_voltage", "_ch5_current", b"_ch5_current", "_ch5_voltage", b"_ch5_voltage", "_ch6_current", b"_ch6_current", "_ch6_voltage", b"_ch6_voltage", "_ch7_current", b"_ch7_current", "_ch7_voltage", b"_ch7_voltage", "_ch8_current", b"_ch8_current", "_ch8_voltage", b"_ch8_voltage", "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", "ch4_current", b"ch4_current", "ch4_voltage", b"ch4_voltage", "ch5_current", b"ch5_current", "ch5_voltage", b"ch5_voltage", "ch6_current", b"ch6_current", "ch6_voltage", b"ch6_voltage", "ch7_current", b"ch7_current", "ch7_voltage", b"ch7_voltage", "ch8_current", b"ch8_current", "ch8_voltage", b"ch8_voltage"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch1_current", b"_ch1_current"]) -> typing.Literal["ch1_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch1_voltage", b"_ch1_voltage"]) -> typing.Literal["ch1_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch2_current", b"_ch2_current"]) -> typing.Literal["ch2_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch2_voltage", b"_ch2_voltage"]) -> typing.Literal["ch2_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch3_current", b"_ch3_current"]) -> typing.Literal["ch3_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch3_voltage", b"_ch3_voltage"]) -> typing.Literal["ch3_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch4_current", b"_ch4_current"]) -> typing.Literal["ch4_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch4_voltage", b"_ch4_voltage"]) -> typing.Literal["ch4_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch5_current", b"_ch5_current"]) -> typing.Literal["ch5_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch5_voltage", b"_ch5_voltage"]) -> typing.Literal["ch5_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch6_current", b"_ch6_current"]) -> typing.Literal["ch6_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch6_voltage", b"_ch6_voltage"]) -> typing.Literal["ch6_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch7_current", b"_ch7_current"]) -> typing.Literal["ch7_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch7_voltage", b"_ch7_voltage"]) -> typing.Literal["ch7_voltage"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch8_current", b"_ch8_current"]) -> typing.Literal["ch8_current"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_ch8_voltage", b"_ch8_voltage"]) -> typing.Literal["ch8_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 - CO2_FIELD_NUMBER: builtins.int - CO2_TEMPERATURE_FIELD_NUMBER: builtins.int - CO2_HUMIDITY_FIELD_NUMBER: builtins.int - FORM_FORMALDEHYDE_FIELD_NUMBER: builtins.int - FORM_HUMIDITY_FIELD_NUMBER: builtins.int - FORM_TEMPERATURE_FIELD_NUMBER: builtins.int - PM40_STANDARD_FIELD_NUMBER: builtins.int - PARTICLES_40UM_FIELD_NUMBER: builtins.int - PM_TEMPERATURE_FIELD_NUMBER: builtins.int - PM_HUMIDITY_FIELD_NUMBER: builtins.int - PM_VOC_IDX_FIELD_NUMBER: builtins.int - PM_NOX_IDX_FIELD_NUMBER: builtins.int - PARTICLES_TPS_FIELD_NUMBER: builtins.int - pm10_standard: builtins.int - """ - Concentration Units Standard PM1.0 in ug/m3 - """ - pm25_standard: builtins.int - """ - Concentration Units Standard PM2.5 in ug/m3 - """ - pm100_standard: builtins.int - """ - Concentration Units Standard PM10.0 in ug/m3 - """ - pm10_environmental: builtins.int - """ - Concentration Units Environmental PM1.0 in ug/m3 - """ - pm25_environmental: builtins.int - """ - Concentration Units Environmental PM2.5 in ug/m3 - """ - pm100_environmental: builtins.int - """ - Concentration Units Environmental PM10.0 in ug/m3 - """ - particles_03um: builtins.int - """ - 0.3um Particle Count in #/0.1l - """ - particles_05um: builtins.int - """ - 0.5um Particle Count in #/0.1l - """ - particles_10um: builtins.int - """ - 1.0um Particle Count in #/0.1l - """ - particles_25um: builtins.int - """ - 2.5um Particle Count in #/0.1l - """ - particles_50um: builtins.int - """ - 5.0um Particle Count in #/0.1l - """ - particles_100um: builtins.int - """ - 10.0um Particle Count in #/0.1l - """ - co2: builtins.int - """ - CO2 concentration in ppm - """ - co2_temperature: builtins.float - """ - CO2 sensor temperature in degC - """ - co2_humidity: builtins.float - """ - CO2 sensor relative humidity in % - """ - form_formaldehyde: builtins.float - """ - Formaldehyde sensor formaldehyde concentration in ppb - """ - form_humidity: builtins.float - """ - Formaldehyde sensor relative humidity in %RH - """ - form_temperature: builtins.float - """ - Formaldehyde sensor temperature in degrees Celsius - """ - pm40_standard: builtins.int - """ - Concentration Units Standard PM4.0 in ug/m3 - """ - particles_40um: builtins.int - """ - 4.0um Particle Count in #/0.1l - """ - pm_temperature: builtins.float - """ - PM Sensor Temperature - """ - pm_humidity: builtins.float - """ - PM Sensor humidity - """ - pm_voc_idx: builtins.float - """ - PM Sensor VOC Index - """ - pm_nox_idx: builtins.float - """ - PM Sensor NOx Index - """ - particles_tps: builtins.float - """ - Typical Particle Size in um - """ - def __init__( - self, - *, - pm10_standard: builtins.int | None = ..., - pm25_standard: builtins.int | None = ..., - pm100_standard: builtins.int | None = ..., - pm10_environmental: builtins.int | None = ..., - pm25_environmental: builtins.int | None = ..., - pm100_environmental: builtins.int | None = ..., - particles_03um: builtins.int | None = ..., - particles_05um: builtins.int | None = ..., - particles_10um: builtins.int | None = ..., - particles_25um: builtins.int | None = ..., - particles_50um: builtins.int | None = ..., - particles_100um: builtins.int | None = ..., - co2: builtins.int | None = ..., - co2_temperature: builtins.float | None = ..., - co2_humidity: builtins.float | None = ..., - form_formaldehyde: builtins.float | None = ..., - form_humidity: builtins.float | None = ..., - form_temperature: builtins.float | None = ..., - pm40_standard: builtins.int | None = ..., - particles_40um: builtins.int | None = ..., - pm_temperature: builtins.float | None = ..., - pm_humidity: builtins.float | None = ..., - pm_voc_idx: builtins.float | None = ..., - pm_nox_idx: builtins.float | None = ..., - particles_tps: builtins.float | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_co2", b"_co2", "_co2_humidity", b"_co2_humidity", "_co2_temperature", b"_co2_temperature", "_form_formaldehyde", b"_form_formaldehyde", "_form_humidity", b"_form_humidity", "_form_temperature", b"_form_temperature", "_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_40um", b"_particles_40um", "_particles_50um", b"_particles_50um", "_particles_tps", b"_particles_tps", "_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", "_pm40_standard", b"_pm40_standard", "_pm_humidity", b"_pm_humidity", "_pm_nox_idx", b"_pm_nox_idx", "_pm_temperature", b"_pm_temperature", "_pm_voc_idx", b"_pm_voc_idx", "co2", b"co2", "co2_humidity", b"co2_humidity", "co2_temperature", b"co2_temperature", "form_formaldehyde", b"form_formaldehyde", "form_humidity", b"form_humidity", "form_temperature", b"form_temperature", "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_40um", b"particles_40um", "particles_50um", b"particles_50um", "particles_tps", b"particles_tps", "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", "pm40_standard", b"pm40_standard", "pm_humidity", b"pm_humidity", "pm_nox_idx", b"pm_nox_idx", "pm_temperature", b"pm_temperature", "pm_voc_idx", b"pm_voc_idx"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_co2", b"_co2", "_co2_humidity", b"_co2_humidity", "_co2_temperature", b"_co2_temperature", "_form_formaldehyde", b"_form_formaldehyde", "_form_humidity", b"_form_humidity", "_form_temperature", b"_form_temperature", "_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_40um", b"_particles_40um", "_particles_50um", b"_particles_50um", "_particles_tps", b"_particles_tps", "_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", "_pm40_standard", b"_pm40_standard", "_pm_humidity", b"_pm_humidity", "_pm_nox_idx", b"_pm_nox_idx", "_pm_temperature", b"_pm_temperature", "_pm_voc_idx", b"_pm_voc_idx", "co2", b"co2", "co2_humidity", b"co2_humidity", "co2_temperature", b"co2_temperature", "form_formaldehyde", b"form_formaldehyde", "form_humidity", b"form_humidity", "form_temperature", b"form_temperature", "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_40um", b"particles_40um", "particles_50um", b"particles_50um", "particles_tps", b"particles_tps", "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", "pm40_standard", b"pm40_standard", "pm_humidity", b"pm_humidity", "pm_nox_idx", b"pm_nox_idx", "pm_temperature", b"pm_temperature", "pm_voc_idx", b"pm_voc_idx"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_co2", b"_co2"]) -> typing.Literal["co2"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_co2_humidity", b"_co2_humidity"]) -> typing.Literal["co2_humidity"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_co2_temperature", b"_co2_temperature"]) -> typing.Literal["co2_temperature"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_form_formaldehyde", b"_form_formaldehyde"]) -> typing.Literal["form_formaldehyde"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_form_humidity", b"_form_humidity"]) -> typing.Literal["form_humidity"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_form_temperature", b"_form_temperature"]) -> typing.Literal["form_temperature"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_03um", b"_particles_03um"]) -> typing.Literal["particles_03um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_05um", b"_particles_05um"]) -> typing.Literal["particles_05um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_100um", b"_particles_100um"]) -> typing.Literal["particles_100um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_10um", b"_particles_10um"]) -> typing.Literal["particles_10um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_25um", b"_particles_25um"]) -> typing.Literal["particles_25um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_40um", b"_particles_40um"]) -> typing.Literal["particles_40um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_50um", b"_particles_50um"]) -> typing.Literal["particles_50um"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_particles_tps", b"_particles_tps"]) -> typing.Literal["particles_tps"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm100_environmental", b"_pm100_environmental"]) -> typing.Literal["pm100_environmental"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm100_standard", b"_pm100_standard"]) -> typing.Literal["pm100_standard"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm10_environmental", b"_pm10_environmental"]) -> typing.Literal["pm10_environmental"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm10_standard", b"_pm10_standard"]) -> typing.Literal["pm10_standard"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm25_environmental", b"_pm25_environmental"]) -> typing.Literal["pm25_environmental"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm25_standard", b"_pm25_standard"]) -> typing.Literal["pm25_standard"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm40_standard", b"_pm40_standard"]) -> typing.Literal["pm40_standard"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm_humidity", b"_pm_humidity"]) -> typing.Literal["pm_humidity"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm_nox_idx", b"_pm_nox_idx"]) -> typing.Literal["pm_nox_idx"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm_temperature", b"_pm_temperature"]) -> typing.Literal["pm_temperature"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_pm_voc_idx", b"_pm_voc_idx"]) -> typing.Literal["pm_voc_idx"] | None: ... - -global___AirQualityMetrics = AirQualityMetrics - -@typing.final -class LocalStats(google.protobuf.message.Message): - """ - Local device mesh statistics - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - UPTIME_SECONDS_FIELD_NUMBER: builtins.int - CHANNEL_UTILIZATION_FIELD_NUMBER: builtins.int - AIR_UTIL_TX_FIELD_NUMBER: builtins.int - NUM_PACKETS_TX_FIELD_NUMBER: builtins.int - NUM_PACKETS_RX_FIELD_NUMBER: builtins.int - NUM_PACKETS_RX_BAD_FIELD_NUMBER: builtins.int - NUM_ONLINE_NODES_FIELD_NUMBER: builtins.int - NUM_TOTAL_NODES_FIELD_NUMBER: builtins.int - NUM_RX_DUPE_FIELD_NUMBER: builtins.int - NUM_TX_RELAY_FIELD_NUMBER: builtins.int - NUM_TX_RELAY_CANCELED_FIELD_NUMBER: builtins.int - HEAP_TOTAL_BYTES_FIELD_NUMBER: builtins.int - HEAP_FREE_BYTES_FIELD_NUMBER: builtins.int - NUM_TX_DROPPED_FIELD_NUMBER: builtins.int - uptime_seconds: builtins.int - """ - How long the device has been running since the last reboot (in seconds) - """ - 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. - """ - num_packets_tx: builtins.int - """ - Number of packets sent - """ - num_packets_rx: builtins.int - """ - Number of packets received (both good and bad) - """ - num_packets_rx_bad: builtins.int - """ - Number of packets received that are malformed or violate the protocol - """ - num_online_nodes: builtins.int - """ - Number of nodes online (in the past 2 hours) - """ - num_total_nodes: builtins.int - """ - Number of nodes total - """ - num_rx_dupe: builtins.int - """ - Number of received packets that were duplicates (due to multiple nodes relaying). - If this number is high, there are nodes in the mesh relaying packets when it's unnecessary, for example due to the ROUTER/REPEATER role. - """ - num_tx_relay: builtins.int - """ - Number of packets we transmitted that were a relay for others (not originating from ourselves). - """ - num_tx_relay_canceled: builtins.int - """ - Number of times we canceled a packet to be relayed, because someone else did it before us. - This will always be zero for ROUTERs/REPEATERs. If this number is high, some other node(s) is/are relaying faster than you. - """ - heap_total_bytes: builtins.int - """ - Number of bytes used in the heap - """ - heap_free_bytes: builtins.int - """ - Number of bytes free in the heap - """ - num_tx_dropped: builtins.int - """ - Number of packets that were dropped because the transmit queue was full. - """ - def __init__( - self, - *, - uptime_seconds: builtins.int = ..., - channel_utilization: builtins.float = ..., - air_util_tx: builtins.float = ..., - num_packets_tx: builtins.int = ..., - num_packets_rx: builtins.int = ..., - num_packets_rx_bad: builtins.int = ..., - num_online_nodes: builtins.int = ..., - num_total_nodes: builtins.int = ..., - num_rx_dupe: builtins.int = ..., - num_tx_relay: builtins.int = ..., - num_tx_relay_canceled: builtins.int = ..., - heap_total_bytes: builtins.int = ..., - heap_free_bytes: builtins.int = ..., - num_tx_dropped: builtins.int = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["air_util_tx", b"air_util_tx", "channel_utilization", b"channel_utilization", "heap_free_bytes", b"heap_free_bytes", "heap_total_bytes", b"heap_total_bytes", "num_online_nodes", b"num_online_nodes", "num_packets_rx", b"num_packets_rx", "num_packets_rx_bad", b"num_packets_rx_bad", "num_packets_tx", b"num_packets_tx", "num_rx_dupe", b"num_rx_dupe", "num_total_nodes", b"num_total_nodes", "num_tx_dropped", b"num_tx_dropped", "num_tx_relay", b"num_tx_relay", "num_tx_relay_canceled", b"num_tx_relay_canceled", "uptime_seconds", b"uptime_seconds"]) -> None: ... - -global___LocalStats = LocalStats - -@typing.final -class HealthMetrics(google.protobuf.message.Message): - """ - Health telemetry metrics - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - HEART_BPM_FIELD_NUMBER: builtins.int - SPO2_FIELD_NUMBER: builtins.int - TEMPERATURE_FIELD_NUMBER: builtins.int - heart_bpm: builtins.int - """ - Heart rate (beats per minute) - """ - spO2: builtins.int - """ - SpO2 (blood oxygen saturation) level - """ - temperature: builtins.float - """ - Body temperature in degrees Celsius - """ - def __init__( - self, - *, - heart_bpm: builtins.int | None = ..., - spO2: builtins.int | None = ..., - temperature: builtins.float | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_heart_bpm", b"_heart_bpm", "_spO2", b"_spO2", "_temperature", b"_temperature", "heart_bpm", b"heart_bpm", "spO2", b"spO2", "temperature", b"temperature"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_heart_bpm", b"_heart_bpm", "_spO2", b"_spO2", "_temperature", b"_temperature", "heart_bpm", b"heart_bpm", "spO2", b"spO2", "temperature", b"temperature"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_heart_bpm", b"_heart_bpm"]) -> typing.Literal["heart_bpm"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_spO2", b"_spO2"]) -> typing.Literal["spO2"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_temperature", b"_temperature"]) -> typing.Literal["temperature"] | None: ... - -global___HealthMetrics = HealthMetrics - -@typing.final -class HostMetrics(google.protobuf.message.Message): - """ - Linux host metrics - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - UPTIME_SECONDS_FIELD_NUMBER: builtins.int - FREEMEM_BYTES_FIELD_NUMBER: builtins.int - DISKFREE1_BYTES_FIELD_NUMBER: builtins.int - DISKFREE2_BYTES_FIELD_NUMBER: builtins.int - DISKFREE3_BYTES_FIELD_NUMBER: builtins.int - LOAD1_FIELD_NUMBER: builtins.int - LOAD5_FIELD_NUMBER: builtins.int - LOAD15_FIELD_NUMBER: builtins.int - USER_STRING_FIELD_NUMBER: builtins.int - uptime_seconds: builtins.int - """ - Host system uptime - """ - freemem_bytes: builtins.int - """ - Host system free memory - """ - diskfree1_bytes: builtins.int - """ - Host system disk space free for / - """ - diskfree2_bytes: builtins.int - """ - Secondary system disk space free - """ - diskfree3_bytes: builtins.int - """ - Tertiary disk space free - """ - load1: builtins.int - """ - Host system one minute load in 1/100ths - """ - load5: builtins.int - """ - Host system five minute load in 1/100ths - """ - load15: builtins.int - """ - Host system fifteen minute load in 1/100ths - """ - user_string: builtins.str - """ - Optional User-provided string for arbitrary host system information - that doesn't make sense as a dedicated entry. - """ - def __init__( - self, - *, - uptime_seconds: builtins.int = ..., - freemem_bytes: builtins.int = ..., - diskfree1_bytes: builtins.int = ..., - diskfree2_bytes: builtins.int | None = ..., - diskfree3_bytes: builtins.int | None = ..., - load1: builtins.int = ..., - load5: builtins.int = ..., - load15: builtins.int = ..., - user_string: builtins.str | None = ..., - ) -> None: ... - def HasField(self, field_name: typing.Literal["_diskfree2_bytes", b"_diskfree2_bytes", "_diskfree3_bytes", b"_diskfree3_bytes", "_user_string", b"_user_string", "diskfree2_bytes", b"diskfree2_bytes", "diskfree3_bytes", b"diskfree3_bytes", "user_string", b"user_string"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_diskfree2_bytes", b"_diskfree2_bytes", "_diskfree3_bytes", b"_diskfree3_bytes", "_user_string", b"_user_string", "diskfree1_bytes", b"diskfree1_bytes", "diskfree2_bytes", b"diskfree2_bytes", "diskfree3_bytes", b"diskfree3_bytes", "freemem_bytes", b"freemem_bytes", "load1", b"load1", "load15", b"load15", "load5", b"load5", "uptime_seconds", b"uptime_seconds", "user_string", b"user_string"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_diskfree2_bytes", b"_diskfree2_bytes"]) -> typing.Literal["diskfree2_bytes"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_diskfree3_bytes", b"_diskfree3_bytes"]) -> typing.Literal["diskfree3_bytes"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing.Literal["_user_string", b"_user_string"]) -> typing.Literal["user_string"] | None: ... - -global___HostMetrics = HostMetrics - -@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 - LOCAL_STATS_FIELD_NUMBER: builtins.int - HEALTH_METRICS_FIELD_NUMBER: builtins.int - HOST_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 - """ - - @property - def local_stats(self) -> global___LocalStats: - """ - Local device mesh statistics - """ - - @property - def health_metrics(self) -> global___HealthMetrics: - """ - Health telemetry metrics - """ - - @property - def host_metrics(self) -> global___HostMetrics: - """ - Linux host 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 = ..., - local_stats: global___LocalStats | None = ..., - health_metrics: global___HealthMetrics | None = ..., - host_metrics: global___HostMetrics | 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", "health_metrics", b"health_metrics", "host_metrics", b"host_metrics", "local_stats", b"local_stats", "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", "health_metrics", b"health_metrics", "host_metrics", b"host_metrics", "local_stats", b"local_stats", "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", "local_stats", "health_metrics", "host_metrics"] | None: ... - -global___Telemetry = Telemetry - -@typing.final -class Nau7802Config(google.protobuf.message.Message): - """ - NAU7802 Telemetry configuration, for saving to flash - """ - - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - ZEROOFFSET_FIELD_NUMBER: builtins.int - CALIBRATIONFACTOR_FIELD_NUMBER: builtins.int - zeroOffset: builtins.int - """ - The offset setting for the NAU7802 - """ - calibrationFactor: builtins.float - """ - The calibration factor for the NAU7802 - """ - def __init__( - self, - *, - zeroOffset: builtins.int = ..., - calibrationFactor: builtins.float = ..., - ) -> None: ... - def ClearField(self, field_name: typing.Literal["calibrationFactor", b"calibrationFactor", "zeroOffset", b"zeroOffset"]) -> None: ... - -global___Nau7802Config = Nau7802Config +class TelemetrySensorType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] diff --git a/meshtastic/protobuf/xmodem_pb2.py b/meshtastic/protobuf/xmodem_pb2.py index 3c3dec2..e99048f 100644 --- a/meshtastic/protobuf/xmodem_pb2.py +++ b/meshtastic/protobuf/xmodem_pb2.py @@ -2,10 +2,10 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: meshtastic/protobuf/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 -from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -15,14 +15,14 @@ _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\x62\n\x14org.meshtastic.protoB\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) +_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\024org.meshtastic.protoB\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 + _XMODEM._serialized_start=58 + _XMODEM._serialized_end=249 + _XMODEM_CONTROL._serialized_start=166 + _XMODEM_CONTROL._serialized_end=249 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/xmodem_pb2.pyi b/meshtastic/protobuf/xmodem_pb2.pyi index d362ad0..58ecc7e 100644 --- a/meshtastic/protobuf/xmodem_pb2.pyi +++ b/meshtastic/protobuf/xmodem_pb2.pyi @@ -1,67 +1,28 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union -import builtins -import google.protobuf.descriptor -import google.protobuf.internal.enum_type_wrapper -import google.protobuf.message -import sys -import typing +DESCRIPTOR: _descriptor.FileDescriptor -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 +class XModem(_message.Message): + __slots__ = ["buffer", "control", "crc16", "seq"] + class Control(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = [] + ACK: XModem.Control + BUFFER_FIELD_NUMBER: _ClassVar[int] + CAN: XModem.Control + CONTROL_FIELD_NUMBER: _ClassVar[int] + CRC16_FIELD_NUMBER: _ClassVar[int] + CTRLZ: XModem.Control + EOT: XModem.Control + NAK: XModem.Control + NUL: XModem.Control + SEQ_FIELD_NUMBER: _ClassVar[int] + SOH: XModem.Control + STX: XModem.Control + buffer: bytes + control: XModem.Control + crc16: int + seq: int + def __init__(self, control: _Optional[_Union[XModem.Control, str]] = ..., seq: _Optional[int] = ..., crc16: _Optional[int] = ..., buffer: _Optional[bytes] = ...) -> None: ... diff --git a/nanopb_pb2.py b/nanopb_pb2.py new file mode 100644 index 0000000..d07299d --- /dev/null +++ b/nanopb_pb2.py @@ -0,0 +1,39 @@ +# -*- 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>\n\x18\x66i.kapsi.koti.jpa.nanopbZ\"github.com/meshtastic/go/generated') + +_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.nanopbZ\"github.com/meshtastic/go/generated' + _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/scripts/update_meshtastic_protobufs.py b/scripts/update_meshtastic_protobufs.py index 5d1ef14..1014fdd 100644 --- a/scripts/update_meshtastic_protobufs.py +++ b/scripts/update_meshtastic_protobufs.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import argparse +import re import shutil import subprocess import sys @@ -11,6 +12,39 @@ def run(cmd, cwd=None): subprocess.run(cmd, cwd=cwd, check=True) +def clone_ref(repo, ref, tmp_path): + if re.fullmatch(r"[0-9a-fA-F]{40}", ref): + run(["git", "clone", "--no-checkout", "--depth", "1", repo, str(tmp_path)]) + run(["git", "fetch", "--depth", "1", "origin", ref], cwd=tmp_path) + run(["git", "checkout", "--detach", "FETCH_HEAD"], cwd=tmp_path) + return + + run(["git", "clone", "--depth", "1", "--branch", ref, repo, str(tmp_path)]) + + +def stage_meshtastic_package(proto_root, tmp_path): + """Map upstream meshtastic/*.proto files to Meshview's vendored package path.""" + if proto_root != tmp_path / "meshtastic": + return tmp_path, proto_root + + stage_root = tmp_path / "_meshview_proto_stage" + staged_proto_root = stage_root / "meshtastic" / "protobuf" + staged_proto_root.mkdir(parents=True, exist_ok=True) + + for proto in sorted(proto_root.glob("*.proto")): + text = proto.read_text(encoding="utf-8") + text = text.replace('import "meshtastic/', 'import "meshtastic/protobuf/') + text = text.replace('import "nanopb.proto"', 'import "meshtastic/protobuf/nanopb.proto"') + text = text.replace("package meshtastic;", "package meshtastic.protobuf;") + (staged_proto_root / proto.name).write_text(text, encoding="utf-8") + + nanopb = tmp_path / "nanopb.proto" + if nanopb.exists(): + shutil.copy2(nanopb, staged_proto_root / "nanopb.proto") + + return stage_root, staged_proto_root + + def main(): parser = argparse.ArgumentParser(description="Update Meshtastic protobufs") parser.add_argument( @@ -36,7 +70,7 @@ def main(): with tempfile.TemporaryDirectory(prefix="meshtastic-protobufs-") as tmp: tmp_path = Path(tmp) print(f"Cloning {args.repo} ({args.ref}) into {tmp_path}...") - run(["git", "clone", "--depth", "1", "--branch", args.ref, args.repo, str(tmp_path)]) + clone_ref(args.repo, args.ref, tmp_path) upstream_rev = ( subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=tmp_path).decode().strip() ) @@ -57,6 +91,7 @@ def main(): # Common locations in the meshtastic/protobufs repo candidates = [ tmp_path / "meshtastic" / "protobuf", + tmp_path / "meshtastic", tmp_path / "protobufs", tmp_path / "protobuf", tmp_path / "proto", @@ -81,14 +116,17 @@ def main(): print(f"No .proto files found in {proto_root}", file=sys.stderr) return 1 - rel_protos = [str(p.relative_to(tmp_path)) for p in protos] + proto_base, proto_root = stage_meshtastic_package(proto_root, tmp_path) + protos = sorted(proto_root.glob("*.proto")) + rel_protos = [str(p.relative_to(proto_base)) for p in protos] protoc = shutil.which("protoc") if protoc: cmd = [ protoc, - f"-I{tmp_path}", + f"-I{proto_base}", f"--python_out={out_root}", + f"--pyi_out={out_root}", *rel_protos, ] print("Running protoc...") @@ -107,8 +145,9 @@ def main(): sys.executable, "-m", "grpc_tools.protoc", - f"-I{tmp_path}", + f"-I{proto_base}", f"--python_out={out_root}", + f"--pyi_out={out_root}", *rel_protos, ] print("Running grpc_tools.protoc...")