From fddaad316a76d67f02229f311c38ac2122953110 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Sun, 31 May 2026 09:00:56 -0700 Subject: [PATCH] protobufs: v2.7.24 --- bin/regen-protobufs.sh | 1 + meshtastic/protobuf/admin_pb2.py | 70 +- meshtastic/protobuf/admin_pb2.pyi | 83 +- meshtastic/protobuf/atak_pb2.py | 98 +- meshtastic/protobuf/atak_pb2.pyi | 3381 ++++++++++++++++++++- meshtastic/protobuf/config_pb2.py | 48 +- meshtastic/protobuf/config_pb2.pyi | 116 +- meshtastic/protobuf/mesh_pb2.py | 150 +- meshtastic/protobuf/mesh_pb2.pyi | 319 +- meshtastic/protobuf/module_config_pb2.py | 100 +- meshtastic/protobuf/module_config_pb2.pyi | 2 +- meshtastic/protobuf/portnums_pb2.py | 4 +- meshtastic/protobuf/portnums_pb2.pyi | 20 + meshtastic/protobuf/serial_hal_pb2.py | 32 + meshtastic/protobuf/serial_hal_pb2.pyi | 140 + meshtastic/protobuf/telemetry_pb2.py | 44 +- meshtastic/protobuf/telemetry_pb2.pyi | 36 +- protobufs | 2 +- 18 files changed, 4416 insertions(+), 230 deletions(-) create mode 100644 meshtastic/protobuf/serial_hal_pb2.py create mode 100644 meshtastic/protobuf/serial_hal_pb2.pyi diff --git a/bin/regen-protobufs.sh b/bin/regen-protobufs.sh index 23def7b..981b990 100755 --- a/bin/regen-protobufs.sh +++ b/bin/regen-protobufs.sh @@ -28,6 +28,7 @@ OUTDIR=${TMPDIR}/out PYIDIR=${TMPDIR}/out mkdir -p "${OUTDIR}" "${INDIR}" "${PYIDIR}" cp ./protobufs/meshtastic/*.proto "${INDIR}" +cp ./protobufs/meshtastic/*.options "${INDIR}" cp ./protobufs/nanopb.proto "${INDIR}" # OS-X sed is apparently a little different and expects an arg for -i diff --git a/meshtastic/protobuf/admin_pb2.py b/meshtastic/protobuf/admin_pb2.py index fd01568..d10620d 100644 --- a/meshtastic/protobuf/admin_pb2.py +++ b/meshtastic/protobuf/admin_pb2.py @@ -19,7 +19,7 @@ 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\"\xe2\x1c\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\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\"[\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') +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) @@ -29,38 +29,40 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\013AdminProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' _ADMINMESSAGE.fields_by_name['reboot_ota_seconds']._options = None _ADMINMESSAGE.fields_by_name['reboot_ota_seconds']._serialized_options = b'\030\001' - _globals['_OTAMODE']._serialized_start=5686 - _globals['_OTAMODE']._serialized_end=5741 + _globals['_OTAMODE']._serialized_start=5852 + _globals['_OTAMODE']._serialized_end=5907 _globals['_ADMINMESSAGE']._serialized_start=281 - _globals['_ADMINMESSAGE']._serialized_end=3963 - _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_start=3132 - _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_end=3215 - _globals['_ADMINMESSAGE_OTAEVENT']._serialized_start=3217 - _globals['_ADMINMESSAGE_OTAEVENT']._serialized_end=3300 - _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_start=3303 - _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_end=3517 - _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_start=3520 - _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_end=3907 - _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_start=3909 - _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_end=3944 - _globals['_HAMPARAMETERS']._serialized_start=3965 - _globals['_HAMPARAMETERS']._serialized_end=4056 - _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_start=4058 - _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_end=4169 - _globals['_SHAREDCONTACT']._serialized_start=4171 - _globals['_SHAREDCONTACT']._serialized_end=4295 - _globals['_KEYVERIFICATIONADMIN']._serialized_start=4298 - _globals['_KEYVERIFICATIONADMIN']._serialized_end=4591 - _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_start=4468 - _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_end=4571 - _globals['_SENSORCONFIG']._serialized_start=4594 - _globals['_SENSORCONFIG']._serialized_end=4836 - _globals['_SCD4X_CONFIG']._serialized_start=4839 - _globals['_SCD4X_CONFIG']._serialized_end=5193 - _globals['_SEN5X_CONFIG']._serialized_start=5195 - _globals['_SEN5X_CONFIG']._serialized_end=5313 - _globals['_SCD30_CONFIG']._serialized_start=5316 - _globals['_SCD30_CONFIG']._serialized_end=5624 - _globals['_SHTXX_CONFIG']._serialized_start=5626 - _globals['_SHTXX_CONFIG']._serialized_end=5684 + _globals['_ADMINMESSAGE']._serialized_end=4023 + _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_start=3192 + _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_end=3275 + _globals['_ADMINMESSAGE_OTAEVENT']._serialized_start=3277 + _globals['_ADMINMESSAGE_OTAEVENT']._serialized_end=3360 + _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_start=3363 + _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_end=3577 + _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_start=3580 + _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_end=3967 + _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_start=3969 + _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_end=4004 + _globals['_LOCKDOWNAUTH']._serialized_start=4025 + _globals['_LOCKDOWNAUTH']._serialized_end=4129 + _globals['_HAMPARAMETERS']._serialized_start=4131 + _globals['_HAMPARAMETERS']._serialized_end=4222 + _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_start=4224 + _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_end=4335 + _globals['_SHAREDCONTACT']._serialized_start=4337 + _globals['_SHAREDCONTACT']._serialized_end=4461 + _globals['_KEYVERIFICATIONADMIN']._serialized_start=4464 + _globals['_KEYVERIFICATIONADMIN']._serialized_end=4757 + _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_start=4634 + _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_end=4737 + _globals['_SENSORCONFIG']._serialized_start=4760 + _globals['_SENSORCONFIG']._serialized_end=5002 + _globals['_SCD4X_CONFIG']._serialized_start=5005 + _globals['_SCD4X_CONFIG']._serialized_end=5359 + _globals['_SEN5X_CONFIG']._serialized_start=5361 + _globals['_SEN5X_CONFIG']._serialized_end=5479 + _globals['_SCD30_CONFIG']._serialized_start=5482 + _globals['_SCD30_CONFIG']._serialized_end=5790 + _globals['_SHTXX_CONFIG']._serialized_start=5792 + _globals['_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 ed8c412..d7fb2c7 100644 --- a/meshtastic/protobuf/admin_pb2.pyi +++ b/meshtastic/protobuf/admin_pb2.pyi @@ -456,6 +456,7 @@ class AdminMessage(google.protobuf.message.Message): NODEDB_RESET_FIELD_NUMBER: builtins.int OTA_REQUEST_FIELD_NUMBER: builtins.int SENSOR_CONFIG_FIELD_NUMBER: builtins.int + LOCKDOWN_AUTH_FIELD_NUMBER: builtins.int session_passkey: builtins.bytes """ The node generates this key and sends it with any get_x_response packets. @@ -743,6 +744,19 @@ class AdminMessage(google.protobuf.message.Message): Parameters and sensor configuration """ + @property + def lockdown_auth(self) -> global___LockdownAuth: + """ + Lockdown passphrase delivery / unlock / lock-now command for hardened + firmware builds (see MESHTASTIC_LOCKDOWN). Used to provision the + passphrase on first boot, unlock encrypted storage on subsequent + reboots, re-verify on already-unlocked devices to authorize a new + client connection, or immediately re-lock the device. + + Replaces the earlier scheme that repurposed SecurityConfig.private_key + to carry passphrase bytes; that hack is retired. + """ + def __init__( self, *, @@ -804,13 +818,76 @@ class AdminMessage(google.protobuf.message.Message): nodedb_reset: builtins.bool = ..., ota_request: global___AdminMessage.OTAEvent | None = ..., sensor_config: global___SensorConfig | None = ..., + lockdown_auth: global___LockdownAuth | None = ..., ) -> 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", "ota_request", b"ota_request", "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", "sensor_config", b"sensor_config", "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", "toggle_muted_node", b"toggle_muted_node"]) -> 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", "ota_request", b"ota_request", "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", "sensor_config", b"sensor_config", "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", "toggle_muted_node", b"toggle_muted_node"]) -> 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", "toggle_muted_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", "ota_request", "sensor_config"] | 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", "lockdown_auth", b"lockdown_auth", "nodedb_reset", b"nodedb_reset", "ota_request", b"ota_request", "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", "sensor_config", b"sensor_config", "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", "toggle_muted_node", b"toggle_muted_node"]) -> 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", "lockdown_auth", b"lockdown_auth", "nodedb_reset", b"nodedb_reset", "ota_request", b"ota_request", "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", "sensor_config", b"sensor_config", "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", "toggle_muted_node", b"toggle_muted_node"]) -> 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", "toggle_muted_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", "ota_request", "sensor_config", "lockdown_auth"] | None: ... global___AdminMessage = AdminMessage +@typing.final +class LockdownAuth(google.protobuf.message.Message): + """ + Lockdown passphrase delivery payload. + + One message handles three operations distinguished by content: + - Provision (first-time): passphrase set, lock_now=false. Firmware + generates DEK, wraps with passphrase-derived KEK, persists. + - Unlock: passphrase set, lock_now=false. Firmware verifies + passphrase against stored DEK, unlocks storage, authorizes the + connection that delivered this packet. + - Lock now: lock_now=true, passphrase ignored. Firmware revokes + all client auth and reboots into the locked state. + + Firmware decides between provision and unlock based on its own state + (whether a DEK file already exists). Clients do not need to track + which case applies. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + PASSPHRASE_FIELD_NUMBER: builtins.int + BOOTS_REMAINING_FIELD_NUMBER: builtins.int + VALID_UNTIL_EPOCH_FIELD_NUMBER: builtins.int + LOCK_NOW_FIELD_NUMBER: builtins.int + passphrase: builtins.bytes + """ + Passphrase bytes (1-32). Empty when lock_now is true. + Capped to 32 to match the proto cap on related security fields. + """ + boots_remaining: builtins.int + """ + Optional override of the boot-count token TTL granted on success. + 0 = use firmware default (TOKEN_DEFAULT_BOOTS). + On reboot the firmware decrements this; when it reaches 0 the + device boots fully locked and requires a fresh passphrase. + """ + valid_until_epoch: builtins.int + """ + Optional wall-clock expiry for the unlock token, as absolute + Unix-epoch seconds. 0 = no time limit (only the boot-count TTL + applies). On boot, if the device RTC is set and now > this value, + the token is treated as expired. + """ + lock_now: builtins.bool + """ + If true, ignore passphrase fields, immediately revoke all + connection-level admin authorization, and reboot the device into + the locked state. Always honoured regardless of current lock state. + """ + def __init__( + self, + *, + passphrase: builtins.bytes = ..., + boots_remaining: builtins.int = ..., + valid_until_epoch: builtins.int = ..., + lock_now: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["boots_remaining", b"boots_remaining", "lock_now", b"lock_now", "passphrase", b"passphrase", "valid_until_epoch", b"valid_until_epoch"]) -> None: ... + +global___LockdownAuth = LockdownAuth + @typing.final class HamParameters(google.protobuf.message.Message): """ diff --git a/meshtastic/protobuf/atak_pb2.py b/meshtastic/protobuf/atak_pb2.py index b0fee1a..11728dc 100644 --- a/meshtastic/protobuf/atak_pb2.py +++ b/meshtastic/protobuf/atak_pb2.py @@ -13,7 +13,7 @@ _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\"\x80\x07\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\x19\n\x11vertex_lat_deltas\x18\x12 \x03(\x11\x12\x19\n\x11vertex_lon_deltas\x18\x13 \x03(\x11\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\x03J\x04\x08\x0c\x10\r\"\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\"h\n\x0fTakTalkRoomData\x12\x1b\n\x0fsender_callsign\x18\x01 \x01(\tB\x02\x18\x01\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\"\x1e\n\x05Marti\x12\x15\n\rdest_callsign\x18\x01 \x03(\t\"\xcd\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.\n\x05marti\x18\x1d \x01(\x0b\x32\x1a.meshtastic.protobuf.MartiH\x03\x88\x01\x01\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_fovB\x08\n\x06_martiJ\x04\x08\x1b\x10\x1cJ\x04\x08\x1c\x10\x1dJ\x04\x08\x1e\x10\x1f*\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) @@ -21,20 +21,88 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.atak_pb 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 + _TAKTALKROOMDATA.fields_by_name['sender_callsign']._options = None + _TAKTALKROOMDATA.fields_by_name['sender_callsign']._serialized_options = b'\030\001' + _globals['_TEAM']._serialized_start=7899 + _globals['_TEAM']._serialized_end=8091 + _globals['_MEMBERROLE']._serialized_start=8093 + _globals['_MEMBERROLE']._serialized_end=8220 + _globals['_COTHOW']._serialized_start=8223 + _globals['_COTHOW']._serialized_end=8373 + _globals['_COTTYPE']._serialized_start=8376 + _globals['_COTTYPE']._serialized_end=11323 + _globals['_GEOPOINTSOURCE']._serialized_start=11325 + _globals['_GEOPOINTSOURCE']._serialized_end=11450 _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 + _globals['_GEOCHAT']._serialized_start=352 + _globals['_GEOCHAT']._serialized_end=733 + _globals['_GEOCHAT_RECEIPTTYPE']._serialized_start=584 + _globals['_GEOCHAT_RECEIPTTYPE']._serialized_end=668 + _globals['_GROUP']._serialized_start=735 + _globals['_GROUP']._serialized_end=830 + _globals['_STATUS']._serialized_start=832 + _globals['_STATUS']._serialized_end=857 + _globals['_CONTACT']._serialized_start=859 + _globals['_CONTACT']._serialized_end=911 + _globals['_PLI']._serialized_start=913 + _globals['_PLI']._serialized_end=1008 + _globals['_AIRCRAFTTRACK']._serialized_start=1011 + _globals['_AIRCRAFTTRACK']._serialized_end=1187 + _globals['_COTGEOPOINT']._serialized_start=1189 + _globals['_COTGEOPOINT']._serialized_end=1244 + _globals['_DRAWNSHAPE']._serialized_start=1247 + _globals['_DRAWNSHAPE']._serialized_end=2143 + _globals['_DRAWNSHAPE_KIND']._serialized_start=1792 + _globals['_DRAWNSHAPE_KIND']._serialized_end=2018 + _globals['_DRAWNSHAPE_STYLEMODE']._serialized_start=2020 + _globals['_DRAWNSHAPE_STYLEMODE']._serialized_end=2137 + _globals['_MARKER']._serialized_start=2146 + _globals['_MARKER']._serialized_end=2649 + _globals['_MARKER_KIND']._serialized_start=2369 + _globals['_MARKER_KIND']._serialized_end=2649 + _globals['_RANGEANDBEARING']._serialized_start=2652 + _globals['_RANGEANDBEARING']._serialized_end=2876 + _globals['_ROUTE']._serialized_start=2879 + _globals['_ROUTE']._serialized_end=3431 + _globals['_ROUTE_LINK']._serialized_start=3106 + _globals['_ROUTE_LINK']._serialized_end=3211 + _globals['_ROUTE_METHOD']._serialized_start=3214 + _globals['_ROUTE_METHOD']._serialized_end=3349 + _globals['_ROUTE_DIRECTION']._serialized_start=3351 + _globals['_ROUTE_DIRECTION']._serialized_end=3431 + _globals['_CASEVACREPORT']._serialized_start=3434 + _globals['_CASEVACREPORT']._serialized_end=4836 + _globals['_CASEVACREPORT_PRECEDENCE']._serialized_start=4358 + _globals['_CASEVACREPORT_PRECEDENCE']._serialized_end=4529 + _globals['_CASEVACREPORT_HLZMARKING']._serialized_start=4532 + _globals['_CASEVACREPORT_HLZMARKING']._serialized_end=4687 + _globals['_CASEVACREPORT_SECURITY']._serialized_start=4690 + _globals['_CASEVACREPORT_SECURITY']._serialized_end=4836 + _globals['_ZMISTENTRY']._serialized_start=4838 + _globals['_ZMISTENTRY']._serialized_end=4920 + _globals['_EMERGENCYALERT']._serialized_start=4923 + _globals['_EMERGENCYALERT']._serialized_end=5201 + _globals['_EMERGENCYALERT_TYPE']._serialized_start=5051 + _globals['_EMERGENCYALERT_TYPE']._serialized_end=5201 + _globals['_TASKREQUEST']._serialized_start=5204 + _globals['_TASKREQUEST']._serialized_end=5676 + _globals['_TASKREQUEST_PRIORITY']._serialized_start=5412 + _globals['_TASKREQUEST_PRIORITY']._serialized_end=5529 + _globals['_TASKREQUEST_STATUS']._serialized_start=5532 + _globals['_TASKREQUEST_STATUS']._serialized_end=5676 + _globals['_TAKENVIRONMENT']._serialized_start=5678 + _globals['_TAKENVIRONMENT']._serialized_end=5774 + _globals['_SENSORFOV']._serialized_start=5777 + _globals['_SENSORFOV']._serialized_end=6183 + _globals['_SENSORFOV_SENSORTYPE']._serialized_start=6001 + _globals['_SENSORFOV_SENSORTYPE']._serialized_end=6171 + _globals['_TAKTALKMESSAGE']._serialized_start=6185 + _globals['_TAKTALKMESSAGE']._serialized_end=6270 + _globals['_TAKTALKROOMDATA']._serialized_start=6272 + _globals['_TAKTALKROOMDATA']._serialized_end=6376 + _globals['_MARTI']._serialized_start=6378 + _globals['_MARTI']._serialized_end=6408 + _globals['_TAKPACKETV2']._serialized_start=6411 + _globals['_TAKPACKETV2']._serialized_end=7896 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/atak_pb2.pyi b/meshtastic/protobuf/atak_pb2.pyi index 9bcd584..b6821c1 100644 --- a/meshtastic/protobuf/atak_pb2.pyi +++ b/meshtastic/protobuf/atak_pb2.pyi @@ -4,7 +4,9 @@ isort:skip_file trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH)""" 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 @@ -234,6 +236,1157 @@ Doggo """ global___MemberRole = MemberRole +class _CotHow: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _CotHowEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CotHow.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + CotHow_Unspecified: _CotHow.ValueType # 0 + """ + Unspecified + """ + CotHow_h_e: _CotHow.ValueType # 1 + """ + Human entered + """ + CotHow_m_g: _CotHow.ValueType # 2 + """ + Machine generated + """ + CotHow_h_g_i_g_o: _CotHow.ValueType # 3 + """ + Human GPS/INS derived + """ + CotHow_m_r: _CotHow.ValueType # 4 + """ + Machine relayed (imported from another system/gateway) + """ + CotHow_m_f: _CotHow.ValueType # 5 + """ + Machine fused (corroborated from multiple sources) + """ + CotHow_m_p: _CotHow.ValueType # 6 + """ + Machine predicted + """ + CotHow_m_s: _CotHow.ValueType # 7 + """ + Machine simulated + """ + +class CotHow(_CotHow, metaclass=_CotHowEnumTypeWrapper): + """ + CoT how field values. + Represents how the coordinates were generated. + """ + +CotHow_Unspecified: CotHow.ValueType # 0 +""" +Unspecified +""" +CotHow_h_e: CotHow.ValueType # 1 +""" +Human entered +""" +CotHow_m_g: CotHow.ValueType # 2 +""" +Machine generated +""" +CotHow_h_g_i_g_o: CotHow.ValueType # 3 +""" +Human GPS/INS derived +""" +CotHow_m_r: CotHow.ValueType # 4 +""" +Machine relayed (imported from another system/gateway) +""" +CotHow_m_f: CotHow.ValueType # 5 +""" +Machine fused (corroborated from multiple sources) +""" +CotHow_m_p: CotHow.ValueType # 6 +""" +Machine predicted +""" +CotHow_m_s: CotHow.ValueType # 7 +""" +Machine simulated +""" +global___CotHow = CotHow + +class _CotType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _CotTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CotType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + CotType_Other: _CotType.ValueType # 0 + """ + Unknown or unmapped type, use cot_type_str + """ + CotType_a_f_G_U_C: _CotType.ValueType # 1 + """ + a-f-G-U-C: Friendly ground unit combat + """ + CotType_a_f_G_U_C_I: _CotType.ValueType # 2 + """ + a-f-G-U-C-I: Friendly ground unit combat infantry + """ + CotType_a_n_A_C_F: _CotType.ValueType # 3 + """ + a-n-A-C-F: Neutral aircraft civilian fixed-wing + """ + CotType_a_n_A_C_H: _CotType.ValueType # 4 + """ + a-n-A-C-H: Neutral aircraft civilian helicopter + """ + CotType_a_n_A_C: _CotType.ValueType # 5 + """ + a-n-A-C: Neutral aircraft civilian + """ + CotType_a_f_A_M_H: _CotType.ValueType # 6 + """ + a-f-A-M-H: Friendly aircraft military helicopter + """ + CotType_a_f_A_M: _CotType.ValueType # 7 + """ + a-f-A-M: Friendly aircraft military + """ + CotType_a_f_A_M_F_F: _CotType.ValueType # 8 + """ + a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter + """ + CotType_a_f_A_M_H_A: _CotType.ValueType # 9 + """ + a-f-A-M-H-A: Friendly aircraft military helicopter attack + """ + CotType_a_f_A_M_H_U_M: _CotType.ValueType # 10 + """ + a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium + """ + CotType_a_h_A_M_F_F: _CotType.ValueType # 11 + """ + a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter + """ + CotType_a_h_A_M_H_A: _CotType.ValueType # 12 + """ + a-h-A-M-H-A: Hostile aircraft military helicopter attack + """ + CotType_a_u_A_C: _CotType.ValueType # 13 + """ + a-u-A-C: Unknown aircraft civilian + """ + CotType_t_x_d_d: _CotType.ValueType # 14 + """ + t-x-d-d: Tasking delete/disconnect + """ + CotType_a_f_G_E_S_E: _CotType.ValueType # 15 + """ + a-f-G-E-S-E: Friendly ground equipment sensor + """ + CotType_a_f_G_E_V_C: _CotType.ValueType # 16 + """ + a-f-G-E-V-C: Friendly ground equipment vehicle + """ + CotType_a_f_S: _CotType.ValueType # 17 + """ + a-f-S: Friendly sea + """ + CotType_a_f_A_M_F: _CotType.ValueType # 18 + """ + a-f-A-M-F: Friendly aircraft military fixed-wing + """ + CotType_a_f_A_M_F_C_H: _CotType.ValueType # 19 + """ + a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy + """ + CotType_a_f_A_M_F_U_L: _CotType.ValueType # 20 + """ + a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light + """ + CotType_a_f_A_M_F_L: _CotType.ValueType # 21 + """ + a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison + """ + CotType_a_f_A_M_F_P: _CotType.ValueType # 22 + """ + a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol + """ + CotType_a_f_A_C_H: _CotType.ValueType # 23 + """ + a-f-A-C-H: Friendly aircraft civilian helicopter + """ + CotType_a_n_A_M_F_Q: _CotType.ValueType # 24 + """ + a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone + """ + CotType_b_t_f: _CotType.ValueType # 25 + """--- Chat / messaging --- + + + b-t-f: GeoChat message + """ + CotType_b_r_f_h_c: _CotType.ValueType # 26 + """--- CASEVAC / MEDEVAC --- + + + b-r-f-h-c: CASEVAC/MEDEVAC report + """ + CotType_b_a_o_pan: _CotType.ValueType # 27 + """--- Alerts --- + + + b-a-o-pan: Ring the bell / alert all + """ + CotType_b_a_o_opn: _CotType.ValueType # 28 + """ + b-a-o-opn: Troops in contact + """ + CotType_b_a_o_can: _CotType.ValueType # 29 + """ + b-a-o-can: Cancel alert + """ + CotType_b_a_o_tbl: _CotType.ValueType # 30 + """ + b-a-o-tbl: 911 alert + """ + CotType_b_a_g: _CotType.ValueType # 31 + """ + b-a-g: Geofence breach alert + """ + CotType_a_f_G: _CotType.ValueType # 32 + """--- Generic ground atoms (simplified affiliation types) --- + + + a-f-G: Friendly ground (generic) + """ + CotType_a_f_G_U: _CotType.ValueType # 33 + """ + a-f-G-U: Friendly ground unit (generic) + """ + CotType_a_h_G: _CotType.ValueType # 34 + """ + a-h-G: Hostile ground (generic) + """ + CotType_a_u_G: _CotType.ValueType # 35 + """ + a-u-G: Unknown ground (generic) + """ + CotType_a_n_G: _CotType.ValueType # 36 + """ + a-n-G: Neutral ground (generic) + """ + CotType_b_m_r: _CotType.ValueType # 37 + """--- Routes and waypoints --- + + + b-m-r: Route + """ + CotType_b_m_p_w: _CotType.ValueType # 38 + """ + b-m-p-w: Route waypoint + """ + CotType_b_m_p_s_p_i: _CotType.ValueType # 39 + """ + b-m-p-s-p-i: Self-position marker + """ + CotType_u_d_f: _CotType.ValueType # 40 + """--- Drawing / tactical graphics --- + + + u-d-f: Freeform shape (line/polygon) + """ + CotType_u_d_r: _CotType.ValueType # 41 + """ + u-d-r: Rectangle + """ + CotType_u_d_c_c: _CotType.ValueType # 42 + """ + u-d-c-c: Circle + """ + CotType_u_rb_a: _CotType.ValueType # 43 + """ + u-rb-a: Range/bearing line + """ + CotType_a_h_A: _CotType.ValueType # 44 + """--- Additional hostile/unknown aircraft --- + + + a-h-A: Hostile aircraft (generic) + """ + CotType_a_u_A: _CotType.ValueType # 45 + """ + a-u-A: Unknown aircraft (generic) + """ + CotType_a_f_A_M_H_Q: _CotType.ValueType # 46 + """ + a-f-A-M-H-Q: Friendly aircraft military helicopter observation + """ + CotType_a_f_A_C_F: _CotType.ValueType # 47 + """Friendly aircraft civilian + + + a-f-A-C-F: Friendly aircraft civilian fixed-wing + """ + CotType_a_f_A_C: _CotType.ValueType # 48 + """ + a-f-A-C: Friendly aircraft civilian (generic) + """ + CotType_a_f_A_C_L: _CotType.ValueType # 49 + """ + a-f-A-C-L: Friendly aircraft civilian lighter-than-air + """ + CotType_a_f_A: _CotType.ValueType # 50 + """ + a-f-A: Friendly aircraft (generic) + """ + CotType_a_f_A_M_H_C: _CotType.ValueType # 51 + """Friendly aircraft military helicopter variants + + + a-f-A-M-H-C: Friendly aircraft military helicopter cargo + """ + CotType_a_n_A_M_F_F: _CotType.ValueType # 52 + """Neutral aircraft military + + + a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter + """ + CotType_a_u_A_C_F: _CotType.ValueType # 53 + """Unknown aircraft civilian + + + a-u-A-C-F: Unknown aircraft civilian fixed-wing + """ + CotType_a_f_G_U_C_F_T_A: _CotType.ValueType # 54 + """Friendly ground unit subtypes + + + a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation + """ + CotType_a_f_G_U_C_V_S: _CotType.ValueType # 55 + """ + a-f-G-U-C-V-S: Friendly ground unit combat vehicle support + """ + CotType_a_f_G_U_C_R_X: _CotType.ValueType # 56 + """ + a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation + """ + CotType_a_f_G_U_C_I_Z: _CotType.ValueType # 57 + """ + a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized + """ + CotType_a_f_G_U_C_E_C_W: _CotType.ValueType # 58 + """ + a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled + """ + CotType_a_f_G_U_C_I_L: _CotType.ValueType # 59 + """ + a-f-G-U-C-I-L: Friendly ground unit combat infantry light + """ + CotType_a_f_G_U_C_R_O: _CotType.ValueType # 60 + """ + a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other + """ + CotType_a_f_G_U_C_R_V: _CotType.ValueType # 61 + """ + a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry + """ + CotType_a_f_G_U_H: _CotType.ValueType # 62 + """ + a-f-G-U-H: Friendly ground unit headquarters + """ + CotType_a_f_G_U_U_M_S_E: _CotType.ValueType # 63 + """ + a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation + """ + CotType_a_f_G_U_S_M_C: _CotType.ValueType # 64 + """ + a-f-G-U-S-M-C: Friendly ground unit support maintenance collection + """ + CotType_a_f_G_E_S: _CotType.ValueType # 65 + """Friendly ground equipment + + + a-f-G-E-S: Friendly ground equipment sensor (generic) + """ + CotType_a_f_G_E: _CotType.ValueType # 66 + """ + a-f-G-E: Friendly ground equipment (generic) + """ + CotType_a_f_G_E_V_C_U: _CotType.ValueType # 67 + """ + a-f-G-E-V-C-U: Friendly ground equipment vehicle utility + """ + CotType_a_f_G_E_V_C_ps: _CotType.ValueType # 68 + """ + a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety + """ + CotType_a_u_G_E_V: _CotType.ValueType # 69 + """Unknown ground + + + a-u-G-E-V: Unknown ground equipment vehicle + """ + CotType_a_f_S_N_N_R: _CotType.ValueType # 70 + """Sea + + + a-f-S-N-N-R: Friendly sea surface non-naval rescue + """ + CotType_a_f_F_B: _CotType.ValueType # 71 + """Friendly force (non-domain-specific) + + + a-f-F-B: Friendly force boundary + """ + CotType_b_m_p_s_p_loc: _CotType.ValueType # 72 + """Bits / data messages + + + b-m-p-s-p-loc: Self-position location marker + """ + CotType_b_i_v: _CotType.ValueType # 73 + """ + b-i-v: Imagery/video + """ + CotType_b_f_t_r: _CotType.ValueType # 74 + """ + b-f-t-r: File transfer request + """ + CotType_b_f_t_a: _CotType.ValueType # 75 + """ + b-f-t-a: File transfer acknowledgment + """ + CotType_u_d_f_m: _CotType.ValueType # 76 + """--- Additional drawing / tactical graphics --- + + + u-d-f-m: Freehand telestration / annotation. Anchor at event point, + geometry carried via DrawnShape.vertices. May be truncated to + MAX_VERTICES by the sender. + """ + CotType_u_d_p: _CotType.ValueType # 77 + """ + u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices, + implicitly closed (receiver duplicates first vertex as needed). + """ + CotType_b_m_p_s_m: _CotType.ValueType # 78 + """--- Additional markers --- + + + b-m-p-s-m: Spot map marker (colored dot at a point of interest). + """ + CotType_b_m_p_c: _CotType.ValueType # 79 + """ + b-m-p-c: Checkpoint (intermediate route control point). + """ + CotType_u_r_b_c_c: _CotType.ValueType # 80 + """--- Ranging tools --- + + + u-r-b-c-c: Ranging circle (range rings centered on the event point). + """ + CotType_u_r_b_bullseye: _CotType.ValueType # 81 + """ + u-r-b-bullseye: Bullseye with configurable range rings and bearing + reference (magnetic / true / grid). + """ + CotType_a_f_G_E_V_A: _CotType.ValueType # 82 + """--- PLI self-reporting (1) ------------------------------------------ + + + a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI. + """ + CotType_a_n_A: _CotType.ValueType # 83 + """--- 2525 quick-drop: basic affiliation gaps ------------------------- + + + a-n-A: Neutral aircraft (friendly/hostile/unknown already present). + """ + CotType_a_u_G_U_C_F: _CotType.ValueType # 84 + """--- 2525 quick-drop: artillery (4) ----------------------------------""" + CotType_a_n_G_U_C_F: _CotType.ValueType # 85 + CotType_a_h_G_U_C_F: _CotType.ValueType # 86 + CotType_a_f_G_U_C_F: _CotType.ValueType # 87 + CotType_a_u_G_I: _CotType.ValueType # 88 + """--- 2525 quick-drop: building (4) -----------------------------------""" + CotType_a_n_G_I: _CotType.ValueType # 89 + CotType_a_h_G_I: _CotType.ValueType # 90 + CotType_a_f_G_I: _CotType.ValueType # 91 + CotType_a_u_G_E_X_M: _CotType.ValueType # 92 + """--- 2525 quick-drop: mine (4) ---------------------------------------""" + CotType_a_n_G_E_X_M: _CotType.ValueType # 93 + CotType_a_h_G_E_X_M: _CotType.ValueType # 94 + CotType_a_f_G_E_X_M: _CotType.ValueType # 95 + CotType_a_u_S: _CotType.ValueType # 96 + """--- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------""" + CotType_a_n_S: _CotType.ValueType # 97 + CotType_a_h_S: _CotType.ValueType # 98 + CotType_a_u_G_U_C_I_d: _CotType.ValueType # 99 + """--- 2525 quick-drop: sniper (4) -------------------------------------""" + CotType_a_n_G_U_C_I_d: _CotType.ValueType # 100 + CotType_a_h_G_U_C_I_d: _CotType.ValueType # 101 + CotType_a_f_G_U_C_I_d: _CotType.ValueType # 102 + CotType_a_u_G_E_V_A_T: _CotType.ValueType # 103 + """--- 2525 quick-drop: tank (4) ---------------------------------------""" + CotType_a_n_G_E_V_A_T: _CotType.ValueType # 104 + CotType_a_h_G_E_V_A_T: _CotType.ValueType # 105 + CotType_a_f_G_E_V_A_T: _CotType.ValueType # 106 + CotType_a_u_G_U_C_I: _CotType.ValueType # 107 + """--- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) -----------""" + CotType_a_n_G_U_C_I: _CotType.ValueType # 108 + CotType_a_h_G_U_C_I: _CotType.ValueType # 109 + CotType_a_n_G_E_V: _CotType.ValueType # 110 + """--- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) ---""" + CotType_a_h_G_E_V: _CotType.ValueType # 111 + CotType_a_f_G_E_V: _CotType.ValueType # 112 + CotType_b_m_p_w_GOTO: _CotType.ValueType # 113 + """--- Mission-specific points (4) ------------------------------------- + + + b-m-p-w-GOTO: Go To / bloodhound navigation target. + """ + CotType_b_m_p_c_ip: _CotType.ValueType # 114 + """ + b-m-p-c-ip: Initial point (mission planning). + """ + CotType_b_m_p_c_cp: _CotType.ValueType # 115 + """ + b-m-p-c-cp: Contact point (mission planning). + """ + CotType_b_m_p_s_p_op: _CotType.ValueType # 116 + """ + b-m-p-s-p-op: Observation post. + """ + CotType_u_d_v: _CotType.ValueType # 117 + """--- Vehicle drawings (2) -------------------------------------------- + + + u-d-v: 2D vehicle outline drawn on the map. + """ + CotType_u_d_v_m: _CotType.ValueType # 118 + """ + u-d-v-m: 3D vehicle model reference. + """ + CotType_u_d_c_e: _CotType.ValueType # 119 + """--- Drawing shapes (1) ---------------------------------------------- + + + u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes). + """ + CotType_b_i_x_i: _CotType.ValueType # 120 + """--- Image / media marker (1) ---------------------------------------- + + + b-i-x-i: Quick Pic geotagged image marker. The image itself does not + ride on LoRa; this event references the image via iconset metadata. + """ + CotType_b_t_f_d: _CotType.ValueType # 121 + """--- GeoChat receipts (2) -------------------------------------------- + + + b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat` + payload_variant via GeoChat.receipt_for_uid + receipt_type. + """ + CotType_b_t_f_r: _CotType.ValueType # 122 + """ + b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d. + """ + CotType_b_a_o_c: _CotType.ValueType # 123 + """--- Custom emergency (1) -------------------------------------------- + + + b-a-o-c: Custom / generic emergency beacon. + """ + CotType_t_s: _CotType.ValueType # 124 + """--- Tasking (1) ----------------------------------------------------- + + + t-s: Task / engage request. Structured payload carried via the new + TaskRequest typed variant. + """ + CotType_m_t_t: _CotType.ValueType # 125 + """-- TAKTALK plugin shapes -- + CoT types unique to the TAKTALK ATAK plugin. Note `y-` has a literal + trailing dash and no second atom — that's the wire format ATAK emits + for TAKTALK room broadcasts. The CotType enum encodes the literal + string verbatim (CotType_y -> "y-") so receivers reconstruct the + original event type byte-for-byte without consulting cot_type_str. + + + m-t-t: TAKTALK voice/text chat message. Payload carried via the + TakTalkMessage typed variant (text, chatroom_id, lang, from_voice). + """ + CotType_y: _CotType.ValueType # 126 + """ + y-: TAKTALK room/membership broadcast. Payload carried via the + TakTalkRoomData typed variant (sender_callsign, room_id, room_name, + participants). The CoT type literally has a trailing dash and no + second atom — not a typo. + """ + +class CotType(_CotType, metaclass=_CotTypeEnumTypeWrapper): + """ + Well-known CoT event types. + When the type is known, use the enum value for efficient encoding. + For unknown types, set cot_type_id to CotType_Other and populate cot_type_str. + """ + +CotType_Other: CotType.ValueType # 0 +""" +Unknown or unmapped type, use cot_type_str +""" +CotType_a_f_G_U_C: CotType.ValueType # 1 +""" +a-f-G-U-C: Friendly ground unit combat +""" +CotType_a_f_G_U_C_I: CotType.ValueType # 2 +""" +a-f-G-U-C-I: Friendly ground unit combat infantry +""" +CotType_a_n_A_C_F: CotType.ValueType # 3 +""" +a-n-A-C-F: Neutral aircraft civilian fixed-wing +""" +CotType_a_n_A_C_H: CotType.ValueType # 4 +""" +a-n-A-C-H: Neutral aircraft civilian helicopter +""" +CotType_a_n_A_C: CotType.ValueType # 5 +""" +a-n-A-C: Neutral aircraft civilian +""" +CotType_a_f_A_M_H: CotType.ValueType # 6 +""" +a-f-A-M-H: Friendly aircraft military helicopter +""" +CotType_a_f_A_M: CotType.ValueType # 7 +""" +a-f-A-M: Friendly aircraft military +""" +CotType_a_f_A_M_F_F: CotType.ValueType # 8 +""" +a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter +""" +CotType_a_f_A_M_H_A: CotType.ValueType # 9 +""" +a-f-A-M-H-A: Friendly aircraft military helicopter attack +""" +CotType_a_f_A_M_H_U_M: CotType.ValueType # 10 +""" +a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium +""" +CotType_a_h_A_M_F_F: CotType.ValueType # 11 +""" +a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter +""" +CotType_a_h_A_M_H_A: CotType.ValueType # 12 +""" +a-h-A-M-H-A: Hostile aircraft military helicopter attack +""" +CotType_a_u_A_C: CotType.ValueType # 13 +""" +a-u-A-C: Unknown aircraft civilian +""" +CotType_t_x_d_d: CotType.ValueType # 14 +""" +t-x-d-d: Tasking delete/disconnect +""" +CotType_a_f_G_E_S_E: CotType.ValueType # 15 +""" +a-f-G-E-S-E: Friendly ground equipment sensor +""" +CotType_a_f_G_E_V_C: CotType.ValueType # 16 +""" +a-f-G-E-V-C: Friendly ground equipment vehicle +""" +CotType_a_f_S: CotType.ValueType # 17 +""" +a-f-S: Friendly sea +""" +CotType_a_f_A_M_F: CotType.ValueType # 18 +""" +a-f-A-M-F: Friendly aircraft military fixed-wing +""" +CotType_a_f_A_M_F_C_H: CotType.ValueType # 19 +""" +a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy +""" +CotType_a_f_A_M_F_U_L: CotType.ValueType # 20 +""" +a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light +""" +CotType_a_f_A_M_F_L: CotType.ValueType # 21 +""" +a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison +""" +CotType_a_f_A_M_F_P: CotType.ValueType # 22 +""" +a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol +""" +CotType_a_f_A_C_H: CotType.ValueType # 23 +""" +a-f-A-C-H: Friendly aircraft civilian helicopter +""" +CotType_a_n_A_M_F_Q: CotType.ValueType # 24 +""" +a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone +""" +CotType_b_t_f: CotType.ValueType # 25 +"""--- Chat / messaging --- + + +b-t-f: GeoChat message +""" +CotType_b_r_f_h_c: CotType.ValueType # 26 +"""--- CASEVAC / MEDEVAC --- + + +b-r-f-h-c: CASEVAC/MEDEVAC report +""" +CotType_b_a_o_pan: CotType.ValueType # 27 +"""--- Alerts --- + + +b-a-o-pan: Ring the bell / alert all +""" +CotType_b_a_o_opn: CotType.ValueType # 28 +""" +b-a-o-opn: Troops in contact +""" +CotType_b_a_o_can: CotType.ValueType # 29 +""" +b-a-o-can: Cancel alert +""" +CotType_b_a_o_tbl: CotType.ValueType # 30 +""" +b-a-o-tbl: 911 alert +""" +CotType_b_a_g: CotType.ValueType # 31 +""" +b-a-g: Geofence breach alert +""" +CotType_a_f_G: CotType.ValueType # 32 +"""--- Generic ground atoms (simplified affiliation types) --- + + +a-f-G: Friendly ground (generic) +""" +CotType_a_f_G_U: CotType.ValueType # 33 +""" +a-f-G-U: Friendly ground unit (generic) +""" +CotType_a_h_G: CotType.ValueType # 34 +""" +a-h-G: Hostile ground (generic) +""" +CotType_a_u_G: CotType.ValueType # 35 +""" +a-u-G: Unknown ground (generic) +""" +CotType_a_n_G: CotType.ValueType # 36 +""" +a-n-G: Neutral ground (generic) +""" +CotType_b_m_r: CotType.ValueType # 37 +"""--- Routes and waypoints --- + + +b-m-r: Route +""" +CotType_b_m_p_w: CotType.ValueType # 38 +""" +b-m-p-w: Route waypoint +""" +CotType_b_m_p_s_p_i: CotType.ValueType # 39 +""" +b-m-p-s-p-i: Self-position marker +""" +CotType_u_d_f: CotType.ValueType # 40 +"""--- Drawing / tactical graphics --- + + +u-d-f: Freeform shape (line/polygon) +""" +CotType_u_d_r: CotType.ValueType # 41 +""" +u-d-r: Rectangle +""" +CotType_u_d_c_c: CotType.ValueType # 42 +""" +u-d-c-c: Circle +""" +CotType_u_rb_a: CotType.ValueType # 43 +""" +u-rb-a: Range/bearing line +""" +CotType_a_h_A: CotType.ValueType # 44 +"""--- Additional hostile/unknown aircraft --- + + +a-h-A: Hostile aircraft (generic) +""" +CotType_a_u_A: CotType.ValueType # 45 +""" +a-u-A: Unknown aircraft (generic) +""" +CotType_a_f_A_M_H_Q: CotType.ValueType # 46 +""" +a-f-A-M-H-Q: Friendly aircraft military helicopter observation +""" +CotType_a_f_A_C_F: CotType.ValueType # 47 +"""Friendly aircraft civilian + + +a-f-A-C-F: Friendly aircraft civilian fixed-wing +""" +CotType_a_f_A_C: CotType.ValueType # 48 +""" +a-f-A-C: Friendly aircraft civilian (generic) +""" +CotType_a_f_A_C_L: CotType.ValueType # 49 +""" +a-f-A-C-L: Friendly aircraft civilian lighter-than-air +""" +CotType_a_f_A: CotType.ValueType # 50 +""" +a-f-A: Friendly aircraft (generic) +""" +CotType_a_f_A_M_H_C: CotType.ValueType # 51 +"""Friendly aircraft military helicopter variants + + +a-f-A-M-H-C: Friendly aircraft military helicopter cargo +""" +CotType_a_n_A_M_F_F: CotType.ValueType # 52 +"""Neutral aircraft military + + +a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter +""" +CotType_a_u_A_C_F: CotType.ValueType # 53 +"""Unknown aircraft civilian + + +a-u-A-C-F: Unknown aircraft civilian fixed-wing +""" +CotType_a_f_G_U_C_F_T_A: CotType.ValueType # 54 +"""Friendly ground unit subtypes + + +a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation +""" +CotType_a_f_G_U_C_V_S: CotType.ValueType # 55 +""" +a-f-G-U-C-V-S: Friendly ground unit combat vehicle support +""" +CotType_a_f_G_U_C_R_X: CotType.ValueType # 56 +""" +a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation +""" +CotType_a_f_G_U_C_I_Z: CotType.ValueType # 57 +""" +a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized +""" +CotType_a_f_G_U_C_E_C_W: CotType.ValueType # 58 +""" +a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled +""" +CotType_a_f_G_U_C_I_L: CotType.ValueType # 59 +""" +a-f-G-U-C-I-L: Friendly ground unit combat infantry light +""" +CotType_a_f_G_U_C_R_O: CotType.ValueType # 60 +""" +a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other +""" +CotType_a_f_G_U_C_R_V: CotType.ValueType # 61 +""" +a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry +""" +CotType_a_f_G_U_H: CotType.ValueType # 62 +""" +a-f-G-U-H: Friendly ground unit headquarters +""" +CotType_a_f_G_U_U_M_S_E: CotType.ValueType # 63 +""" +a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation +""" +CotType_a_f_G_U_S_M_C: CotType.ValueType # 64 +""" +a-f-G-U-S-M-C: Friendly ground unit support maintenance collection +""" +CotType_a_f_G_E_S: CotType.ValueType # 65 +"""Friendly ground equipment + + +a-f-G-E-S: Friendly ground equipment sensor (generic) +""" +CotType_a_f_G_E: CotType.ValueType # 66 +""" +a-f-G-E: Friendly ground equipment (generic) +""" +CotType_a_f_G_E_V_C_U: CotType.ValueType # 67 +""" +a-f-G-E-V-C-U: Friendly ground equipment vehicle utility +""" +CotType_a_f_G_E_V_C_ps: CotType.ValueType # 68 +""" +a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety +""" +CotType_a_u_G_E_V: CotType.ValueType # 69 +"""Unknown ground + + +a-u-G-E-V: Unknown ground equipment vehicle +""" +CotType_a_f_S_N_N_R: CotType.ValueType # 70 +"""Sea + + +a-f-S-N-N-R: Friendly sea surface non-naval rescue +""" +CotType_a_f_F_B: CotType.ValueType # 71 +"""Friendly force (non-domain-specific) + + +a-f-F-B: Friendly force boundary +""" +CotType_b_m_p_s_p_loc: CotType.ValueType # 72 +"""Bits / data messages + + +b-m-p-s-p-loc: Self-position location marker +""" +CotType_b_i_v: CotType.ValueType # 73 +""" +b-i-v: Imagery/video +""" +CotType_b_f_t_r: CotType.ValueType # 74 +""" +b-f-t-r: File transfer request +""" +CotType_b_f_t_a: CotType.ValueType # 75 +""" +b-f-t-a: File transfer acknowledgment +""" +CotType_u_d_f_m: CotType.ValueType # 76 +"""--- Additional drawing / tactical graphics --- + + +u-d-f-m: Freehand telestration / annotation. Anchor at event point, +geometry carried via DrawnShape.vertices. May be truncated to +MAX_VERTICES by the sender. +""" +CotType_u_d_p: CotType.ValueType # 77 +""" +u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices, +implicitly closed (receiver duplicates first vertex as needed). +""" +CotType_b_m_p_s_m: CotType.ValueType # 78 +"""--- Additional markers --- + + +b-m-p-s-m: Spot map marker (colored dot at a point of interest). +""" +CotType_b_m_p_c: CotType.ValueType # 79 +""" +b-m-p-c: Checkpoint (intermediate route control point). +""" +CotType_u_r_b_c_c: CotType.ValueType # 80 +"""--- Ranging tools --- + + +u-r-b-c-c: Ranging circle (range rings centered on the event point). +""" +CotType_u_r_b_bullseye: CotType.ValueType # 81 +""" +u-r-b-bullseye: Bullseye with configurable range rings and bearing +reference (magnetic / true / grid). +""" +CotType_a_f_G_E_V_A: CotType.ValueType # 82 +"""--- PLI self-reporting (1) ------------------------------------------ + + +a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI. +""" +CotType_a_n_A: CotType.ValueType # 83 +"""--- 2525 quick-drop: basic affiliation gaps ------------------------- + + +a-n-A: Neutral aircraft (friendly/hostile/unknown already present). +""" +CotType_a_u_G_U_C_F: CotType.ValueType # 84 +"""--- 2525 quick-drop: artillery (4) ----------------------------------""" +CotType_a_n_G_U_C_F: CotType.ValueType # 85 +CotType_a_h_G_U_C_F: CotType.ValueType # 86 +CotType_a_f_G_U_C_F: CotType.ValueType # 87 +CotType_a_u_G_I: CotType.ValueType # 88 +"""--- 2525 quick-drop: building (4) -----------------------------------""" +CotType_a_n_G_I: CotType.ValueType # 89 +CotType_a_h_G_I: CotType.ValueType # 90 +CotType_a_f_G_I: CotType.ValueType # 91 +CotType_a_u_G_E_X_M: CotType.ValueType # 92 +"""--- 2525 quick-drop: mine (4) ---------------------------------------""" +CotType_a_n_G_E_X_M: CotType.ValueType # 93 +CotType_a_h_G_E_X_M: CotType.ValueType # 94 +CotType_a_f_G_E_X_M: CotType.ValueType # 95 +CotType_a_u_S: CotType.ValueType # 96 +"""--- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------""" +CotType_a_n_S: CotType.ValueType # 97 +CotType_a_h_S: CotType.ValueType # 98 +CotType_a_u_G_U_C_I_d: CotType.ValueType # 99 +"""--- 2525 quick-drop: sniper (4) -------------------------------------""" +CotType_a_n_G_U_C_I_d: CotType.ValueType # 100 +CotType_a_h_G_U_C_I_d: CotType.ValueType # 101 +CotType_a_f_G_U_C_I_d: CotType.ValueType # 102 +CotType_a_u_G_E_V_A_T: CotType.ValueType # 103 +"""--- 2525 quick-drop: tank (4) ---------------------------------------""" +CotType_a_n_G_E_V_A_T: CotType.ValueType # 104 +CotType_a_h_G_E_V_A_T: CotType.ValueType # 105 +CotType_a_f_G_E_V_A_T: CotType.ValueType # 106 +CotType_a_u_G_U_C_I: CotType.ValueType # 107 +"""--- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) -----------""" +CotType_a_n_G_U_C_I: CotType.ValueType # 108 +CotType_a_h_G_U_C_I: CotType.ValueType # 109 +CotType_a_n_G_E_V: CotType.ValueType # 110 +"""--- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) ---""" +CotType_a_h_G_E_V: CotType.ValueType # 111 +CotType_a_f_G_E_V: CotType.ValueType # 112 +CotType_b_m_p_w_GOTO: CotType.ValueType # 113 +"""--- Mission-specific points (4) ------------------------------------- + + +b-m-p-w-GOTO: Go To / bloodhound navigation target. +""" +CotType_b_m_p_c_ip: CotType.ValueType # 114 +""" +b-m-p-c-ip: Initial point (mission planning). +""" +CotType_b_m_p_c_cp: CotType.ValueType # 115 +""" +b-m-p-c-cp: Contact point (mission planning). +""" +CotType_b_m_p_s_p_op: CotType.ValueType # 116 +""" +b-m-p-s-p-op: Observation post. +""" +CotType_u_d_v: CotType.ValueType # 117 +"""--- Vehicle drawings (2) -------------------------------------------- + + +u-d-v: 2D vehicle outline drawn on the map. +""" +CotType_u_d_v_m: CotType.ValueType # 118 +""" +u-d-v-m: 3D vehicle model reference. +""" +CotType_u_d_c_e: CotType.ValueType # 119 +"""--- Drawing shapes (1) ---------------------------------------------- + + +u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes). +""" +CotType_b_i_x_i: CotType.ValueType # 120 +"""--- Image / media marker (1) ---------------------------------------- + + +b-i-x-i: Quick Pic geotagged image marker. The image itself does not +ride on LoRa; this event references the image via iconset metadata. +""" +CotType_b_t_f_d: CotType.ValueType # 121 +"""--- GeoChat receipts (2) -------------------------------------------- + + +b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat` +payload_variant via GeoChat.receipt_for_uid + receipt_type. +""" +CotType_b_t_f_r: CotType.ValueType # 122 +""" +b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d. +""" +CotType_b_a_o_c: CotType.ValueType # 123 +"""--- Custom emergency (1) -------------------------------------------- + + +b-a-o-c: Custom / generic emergency beacon. +""" +CotType_t_s: CotType.ValueType # 124 +"""--- Tasking (1) ----------------------------------------------------- + + +t-s: Task / engage request. Structured payload carried via the new +TaskRequest typed variant. +""" +CotType_m_t_t: CotType.ValueType # 125 +"""-- TAKTALK plugin shapes -- +CoT types unique to the TAKTALK ATAK plugin. Note `y-` has a literal +trailing dash and no second atom — that's the wire format ATAK emits +for TAKTALK room broadcasts. The CotType enum encodes the literal +string verbatim (CotType_y -> "y-") so receivers reconstruct the +original event type byte-for-byte without consulting cot_type_str. + + +m-t-t: TAKTALK voice/text chat message. Payload carried via the +TakTalkMessage typed variant (text, chatroom_id, lang, from_voice). +""" +CotType_y: CotType.ValueType # 126 +""" +y-: TAKTALK room/membership broadcast. Payload carried via the +TakTalkRoomData typed variant (sender_callsign, room_id, room_name, +participants). The CoT type literally has a trailing dash and no +second atom — not a typo. +""" +global___CotType = CotType + +class _GeoPointSource: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _GeoPointSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_GeoPointSource.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + GeoPointSource_Unspecified: _GeoPointSource.ValueType # 0 + """ + Unspecified + """ + GeoPointSource_GPS: _GeoPointSource.ValueType # 1 + """ + GPS derived + """ + GeoPointSource_USER: _GeoPointSource.ValueType # 2 + """ + User entered + """ + GeoPointSource_NETWORK: _GeoPointSource.ValueType # 3 + """ + Network/external + """ + +class GeoPointSource(_GeoPointSource, metaclass=_GeoPointSourceEnumTypeWrapper): + """ + Geopoint and altitude source + """ + +GeoPointSource_Unspecified: GeoPointSource.ValueType # 0 +""" +Unspecified +""" +GeoPointSource_GPS: GeoPointSource.ValueType # 1 +""" +GPS derived +""" +GeoPointSource_USER: GeoPointSource.ValueType # 2 +""" +User entered +""" +GeoPointSource_NETWORK: GeoPointSource.ValueType # 3 +""" +Network/external +""" +global___GeoPointSource = GeoPointSource + @typing.final class TAKPacket(google.protobuf.message.Message): """ @@ -313,12 +1466,47 @@ class GeoChat(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + class _ReceiptType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ReceiptTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[GeoChat._ReceiptType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + ReceiptType_None: GeoChat._ReceiptType.ValueType # 0 + """normal chat message""" + ReceiptType_Delivered: GeoChat._ReceiptType.ValueType # 1 + """b-t-f-d delivered receipt""" + ReceiptType_Read: GeoChat._ReceiptType.ValueType # 2 + """b-t-f-r read receipt""" + + class ReceiptType(_ReceiptType, metaclass=_ReceiptTypeEnumTypeWrapper): + """ + Receipt discriminator. Set alongside cot_type_id = b-t-f-d (delivered) + or b-t-f-r (read). ReceiptType_None is the default for a normal chat + message (cot_type_id = b-t-f). + + Receivers can detect a receipt by checking receipt_type != ReceiptType_None + without re-parsing the envelope cot_type_id. + """ + + ReceiptType_None: GeoChat.ReceiptType.ValueType # 0 + """normal chat message""" + ReceiptType_Delivered: GeoChat.ReceiptType.ValueType # 1 + """b-t-f-d delivered receipt""" + ReceiptType_Read: GeoChat.ReceiptType.ValueType # 2 + """b-t-f-r read receipt""" + MESSAGE_FIELD_NUMBER: builtins.int TO_FIELD_NUMBER: builtins.int TO_CALLSIGN_FIELD_NUMBER: builtins.int + RECEIPT_FOR_UID_FIELD_NUMBER: builtins.int + RECEIPT_TYPE_FIELD_NUMBER: builtins.int + LANG_FIELD_NUMBER: builtins.int + ROOM_ID_FIELD_NUMBER: builtins.int + VOICE_PROFILE_ID_FIELD_NUMBER: builtins.int message: builtins.str """ - The text message + The text message. Empty for receipts. """ to: builtins.str """ @@ -328,19 +1516,75 @@ class GeoChat(google.protobuf.message.Message): """ Callsign of the recipient for the message """ + receipt_for_uid: builtins.str + """ + UID of the chat message this event is acknowledging. Empty for a + normal chat message; set for delivered / read receipts. Paired with + receipt_type so receivers can match the ack back to the original + outbound GeoChat by its event uid. + """ + receipt_type: global___GeoChat.ReceiptType.ValueType + """ + Receipt kind discriminator. See ReceiptType doc. Default ReceiptType_None + means this is a regular chat message, not a receipt. + """ + lang: builtins.str + """ + --- TAKTALK-flavored b-t-f extensions --- + + Set when the ATAK TAKTALK plugin originates the chat, so the message + carries the room/language metadata TAKTALK uses to thread its UI. + These fields are absent / empty for non-TAKTALK CoT chat, so the wire + cost is paid only when TAKTALK is actually involved. + + Wire shape in source XML (inside /): + English - lang + UUID - room_id + X - voice_profile_id + - empty marker; encoded as + present-but-empty string + + + BCP-47-ish language tag or human-readable name (e.g. "en", "English") + that the originator's TAKTALK plugin recorded for the message. + """ + room_id: builtins.str + """ + TAKTALK chatroom UUID (e.g. "30b2755c-c547-44ef-a0cc-cdbd8a15616f") that + the receiver's TAKTALK plugin uses to thread the message under the + right room. Resolved to a friendly name via TakTalkRoomData broadcasts. + """ + voice_profile_id: builtins.str + """ + TAKTALK voice profile pointer. Often empty in practice (the empty + marker `` still signals TAKTALK origination), so + receivers should treat empty-but-present as the equivalent of the + marker rather than a missing field. + """ def __init__( self, *, message: builtins.str = ..., to: builtins.str | None = ..., to_callsign: builtins.str | None = ..., + receipt_for_uid: builtins.str = ..., + receipt_type: global___GeoChat.ReceiptType.ValueType = ..., + lang: builtins.str | None = ..., + room_id: builtins.str | None = ..., + voice_profile_id: 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: ... + def HasField(self, field_name: typing.Literal["_lang", b"_lang", "_room_id", b"_room_id", "_to", b"_to", "_to_callsign", b"_to_callsign", "_voice_profile_id", b"_voice_profile_id", "lang", b"lang", "room_id", b"room_id", "to", b"to", "to_callsign", b"to_callsign", "voice_profile_id", b"voice_profile_id"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_lang", b"_lang", "_room_id", b"_room_id", "_to", b"_to", "_to_callsign", b"_to_callsign", "_voice_profile_id", b"_voice_profile_id", "lang", b"lang", "message", b"message", "receipt_for_uid", b"receipt_for_uid", "receipt_type", b"receipt_type", "room_id", b"room_id", "to", b"to", "to_callsign", b"to_callsign", "voice_profile_id", b"voice_profile_id"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_lang", b"_lang"]) -> typing.Literal["lang"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_room_id", b"_room_id"]) -> typing.Literal["room_id"] | 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: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_voice_profile_id", b"_voice_profile_id"]) -> typing.Literal["voice_profile_id"] | None: ... global___GeoChat = GeoChat @@ -475,3 +1719,2134 @@ class PLI(google.protobuf.message.Message): 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 + +@typing.final +class AircraftTrack(google.protobuf.message.Message): + """ + Aircraft track information from ADS-B or military air tracking. + Covers the majority of observed real-world CoT traffic. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ICAO_FIELD_NUMBER: builtins.int + REGISTRATION_FIELD_NUMBER: builtins.int + FLIGHT_FIELD_NUMBER: builtins.int + AIRCRAFT_TYPE_FIELD_NUMBER: builtins.int + SQUAWK_FIELD_NUMBER: builtins.int + CATEGORY_FIELD_NUMBER: builtins.int + RSSI_X10_FIELD_NUMBER: builtins.int + GPS_FIELD_NUMBER: builtins.int + COT_HOST_ID_FIELD_NUMBER: builtins.int + icao: builtins.str + """ + ICAO hex identifier (e.g. "AD237C") + """ + registration: builtins.str + """ + Aircraft registration (e.g. "N946AK") + """ + flight: builtins.str + """ + Flight number/callsign (e.g. "ASA864") + """ + aircraft_type: builtins.str + """ + ICAO aircraft type designator (e.g. "B39M") + """ + squawk: builtins.int + """ + Transponder squawk code (0-7777 octal) + """ + category: builtins.str + """ + ADS-B emitter category (e.g. "A3") + """ + rssi_x10: builtins.int + """ + Received signal strength * 10 (e.g. -194 for -19.4 dBm) + """ + gps: builtins.bool + """ + Whether receiver has GPS fix + """ + cot_host_id: builtins.str + """ + CoT host ID for source attribution + """ + def __init__( + self, + *, + icao: builtins.str = ..., + registration: builtins.str = ..., + flight: builtins.str = ..., + aircraft_type: builtins.str = ..., + squawk: builtins.int = ..., + category: builtins.str = ..., + rssi_x10: builtins.int = ..., + gps: builtins.bool = ..., + cot_host_id: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["aircraft_type", b"aircraft_type", "category", b"category", "cot_host_id", b"cot_host_id", "flight", b"flight", "gps", b"gps", "icao", b"icao", "registration", b"registration", "rssi_x10", b"rssi_x10", "squawk", b"squawk"]) -> None: ... + +global___AircraftTrack = AircraftTrack + +@typing.final +class CotGeoPoint(google.protobuf.message.Message): + """ + Compact geographic vertex used by repeated vertex lists in TAK geometry + payloads. Named with a `Cot` prefix to avoid a namespace collision with + `meshtastic.GeoPoint` in `device_ui.proto`, which is an unrelated zoom/ + latitude/longitude type used by the on-device map UI. + + Encoded as a signed DELTA from TAKPacketV2.latitude_i / longitude_i (the + enclosing event's anchor point). The absolute coordinate is recovered by + the receiver as `event.latitude_i + vertex.lat_delta_i` (and likewise for + longitude). + + Why deltas: a 32-vertex telestration with vertices clustered within a few + hundred meters of the anchor has per-vertex deltas in the ±10^4 range. + Under sint32+zigzag those encode as 2 bytes each (tag+varint), versus the + 4 bytes that sfixed32 would always require. At 32 vertices that is ~128 + bytes of savings — the difference between fitting under the LoRa MTU or + not. Absolute coordinates (values ~10^9) would cost sint32 varint 5 bytes + per field, which is why TAKPacketV2's top-level latitude_i / longitude_i + stay sfixed32 — only small values win with sint32. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + LAT_DELTA_I_FIELD_NUMBER: builtins.int + LON_DELTA_I_FIELD_NUMBER: builtins.int + lat_delta_i: builtins.int + """ + Latitude delta from TAKPacketV2.latitude_i, in 1e-7 degree units. + Add to the enclosing event's latitude_i to recover the absolute latitude. + """ + lon_delta_i: builtins.int + """ + Longitude delta from TAKPacketV2.longitude_i, in 1e-7 degree units. + """ + def __init__( + self, + *, + lat_delta_i: builtins.int = ..., + lon_delta_i: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["lat_delta_i", b"lat_delta_i", "lon_delta_i", b"lon_delta_i"]) -> None: ... + +global___CotGeoPoint = CotGeoPoint + +@typing.final +class DrawnShape(google.protobuf.message.Message): + """ + User-drawn tactical graphic: circle, rectangle, polygon, polyline, freehand + telestration, ranging circle, or bullseye. + + Covers CoT types u-d-c-c, u-d-r, u-d-f, u-d-f-m, u-d-p, u-r-b-c-c, + u-r-b-bullseye. The shape's anchor position is carried on + TAKPacketV2.latitude_i/longitude_i; polyline/polygon vertices are in the + `vertices` repeated field as `CotGeoPoint` deltas from that anchor. + + Colors use the Team enum as a 14-color palette (see color encoding below) + with a fixed32 exact-ARGB fallback for custom user-picked colors that + don't map to a palette entry. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Kind: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrawnShape._Kind.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Kind_Unspecified: DrawnShape._Kind.ValueType # 0 + """ + Unspecified (do not use on the wire) + """ + Kind_Circle: DrawnShape._Kind.ValueType # 1 + """ + u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point) + """ + Kind_Rectangle: DrawnShape._Kind.ValueType # 2 + """ + u-d-r: User-drawn rectangle (uses vertices = 4 corners) + """ + Kind_Freeform: DrawnShape._Kind.ValueType # 3 + """ + u-d-f: User-drawn polyline (uses vertices, not closed) + """ + Kind_Telestration: DrawnShape._Kind.ValueType # 4 + """ + u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated) + """ + Kind_Polygon: DrawnShape._Kind.ValueType # 5 + """ + u-d-p: Closed polygon (uses vertices, implicitly closed) + """ + Kind_RangingCircle: DrawnShape._Kind.ValueType # 6 + """ + u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill) + """ + Kind_Bullseye: DrawnShape._Kind.ValueType # 7 + """ + u-r-b-bullseye: Bullseye ring with range rings and bearing reference + """ + Kind_Ellipse: DrawnShape._Kind.ValueType # 8 + """ + u-d-c-e: Ellipse with distinct major/minor axes (same storage as + Kind_Circle — uses major_cm/minor_cm/angle_deg — but receivers + render it as a non-circular ellipse rather than a round circle). + """ + Kind_Vehicle2D: DrawnShape._Kind.ValueType # 9 + """ + u-d-v: 2D vehicle outline drawn on the map. Vertices carry the + outline polygon; receivers draw it as a filled polygon. + """ + Kind_Vehicle3D: DrawnShape._Kind.ValueType # 10 + """ + u-d-v-m: 3D vehicle model reference. Same vertex polygon as + Kind_Vehicle2D; receivers that support 3D rendering extrude it. + """ + + class Kind(_Kind, metaclass=_KindEnumTypeWrapper): + """ + Shape kind discriminator. Drives receiver rendering and also controls + which optional fields below are meaningful. + """ + + Kind_Unspecified: DrawnShape.Kind.ValueType # 0 + """ + Unspecified (do not use on the wire) + """ + Kind_Circle: DrawnShape.Kind.ValueType # 1 + """ + u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point) + """ + Kind_Rectangle: DrawnShape.Kind.ValueType # 2 + """ + u-d-r: User-drawn rectangle (uses vertices = 4 corners) + """ + Kind_Freeform: DrawnShape.Kind.ValueType # 3 + """ + u-d-f: User-drawn polyline (uses vertices, not closed) + """ + Kind_Telestration: DrawnShape.Kind.ValueType # 4 + """ + u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated) + """ + Kind_Polygon: DrawnShape.Kind.ValueType # 5 + """ + u-d-p: Closed polygon (uses vertices, implicitly closed) + """ + Kind_RangingCircle: DrawnShape.Kind.ValueType # 6 + """ + u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill) + """ + Kind_Bullseye: DrawnShape.Kind.ValueType # 7 + """ + u-r-b-bullseye: Bullseye ring with range rings and bearing reference + """ + Kind_Ellipse: DrawnShape.Kind.ValueType # 8 + """ + u-d-c-e: Ellipse with distinct major/minor axes (same storage as + Kind_Circle — uses major_cm/minor_cm/angle_deg — but receivers + render it as a non-circular ellipse rather than a round circle). + """ + Kind_Vehicle2D: DrawnShape.Kind.ValueType # 9 + """ + u-d-v: 2D vehicle outline drawn on the map. Vertices carry the + outline polygon; receivers draw it as a filled polygon. + """ + Kind_Vehicle3D: DrawnShape.Kind.ValueType # 10 + """ + u-d-v-m: 3D vehicle model reference. Same vertex polygon as + Kind_Vehicle2D; receivers that support 3D rendering extrude it. + """ + + class _StyleMode: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _StyleModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrawnShape._StyleMode.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + StyleMode_Unspecified: DrawnShape._StyleMode.ValueType # 0 + """ + Unspecified — receiver infers from which color fields are non-zero. + """ + StyleMode_StrokeOnly: DrawnShape._StyleMode.ValueType # 1 + """ + Stroke only. No in the source XML. Used for polylines, + ranging lines, bullseye rings. + """ + StyleMode_FillOnly: DrawnShape._StyleMode.ValueType # 2 + """ + Fill only. No in the source XML. Rare but valid in + ATAK (solid region with no outline). + """ + StyleMode_StrokeAndFill: DrawnShape._StyleMode.ValueType # 3 + """ + Both stroke and fill present. Closed shapes: circle, rectangle, + polygon, ranging circle. + """ + + class StyleMode(_StyleMode, metaclass=_StyleModeEnumTypeWrapper): + """ + Explicit stroke/fill/both discriminator. + + ATAK's source XML distinguishes "stroke-only polyline" from "closed shape + with both stroke and fill" by the presence of the element. + Both states can hash to all-zero color fields, so we carry the signal + explicitly. Parser sets this from (sawStrokeColor, sawFillColor) at the + end of parse; builder uses it to decide which of / + to emit in the reconstructed XML. + """ + + StyleMode_Unspecified: DrawnShape.StyleMode.ValueType # 0 + """ + Unspecified — receiver infers from which color fields are non-zero. + """ + StyleMode_StrokeOnly: DrawnShape.StyleMode.ValueType # 1 + """ + Stroke only. No in the source XML. Used for polylines, + ranging lines, bullseye rings. + """ + StyleMode_FillOnly: DrawnShape.StyleMode.ValueType # 2 + """ + Fill only. No in the source XML. Rare but valid in + ATAK (solid region with no outline). + """ + StyleMode_StrokeAndFill: DrawnShape.StyleMode.ValueType # 3 + """ + Both stroke and fill present. Closed shapes: circle, rectangle, + polygon, ranging circle. + """ + + KIND_FIELD_NUMBER: builtins.int + STYLE_FIELD_NUMBER: builtins.int + MAJOR_CM_FIELD_NUMBER: builtins.int + MINOR_CM_FIELD_NUMBER: builtins.int + ANGLE_DEG_FIELD_NUMBER: builtins.int + STROKE_COLOR_FIELD_NUMBER: builtins.int + STROKE_ARGB_FIELD_NUMBER: builtins.int + STROKE_WEIGHT_X10_FIELD_NUMBER: builtins.int + FILL_COLOR_FIELD_NUMBER: builtins.int + FILL_ARGB_FIELD_NUMBER: builtins.int + LABELS_ON_FIELD_NUMBER: builtins.int + VERTEX_LAT_DELTAS_FIELD_NUMBER: builtins.int + VERTEX_LON_DELTAS_FIELD_NUMBER: builtins.int + TRUNCATED_FIELD_NUMBER: builtins.int + BULLSEYE_DISTANCE_DM_FIELD_NUMBER: builtins.int + BULLSEYE_BEARING_REF_FIELD_NUMBER: builtins.int + BULLSEYE_FLAGS_FIELD_NUMBER: builtins.int + BULLSEYE_UID_REF_FIELD_NUMBER: builtins.int + kind: global___DrawnShape.Kind.ValueType + """ + Shape kind (circle, rectangle, freeform, etc.) + """ + style: global___DrawnShape.StyleMode.ValueType + """ + Explicit stroke/fill/both discriminator. See StyleMode doc. + """ + major_cm: builtins.int + """ + Ellipse major radius in centimeters. 0 for non-ellipse kinds. + """ + minor_cm: builtins.int + """ + Ellipse minor radius in centimeters. 0 for non-ellipse kinds. + """ + angle_deg: builtins.int + """ + Ellipse rotation angle in degrees. Valid values are 0..360 inclusive; + 0 and 360 are equivalent rotations. In proto3, an unset uint32 reads + as 0, so senders should emit 0 when the angle is unspecified. + """ + stroke_color: global___Team.ValueType + """ + Stroke color as a named palette entry from the Team enum. If + Unspecifed_Color, the exact ARGB is carried in stroke_argb. + Valid only when style is StrokeOnly or StrokeAndFill. + """ + stroke_argb: builtins.int + """ + Stroke color as an exact 32-bit ARGB bit pattern. Always populated + on the wire; readers MUST use this value when stroke_color == + Unspecifed_Color and MAY use it to recover the exact original bytes + even when a palette entry is set. + """ + stroke_weight_x10: builtins.int + """ + Stroke weight in tenths of a unit (e.g. 30 = 3.0). Typical ATAK + range 10..60. + """ + fill_color: global___Team.ValueType + """ + Fill color as a named palette entry. See stroke_color docs. + Valid only when style is FillOnly or StrokeAndFill. + """ + fill_argb: builtins.int + """ + Fill color exact ARGB fallback. See stroke_argb docs. + """ + labels_on: builtins.bool + """ + Whether labels are rendered on this shape. + """ + truncated: builtins.bool + """ + True if the sender truncated the vertex columns to fit the pool. + --- Bullseye-only fields. All ignored unless kind == Kind_Bullseye. --- + """ + bullseye_distance_dm: builtins.int + """ + Bullseye distance in meters * 10 (e.g. 3285 = 328.5 m). 0 = unset. + """ + bullseye_bearing_ref: builtins.int + """ + Bullseye bearing reference: 0 unset, 1 Magnetic, 2 True, 3 Grid. + """ + bullseye_flags: builtins.int + """ + Bullseye attribute bit flags: + bit 0: rangeRingVisible + bit 1: hasRangeRings + bit 2: edgeToCenter + bit 3: mils + """ + bullseye_uid_ref: builtins.str + """ + Bullseye reference UID (anchor marker). Empty = anchor is self. + """ + @property + def vertex_lat_deltas(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + @property + def vertex_lon_deltas(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def __init__( + self, + *, + kind: global___DrawnShape.Kind.ValueType = ..., + style: global___DrawnShape.StyleMode.ValueType = ..., + major_cm: builtins.int = ..., + minor_cm: builtins.int = ..., + angle_deg: builtins.int = ..., + stroke_color: global___Team.ValueType = ..., + stroke_argb: builtins.int = ..., + stroke_weight_x10: builtins.int = ..., + fill_color: global___Team.ValueType = ..., + fill_argb: builtins.int = ..., + labels_on: builtins.bool = ..., + vertex_lat_deltas: collections.abc.Iterable[builtins.int] | None = ..., + vertex_lon_deltas: collections.abc.Iterable[builtins.int] | None = ..., + truncated: builtins.bool = ..., + bullseye_distance_dm: builtins.int = ..., + bullseye_bearing_ref: builtins.int = ..., + bullseye_flags: builtins.int = ..., + bullseye_uid_ref: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["angle_deg", b"angle_deg", "bullseye_bearing_ref", b"bullseye_bearing_ref", "bullseye_distance_dm", b"bullseye_distance_dm", "bullseye_flags", b"bullseye_flags", "bullseye_uid_ref", b"bullseye_uid_ref", "fill_argb", b"fill_argb", "fill_color", b"fill_color", "kind", b"kind", "labels_on", b"labels_on", "major_cm", b"major_cm", "minor_cm", b"minor_cm", "stroke_argb", b"stroke_argb", "stroke_color", b"stroke_color", "stroke_weight_x10", b"stroke_weight_x10", "style", b"style", "truncated", b"truncated", "vertex_lat_deltas", b"vertex_lat_deltas", "vertex_lon_deltas", b"vertex_lon_deltas"]) -> None: ... + +global___DrawnShape = DrawnShape + +@typing.final +class Marker(google.protobuf.message.Message): + """ + Fixed point of interest: spot marker, waypoint, checkpoint, 2525 symbol, + or custom icon. + + Covers CoT types b-m-p-s-m, b-m-p-w, b-m-p-c, b-m-p-s-p-i, b-m-p-s-p-loc, + plus a-u-G / a-f-G / a-h-G / a-n-G with iconset paths. The marker position + is carried on TAKPacketV2.latitude_i/longitude_i; fields below carry only + the marker-specific metadata. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Kind: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Marker._Kind.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Kind_Unspecified: Marker._Kind.ValueType # 0 + """ + Unspecified — fall back to TAKPacketV2.cot_type_id + """ + Kind_Spot: Marker._Kind.ValueType # 1 + """ + b-m-p-s-m: Spot map marker + """ + Kind_Waypoint: Marker._Kind.ValueType # 2 + """ + b-m-p-w: Route waypoint + """ + Kind_Checkpoint: Marker._Kind.ValueType # 3 + """ + b-m-p-c: Checkpoint + """ + Kind_SelfPosition: Marker._Kind.ValueType # 4 + """ + b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker + """ + Kind_Symbol2525: Marker._Kind.ValueType # 5 + """ + 2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...) + """ + Kind_SpotMap: Marker._Kind.ValueType # 6 + """ + COT_MAPPING_SPOTMAP icon (e.g. colored dot) + """ + Kind_CustomIcon: Marker._Kind.ValueType # 7 + """ + Custom icon set (UUID/GroupName/filename.png) + """ + Kind_GoToPoint: Marker._Kind.ValueType # 8 + """ + b-m-p-w-GOTO: Go To / bloodhound navigation waypoint. + """ + Kind_InitialPoint: Marker._Kind.ValueType # 9 + """ + b-m-p-c-ip: Initial point (mission planning control point). + """ + Kind_ContactPoint: Marker._Kind.ValueType # 10 + """ + b-m-p-c-cp: Contact point (mission planning control point). + """ + Kind_ObservationPost: Marker._Kind.ValueType # 11 + """ + b-m-p-s-p-op: Observation post. + """ + Kind_ImageMarker: Marker._Kind.ValueType # 12 + """ + b-i-x-i: Quick Pic geotagged image marker. iconset carries the + image reference (local filename or remote URL); the image itself + does not ride on the LoRa wire. + """ + + class Kind(_Kind, metaclass=_KindEnumTypeWrapper): + """ + Marker kind. Used to pick sensible receiver defaults when the CoT type + alone is ambiguous (e.g. a-u-G could be a 2525 symbol or a custom icon + depending on the iconset path). + """ + + Kind_Unspecified: Marker.Kind.ValueType # 0 + """ + Unspecified — fall back to TAKPacketV2.cot_type_id + """ + Kind_Spot: Marker.Kind.ValueType # 1 + """ + b-m-p-s-m: Spot map marker + """ + Kind_Waypoint: Marker.Kind.ValueType # 2 + """ + b-m-p-w: Route waypoint + """ + Kind_Checkpoint: Marker.Kind.ValueType # 3 + """ + b-m-p-c: Checkpoint + """ + Kind_SelfPosition: Marker.Kind.ValueType # 4 + """ + b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker + """ + Kind_Symbol2525: Marker.Kind.ValueType # 5 + """ + 2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...) + """ + Kind_SpotMap: Marker.Kind.ValueType # 6 + """ + COT_MAPPING_SPOTMAP icon (e.g. colored dot) + """ + Kind_CustomIcon: Marker.Kind.ValueType # 7 + """ + Custom icon set (UUID/GroupName/filename.png) + """ + Kind_GoToPoint: Marker.Kind.ValueType # 8 + """ + b-m-p-w-GOTO: Go To / bloodhound navigation waypoint. + """ + Kind_InitialPoint: Marker.Kind.ValueType # 9 + """ + b-m-p-c-ip: Initial point (mission planning control point). + """ + Kind_ContactPoint: Marker.Kind.ValueType # 10 + """ + b-m-p-c-cp: Contact point (mission planning control point). + """ + Kind_ObservationPost: Marker.Kind.ValueType # 11 + """ + b-m-p-s-p-op: Observation post. + """ + Kind_ImageMarker: Marker.Kind.ValueType # 12 + """ + b-i-x-i: Quick Pic geotagged image marker. iconset carries the + image reference (local filename or remote URL); the image itself + does not ride on the LoRa wire. + """ + + KIND_FIELD_NUMBER: builtins.int + COLOR_FIELD_NUMBER: builtins.int + COLOR_ARGB_FIELD_NUMBER: builtins.int + READINESS_FIELD_NUMBER: builtins.int + PARENT_UID_FIELD_NUMBER: builtins.int + PARENT_TYPE_FIELD_NUMBER: builtins.int + PARENT_CALLSIGN_FIELD_NUMBER: builtins.int + ICONSET_FIELD_NUMBER: builtins.int + kind: global___Marker.Kind.ValueType + """ + Marker kind + """ + color: global___Team.ValueType + """ + Marker color as a named palette entry. If Unspecifed_Color, the exact + ARGB is in color_argb. + """ + color_argb: builtins.int + """ + Marker color exact ARGB bit pattern. Always populated on the wire. + """ + readiness: builtins.bool + """ + Status readiness flag (ATAK ). + """ + parent_uid: builtins.str + """ + Parent link UID (ATAK ). Empty = no parent. + For spot/waypoint markers this is typically the producing TAK user's UID. + """ + parent_type: builtins.str + """ + Parent CoT type (e.g. "a-f-G-U-C"). Usually the parent TAK user's type. + """ + parent_callsign: builtins.str + """ + Parent callsign (e.g. "HOPE"). + """ + iconset: builtins.str + """ + Iconset path stored verbatim. ATAK emits three flavors: + Kind_Symbol2525 -> "COT_MAPPING_2525B//" + Kind_SpotMap -> "COT_MAPPING_SPOTMAP//" + Kind_CustomIcon -> "//.png" + Stored end-to-end without prefix stripping; the ~19 bytes saved by + stripping well-known prefixes are not worth the builder-side bug + surface, and the dict compresses the repetition effectively. + """ + def __init__( + self, + *, + kind: global___Marker.Kind.ValueType = ..., + color: global___Team.ValueType = ..., + color_argb: builtins.int = ..., + readiness: builtins.bool = ..., + parent_uid: builtins.str = ..., + parent_type: builtins.str = ..., + parent_callsign: builtins.str = ..., + iconset: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["color", b"color", "color_argb", b"color_argb", "iconset", b"iconset", "kind", b"kind", "parent_callsign", b"parent_callsign", "parent_type", b"parent_type", "parent_uid", b"parent_uid", "readiness", b"readiness"]) -> None: ... + +global___Marker = Marker + +@typing.final +class RangeAndBearing(google.protobuf.message.Message): + """ + Range and bearing measurement line from the event anchor to a target point. + + Covers CoT type u-rb-a. The anchor position is on + TAKPacketV2.latitude_i/longitude_i; the target endpoint is carried as a + CotGeoPoint — same delta-from-anchor encoding used by DrawnShape.vertices + so a self-anchored RAB (common case) encodes in zero bytes. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ANCHOR_FIELD_NUMBER: builtins.int + ANCHOR_UID_FIELD_NUMBER: builtins.int + RANGE_CM_FIELD_NUMBER: builtins.int + BEARING_CDEG_FIELD_NUMBER: builtins.int + STROKE_COLOR_FIELD_NUMBER: builtins.int + STROKE_ARGB_FIELD_NUMBER: builtins.int + STROKE_WEIGHT_X10_FIELD_NUMBER: builtins.int + anchor_uid: builtins.str + """ + Anchor UID (from ). Empty = free-standing. + """ + range_cm: builtins.int + """ + Range in centimeters (value * 100). Range 0..4294 km. + """ + bearing_cdeg: builtins.int + """ + Bearing in degrees * 100 (0..36000). + """ + stroke_color: global___Team.ValueType + """ + Stroke color as a Team palette entry. See DrawnShape.stroke_color doc. + """ + stroke_argb: builtins.int + """ + Stroke color exact ARGB fallback. + """ + stroke_weight_x10: builtins.int + """ + Stroke weight * 10 (e.g. 30 = 3.0). + """ + @property + def anchor(self) -> global___CotGeoPoint: + """ + Target/anchor endpoint (delta-encoded from TAKPacketV2.latitude_i/longitude_i). + """ + + def __init__( + self, + *, + anchor: global___CotGeoPoint | None = ..., + anchor_uid: builtins.str = ..., + range_cm: builtins.int = ..., + bearing_cdeg: builtins.int = ..., + stroke_color: global___Team.ValueType = ..., + stroke_argb: builtins.int = ..., + stroke_weight_x10: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["anchor", b"anchor"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["anchor", b"anchor", "anchor_uid", b"anchor_uid", "bearing_cdeg", b"bearing_cdeg", "range_cm", b"range_cm", "stroke_argb", b"stroke_argb", "stroke_color", b"stroke_color", "stroke_weight_x10", b"stroke_weight_x10"]) -> None: ... + +global___RangeAndBearing = RangeAndBearing + +@typing.final +class Route(google.protobuf.message.Message): + """ + Named route consisting of ordered waypoints and control points. + + Covers CoT type b-m-r. The first waypoint's position is on + TAKPacketV2.latitude_i/longitude_i; subsequent waypoints and checkpoints + are in `links`. Link count is capped at 16 by the nanopb pool; senders + MUST truncate longer routes and set `truncated = true`. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Method: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _MethodEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Route._Method.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Method_Unspecified: Route._Method.ValueType # 0 + """ + Unspecified / unknown + """ + Method_Driving: Route._Method.ValueType # 1 + """ + Driving / vehicle + """ + Method_Walking: Route._Method.ValueType # 2 + """ + Walking / foot + """ + Method_Flying: Route._Method.ValueType # 3 + """ + Flying + """ + Method_Swimming: Route._Method.ValueType # 4 + """ + Swimming (individual) + """ + Method_Watercraft: Route._Method.ValueType # 5 + """ + Watercraft (boat) + """ + + class Method(_Method, metaclass=_MethodEnumTypeWrapper): + """ + Travel method for the route. + """ + + Method_Unspecified: Route.Method.ValueType # 0 + """ + Unspecified / unknown + """ + Method_Driving: Route.Method.ValueType # 1 + """ + Driving / vehicle + """ + Method_Walking: Route.Method.ValueType # 2 + """ + Walking / foot + """ + Method_Flying: Route.Method.ValueType # 3 + """ + Flying + """ + Method_Swimming: Route.Method.ValueType # 4 + """ + Swimming (individual) + """ + Method_Watercraft: Route.Method.ValueType # 5 + """ + Watercraft (boat) + """ + + class _Direction: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _DirectionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Route._Direction.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Direction_Unspecified: Route._Direction.ValueType # 0 + """ + Unspecified + """ + Direction_Infil: Route._Direction.ValueType # 1 + """ + Infiltration (ingress) + """ + Direction_Exfil: Route._Direction.ValueType # 2 + """ + Exfiltration (egress) + """ + + class Direction(_Direction, metaclass=_DirectionEnumTypeWrapper): + """ + Route direction (infil = ingress, exfil = egress). + """ + + Direction_Unspecified: Route.Direction.ValueType # 0 + """ + Unspecified + """ + Direction_Infil: Route.Direction.ValueType # 1 + """ + Infiltration (ingress) + """ + Direction_Exfil: Route.Direction.ValueType # 2 + """ + Exfiltration (egress) + """ + + @typing.final + class Link(google.protobuf.message.Message): + """ + Route waypoint or control point. Each link corresponds to one ATAK + entry inside the b-m-r event. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + POINT_FIELD_NUMBER: builtins.int + UID_FIELD_NUMBER: builtins.int + CALLSIGN_FIELD_NUMBER: builtins.int + LINK_TYPE_FIELD_NUMBER: builtins.int + uid: builtins.str + """ + Optional UID (empty = receiver derives). + """ + callsign: builtins.str + """ + Optional display callsign (e.g. "CP1"). Empty for unnamed control points. + """ + link_type: builtins.int + """ + Link role: 0 = waypoint (b-m-p-w), 1 = checkpoint (b-m-p-c). + """ + @property + def point(self) -> global___CotGeoPoint: + """ + Waypoint position (delta-encoded from TAKPacketV2.latitude_i/longitude_i). + """ + + def __init__( + self, + *, + point: global___CotGeoPoint | None = ..., + uid: builtins.str = ..., + callsign: builtins.str = ..., + link_type: builtins.int = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["point", b"point"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["callsign", b"callsign", "link_type", b"link_type", "point", b"point", "uid", b"uid"]) -> None: ... + + METHOD_FIELD_NUMBER: builtins.int + DIRECTION_FIELD_NUMBER: builtins.int + PREFIX_FIELD_NUMBER: builtins.int + STROKE_WEIGHT_X10_FIELD_NUMBER: builtins.int + LINKS_FIELD_NUMBER: builtins.int + TRUNCATED_FIELD_NUMBER: builtins.int + method: global___Route.Method.ValueType + """ + Travel method + """ + direction: global___Route.Direction.ValueType + """ + Direction (infil/exfil) + """ + prefix: builtins.str + """ + Waypoint name prefix (e.g. "CP"). + """ + stroke_weight_x10: builtins.int + """ + Stroke weight * 10 (e.g. 30 = 3.0). 0 = default. + """ + truncated: builtins.bool + """ + True if the sender truncated `links` to fit the pool. + """ + @property + def links(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Route.Link]: + """ + Ordered list of route control points. Capped at 16. + """ + + def __init__( + self, + *, + method: global___Route.Method.ValueType = ..., + direction: global___Route.Direction.ValueType = ..., + prefix: builtins.str = ..., + stroke_weight_x10: builtins.int = ..., + links: collections.abc.Iterable[global___Route.Link] | None = ..., + truncated: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["direction", b"direction", "links", b"links", "method", b"method", "prefix", b"prefix", "stroke_weight_x10", b"stroke_weight_x10", "truncated", b"truncated"]) -> None: ... + +global___Route = Route + +@typing.final +class CasevacReport(google.protobuf.message.Message): + """ + 9-line MEDEVAC request (CoT type b-r-f-h-c). + + Mirrors the ATAK MedLine tool's <_medevac_> detail element. Every field + is optional (proto3 default); senders omit lines they don't have. The + envelope (TAKPacketV2.uid, cot_type_id=b-r-f-h-c, latitude_i/longitude_i, + altitude, callsign) carries Line 1 (location) and Line 2 (callsign). + + All numeric fields are tight varints so a complete 9-line request fits + in well under 100 bytes of proto on the wire. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Precedence: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _PrecedenceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CasevacReport._Precedence.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Precedence_Unspecified: CasevacReport._Precedence.ValueType # 0 + Precedence_Urgent: CasevacReport._Precedence.ValueType # 1 + """A - immediate, life-threatening""" + Precedence_UrgentSurgical: CasevacReport._Precedence.ValueType # 2 + """B - needs surgery""" + Precedence_Priority: CasevacReport._Precedence.ValueType # 3 + """C - within 4 hours""" + Precedence_Routine: CasevacReport._Precedence.ValueType # 4 + """D - within 24 hours""" + Precedence_Convenience: CasevacReport._Precedence.ValueType # 5 + """E - convenience""" + + class Precedence(_Precedence, metaclass=_PrecedenceEnumTypeWrapper): + """ + Line 3: precedence / urgency. + """ + + Precedence_Unspecified: CasevacReport.Precedence.ValueType # 0 + Precedence_Urgent: CasevacReport.Precedence.ValueType # 1 + """A - immediate, life-threatening""" + Precedence_UrgentSurgical: CasevacReport.Precedence.ValueType # 2 + """B - needs surgery""" + Precedence_Priority: CasevacReport.Precedence.ValueType # 3 + """C - within 4 hours""" + Precedence_Routine: CasevacReport.Precedence.ValueType # 4 + """D - within 24 hours""" + Precedence_Convenience: CasevacReport.Precedence.ValueType # 5 + """E - convenience""" + + class _HlzMarking: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _HlzMarkingEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CasevacReport._HlzMarking.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + HlzMarking_Unspecified: CasevacReport._HlzMarking.ValueType # 0 + HlzMarking_Panels: CasevacReport._HlzMarking.ValueType # 1 + HlzMarking_PyroSignal: CasevacReport._HlzMarking.ValueType # 2 + HlzMarking_Smoke: CasevacReport._HlzMarking.ValueType # 3 + HlzMarking_None: CasevacReport._HlzMarking.ValueType # 4 + HlzMarking_Other: CasevacReport._HlzMarking.ValueType # 5 + + class HlzMarking(_HlzMarking, metaclass=_HlzMarkingEnumTypeWrapper): + """ + Line 7: HLZ marking method. + """ + + HlzMarking_Unspecified: CasevacReport.HlzMarking.ValueType # 0 + HlzMarking_Panels: CasevacReport.HlzMarking.ValueType # 1 + HlzMarking_PyroSignal: CasevacReport.HlzMarking.ValueType # 2 + HlzMarking_Smoke: CasevacReport.HlzMarking.ValueType # 3 + HlzMarking_None: CasevacReport.HlzMarking.ValueType # 4 + HlzMarking_Other: CasevacReport.HlzMarking.ValueType # 5 + + class _Security: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _SecurityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CasevacReport._Security.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Security_Unspecified: CasevacReport._Security.ValueType # 0 + Security_NoEnemy: CasevacReport._Security.ValueType # 1 + """N - no enemy activity""" + Security_PossibleEnemy: CasevacReport._Security.ValueType # 2 + """P - possible enemy""" + Security_EnemyInArea: CasevacReport._Security.ValueType # 3 + """E - enemy, approach with caution""" + Security_EnemyInArmedContact: CasevacReport._Security.ValueType # 4 + """X - armed escort required""" + + class Security(_Security, metaclass=_SecurityEnumTypeWrapper): + """ + Line 6: security situation at the pickup zone. + """ + + Security_Unspecified: CasevacReport.Security.ValueType # 0 + Security_NoEnemy: CasevacReport.Security.ValueType # 1 + """N - no enemy activity""" + Security_PossibleEnemy: CasevacReport.Security.ValueType # 2 + """P - possible enemy""" + Security_EnemyInArea: CasevacReport.Security.ValueType # 3 + """E - enemy, approach with caution""" + Security_EnemyInArmedContact: CasevacReport.Security.ValueType # 4 + """X - armed escort required""" + + PRECEDENCE_FIELD_NUMBER: builtins.int + EQUIPMENT_FLAGS_FIELD_NUMBER: builtins.int + LITTER_PATIENTS_FIELD_NUMBER: builtins.int + AMBULATORY_PATIENTS_FIELD_NUMBER: builtins.int + SECURITY_FIELD_NUMBER: builtins.int + HLZ_MARKING_FIELD_NUMBER: builtins.int + ZONE_MARKER_FIELD_NUMBER: builtins.int + US_MILITARY_FIELD_NUMBER: builtins.int + US_CIVILIAN_FIELD_NUMBER: builtins.int + NON_US_MILITARY_FIELD_NUMBER: builtins.int + NON_US_CIVILIAN_FIELD_NUMBER: builtins.int + EPW_FIELD_NUMBER: builtins.int + CHILD_FIELD_NUMBER: builtins.int + TERRAIN_FLAGS_FIELD_NUMBER: builtins.int + FREQUENCY_FIELD_NUMBER: builtins.int + TITLE_FIELD_NUMBER: builtins.int + MEDLINE_REMARKS_FIELD_NUMBER: builtins.int + URGENT_COUNT_FIELD_NUMBER: builtins.int + URGENT_SURGICAL_COUNT_FIELD_NUMBER: builtins.int + PRIORITY_COUNT_FIELD_NUMBER: builtins.int + ROUTINE_COUNT_FIELD_NUMBER: builtins.int + CONVENIENCE_COUNT_FIELD_NUMBER: builtins.int + EQUIPMENT_DETAIL_FIELD_NUMBER: builtins.int + ZONE_PROTECTED_COORD_FIELD_NUMBER: builtins.int + TERRAIN_SLOPE_DIR_FIELD_NUMBER: builtins.int + TERRAIN_OTHER_DETAIL_FIELD_NUMBER: builtins.int + MARKED_BY_FIELD_NUMBER: builtins.int + OBSTACLES_FIELD_NUMBER: builtins.int + WINDS_ARE_FROM_FIELD_NUMBER: builtins.int + FRIENDLIES_FIELD_NUMBER: builtins.int + ENEMY_FIELD_NUMBER: builtins.int + HLZ_REMARKS_FIELD_NUMBER: builtins.int + ZMIST_FIELD_NUMBER: builtins.int + precedence: global___CasevacReport.Precedence.ValueType + """ + Line 3: precedence / urgency. + """ + equipment_flags: builtins.int + """ + Line 4: special equipment required, as a bitfield. + bit 0: none + bit 1: hoist + bit 2: extraction equipment + bit 3: ventilator + bit 4: blood + """ + litter_patients: builtins.int + """ + Line 5: number of litter (stretcher-bound) patients. + """ + ambulatory_patients: builtins.int + """ + Line 5: number of ambulatory (walking-wounded) patients. + """ + security: global___CasevacReport.Security.ValueType + """ + Line 6: security situation at the PZ. + """ + hlz_marking: global___CasevacReport.HlzMarking.ValueType + """ + Line 7: HLZ marking method. + """ + zone_marker: builtins.str + """ + Line 7 supplementary: short free-text describing the zone marker + (e.g. "Green smoke", "VS-17 panel west"). Capped tight in options. + """ + us_military: builtins.int + """--- Line 8: patient nationality counts ---""" + us_civilian: builtins.int + non_us_military: builtins.int + non_us_civilian: builtins.int + epw: builtins.int + """enemy prisoner of war""" + child: builtins.int + terrain_flags: builtins.int + """ + Line 9: terrain and obstacles at the PZ, as a bitfield. + bit 0: slope + bit 1: rough + bit 2: loose + bit 3: trees + bit 4: wires + bit 5: other + """ + frequency: builtins.str + """ + Line 2: radio frequency / callsign metadata (e.g. "38.90 Mhz" or + "Victor 6"). Capped tight in options. + """ + title: builtins.str + """--- v2.x medline extensions (tags 16–33) -------------------------------- + + Fields 16+ cost a 2-byte tag instead of 1 byte, but they're usually + sparse so the on-wire delta is modest when most stay unset. A fully + populated CASEVAC with 13 free-text fields + 2 ZMIST entries can run + 200-400 bytes compressed, i.e. potentially over the 237 B LoRa MTU. + Callers that hit the MTU on the `compressWithRemarksFallback` path + SHOULD strip the tier-2 situational fields (tags 28-32 + terrain_other_detail) + before dropping the packet entirely. See README "CASEVAC tier-2 stripping". + + + Short title / MEDEVAC identifier (e.g. "EAGLE.15.181230"). Usually the + same as the envelope callsign but ATAK sometimes carries a distinct + ops-number here. + """ + medline_remarks: builtins.str + """ + Primary medline free-text — the single most clinically important line + on a MEDLINE form (e.g. "2 urgent litter patients, smoke on approach"). + MUST be preserved under MTU pressure as long as any casevac is sent. + """ + urgent_count: builtins.int + """ + Line 3 (newer ATAK format): patient counts by precedence level. + Coexists with the enum-style `precedence` field (tag 1) — older ATAK + emits a single enum, newer ATAK emits these counts, and both can be + set simultaneously. Senders populate whichever style(s) the source + XML had; receivers prefer counts when non-zero. + """ + urgent_surgical_count: builtins.int + priority_count: builtins.int + routine_count: builtins.int + convenience_count: builtins.int + equipment_detail: builtins.str + """ + Line 4 supplementary: free-text description of non-standard equipment + (e.g. "Blood warmer"). Pairs with the `equipment_flags` bitfield. + """ + zone_protected_coord: builtins.str + """ + Line 1 override: MGRS grid when distinct from the event anchor point + (e.g. "34T CQ 12345 67890"). Event lat/lon/hae still carries the + numeric location; this field preserves the exact MGRS string the + medic entered. + """ + terrain_slope_dir: builtins.str + """ + Line 9 supplementary: slope direction (e.g. "N", "NE", "SSW") when + `terrain_flags` bit 0 (slope) is set. + """ + terrain_other_detail: builtins.str + """ + Line 9 supplementary: free-text description of "other" terrain hazards + (e.g. "Loose debris on west edge") when `terrain_flags` bit 5 (other) + is set. Tier-2 strippable under MTU pressure. + """ + marked_by: builtins.str + """ + Line 7 supplementary: how the zone is being marked right now + (e.g. "Orange smoke", "VS-17 panel"). Complements the structured + `hlz_marking` enum with a specific human-readable description. + """ + obstacles: builtins.str + """--- Tier-2 situational awareness (stripped first under MTU pressure) --- + These fields are free-text context that helps the receiver plan the + approach but aren't strictly required to evacuate the patient. + + + Nearby obstacles on the approach (e.g. "Power lines north of HLZ"). + """ + winds_are_from: builtins.str + """ + Wind direction and speed (e.g. "270 at 12 kts"). + """ + friendlies: builtins.str + """ + Friendly forces posture near the pickup zone + (e.g. "Squad east of HLZ"). + """ + enemy: builtins.str + """ + Known or suspected enemy positions near the pickup zone + (e.g. "Possible enemy on south ridge"). + """ + hlz_remarks: builtins.str + """ + Free-text description of the HLZ itself + (e.g. "Primary HLZ is soccer field"). + """ + @property + def zmist(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ZMistEntry]: + """ + Per-patient clinical records. Each entry is one patient's ZMIST card + (Zap number / Mechanism / Injuries / Signs / Treatment). Repeatable — + a mass-casualty event can carry 1-6 entries in practice, limited by + the 237 B LoRa MTU. + """ + + def __init__( + self, + *, + precedence: global___CasevacReport.Precedence.ValueType = ..., + equipment_flags: builtins.int = ..., + litter_patients: builtins.int = ..., + ambulatory_patients: builtins.int = ..., + security: global___CasevacReport.Security.ValueType = ..., + hlz_marking: global___CasevacReport.HlzMarking.ValueType = ..., + zone_marker: builtins.str = ..., + us_military: builtins.int = ..., + us_civilian: builtins.int = ..., + non_us_military: builtins.int = ..., + non_us_civilian: builtins.int = ..., + epw: builtins.int = ..., + child: builtins.int = ..., + terrain_flags: builtins.int = ..., + frequency: builtins.str = ..., + title: builtins.str = ..., + medline_remarks: builtins.str = ..., + urgent_count: builtins.int = ..., + urgent_surgical_count: builtins.int = ..., + priority_count: builtins.int = ..., + routine_count: builtins.int = ..., + convenience_count: builtins.int = ..., + equipment_detail: builtins.str = ..., + zone_protected_coord: builtins.str = ..., + terrain_slope_dir: builtins.str = ..., + terrain_other_detail: builtins.str = ..., + marked_by: builtins.str = ..., + obstacles: builtins.str = ..., + winds_are_from: builtins.str = ..., + friendlies: builtins.str = ..., + enemy: builtins.str = ..., + hlz_remarks: builtins.str = ..., + zmist: collections.abc.Iterable[global___ZMistEntry] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ambulatory_patients", b"ambulatory_patients", "child", b"child", "convenience_count", b"convenience_count", "enemy", b"enemy", "epw", b"epw", "equipment_detail", b"equipment_detail", "equipment_flags", b"equipment_flags", "frequency", b"frequency", "friendlies", b"friendlies", "hlz_marking", b"hlz_marking", "hlz_remarks", b"hlz_remarks", "litter_patients", b"litter_patients", "marked_by", b"marked_by", "medline_remarks", b"medline_remarks", "non_us_civilian", b"non_us_civilian", "non_us_military", b"non_us_military", "obstacles", b"obstacles", "precedence", b"precedence", "priority_count", b"priority_count", "routine_count", b"routine_count", "security", b"security", "terrain_flags", b"terrain_flags", "terrain_other_detail", b"terrain_other_detail", "terrain_slope_dir", b"terrain_slope_dir", "title", b"title", "urgent_count", b"urgent_count", "urgent_surgical_count", b"urgent_surgical_count", "us_civilian", b"us_civilian", "us_military", b"us_military", "winds_are_from", b"winds_are_from", "zmist", b"zmist", "zone_marker", b"zone_marker", "zone_protected_coord", b"zone_protected_coord"]) -> None: ... + +global___CasevacReport = CasevacReport + +@typing.final +class ZMistEntry(google.protobuf.message.Message): + """ + Per-patient clinical summary record — one entry per patient in a CASEVAC. + Maps directly to ATAK's child element inside . + All fields are optional free-text; senders populate what they have. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TITLE_FIELD_NUMBER: builtins.int + Z_FIELD_NUMBER: builtins.int + M_FIELD_NUMBER: builtins.int + I_FIELD_NUMBER: builtins.int + S_FIELD_NUMBER: builtins.int + T_FIELD_NUMBER: builtins.int + title: builtins.str + """ + Patient identifier / sequence label (e.g. "ZMIST-1", "ZMIST-2"). + """ + z: builtins.str + """ + Zap number — unique patient tracking ID (often a terse code like + "Gunshot" or a serial). + """ + m: builtins.str + """ + Mechanism of injury (e.g. "Penetrating trauma", "Blast injury"). + """ + i: builtins.str + """ + Injuries observed (e.g. "Left thigh", "Concussion"). + """ + s: builtins.str + """ + Signs / vital stats (e.g. "Stable", "Priority", "BP 110/70"). + """ + t: builtins.str + """ + Treatment given (e.g. "Tourniquet 1810Z", "O2 administered"). + """ + def __init__( + self, + *, + title: builtins.str = ..., + z: builtins.str = ..., + m: builtins.str = ..., + i: builtins.str = ..., + s: builtins.str = ..., + t: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["i", b"i", "m", b"m", "s", b"s", "t", b"t", "title", b"title", "z", b"z"]) -> None: ... + +global___ZMistEntry = ZMistEntry + +@typing.final +class EmergencyAlert(google.protobuf.message.Message): + """ + Emergency alert / 911 beacon (CoT types b-a-o-tbl, b-a-o-pan, b-a-o-opn, + b-a-o-can, b-a-o-c, b-a-g). + + Small, high-priority structured record. The CoT type string is still set + on cot_type_id so receivers that ignore payload_variant can still display + the alert from the enum alone; the typed fields let modern receivers show + the authoring unit and handle cancel-referencing without XML parsing. + """ + + 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[EmergencyAlert._Type.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Type_Unspecified: EmergencyAlert._Type.ValueType # 0 + Type_Alert911: EmergencyAlert._Type.ValueType # 1 + """b-a-o-tbl""" + Type_RingTheBell: EmergencyAlert._Type.ValueType # 2 + """b-a-o-pan""" + Type_InContact: EmergencyAlert._Type.ValueType # 3 + """b-a-o-opn""" + Type_GeoFenceBreached: EmergencyAlert._Type.ValueType # 4 + """b-a-g""" + Type_Custom: EmergencyAlert._Type.ValueType # 5 + """b-a-o-c""" + Type_Cancel: EmergencyAlert._Type.ValueType # 6 + """b-a-o-can""" + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... + Type_Unspecified: EmergencyAlert.Type.ValueType # 0 + Type_Alert911: EmergencyAlert.Type.ValueType # 1 + """b-a-o-tbl""" + Type_RingTheBell: EmergencyAlert.Type.ValueType # 2 + """b-a-o-pan""" + Type_InContact: EmergencyAlert.Type.ValueType # 3 + """b-a-o-opn""" + Type_GeoFenceBreached: EmergencyAlert.Type.ValueType # 4 + """b-a-g""" + Type_Custom: EmergencyAlert.Type.ValueType # 5 + """b-a-o-c""" + Type_Cancel: EmergencyAlert.Type.ValueType # 6 + """b-a-o-can""" + + TYPE_FIELD_NUMBER: builtins.int + AUTHORING_UID_FIELD_NUMBER: builtins.int + CANCEL_REFERENCE_UID_FIELD_NUMBER: builtins.int + type: global___EmergencyAlert.Type.ValueType + """ + Alert discriminator. + """ + authoring_uid: builtins.str + """ + UID of the unit that raised the alert. Often the same as + TAKPacketV2.uid but can be a parent device uid when a tracker raises + an alert on behalf of a dismount. + """ + cancel_reference_uid: builtins.str + """ + For Type_Cancel: the uid of the alert being cancelled. Empty for + non-cancel alert types. + """ + def __init__( + self, + *, + type: global___EmergencyAlert.Type.ValueType = ..., + authoring_uid: builtins.str = ..., + cancel_reference_uid: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["authoring_uid", b"authoring_uid", "cancel_reference_uid", b"cancel_reference_uid", "type", b"type"]) -> None: ... + +global___EmergencyAlert = EmergencyAlert + +@typing.final +class TaskRequest(google.protobuf.message.Message): + """ + Task / engage request (CoT type t-s). + + Mirrors ATAK's TaskCotReceiver / CotTaskBuilder workflow. The envelope + carries the task's originating uid (implicit requester), position, and + creation time; the fields below carry structured metadata the raw-detail + fallback currently loses. + + Fields are deliberately lean — this variant is closer to the MTU ceiling + than the others, so every string is capped in options. + """ + + 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[TaskRequest._Priority.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Priority_Unspecified: TaskRequest._Priority.ValueType # 0 + Priority_Low: TaskRequest._Priority.ValueType # 1 + Priority_Normal: TaskRequest._Priority.ValueType # 2 + Priority_High: TaskRequest._Priority.ValueType # 3 + Priority_Critical: TaskRequest._Priority.ValueType # 4 + + class Priority(_Priority, metaclass=_PriorityEnumTypeWrapper): ... + Priority_Unspecified: TaskRequest.Priority.ValueType # 0 + Priority_Low: TaskRequest.Priority.ValueType # 1 + Priority_Normal: TaskRequest.Priority.ValueType # 2 + Priority_High: TaskRequest.Priority.ValueType # 3 + Priority_Critical: TaskRequest.Priority.ValueType # 4 + + class _Status: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[TaskRequest._Status.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + Status_Unspecified: TaskRequest._Status.ValueType # 0 + Status_Pending: TaskRequest._Status.ValueType # 1 + """assigned, not yet acknowledged""" + Status_Acknowledged: TaskRequest._Status.ValueType # 2 + """assignee has seen it""" + Status_InProgress: TaskRequest._Status.ValueType # 3 + """assignee is working it""" + Status_Completed: TaskRequest._Status.ValueType # 4 + """task done""" + Status_Cancelled: TaskRequest._Status.ValueType # 5 + """cancelled before completion""" + + class Status(_Status, metaclass=_StatusEnumTypeWrapper): ... + Status_Unspecified: TaskRequest.Status.ValueType # 0 + Status_Pending: TaskRequest.Status.ValueType # 1 + """assigned, not yet acknowledged""" + Status_Acknowledged: TaskRequest.Status.ValueType # 2 + """assignee has seen it""" + Status_InProgress: TaskRequest.Status.ValueType # 3 + """assignee is working it""" + Status_Completed: TaskRequest.Status.ValueType # 4 + """task done""" + Status_Cancelled: TaskRequest.Status.ValueType # 5 + """cancelled before completion""" + + TASK_TYPE_FIELD_NUMBER: builtins.int + TARGET_UID_FIELD_NUMBER: builtins.int + ASSIGNEE_UID_FIELD_NUMBER: builtins.int + PRIORITY_FIELD_NUMBER: builtins.int + STATUS_FIELD_NUMBER: builtins.int + NOTE_FIELD_NUMBER: builtins.int + task_type: builtins.str + """ + Short tag for the task category (e.g. "engage", "observe", "recon", + "rescue"). Free text on the wire so ATAK-specific task taxonomies + don't need proto coordination; capped tight in options. + """ + target_uid: builtins.str + """ + UID of the target / map item being tasked. + """ + assignee_uid: builtins.str + """ + UID of the assigned unit. Empty = unassigned / broadcast task. + """ + priority: global___TaskRequest.Priority.ValueType + status: global___TaskRequest.Status.ValueType + note: builtins.str + """ + Optional short note (reason, constraints, grid reference). Capped + tight in options to keep the worst-case under the LoRa MTU. + """ + def __init__( + self, + *, + task_type: builtins.str = ..., + target_uid: builtins.str = ..., + assignee_uid: builtins.str = ..., + priority: global___TaskRequest.Priority.ValueType = ..., + status: global___TaskRequest.Status.ValueType = ..., + note: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["assignee_uid", b"assignee_uid", "note", b"note", "priority", b"priority", "status", b"status", "target_uid", b"target_uid", "task_type", b"task_type"]) -> None: ... + +global___TaskRequest = TaskRequest + +@typing.final +class TAKEnvironment(google.protobuf.message.Message): + """ + Weather annotation from CoT detail element. + + Attaches to any TAKPacketV2 regardless of payload_variant — an Aircraft, + PLI, or Marker can all carry observed conditions at the emitting station. + ATAK-CIV ships an XSD for but no dedicated handler, so the + element round-trips through the generic detail pipeline; this message + promotes it to a first-class structured field. + + Target wire cost: ~6-8 bytes compressed with a fully populated instance. + + Named `TAKEnvironment` (not just `Environment`) because the bare name + collides with `SwiftUI.Environment` — every SwiftUI view in a consuming + iOS app uses the `@Environment` property wrapper, and importing the + generated proto module would make `Environment` ambiguous in every one + of those files. The `TAK` prefix matches the convention used by the + outer `TAKPacketV2` wrapper and is unambiguous across all target + languages (Swift, Kotlin, Python, TypeScript, C#). + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TEMPERATURE_C_X10_FIELD_NUMBER: builtins.int + WIND_DIRECTION_DEG_FIELD_NUMBER: builtins.int + WIND_SPEED_CM_S_FIELD_NUMBER: builtins.int + temperature_c_x10: builtins.int + """ + Temperature in deci-degrees Celsius. 225 = 22.5°C. + Range covers -50°C to +50°C (-500 to +500) which spans every realistic + outdoor TAK deployment. sint32 because negative temps are common in + cold-weather ops. + """ + wind_direction_deg: builtins.int + """ + Wind direction in whole degrees, 0-359. "Direction FROM" per + meteorological convention (matches CoT / ATAK). + """ + wind_speed_cm_s: builtins.int + """ + Wind speed in cm/s. Matches the unit of TAKPacketV2.speed for + consistency. 1200 = 12.00 m/s = ~27 mph. + """ + def __init__( + self, + *, + temperature_c_x10: builtins.int = ..., + wind_direction_deg: builtins.int = ..., + wind_speed_cm_s: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["temperature_c_x10", b"temperature_c_x10", "wind_direction_deg", b"wind_direction_deg", "wind_speed_cm_s", b"wind_speed_cm_s"]) -> None: ... + +global___TAKEnvironment = TAKEnvironment + +@typing.final +class SensorFov(google.protobuf.message.Message): + """ + Sensor field-of-view cone from CoT detail element. + + Encodes the 8 geometry attributes that ATAK-CIV's SensorDetailHandler + reads from the wire; drops the 9 visual-styling attributes that are + receiver-side render hints (fovAlpha, fovRed/Green/Blue, strokeColor, + strokeWeight, displayMagneticReference, hideFov, fovLabels, rangeLines). + The receiving ATAK client restores those from its own defaults, same as + every other CoT carried over Meshtastic today. + + Attaches to any TAKPacketV2 — a PLI with a sensor on the operator's head, + an Aircraft with a FLIR turret, a Marker dropped on a UAV. + Target wire cost: ~7-14 bytes compressed (dominated by model string). + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _SensorType: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _SensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SensorFov._SensorType.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + SensorType_Unspecified: SensorFov._SensorType.ValueType # 0 + SensorType_Camera: SensorFov._SensorType.ValueType # 1 + """daylight / general optical""" + SensorType_Thermal: SensorFov._SensorType.ValueType # 2 + """FLIR, thermal imager""" + SensorType_Laser: SensorFov._SensorType.ValueType # 3 + """rangefinder, LRF, designator""" + SensorType_Nvg: SensorFov._SensorType.ValueType # 4 + """night vision goggles""" + SensorType_Rf: SensorFov._SensorType.ValueType # 5 + """radio/radar direction-finding""" + SensorType_Other: SensorFov._SensorType.ValueType # 6 + + class SensorType(_SensorType, metaclass=_SensorTypeEnumTypeWrapper): + """ + Coarse sensor category, inferred from `model` on parse when the source + XML doesn't label it. Receivers that render differently per sensor + class (thermal overlay vs daylight cone) use this. + """ + + SensorType_Unspecified: SensorFov.SensorType.ValueType # 0 + SensorType_Camera: SensorFov.SensorType.ValueType # 1 + """daylight / general optical""" + SensorType_Thermal: SensorFov.SensorType.ValueType # 2 + """FLIR, thermal imager""" + SensorType_Laser: SensorFov.SensorType.ValueType # 3 + """rangefinder, LRF, designator""" + SensorType_Nvg: SensorFov.SensorType.ValueType # 4 + """night vision goggles""" + SensorType_Rf: SensorFov.SensorType.ValueType # 5 + """radio/radar direction-finding""" + SensorType_Other: SensorFov.SensorType.ValueType # 6 + + TYPE_FIELD_NUMBER: builtins.int + AZIMUTH_DEG_FIELD_NUMBER: builtins.int + RANGE_M_FIELD_NUMBER: builtins.int + FOV_HORIZONTAL_DEG_FIELD_NUMBER: builtins.int + FOV_VERTICAL_DEG_FIELD_NUMBER: builtins.int + ELEVATION_DEG_FIELD_NUMBER: builtins.int + ROLL_DEG_FIELD_NUMBER: builtins.int + MODEL_FIELD_NUMBER: builtins.int + type: global___SensorFov.SensorType.ValueType + azimuth_deg: builtins.int + """ + Azimuth in whole degrees, 0-359. "Pointing direction" of the cone axis, + measured clockwise from true north. Whole degrees match ATAK-CIV's + SensorDetailHandler default (270°) and save varint bytes over centi-deg. + """ + range_m: builtins.int + """ + Maximum range of the cone in meters. + Optional — if unset, receivers should use the ATAK-CIV default of 100m. + """ + fov_horizontal_deg: builtins.int + """ + Horizontal field of view in whole degrees (cone's angular width). + ATAK-CIV default is 45°. + """ + fov_vertical_deg: builtins.int + """ + Vertical field of view in whole degrees. ATAK-CIV default is 45°. + Optional — a value of 0 means "not set / use horizontal FOV". + """ + elevation_deg: builtins.int + """ + Elevation angle in whole degrees. Positive = up, negative = down. + Range -90 to +90. sint32 for varint efficiency on small negatives. + """ + roll_deg: builtins.int + """ + Roll (camera tilt) in whole degrees, -180 to +180. + Optional — use 0 if the sensor doesn't track roll. + """ + model: builtins.str + """ + Free-form device model identifier, e.g. "FLIR-Boson-640", "SEEK". + Optional — empty string means "unknown model" (ATAK-CIV default). + """ + def __init__( + self, + *, + type: global___SensorFov.SensorType.ValueType = ..., + azimuth_deg: builtins.int = ..., + range_m: builtins.int | None = ..., + fov_horizontal_deg: builtins.int = ..., + fov_vertical_deg: builtins.int = ..., + elevation_deg: builtins.int = ..., + roll_deg: builtins.int = ..., + model: builtins.str = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_range_m", b"_range_m", "range_m", b"range_m"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_range_m", b"_range_m", "azimuth_deg", b"azimuth_deg", "elevation_deg", b"elevation_deg", "fov_horizontal_deg", b"fov_horizontal_deg", "fov_vertical_deg", b"fov_vertical_deg", "model", b"model", "range_m", b"range_m", "roll_deg", b"roll_deg", "type", b"type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_range_m", b"_range_m"]) -> typing.Literal["range_m"] | None: ... + +global___SensorFov = SensorFov + +@typing.final +class TakTalkMessage(google.protobuf.message.Message): + """ + TAKTALK chat message payload (CoT type m-t-t). + + TAKTALK is an ATAK plugin for voice + text team messaging. The voice + audio stream goes over UDP/RTP and is NOT carried by the mesh — only + the text envelope (this message) is. `from_voice` marks messages sent + via push-to-talk speech-to-text so receivers can render a mic icon + next to the text. + + Wire shape inside /: + ... - mapped to TAKPacketV2.callsign + English - lang + ... - text + 1 - chatroom_id + - presence sets from_voice = true + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TEXT_FIELD_NUMBER: builtins.int + CHATROOM_ID_FIELD_NUMBER: builtins.int + LANG_FIELD_NUMBER: builtins.int + FROM_VOICE_FIELD_NUMBER: builtins.int + text: builtins.str + """ + The text body of the TAKTALK message (speech-to-text transcript when + from_voice = true, typed message otherwise). + """ + chatroom_id: builtins.str + """ + TAKTALK chatroom identifier. May be a short id like "1" for the + default room or a UUID like "30b2755c-c547-44ef-a0cc-cdbd8a15616f" + for custom rooms (resolved by TakTalkRoomData broadcasts). + Empty = broadcast room. + """ + lang: builtins.str + """ + BCP-47-ish language tag or human-readable name (e.g. "en", "English"). + Empty = unspecified. + """ + from_voice: builtins.bool + """ + True when the source CoT carried a marker, i.e. the message + originated as push-to-talk speech-to-text. Lets receivers show a mic + icon. Proto3 only encodes when true so empty payload cost is 0 bytes. + """ + def __init__( + self, + *, + text: builtins.str = ..., + chatroom_id: builtins.str = ..., + lang: builtins.str = ..., + from_voice: builtins.bool = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["chatroom_id", b"chatroom_id", "from_voice", b"from_voice", "lang", b"lang", "text", b"text"]) -> None: ... + +global___TakTalkMessage = TakTalkMessage + +@typing.final +class TakTalkRoomData(google.protobuf.message.Message): + """ + TAKTALK room/membership broadcast (CoT type y-). + + Announces a TAKTALK chatroom's friendly name and roster so peers can + resolve room UUIDs (used in TakTalkMessage.chatroom_id and + GeoChat.room_id) to a display name and participant list. Not a chat + message itself — these events are emitted by TAKTALK when rooms are + created or memberships change. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SENDER_CALLSIGN_FIELD_NUMBER: builtins.int + ROOM_ID_FIELD_NUMBER: builtins.int + ROOM_NAME_FIELD_NUMBER: builtins.int + PARTICIPANTS_FIELD_NUMBER: builtins.int + sender_callsign: builtins.str + """ + Callsign of the device broadcasting the room state (typically the + room owner / latest writer). + + DEPRECATED in v0.3.2: always equals TAKPacketV2.callsign, so the wire + byte was redundant. Builders stop emitting this field in v0.3.2; + parsers still read it for one release so v0.3.1-encoded packets decode + cleanly. To be removed entirely in v0.4.x. + """ + room_id: builtins.str + """ + Room UUID, matches TakTalkMessage.chatroom_id / GeoChat.room_id on + messages routed into this room. + """ + room_name: builtins.str + """ + Friendly display name for the room (e.g. "test", "Alpha Team"). + """ + @property + def participants(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """ + Member callsigns. Wire-encoded as repeated strings; the underlying + CoT carries them as a single A,B,C element + which parsers split / builders join on ','. + """ + + def __init__( + self, + *, + sender_callsign: builtins.str = ..., + room_id: builtins.str = ..., + room_name: builtins.str = ..., + participants: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["participants", b"participants", "room_id", b"room_id", "room_name", b"room_name", "sender_callsign", b"sender_callsign"]) -> None: ... + +global___TakTalkRoomData = TakTalkRoomData + +@typing.final +class Marti(google.protobuf.message.Message): + """ + ATAK directed-routing recipient list (CoT ). + + Present when an event is addressed to specific TAK users rather than the + broadcast group. TAKTALK gates voice TTS on this element matching the + receiver's callsign; directed b-t-f chats use it for the same purpose. A + missing means "broadcast to all peers", which is the default for + PLI, alerts, drawings, and most situational-awareness events. + + Carried as repeated strings (not indexes into a per-packet table) because + the typical event has 1-2 destinations and table overhead would erase the + savings. Receivers that need the original XML element rebuild it from + dest_callsign on emit. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DEST_CALLSIGN_FIELD_NUMBER: builtins.int + @property + def dest_callsign(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """ + Recipient callsigns. Order is preserved end-to-end so receivers can show + primary-vs-cc distinction the same way ATAK does. + + If dest_callsign is [TAKPacketV2.callsign] (self-addressed, unusual but + legal — e.g. ATAK echoing back to its own room), the builder still emits + the element so loopback shapes round-trip cleanly. + """ + + def __init__( + self, + *, + dest_callsign: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["dest_callsign", b"dest_callsign"]) -> None: ... + +global___Marti = Marti + +@typing.final +class TAKPacketV2(google.protobuf.message.Message): + """ + ATAK v2 packet with expanded CoT field support and zstd dictionary compression. + Sent on ATAK_PLUGIN_V2 port. The wire payload is: + [1 byte flags][zstd-compressed TAKPacketV2 protobuf] + Flags byte: bits 0-5 = dictionary ID, bits 6-7 = reserved. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COT_TYPE_ID_FIELD_NUMBER: builtins.int + HOW_FIELD_NUMBER: builtins.int + CALLSIGN_FIELD_NUMBER: builtins.int + TEAM_FIELD_NUMBER: builtins.int + ROLE_FIELD_NUMBER: builtins.int + 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 + BATTERY_FIELD_NUMBER: builtins.int + GEO_SRC_FIELD_NUMBER: builtins.int + ALT_SRC_FIELD_NUMBER: builtins.int + UID_FIELD_NUMBER: builtins.int + DEVICE_CALLSIGN_FIELD_NUMBER: builtins.int + STALE_SECONDS_FIELD_NUMBER: builtins.int + TAK_VERSION_FIELD_NUMBER: builtins.int + TAK_DEVICE_FIELD_NUMBER: builtins.int + TAK_PLATFORM_FIELD_NUMBER: builtins.int + TAK_OS_FIELD_NUMBER: builtins.int + ENDPOINT_FIELD_NUMBER: builtins.int + PHONE_FIELD_NUMBER: builtins.int + COT_TYPE_STR_FIELD_NUMBER: builtins.int + REMARKS_FIELD_NUMBER: builtins.int + ENVIRONMENT_FIELD_NUMBER: builtins.int + SENSOR_FOV_FIELD_NUMBER: builtins.int + MARTI_FIELD_NUMBER: builtins.int + CHAT_FIELD_NUMBER: builtins.int + AIRCRAFT_FIELD_NUMBER: builtins.int + RAW_DETAIL_FIELD_NUMBER: builtins.int + SHAPE_FIELD_NUMBER: builtins.int + MARKER_FIELD_NUMBER: builtins.int + RAB_FIELD_NUMBER: builtins.int + ROUTE_FIELD_NUMBER: builtins.int + CASEVAC_FIELD_NUMBER: builtins.int + EMERGENCY_FIELD_NUMBER: builtins.int + TASK_FIELD_NUMBER: builtins.int + TAKTALK_FIELD_NUMBER: builtins.int + TAKTALK_ROOM_FIELD_NUMBER: builtins.int + cot_type_id: global___CotType.ValueType + """ + Well-known CoT event type enum. + Use CotType_Other with cot_type_str for unknown types. + """ + how: global___CotHow.ValueType + """ + How the coordinates were generated + """ + callsign: builtins.str + """ + Callsign + """ + team: global___Team.ValueType + """ + Team color assignment + """ + role: global___MemberRole.ValueType + """ + Role of the group member + """ + 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 (HAE). ATAK's "no altitude" sentinel is hae=9999999.0. + + NOTE: an earlier v0.4.0 attempt made this `optional` to omit the 9999999 + sentinel from the wire, but measurement showed it was net-negative: the + zstd dictionary already compresses the literal 9999999 to ~nothing, while + proto3 `optional` forces a genuine 0 m HAE (common on routes/drawings that + carry hae="0.0" or omit hae → parsed as 0) to encode explicitly (+2 bytes), + which REGRESSED the worst-case route fixture. Kept as a plain field. + """ + speed: builtins.int + """ + Speed in cm/s + """ + course: builtins.int + """ + Course in degrees * 100 (0-36000) + """ + battery: builtins.int + """ + Battery level 0-100 + """ + geo_src: global___GeoPointSource.ValueType + """ + Geopoint source + """ + alt_src: global___GeoPointSource.ValueType + """ + Altitude source + """ + uid: builtins.str + """ + Device UID (UUID string or device ID like "ANDROID-xxxx") + """ + device_callsign: builtins.str + """ + Device callsign + """ + stale_seconds: builtins.int + """ + Stale time as seconds offset from event time + """ + tak_version: builtins.str + """ + TAK client version string + """ + tak_device: builtins.str + """ + TAK device model + """ + tak_platform: builtins.str + """ + TAK platform (ATAK-CIV, WebTAK, etc.) + """ + tak_os: builtins.str + """ + TAK OS version + """ + endpoint: builtins.str + """ + Connection endpoint + """ + phone: builtins.str + """ + Phone number + """ + cot_type_str: builtins.str + """ + CoT event type string, only populated when cot_type_id is CotType_Other + """ + remarks: builtins.str + """ + Optional remarks / free-text annotation from the element. + Populated for non-GeoChat payload types (shapes, markers, routes, etc.) + when the original CoT event carried non-empty remarks text. + GeoChat messages carry their text in GeoChat.message instead. + Empty string (proto3 default) means no remarks were present. + """ + raw_detail: builtins.bytes + """ + Generic CoT detail XML for unmapped types. Kept as a fallback for CoT + types not yet promoted to a typed variant; drawings, markers, ranging + tools, and routes have dedicated variants below and should not land here. + """ + @property + def environment(self) -> global___TAKEnvironment: + """--- Sensor / environment annotations ---------------------------------- + + Both fields are OPTIONAL and attach to any payload_variant. They + describe observed conditions at the emitting station — a PLI with + environment data, an Aircraft with a sensor cone, a Marker with both. + Absent by default; presence is signaled by the message being non-null. + + + Observed weather conditions (temperature, wind). From . + Type is `TAKEnvironment`, not `Environment`, to avoid colliding with + SwiftUI's `@Environment` property wrapper in iOS consumers. + """ + + @property + def sensor_fov(self) -> global___SensorFov: + """ + Sensor field-of-view cone (camera, FLIR, laser, etc.). From . + """ + + @property + def marti(self) -> global___Marti: + """ + Directed-routing recipient list (CoT ). + Empty / unset = broadcast to all peers (the default for situational-awareness + events). Populated for TAKTALK m-t-t, directed b-t-f DMs, and any other CoT + shape that ATAK addresses to specific recipients. TAKTALK gates voice TTS + playback on this element matching the receiver's callsign, so dropping it + silently breaks voice messaging end-to-end. + + See Marti. + """ + + @property + def chat(self) -> global___GeoChat: + """ + ATAK GeoChat message + """ + + @property + def aircraft(self) -> global___AircraftTrack: + """ + Aircraft track data (ADS-B, military air) + """ + + @property + def shape(self) -> global___DrawnShape: + """ + User-drawn tactical graphic: circle, rectangle, polygon, polyline, + telestration, ranging circle, or bullseye. See DrawnShape. + """ + + @property + def marker(self) -> global___Marker: + """ + Fixed point of interest: spot marker, waypoint, checkpoint, 2525 + symbol, or custom icon. See Marker. + """ + + @property + def rab(self) -> global___RangeAndBearing: + """ + Range and bearing measurement line. See RangeAndBearing. + """ + + @property + def route(self) -> global___Route: + """ + Named route with ordered waypoints and control points. See Route. + """ + + @property + def casevac(self) -> global___CasevacReport: + """ + 9-line MEDEVAC request. See CasevacReport. + """ + + @property + def emergency(self) -> global___EmergencyAlert: + """ + Emergency beacon / 911 alert. See EmergencyAlert. + """ + + @property + def task(self) -> global___TaskRequest: + """ + Task / engage request. See TaskRequest. + """ + + @property + def taktalk(self) -> global___TakTalkMessage: + """ + TAKTALK chat message (CoT type m-t-t). See TakTalkMessage. + Voice audio itself rides UDP/RTP outside the mesh; this carries the + text envelope plus a from_voice marker for receiver UX. + """ + + @property + def taktalk_room(self) -> global___TakTalkRoomData: + """ + TAKTALK room/membership broadcast (CoT type y-). See TakTalkRoomData. + Resolves room UUIDs (used in TakTalkMessage.chatroom_id and + GeoChat.room_id) to display name + roster on receivers. + """ + + def __init__( + self, + *, + cot_type_id: global___CotType.ValueType = ..., + how: global___CotHow.ValueType = ..., + callsign: builtins.str = ..., + team: global___Team.ValueType = ..., + role: global___MemberRole.ValueType = ..., + latitude_i: builtins.int = ..., + longitude_i: builtins.int = ..., + altitude: builtins.int = ..., + speed: builtins.int = ..., + course: builtins.int = ..., + battery: builtins.int = ..., + geo_src: global___GeoPointSource.ValueType = ..., + alt_src: global___GeoPointSource.ValueType = ..., + uid: builtins.str = ..., + device_callsign: builtins.str = ..., + stale_seconds: builtins.int = ..., + tak_version: builtins.str = ..., + tak_device: builtins.str = ..., + tak_platform: builtins.str = ..., + tak_os: builtins.str = ..., + endpoint: builtins.str = ..., + phone: builtins.str = ..., + cot_type_str: builtins.str = ..., + remarks: builtins.str = ..., + environment: global___TAKEnvironment | None = ..., + sensor_fov: global___SensorFov | None = ..., + marti: global___Marti | None = ..., + chat: global___GeoChat | None = ..., + aircraft: global___AircraftTrack | None = ..., + raw_detail: builtins.bytes = ..., + shape: global___DrawnShape | None = ..., + marker: global___Marker | None = ..., + rab: global___RangeAndBearing | None = ..., + route: global___Route | None = ..., + casevac: global___CasevacReport | None = ..., + emergency: global___EmergencyAlert | None = ..., + task: global___TaskRequest | None = ..., + taktalk: global___TakTalkMessage | None = ..., + taktalk_room: global___TakTalkRoomData | None = ..., + ) -> None: ... + def HasField(self, field_name: typing.Literal["_environment", b"_environment", "_marti", b"_marti", "_sensor_fov", b"_sensor_fov", "aircraft", b"aircraft", "casevac", b"casevac", "chat", b"chat", "emergency", b"emergency", "environment", b"environment", "marker", b"marker", "marti", b"marti", "payload_variant", b"payload_variant", "rab", b"rab", "raw_detail", b"raw_detail", "route", b"route", "sensor_fov", b"sensor_fov", "shape", b"shape", "taktalk", b"taktalk", "taktalk_room", b"taktalk_room", "task", b"task"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_environment", b"_environment", "_marti", b"_marti", "_sensor_fov", b"_sensor_fov", "aircraft", b"aircraft", "alt_src", b"alt_src", "altitude", b"altitude", "battery", b"battery", "callsign", b"callsign", "casevac", b"casevac", "chat", b"chat", "cot_type_id", b"cot_type_id", "cot_type_str", b"cot_type_str", "course", b"course", "device_callsign", b"device_callsign", "emergency", b"emergency", "endpoint", b"endpoint", "environment", b"environment", "geo_src", b"geo_src", "how", b"how", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i", "marker", b"marker", "marti", b"marti", "payload_variant", b"payload_variant", "phone", b"phone", "rab", b"rab", "raw_detail", b"raw_detail", "remarks", b"remarks", "role", b"role", "route", b"route", "sensor_fov", b"sensor_fov", "shape", b"shape", "speed", b"speed", "stale_seconds", b"stale_seconds", "tak_device", b"tak_device", "tak_os", b"tak_os", "tak_platform", b"tak_platform", "tak_version", b"tak_version", "taktalk", b"taktalk", "taktalk_room", b"taktalk_room", "task", b"task", "team", b"team", "uid", b"uid"]) -> None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_environment", b"_environment"]) -> typing.Literal["environment"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_marti", b"_marti"]) -> typing.Literal["marti"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["_sensor_fov", b"_sensor_fov"]) -> typing.Literal["sensor_fov"] | None: ... + @typing.overload + def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["chat", "aircraft", "raw_detail", "shape", "marker", "rab", "route", "casevac", "emergency", "task", "taktalk", "taktalk_room"] | None: ... + +global___TAKPacketV2 = TAKPacketV2 diff --git a/meshtastic/protobuf/config_pb2.py b/meshtastic/protobuf/config_pb2.py index f70299c..623f376 100644 --- a/meshtastic/protobuf/config_pb2.py +++ b/meshtastic/protobuf/config_pb2.py @@ -14,7 +14,7 @@ _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\"\xa0,\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\xd6\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\"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\x87\t\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\"\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\"\xbd\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\":\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') +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) @@ -43,7 +43,7 @@ if _descriptor._USE_C_DESCRIPTORS == False: _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=5759 + _globals['_CONFIG']._serialized_end=5962 _globals['_CONFIG_DEVICECONFIG']._serialized_start=724 _globals['_CONFIG_DEVICECONFIG']._serialized_end=1637 _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_start=1201 @@ -69,31 +69,31 @@ if _descriptor._USE_C_DESCRIPTORS == False: _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=4188 + _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=4213 _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_start=3743 _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_end=3786 _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_start=3788 _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_end=3828 _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_start=3830 - _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3932 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3934 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=3999 - _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=4002 - _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=4188 - _globals['_CONFIG_LORACONFIG']._serialized_start=4191 - _globals['_CONFIG_LORACONFIG']._serialized_end=5350 - _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4796 - _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=5098 - _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=5101 - _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=5290 - _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_start=5292 - _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_end=5350 - _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=5353 - _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5535 - _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=5479 - _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5535 - _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5538 - _globals['_CONFIG_SECURITYCONFIG']._serialized_end=5720 - _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=5722 - _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_end=5740 + _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3957 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3959 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=4024 + _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=4027 + _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=4213 + _globals['_CONFIG_LORACONFIG']._serialized_start=4216 + _globals['_CONFIG_LORACONFIG']._serialized_end=5553 + _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4846 + _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=5237 + _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=5240 + _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=5493 + _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_start=5495 + _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_end=5553 + _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=5556 + _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5738 + _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=5682 + _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5738 + _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5741 + _globals['_CONFIG_SECURITYCONFIG']._serialized_end=5923 + _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=5925 + _globals['_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 43a711a..a6feaf7 100644 --- a/meshtastic/protobuf/config_pb2.pyi +++ b/meshtastic/protobuf/config_pb2.pyi @@ -1010,6 +1010,10 @@ class Config(google.protobuf.message.Message): """ Can not be auto detected but set by proto. Used for 128x128 screens """ + OLED_SH1107_ROTATED: Config.DisplayConfig._OledType.ValueType # 5 + """ + Can not be auto detected but set by proto. Used for 64x128 rotated screens + """ class OledType(_OledType, metaclass=_OledTypeEnumTypeWrapper): """ @@ -1036,6 +1040,10 @@ class Config(google.protobuf.message.Message): """ Can not be auto detected but set by proto. Used for 128x128 screens """ + OLED_SH1107_ROTATED: Config.DisplayConfig.OledType.ValueType # 5 + """ + Can not be auto detected but set by proto. Used for 64x128 rotated screens + """ class _DisplayMode: ValueType = typing.NewType("ValueType", builtins.int) @@ -1369,6 +1377,31 @@ class Config(google.protobuf.message.Message): """ Brazil 902MHz """ + ITU1_2M: Config.LoRaConfig._RegionCode.ValueType # 27 + """ + ITU Region 1 Amateur Radio 2m band (144-146 MHz) + """ + ITU2_2M: Config.LoRaConfig._RegionCode.ValueType # 28 + """ + ITU Region 2 Amateur Radio 2m band (144-148 MHz) + """ + EU_866: Config.LoRaConfig._RegionCode.ValueType # 29 + """ + EU 866MHz band (Band no. 47b of 2006/771/EC and subsequent amendments) for Non-specific short-range devices (SRD) + """ + EU_874: Config.LoRaConfig._RegionCode.ValueType # 30 + """ + EU 874MHz and 917MHz bands (Band no. 1 and 4 of 2022/172/EC and subsequent amendments) for Non-specific short-range devices (SRD) + """ + EU_917: Config.LoRaConfig._RegionCode.ValueType # 31 + EU_N_868: Config.LoRaConfig._RegionCode.ValueType # 32 + """ + EU 868MHz band, with narrow presets + """ + ITU3_2M: Config.LoRaConfig._RegionCode.ValueType # 33 + """ + ITU Region 3 Amateur Radio 2m band (144-148 MHz) + """ class RegionCode(_RegionCode, metaclass=_RegionCodeEnumTypeWrapper): ... UNSET: Config.LoRaConfig.RegionCode.ValueType # 0 @@ -1479,6 +1512,31 @@ class Config(google.protobuf.message.Message): """ Brazil 902MHz """ + ITU1_2M: Config.LoRaConfig.RegionCode.ValueType # 27 + """ + ITU Region 1 Amateur Radio 2m band (144-146 MHz) + """ + ITU2_2M: Config.LoRaConfig.RegionCode.ValueType # 28 + """ + ITU Region 2 Amateur Radio 2m band (144-148 MHz) + """ + EU_866: Config.LoRaConfig.RegionCode.ValueType # 29 + """ + EU 866MHz band (Band no. 47b of 2006/771/EC and subsequent amendments) for Non-specific short-range devices (SRD) + """ + EU_874: Config.LoRaConfig.RegionCode.ValueType # 30 + """ + EU 874MHz and 917MHz bands (Band no. 1 and 4 of 2022/172/EC and subsequent amendments) for Non-specific short-range devices (SRD) + """ + EU_917: Config.LoRaConfig.RegionCode.ValueType # 31 + EU_N_868: Config.LoRaConfig.RegionCode.ValueType # 32 + """ + EU 868MHz band, with narrow presets + """ + ITU3_2M: Config.LoRaConfig.RegionCode.ValueType # 33 + """ + ITU Region 3 Amateur Radio 2m band (144-148 MHz) + """ class _ModemPreset: ValueType = typing.NewType("ValueType", builtins.int) @@ -1531,6 +1589,31 @@ class Config(google.protobuf.message.Message): Long Range - Turbo This preset performs similarly to LongFast, but with 500Khz bandwidth. """ + LITE_FAST: Config.LoRaConfig._ModemPreset.ValueType # 10 + """ + Lite Fast + Medium range preset optimized for EU 866MHz SRD band with 125kHz bandwidth. + Comparable link budget to MEDIUM_FAST but compliant with Band no. 47b of 2006/771/EC. + """ + LITE_SLOW: Config.LoRaConfig._ModemPreset.ValueType # 11 + """ + Lite Slow + Medium-to-moderate range preset optimized for EU 866MHz SRD band with 125kHz bandwidth. + Comparable link budget to LONG_FAST but compliant with Band no. 47b of 2006/771/EC. + """ + NARROW_FAST: Config.LoRaConfig._ModemPreset.ValueType # 12 + """ + Narrow Fast + Medium-to-moderate range preset optimized for EU 868MHz band with 62.5kHz bandwidth. + Comparable link budget to SHORT_SLOW, but with half the data rate. + Intended to avoid interference with other devices. + """ + NARROW_SLOW: Config.LoRaConfig._ModemPreset.ValueType # 13 + """ + Narrow Slow + Moderate range preset optimized for EU 868MHz band with 62.5kHz bandwidth. + Comparable link budget and data rate to LONG_FAST. + """ class ModemPreset(_ModemPreset, metaclass=_ModemPresetEnumTypeWrapper): """ @@ -1583,6 +1666,31 @@ class Config(google.protobuf.message.Message): Long Range - Turbo This preset performs similarly to LongFast, but with 500Khz bandwidth. """ + LITE_FAST: Config.LoRaConfig.ModemPreset.ValueType # 10 + """ + Lite Fast + Medium range preset optimized for EU 866MHz SRD band with 125kHz bandwidth. + Comparable link budget to MEDIUM_FAST but compliant with Band no. 47b of 2006/771/EC. + """ + LITE_SLOW: Config.LoRaConfig.ModemPreset.ValueType # 11 + """ + Lite Slow + Medium-to-moderate range preset optimized for EU 866MHz SRD band with 125kHz bandwidth. + Comparable link budget to LONG_FAST but compliant with Band no. 47b of 2006/771/EC. + """ + NARROW_FAST: Config.LoRaConfig.ModemPreset.ValueType # 12 + """ + Narrow Fast + Medium-to-moderate range preset optimized for EU 868MHz band with 62.5kHz bandwidth. + Comparable link budget to SHORT_SLOW, but with half the data rate. + Intended to avoid interference with other devices. + """ + NARROW_SLOW: Config.LoRaConfig.ModemPreset.ValueType # 13 + """ + Narrow Slow + Moderate range preset optimized for EU 868MHz band with 62.5kHz bandwidth. + Comparable link budget and data rate to LONG_FAST. + """ class _FEM_LNA_Mode: ValueType = typing.NewType("ValueType", builtins.int) @@ -1636,6 +1744,7 @@ class Config(google.protobuf.message.Message): IGNORE_MQTT_FIELD_NUMBER: builtins.int CONFIG_OK_TO_MQTT_FIELD_NUMBER: builtins.int FEM_LNA_MODE_FIELD_NUMBER: builtins.int + SERIAL_HAL_ONLY_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` @@ -1737,6 +1846,10 @@ class Config(google.protobuf.message.Message): """ Set where LORA FEM is enabled, disabled, or not present """ + serial_hal_only: builtins.bool + """ + Don't use radiolib to initialize the radio, instead listen for a serialHal connection + """ @property def ignore_incoming(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: """ @@ -1767,8 +1880,9 @@ class Config(google.protobuf.message.Message): ignore_mqtt: builtins.bool = ..., config_ok_to_mqtt: builtins.bool = ..., fem_lna_mode: global___Config.LoRaConfig.FEM_LNA_Mode.ValueType = ..., + serial_hal_only: 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", "fem_lna_mode", b"fem_lna_mode", "frequency_offset", b"frequency_offset", "hop_limit", b"hop_limit", "ignore_incoming", b"ignore_incoming", "ignore_mqtt", b"ignore_mqtt", "modem_preset", b"modem_preset", "override_duty_cycle", b"override_duty_cycle", "override_frequency", b"override_frequency", "pa_fan_disabled", b"pa_fan_disabled", "region", b"region", "spread_factor", b"spread_factor", "sx126x_rx_boosted_gain", b"sx126x_rx_boosted_gain", "tx_enabled", b"tx_enabled", "tx_power", b"tx_power", "use_preset", b"use_preset"]) -> None: ... + def ClearField(self, field_name: typing.Literal["bandwidth", b"bandwidth", "channel_num", b"channel_num", "coding_rate", b"coding_rate", "config_ok_to_mqtt", b"config_ok_to_mqtt", "fem_lna_mode", b"fem_lna_mode", "frequency_offset", b"frequency_offset", "hop_limit", b"hop_limit", "ignore_incoming", b"ignore_incoming", "ignore_mqtt", b"ignore_mqtt", "modem_preset", b"modem_preset", "override_duty_cycle", b"override_duty_cycle", "override_frequency", b"override_frequency", "pa_fan_disabled", b"pa_fan_disabled", "region", b"region", "serial_hal_only", b"serial_hal_only", "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): diff --git a/meshtastic/protobuf/mesh_pb2.py b/meshtastic/protobuf/mesh_pb2.py index 784b635..4db1f3d 100644 --- a/meshtastic/protobuf/mesh_pb2.py +++ b/meshtastic/protobuf/mesh_pb2.py @@ -20,7 +20,7 @@ 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\"\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\"\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\"\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*\x96\x13\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\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) @@ -32,16 +32,16 @@ if _descriptor._USE_C_DESCRIPTORS == False: _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=8390 - _globals['_HARDWAREMODEL']._serialized_end=10844 - _globals['_CONSTANTS']._serialized_start=10846 - _globals['_CONSTANTS']._serialized_end=10890 - _globals['_CRITICALERRORCODE']._serialized_start=10893 - _globals['_CRITICALERRORCODE']._serialized_end=11201 - _globals['_FIRMWAREEDITION']._serialized_start=11203 - _globals['_FIRMWAREEDITION']._serialized_end=11330 - _globals['_EXCLUDEDMODULES']._serialized_start=11333 - _globals['_EXCLUDEDMODULES']._serialized_end=11717 + _globals['_HARDWAREMODEL']._serialized_start=9094 + _globals['_HARDWAREMODEL']._serialized_end=11732 + _globals['_CONSTANTS']._serialized_start=11734 + _globals['_CONSTANTS']._serialized_end=11778 + _globals['_CRITICALERRORCODE']._serialized_start=11781 + _globals['_CRITICALERRORCODE']._serialized_end=12089 + _globals['_FIRMWAREEDITION']._serialized_start=12091 + _globals['_FIRMWAREEDITION']._serialized_end=12218 + _globals['_EXCLUDEDMODULES']._serialized_start=12221 + _globals['_EXCLUDEDMODULES']._serialized_end=12605 _globals['_POSITION']._serialized_start=310 _globals['_POSITION']._serialized_end=1231 _globals['_POSITION_LOCSOURCE']._serialized_start=926 @@ -64,64 +64,72 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['_STOREFORWARDPLUSPLUS']._serialized_end=2927 _globals['_STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE']._serialized_start=2778 _globals['_STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE']._serialized_end=2927 - _globals['_WAYPOINT']._serialized_start=2930 - _globals['_WAYPOINT']._serialized_end=3118 - _globals['_STATUSMESSAGE']._serialized_start=3120 - _globals['_STATUSMESSAGE']._serialized_end=3151 - _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_start=3153 - _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_end=3261 - _globals['_MESHPACKET']._serialized_start=3264 - _globals['_MESHPACKET']._serialized_end=4249 - _globals['_MESHPACKET_PRIORITY']._serialized_start=3826 - _globals['_MESHPACKET_PRIORITY']._serialized_end=3952 - _globals['_MESHPACKET_DELAYED']._serialized_start=3954 - _globals['_MESHPACKET_DELAYED']._serialized_end=4020 - _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_start=4023 - _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_end=4230 - _globals['_NODEINFO']._serialized_start=4252 - _globals['_NODEINFO']._serialized_end=4624 - _globals['_MYNODEINFO']._serialized_start=4627 - _globals['_MYNODEINFO']._serialized_end=4829 - _globals['_LOGRECORD']._serialized_start=4832 - _globals['_LOGRECORD']._serialized_end=5033 - _globals['_LOGRECORD_LEVEL']._serialized_start=4945 - _globals['_LOGRECORD_LEVEL']._serialized_end=5033 - _globals['_QUEUESTATUS']._serialized_start=5035 - _globals['_QUEUESTATUS']._serialized_end=5115 - _globals['_FROMRADIO']._serialized_start=5118 - _globals['_FROMRADIO']._serialized_end=6005 - _globals['_CLIENTNOTIFICATION']._serialized_start=6008 - _globals['_CLIENTNOTIFICATION']._serialized_end=6568 - _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_start=6570 - _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_end=6664 - _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_start=6666 - _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_end=6736 - _globals['_KEYVERIFICATIONFINAL']._serialized_start=6738 - _globals['_KEYVERIFICATIONFINAL']._serialized_end=6851 - _globals['_DUPLICATEDPUBLICKEY']._serialized_start=6853 - _globals['_DUPLICATEDPUBLICKEY']._serialized_end=6874 - _globals['_LOWENTROPYKEY']._serialized_start=6876 - _globals['_LOWENTROPYKEY']._serialized_end=6891 - _globals['_FILEINFO']._serialized_start=6893 - _globals['_FILEINFO']._serialized_end=6942 - _globals['_TORADIO']._serialized_start=6945 - _globals['_TORADIO']._serialized_end=7257 - _globals['_COMPRESSED']._serialized_start=7259 - _globals['_COMPRESSED']._serialized_end=7332 - _globals['_NEIGHBORINFO']._serialized_start=7335 - _globals['_NEIGHBORINFO']._serialized_end=7479 - _globals['_NEIGHBOR']._serialized_start=7481 - _globals['_NEIGHBOR']._serialized_end=7581 - _globals['_DEVICEMETADATA']._serialized_start=7584 - _globals['_DEVICEMETADATA']._serialized_end=7945 - _globals['_HEARTBEAT']._serialized_start=7947 - _globals['_HEARTBEAT']._serialized_end=7973 - _globals['_NODEREMOTEHARDWAREPIN']._serialized_start=7975 - _globals['_NODEREMOTEHARDWAREPIN']._serialized_end=8069 - _globals['_CHUNKEDPAYLOAD']._serialized_start=8071 - _globals['_CHUNKEDPAYLOAD']._serialized_end=8172 - _globals['_RESEND_CHUNKS']._serialized_start=8174 - _globals['_RESEND_CHUNKS']._serialized_end=8205 - _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_start=8208 - _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_end=8387 + _globals['_REMOTESHELL']._serialized_start=2930 + _globals['_REMOTESHELL']._serialized_end=3294 + _globals['_REMOTESHELL_OPCODE']._serialized_start=3151 + _globals['_REMOTESHELL_OPCODE']._serialized_end=3294 + _globals['_WAYPOINT']._serialized_start=3297 + _globals['_WAYPOINT']._serialized_end=3485 + _globals['_STATUSMESSAGE']._serialized_start=3487 + _globals['_STATUSMESSAGE']._serialized_end=3518 + _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_start=3520 + _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_end=3628 + _globals['_MESHPACKET']._serialized_start=3631 + _globals['_MESHPACKET']._serialized_end=4616 + _globals['_MESHPACKET_PRIORITY']._serialized_start=4193 + _globals['_MESHPACKET_PRIORITY']._serialized_end=4319 + _globals['_MESHPACKET_DELAYED']._serialized_start=4321 + _globals['_MESHPACKET_DELAYED']._serialized_end=4387 + _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_start=4390 + _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_end=4597 + _globals['_NODEINFO']._serialized_start=4619 + _globals['_NODEINFO']._serialized_end=4991 + _globals['_MYNODEINFO']._serialized_start=4994 + _globals['_MYNODEINFO']._serialized_end=5196 + _globals['_LOGRECORD']._serialized_start=5199 + _globals['_LOGRECORD']._serialized_end=5400 + _globals['_LOGRECORD_LEVEL']._serialized_start=5312 + _globals['_LOGRECORD_LEVEL']._serialized_end=5400 + _globals['_QUEUESTATUS']._serialized_start=5402 + _globals['_QUEUESTATUS']._serialized_end=5482 + _globals['_FROMRADIO']._serialized_start=5485 + _globals['_FROMRADIO']._serialized_end=6436 + _globals['_LOCKDOWNSTATUS']._serialized_start=6439 + _globals['_LOCKDOWNSTATUS']._serialized_end=6709 + _globals['_LOCKDOWNSTATUS_STATE']._serialized_start=6613 + _globals['_LOCKDOWNSTATUS_STATE']._serialized_end=6709 + _globals['_CLIENTNOTIFICATION']._serialized_start=6712 + _globals['_CLIENTNOTIFICATION']._serialized_end=7272 + _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_start=7274 + _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_end=7368 + _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_start=7370 + _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_end=7440 + _globals['_KEYVERIFICATIONFINAL']._serialized_start=7442 + _globals['_KEYVERIFICATIONFINAL']._serialized_end=7555 + _globals['_DUPLICATEDPUBLICKEY']._serialized_start=7557 + _globals['_DUPLICATEDPUBLICKEY']._serialized_end=7578 + _globals['_LOWENTROPYKEY']._serialized_start=7580 + _globals['_LOWENTROPYKEY']._serialized_end=7595 + _globals['_FILEINFO']._serialized_start=7597 + _globals['_FILEINFO']._serialized_end=7646 + _globals['_TORADIO']._serialized_start=7649 + _globals['_TORADIO']._serialized_end=7961 + _globals['_COMPRESSED']._serialized_start=7963 + _globals['_COMPRESSED']._serialized_end=8036 + _globals['_NEIGHBORINFO']._serialized_start=8039 + _globals['_NEIGHBORINFO']._serialized_end=8183 + _globals['_NEIGHBOR']._serialized_start=8185 + _globals['_NEIGHBOR']._serialized_end=8285 + _globals['_DEVICEMETADATA']._serialized_start=8288 + _globals['_DEVICEMETADATA']._serialized_end=8649 + _globals['_HEARTBEAT']._serialized_start=8651 + _globals['_HEARTBEAT']._serialized_end=8677 + _globals['_NODEREMOTEHARDWAREPIN']._serialized_start=8679 + _globals['_NODEREMOTEHARDWAREPIN']._serialized_end=8773 + _globals['_CHUNKEDPAYLOAD']._serialized_start=8775 + _globals['_CHUNKEDPAYLOAD']._serialized_end=8876 + _globals['_RESEND_CHUNKS']._serialized_start=8878 + _globals['_RESEND_CHUNKS']._serialized_end=8909 + _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_start=8912 + _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_end=9091 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mesh_pb2.pyi b/meshtastic/protobuf/mesh_pb2.pyi index 6925157..506e788 100644 --- a/meshtastic/protobuf/mesh_pb2.pyi +++ b/meshtastic/protobuf/mesh_pb2.pyi @@ -563,6 +563,37 @@ class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._ """ Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen. """ + TRACKER_T1000_E_PRO: _HardwareModel.ValueType # 128 + """ + Seeed studio T1000-E Pro tracker card. NRF52840 w/ LR2021 radio, + GPS, button, buzzer, and sensors. + """ + THINKNODE_M7: _HardwareModel.ValueType # 129 + """ + Elecrow ThinkNode M7, M8 and M9 + """ + THINKNODE_M8: _HardwareModel.ValueType # 130 + THINKNODE_M9: _HardwareModel.ValueType # 131 + HELTEC_V4_R8: _HardwareModel.ValueType # 132 + """ + The Heltec-V4-R8 uses an ESP32S3R8 chip, plus an SX1262. + """ + HELTEC_MESH_NODE_T1: _HardwareModel.ValueType # 133 + """ + The HELTEC_MESH_NODE_T1 uses an NRF52840 chip, plus an SX1262. + """ + STATION_G3: _HardwareModel.ValueType # 134 + """ + B&Q Consulting Station G3: TBD + """ + T_IMPULSE_PLUS: _HardwareModel.ValueType # 135 + """ + Lilygo T-Impulse-Plus + """ + T_ECHO_CARD: _HardwareModel.ValueType # 136 + """ + Lilygo T-Echo Card + """ PRIVATE_HW: _HardwareModel.ValueType # 255 """ ------------------------------------------------------------------------------------------------------------------------------------------ @@ -1109,6 +1140,37 @@ HELTEC_MESH_NODE_T096: HardwareModel.ValueType # 127 """ Heltec Mesh Node T096 board features an nRF52840 CPU and a TFT screen. """ +TRACKER_T1000_E_PRO: HardwareModel.ValueType # 128 +""" +Seeed studio T1000-E Pro tracker card. NRF52840 w/ LR2021 radio, +GPS, button, buzzer, and sensors. +""" +THINKNODE_M7: HardwareModel.ValueType # 129 +""" +Elecrow ThinkNode M7, M8 and M9 +""" +THINKNODE_M8: HardwareModel.ValueType # 130 +THINKNODE_M9: HardwareModel.ValueType # 131 +HELTEC_V4_R8: HardwareModel.ValueType # 132 +""" +The Heltec-V4-R8 uses an ESP32S3R8 chip, plus an SX1262. +""" +HELTEC_MESH_NODE_T1: HardwareModel.ValueType # 133 +""" +The HELTEC_MESH_NODE_T1 uses an NRF52840 chip, plus an SX1262. +""" +STATION_G3: HardwareModel.ValueType # 134 +""" +B&Q Consulting Station G3: TBD +""" +T_IMPULSE_PLUS: HardwareModel.ValueType # 135 +""" +Lilygo T-Impulse-Plus +""" +T_ECHO_CARD: HardwareModel.ValueType # 136 +""" +Lilygo T-Echo Card +""" PRIVATE_HW: HardwareModel.ValueType # 255 """ ------------------------------------------------------------------------------------------------------------------------------------------ @@ -2406,6 +2468,126 @@ class StoreForwardPlusPlus(google.protobuf.message.Message): global___StoreForwardPlusPlus = StoreForwardPlusPlus +@typing.final +class RemoteShell(google.protobuf.message.Message): + """ + The actual over-the-mesh message doing RemoteShell + """ + + 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[RemoteShell._OpCode.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + OP_UNSET: RemoteShell._OpCode.ValueType # 0 + OPEN: RemoteShell._OpCode.ValueType # 1 + """Client -> server""" + INPUT: RemoteShell._OpCode.ValueType # 2 + RESIZE: RemoteShell._OpCode.ValueType # 3 + CLOSE: RemoteShell._OpCode.ValueType # 4 + PING: RemoteShell._OpCode.ValueType # 5 + ACK: RemoteShell._OpCode.ValueType # 6 + OPEN_OK: RemoteShell._OpCode.ValueType # 64 + """Server -> client""" + OUTPUT: RemoteShell._OpCode.ValueType # 65 + CLOSED: RemoteShell._OpCode.ValueType # 66 + ERROR: RemoteShell._OpCode.ValueType # 67 + PONG: RemoteShell._OpCode.ValueType # 68 + + class OpCode(_OpCode, metaclass=_OpCodeEnumTypeWrapper): + """ + Frame op code for PTY session control and stream transport. + + Values 1-63 are client->server requests. + Values 64-127 are server->client responses/events. + """ + + OP_UNSET: RemoteShell.OpCode.ValueType # 0 + OPEN: RemoteShell.OpCode.ValueType # 1 + """Client -> server""" + INPUT: RemoteShell.OpCode.ValueType # 2 + RESIZE: RemoteShell.OpCode.ValueType # 3 + CLOSE: RemoteShell.OpCode.ValueType # 4 + PING: RemoteShell.OpCode.ValueType # 5 + ACK: RemoteShell.OpCode.ValueType # 6 + OPEN_OK: RemoteShell.OpCode.ValueType # 64 + """Server -> client""" + OUTPUT: RemoteShell.OpCode.ValueType # 65 + CLOSED: RemoteShell.OpCode.ValueType # 66 + ERROR: RemoteShell.OpCode.ValueType # 67 + PONG: RemoteShell.OpCode.ValueType # 68 + + OP_FIELD_NUMBER: builtins.int + SESSION_ID_FIELD_NUMBER: builtins.int + SEQ_FIELD_NUMBER: builtins.int + ACK_SEQ_FIELD_NUMBER: builtins.int + PAYLOAD_FIELD_NUMBER: builtins.int + COLS_FIELD_NUMBER: builtins.int + ROWS_FIELD_NUMBER: builtins.int + FLAGS_FIELD_NUMBER: builtins.int + LAST_TX_SEQ_FIELD_NUMBER: builtins.int + LAST_RX_SEQ_FIELD_NUMBER: builtins.int + op: global___RemoteShell.OpCode.ValueType + """ + Structured frame operation. + """ + session_id: builtins.int + """ + Logical PTY session identifier. + """ + seq: builtins.int + """ + Monotonic sequence number for this frame. + """ + ack_seq: builtins.int + """ + Cumulative ack sequence number. + """ + payload: builtins.bytes + """ + Opaque bytes payload for INPUT/OUTPUT/ERROR and other frame bodies. + """ + cols: builtins.int + """ + Terminal size columns used for OPEN/RESIZE signaling. + """ + rows: builtins.int + """ + Terminal size rows used for OPEN/RESIZE signaling. + """ + flags: builtins.int + """ + Bit flags for protocol extensions. + """ + last_tx_seq: builtins.int + """ + The last sequence number TX'd. + """ + last_rx_seq: builtins.int + """ + The last sequence number RX'd. + """ + def __init__( + self, + *, + op: global___RemoteShell.OpCode.ValueType = ..., + session_id: builtins.int = ..., + seq: builtins.int = ..., + ack_seq: builtins.int = ..., + payload: builtins.bytes = ..., + cols: builtins.int = ..., + rows: builtins.int = ..., + flags: builtins.int = ..., + last_tx_seq: builtins.int = ..., + last_rx_seq: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["ack_seq", b"ack_seq", "cols", b"cols", "flags", b"flags", "last_rx_seq", b"last_rx_seq", "last_tx_seq", b"last_tx_seq", "op", b"op", "payload", b"payload", "rows", b"rows", "seq", b"seq", "session_id", b"session_id"]) -> None: ... + +global___RemoteShell = RemoteShell + @typing.final class Waypoint(google.protobuf.message.Message): """ @@ -3314,6 +3496,7 @@ class FromRadio(google.protobuf.message.Message): FILEINFO_FIELD_NUMBER: builtins.int CLIENTNOTIFICATION_FIELD_NUMBER: builtins.int DEVICEUICONFIG_FIELD_NUMBER: builtins.int + LOCKDOWN_STATUS_FIELD_NUMBER: builtins.int id: builtins.int """ The packet id, used to allow the phone to request missing read packets from the FIFO, @@ -3419,6 +3602,16 @@ class FromRadio(google.protobuf.message.Message): Persistent data for device-ui """ + @property + def lockdown_status(self) -> global___LockdownStatus: + """ + Lockdown state notification for hardened firmware builds. + Sent post-config (so unauthorized clients learn they must + provision/unlock) and after each LockdownAuth admin command + to report success or failure. Replaces the earlier scheme of + encoding state as magic-string prefixes inside ClientNotification. + """ + def __init__( self, *, @@ -3439,13 +3632,133 @@ class FromRadio(google.protobuf.message.Message): fileInfo: global___FileInfo | None = ..., clientNotification: global___ClientNotification | None = ..., deviceuiConfig: meshtastic.protobuf.device_ui_pb2.DeviceUIConfig | None = ..., + lockdown_status: global___LockdownStatus | 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: ... + 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", "lockdown_status", b"lockdown_status", "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", "lockdown_status", b"lockdown_status", "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", "lockdown_status"] | None: ... global___FromRadio = FromRadio +@typing.final +class LockdownStatus(google.protobuf.message.Message): + """ + Lockdown state report from firmware to client (for hardened builds + with MESHTASTIC_LOCKDOWN). Sent immediately after config_complete_id + to inform a freshly-connected unauthorized client what it must do, + and again in response to each LockdownAuth admin command. + """ + + 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[LockdownStatus._State.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + STATE_UNSPECIFIED: LockdownStatus._State.ValueType # 0 + """Default; should not be sent.""" + NEEDS_PROVISION: LockdownStatus._State.ValueType # 1 + """ + No passphrase has ever been provisioned on this device. + Client should prompt the operator to set one. + """ + LOCKED: LockdownStatus._State.ValueType # 2 + """ + Storage is locked or this client has not authenticated yet. + lock_reason carries a machine-readable detail string. + Client should present (or auto-replay) a passphrase via + AdminMessage.lockdown_auth. + """ + UNLOCKED: LockdownStatus._State.ValueType # 3 + """ + Passphrase accepted; client is now authorized for this connection. + boots_remaining and valid_until_epoch describe the active session + token's TTL. + """ + UNLOCK_FAILED: LockdownStatus._State.ValueType # 4 + """ + Passphrase rejected. backoff_seconds is non-zero when rate-limited. + """ + + class State(_State, metaclass=_StateEnumTypeWrapper): ... + STATE_UNSPECIFIED: LockdownStatus.State.ValueType # 0 + """Default; should not be sent.""" + NEEDS_PROVISION: LockdownStatus.State.ValueType # 1 + """ + No passphrase has ever been provisioned on this device. + Client should prompt the operator to set one. + """ + LOCKED: LockdownStatus.State.ValueType # 2 + """ + Storage is locked or this client has not authenticated yet. + lock_reason carries a machine-readable detail string. + Client should present (or auto-replay) a passphrase via + AdminMessage.lockdown_auth. + """ + UNLOCKED: LockdownStatus.State.ValueType # 3 + """ + Passphrase accepted; client is now authorized for this connection. + boots_remaining and valid_until_epoch describe the active session + token's TTL. + """ + UNLOCK_FAILED: LockdownStatus.State.ValueType # 4 + """ + Passphrase rejected. backoff_seconds is non-zero when rate-limited. + """ + + STATE_FIELD_NUMBER: builtins.int + LOCK_REASON_FIELD_NUMBER: builtins.int + BOOTS_REMAINING_FIELD_NUMBER: builtins.int + VALID_UNTIL_EPOCH_FIELD_NUMBER: builtins.int + BACKOFF_SECONDS_FIELD_NUMBER: builtins.int + state: global___LockdownStatus.State.ValueType + """Current lockdown state being reported.""" + lock_reason: builtins.str + """ + For LOCKED: machine-readable reason. Known values: + "needs_auth" — storage already unlocked, client must auth + "token_missing" — no boot token on flash + "token_expired" — boot token wall-clock TTL elapsed + "token_boots_zero" — boot token boot-count TTL exhausted + "token_hmac_fail" — token tampered or wrong device + "token_dek_fail" — token DEK decrypt failed + "token_wrong_size" — token file corrupted + "token_bad_magic" — token file corrupted + "not_provisioned" — should generally use NEEDS_PROVISION state instead + Other values may be added; clients should treat unknown values as + "locked, ask for passphrase". + """ + boots_remaining: builtins.int + """ + For UNLOCKED: remaining boots on the issued session token. + Decrements by 1 on each subsequent boot. + """ + valid_until_epoch: builtins.int + """ + For UNLOCKED: wall-clock expiry of the issued session token, + absolute Unix-epoch seconds. 0 = no time limit. + """ + backoff_seconds: builtins.int + """ + For UNLOCK_FAILED: seconds the client must wait before another + passphrase attempt will be accepted. 0 = wrong passphrase, no + backoff (immediate retry allowed but advisable to prompt user). + """ + def __init__( + self, + *, + state: global___LockdownStatus.State.ValueType = ..., + lock_reason: builtins.str = ..., + boots_remaining: builtins.int = ..., + valid_until_epoch: builtins.int = ..., + backoff_seconds: builtins.int = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["backoff_seconds", b"backoff_seconds", "boots_remaining", b"boots_remaining", "lock_reason", b"lock_reason", "state", b"state", "valid_until_epoch", b"valid_until_epoch"]) -> None: ... + +global___LockdownStatus = LockdownStatus + @typing.final class ClientNotification(google.protobuf.message.Message): """ diff --git a/meshtastic/protobuf/module_config_pb2.py b/meshtastic/protobuf/module_config_pb2.py index 3bb9036..dfc8240 100644 --- a/meshtastic/protobuf/module_config_pb2.py +++ b/meshtastic/protobuf/module_config_pb2.py @@ -14,7 +14,7 @@ _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\x1a\x1emeshtastic/protobuf/atak.proto\"\x82/\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\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\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') +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) @@ -22,58 +22,60 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.module_ 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=6228 - _globals['_REMOTEHARDWAREPINTYPE']._serialized_end=6301 + _globals['_REMOTEHARDWAREPINTYPE']._serialized_start=6232 + _globals['_REMOTEHARDWAREPINTYPE']._serialized_end=6305 _globals['_MODULECONFIG']._serialized_start=97 - _globals['_MODULECONFIG']._serialized_end=6115 + _globals['_MODULECONFIG']._serialized_end=6119 _globals['_MODULECONFIG_MQTTCONFIG']._serialized_start=1341 - _globals['_MODULECONFIG_MQTTCONFIG']._serialized_end=1654 - _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_start=1656 - _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_end=1766 - _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_start=1769 - _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_end=1908 - _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_start=1910 - _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_end=2000 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_start=2003 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_end=2419 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_start=2283 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_end=2419 - _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_start=2422 - _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_end=2787 - _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_start=2620 - _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_end=2787 - _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_start=2789 - _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_end=2907 - _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_start=2910 - _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_end=3377 - _globals['_MODULECONFIG_SERIALCONFIG']._serialized_start=3380 - _globals['_MODULECONFIG_SERIALCONFIG']._serialized_end=4073 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_start=3657 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_end=3923 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_start=3926 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_end=4073 - _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_start=4076 - _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_end=4437 - _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_start=4440 - _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_end=4591 - _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_start=4593 - _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_end=4682 - _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_start=4685 - _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_end=5212 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_start=5215 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_end=5848 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_start=5749 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_end=5848 - _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_start=5850 - _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_end=5951 - _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_start=5953 - _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_end=5995 - _globals['_MODULECONFIG_TAKCONFIG']._serialized_start=5997 - _globals['_MODULECONFIG_TAKCONFIG']._serialized_end=6096 - _globals['_REMOTEHARDWAREPIN']._serialized_start=6117 - _globals['_REMOTEHARDWAREPIN']._serialized_end=6226 + _globals['_MODULECONFIG_MQTTCONFIG']._serialized_end=1658 + _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_start=1660 + _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_end=1770 + _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_start=1773 + _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_end=1912 + _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_start=1914 + _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_end=2004 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_start=2007 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_end=2423 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_start=2287 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_end=2423 + _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_start=2426 + _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_end=2791 + _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_start=2624 + _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_end=2791 + _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_start=2793 + _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_end=2911 + _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_start=2914 + _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_end=3381 + _globals['_MODULECONFIG_SERIALCONFIG']._serialized_start=3384 + _globals['_MODULECONFIG_SERIALCONFIG']._serialized_end=4077 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_start=3661 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_end=3927 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_start=3930 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_end=4077 + _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_start=4080 + _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_end=4441 + _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_start=4444 + _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_end=4595 + _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_start=4597 + _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_end=4686 + _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_start=4689 + _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_end=5216 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_start=5219 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_end=5852 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_start=5753 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_end=5852 + _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_start=5854 + _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_end=5955 + _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_start=5957 + _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_end=5999 + _globals['_MODULECONFIG_TAKCONFIG']._serialized_start=6001 + _globals['_MODULECONFIG_TAKCONFIG']._serialized_end=6100 + _globals['_REMOTEHARDWAREPIN']._serialized_start=6121 + _globals['_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 4bb1d8e..b9d8a5a 100644 --- a/meshtastic/protobuf/module_config_pb2.pyi +++ b/meshtastic/protobuf/module_config_pb2.pyi @@ -113,7 +113,7 @@ class ModuleConfig(google.protobuf.message.Message): """ json_enabled: builtins.bool """ - Whether to send / consume json packets on MQTT + Deprecated: JSON packet support on MQTT was removed, and this field is ignored. """ tls_enabled: builtins.bool """ diff --git a/meshtastic/protobuf/portnums_pb2.py b/meshtastic/protobuf/portnums_pb2.py index 0cfc590..2421233 100644 --- a/meshtastic/protobuf/portnums_pb2.py +++ b/meshtastic/protobuf/portnums_pb2.py @@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default() -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xd3\x05\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\x1f\n\x1bTEXT_MESSAGE_COMPRESSED_APP\x10\x07\x12\x10\n\x0cWAYPOINT_APP\x10\x08\x12\r\n\tAUDIO_APP\x10\t\x12\x18\n\x14\x44\x45TECTION_SENSOR_APP\x10\n\x12\r\n\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x1e\n\x1aSTORE_FORWARD_PLUSPLUS_APP\x10#\x12\x13\n\x0fNODE_STATUS_APP\x10$\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x12\n\x0eLORAWAN_BRIDGE\x10K\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x12\n\x0eGROUPALARM_APP\x10p\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42^\n\x14org.meshtastic.protoB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +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) @@ -22,5 +22,5 @@ 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=783 + _globals['_PORTNUM']._serialized_end=825 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/portnums_pb2.pyi b/meshtastic/protobuf/portnums_pb2.pyi index 278bbce..a16cef2 100644 --- a/meshtastic/protobuf/portnums_pb2.pyi +++ b/meshtastic/protobuf/portnums_pb2.pyi @@ -101,6 +101,10 @@ class _PortNumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTy """ Module/port for handling key verification requests. """ + REMOTE_SHELL_APP: _PortNum.ValueType # 13 + """ + Module/port for handling primitive remote shell access. + """ REPLY_APP: _PortNum.ValueType # 32 """ Provides a 'ping' service that replies to any packet it receives. @@ -213,6 +217,12 @@ class _PortNumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTy arbitrary telemetry over meshtastic that is not covered by telemetry.proto ENCODING: CayenneLLP """ + ATAK_PLUGIN_V2: _PortNum.ValueType # 78 + """ + ATAK Plugin V2 + Portnum for payloads from the official Meshtastic ATAK plugin using + TAKPacketV2 with zstd dictionary compression. + """ GROUPALARM_APP: _PortNum.ValueType # 112 """ GroupAlarm integration @@ -330,6 +340,10 @@ KEY_VERIFICATION_APP: PortNum.ValueType # 12 """ Module/port for handling key verification requests. """ +REMOTE_SHELL_APP: PortNum.ValueType # 13 +""" +Module/port for handling primitive remote shell access. +""" REPLY_APP: PortNum.ValueType # 32 """ Provides a 'ping' service that replies to any packet it receives. @@ -442,6 +456,12 @@ App for transporting Cayenne Low Power Payload, popular for LoRaWAN sensor nodes arbitrary telemetry over meshtastic that is not covered by telemetry.proto ENCODING: CayenneLLP """ +ATAK_PLUGIN_V2: PortNum.ValueType # 78 +""" +ATAK Plugin V2 +Portnum for payloads from the official Meshtastic ATAK plugin using +TAKPacketV2 with zstd dictionary compression. +""" GROUPALARM_APP: PortNum.ValueType # 112 """ GroupAlarm integration diff --git a/meshtastic/protobuf/serial_hal_pb2.py b/meshtastic/protobuf/serial_hal_pb2.py new file mode 100644 index 0000000..5ec565c --- /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 import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/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') + +_globals = globals() +_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' + _globals['_SERIALHALCOMMAND']._serialized_start=62 + _globals['_SERIALHALCOMMAND']._serialized_end=361 + _globals['_SERIALHALCOMMAND_TYPE']._serialized_start=221 + _globals['_SERIALHALCOMMAND_TYPE']._serialized_end=361 + _globals['_SERIALHALRESPONSE']._serialized_start=364 + _globals['_SERIALHALRESPONSE']._serialized_end=577 + _globals['_SERIALHALRESPONSE_RESULT']._serialized_start=516 + _globals['_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..33d75cb --- /dev/null +++ b/meshtastic/protobuf/serial_hal_pb2.pyi @@ -0,0 +1,140 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message +import sys +import typing + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +@typing.final +class SerialHalCommand(google.protobuf.message.Message): + """SerialHalCommand messages are sent from host to device over the SerialHal + framing stream. Responses normally come back as SerialHalResponse with the + same transaction_id. + + Interrupt notifications are the one asynchronous exception: the device emits + an unsolicited SerialHalResponse with transaction_id == 0 and value == pin. + Host implementations should treat those frames as interrupt events rather + than replies to an outstanding request. + """ + + 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[SerialHalCommand._Type.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + UNSET: SerialHalCommand._Type.ValueType # 0 + PIN_MODE: SerialHalCommand._Type.ValueType # 1 + DIGITAL_WRITE: SerialHalCommand._Type.ValueType # 2 + DIGITAL_READ: SerialHalCommand._Type.ValueType # 3 + ATTACH_INTERRUPT: SerialHalCommand._Type.ValueType # 4 + DETACH_INTERRUPT: SerialHalCommand._Type.ValueType # 5 + SPI_TRANSFER: SerialHalCommand._Type.ValueType # 6 + NOOP: SerialHalCommand._Type.ValueType # 7 + + class Type(_Type, metaclass=_TypeEnumTypeWrapper): ... + UNSET: SerialHalCommand.Type.ValueType # 0 + PIN_MODE: SerialHalCommand.Type.ValueType # 1 + DIGITAL_WRITE: SerialHalCommand.Type.ValueType # 2 + DIGITAL_READ: SerialHalCommand.Type.ValueType # 3 + ATTACH_INTERRUPT: SerialHalCommand.Type.ValueType # 4 + DETACH_INTERRUPT: SerialHalCommand.Type.ValueType # 5 + SPI_TRANSFER: SerialHalCommand.Type.ValueType # 6 + NOOP: SerialHalCommand.Type.ValueType # 7 + + TRANSACTION_ID_FIELD_NUMBER: builtins.int + TYPE_FIELD_NUMBER: builtins.int + PIN_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + MODE_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + transaction_id: builtins.int + """Host-assigned request id. Replies echo this id back in + SerialHalResponse.transaction_id. + """ + type: global___SerialHalCommand.Type.ValueType + pin: builtins.int + value: builtins.int + mode: builtins.int + data: builtins.bytes + def __init__( + self, + *, + transaction_id: builtins.int = ..., + type: global___SerialHalCommand.Type.ValueType = ..., + pin: builtins.int = ..., + value: builtins.int = ..., + mode: builtins.int = ..., + data: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "mode", b"mode", "pin", b"pin", "transaction_id", b"transaction_id", "type", b"type", "value", b"value"]) -> None: ... + +global___SerialHalCommand = SerialHalCommand + +@typing.final +class SerialHalResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Result: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _ResultEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SerialHalResponse._Result.ValueType], builtins.type): + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + OK: SerialHalResponse._Result.ValueType # 0 + ERROR: SerialHalResponse._Result.ValueType # 1 + BAD_REQUEST: SerialHalResponse._Result.ValueType # 2 + UNSUPPORTED: SerialHalResponse._Result.ValueType # 3 + + class Result(_Result, metaclass=_ResultEnumTypeWrapper): ... + OK: SerialHalResponse.Result.ValueType # 0 + ERROR: SerialHalResponse.Result.ValueType # 1 + BAD_REQUEST: SerialHalResponse.Result.ValueType # 2 + UNSUPPORTED: SerialHalResponse.Result.ValueType # 3 + + TRANSACTION_ID_FIELD_NUMBER: builtins.int + RESULT_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + DATA_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + transaction_id: builtins.int + """Matches the originating SerialHalCommand.transaction_id for normal + request/response traffic. + + A value of 0 indicates an unsolicited interrupt notification generated by + the device. In that case, the host should interpret value as the GPIO pin + that triggered. + """ + result: global___SerialHalResponse.Result.ValueType + value: builtins.int + """Used by DIGITAL_READ replies and interrupt notifications. For interrupt + notifications (transaction_id == 0), this carries the pin number. + """ + data: builtins.bytes + error: builtins.str + def __init__( + self, + *, + transaction_id: builtins.int = ..., + result: global___SerialHalResponse.Result.ValueType = ..., + value: builtins.int = ..., + data: builtins.bytes = ..., + error: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "error", b"error", "result", b"result", "transaction_id", b"transaction_id", "value", b"value"]) -> None: ... + +global___SerialHalResponse = SerialHalResponse diff --git a/meshtastic/protobuf/telemetry_pb2.py b/meshtastic/protobuf/telemetry_pb2.py index 49ad9e0..fba676f 100644 --- a/meshtastic/protobuf/telemetry_pb2.py +++ b/meshtastic/protobuf/telemetry_pb2.py @@ -13,7 +13,7 @@ _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\"\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*\xb2\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\x42\x65\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) @@ -21,28 +21,28 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.telemet 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=4987 - _globals['_TELEMETRYSENSORTYPE']._serialized_end=5677 + _globals['_TELEMETRYSENSORTYPE']._serialized_start=5017 + _globals['_TELEMETRYSENSORTYPE']._serialized_end=5749 _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=3484 - _globals['_TRAFFICMANAGEMENTSTATS']._serialized_start=3487 - _globals['_TRAFFICMANAGEMENTSTATS']._serialized_end=3715 - _globals['_HEALTHMETRICS']._serialized_start=3717 - _globals['_HEALTHMETRICS']._serialized_end=3840 - _globals['_HOSTMETRICS']._serialized_start=3843 - _globals['_HOSTMETRICS']._serialized_end=4116 - _globals['_TELEMETRY']._serialized_start=4119 - _globals['_TELEMETRY']._serialized_end=4677 - _globals['_NAU7802CONFIG']._serialized_start=4679 - _globals['_NAU7802CONFIG']._serialized_end=4741 - _globals['_SEN5XSTATE']._serialized_start=4744 - _globals['_SEN5XSTATE']._serialized_end=4984 + _globals['_ENVIRONMENTMETRICS']._serialized_end=1235 + _globals['_POWERMETRICS']._serialized_start=1238 + _globals['_POWERMETRICS']._serialized_end=1924 + _globals['_AIRQUALITYMETRICS']._serialized_start=1927 + _globals['_AIRQUALITYMETRICS']._serialized_end=3128 + _globals['_LOCALSTATS']._serialized_start=3131 + _globals['_LOCALSTATS']._serialized_end=3514 + _globals['_TRAFFICMANAGEMENTSTATS']._serialized_start=3517 + _globals['_TRAFFICMANAGEMENTSTATS']._serialized_end=3745 + _globals['_HEALTHMETRICS']._serialized_start=3747 + _globals['_HEALTHMETRICS']._serialized_end=3870 + _globals['_HOSTMETRICS']._serialized_start=3873 + _globals['_HOSTMETRICS']._serialized_end=4146 + _globals['_TELEMETRY']._serialized_start=4149 + _globals['_TELEMETRY']._serialized_end=4707 + _globals['_NAU7802CONFIG']._serialized_start=4709 + _globals['_NAU7802CONFIG']._serialized_end=4771 + _globals['_SEN5XSTATE']._serialized_start=4774 + _globals['_SEN5XSTATE']._serialized_end=5014 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/telemetry_pb2.pyi b/meshtastic/protobuf/telemetry_pb2.pyi index 46530ca..13a44fb 100644 --- a/meshtastic/protobuf/telemetry_pb2.pyi +++ b/meshtastic/protobuf/telemetry_pb2.pyi @@ -4,7 +4,9 @@ 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 @@ -227,6 +229,18 @@ class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wra """ SHT family of sensors for temperature and humidity """ + DS248X: _TelemetrySensorType.ValueType # 51 + """ + DS248X Bridge for one-wire temperature sensors + """ + MMC5983MA: _TelemetrySensorType.ValueType # 52 + """ + MMC5983MA 3-Axis Digital Magnetic Sensor + """ + ICM42607P: _TelemetrySensorType.ValueType # 53 + """ + ICM-42607-P 6‑Axis IMU + """ class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper): """ @@ -437,6 +451,18 @@ SHTXX: TelemetrySensorType.ValueType # 50 """ SHT family of sensors for temperature and humidity """ +DS248X: TelemetrySensorType.ValueType # 51 +""" +DS248X Bridge for one-wire temperature sensors +""" +MMC5983MA: TelemetrySensorType.ValueType # 52 +""" +MMC5983MA 3-Axis Digital Magnetic Sensor +""" +ICM42607P: TelemetrySensorType.ValueType # 53 +""" +ICM-42607-P 6‑Axis IMU +""" global___TelemetrySensorType = TelemetrySensorType @typing.final @@ -526,6 +552,7 @@ class EnvironmentMetrics(google.protobuf.message.Message): RAINFALL_24H_FIELD_NUMBER: builtins.int SOIL_MOISTURE_FIELD_NUMBER: builtins.int SOIL_TEMPERATURE_FIELD_NUMBER: builtins.int + ONE_WIRE_TEMPERATURE_FIELD_NUMBER: builtins.int temperature: builtins.float """ Temperature measured @@ -616,6 +643,12 @@ class EnvironmentMetrics(google.protobuf.message.Message): """ Soil temperature measured (*C) """ + @property + def one_wire_temperature(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: + """ + One-wire temperature (*C) + """ + def __init__( self, *, @@ -641,9 +674,10 @@ class EnvironmentMetrics(google.protobuf.message.Message): rainfall_24h: builtins.float | None = ..., soil_moisture: builtins.int | None = ..., soil_temperature: builtins.float | None = ..., + one_wire_temperature: collections.abc.Iterable[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: ... + 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", "one_wire_temperature", b"one_wire_temperature", "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 diff --git a/protobufs b/protobufs index cb1f893..dd6c3f8 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit cb1f89372a70b0d4b4f8caf05aec28de8d4a13e0 +Subproject commit dd6c3f850a56a00cbc2cc5b93db2fd43b1a2f46a