diff --git a/meshtastic/admin_pb2.py b/meshtastic/admin_pb2.py
index e98de3e..1b8b091 100644
--- a/meshtastic/admin_pb2.py
+++ b/meshtastic/admin_pb2.py
@@ -18,7 +18,7 @@ from meshtastic import mesh_pb2 as meshtastic_dot_mesh__pb2
from meshtastic import module_config_pb2 as meshtastic_dot_module__config__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16meshtastic/admin.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\x1a\"meshtastic/connection_status.proto\x1a\x15meshtastic/mesh.proto\x1a\x1emeshtastic/module_config.proto\"\xce\x11\n\x0c\x41\x64minMessage\x12\x1d\n\x13get_channel_request\x18\x01 \x01(\rH\x00\x12\x33\n\x14get_channel_response\x18\x02 \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12\x1b\n\x11get_owner_request\x18\x03 \x01(\x08H\x00\x12.\n\x12get_owner_response\x18\x04 \x01(\x0b\x32\x10.meshtastic.UserH\x00\x12\x41\n\x12get_config_request\x18\x05 \x01(\x0e\x32#.meshtastic.AdminMessage.ConfigTypeH\x00\x12\x31\n\x13get_config_response\x18\x06 \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12N\n\x19get_module_config_request\x18\x07 \x01(\x0e\x32).meshtastic.AdminMessage.ModuleConfigTypeH\x00\x12>\n\x1aget_module_config_response\x18\x08 \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12\x34\n*get_canned_message_module_messages_request\x18\n \x01(\x08H\x00\x12\x35\n+get_canned_message_module_messages_response\x18\x0b \x01(\tH\x00\x12%\n\x1bget_device_metadata_request\x18\x0c \x01(\x08H\x00\x12\x42\n\x1cget_device_metadata_response\x18\r \x01(\x0b\x32\x1a.meshtastic.DeviceMetadataH\x00\x12\x1e\n\x14get_ringtone_request\x18\x0e \x01(\x08H\x00\x12\x1f\n\x15get_ringtone_response\x18\x0f \x01(\tH\x00\x12.\n$get_device_connection_status_request\x18\x10 \x01(\x08H\x00\x12S\n%get_device_connection_status_response\x18\x11 \x01(\x0b\x32\".meshtastic.DeviceConnectionStatusH\x00\x12\x31\n\x0cset_ham_mode\x18\x12 \x01(\x0b\x32\x19.meshtastic.HamParametersH\x00\x12/\n%get_node_remote_hardware_pins_request\x18\x13 \x01(\x08H\x00\x12\\\n&get_node_remote_hardware_pins_response\x18\x14 \x01(\x0b\x32*.meshtastic.NodeRemoteHardwarePinsResponseH\x00\x12 \n\x16\x65nter_dfu_mode_request\x18\x15 \x01(\x08H\x00\x12\x1d\n\x13\x64\x65lete_file_request\x18\x16 \x01(\tH\x00\x12%\n\tset_owner\x18 \x01(\x0b\x32\x10.meshtastic.UserH\x00\x12*\n\x0bset_channel\x18! \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12(\n\nset_config\x18\" \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12\x35\n\x11set_module_config\x18# \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12,\n\"set_canned_message_module_messages\x18$ \x01(\tH\x00\x12\x1e\n\x14set_ringtone_message\x18% \x01(\tH\x00\x12\x1b\n\x11remove_by_nodenum\x18& \x01(\rH\x00\x12\x1b\n\x11set_favorite_node\x18\' \x01(\rH\x00\x12\x1e\n\x14remove_favorite_node\x18( \x01(\rH\x00\x12\x32\n\x12set_fixed_position\x18) \x01(\x0b\x32\x14.meshtastic.PositionH\x00\x12\x1f\n\x15remove_fixed_position\x18* \x01(\x08H\x00\x12\x1d\n\x13\x62\x65gin_edit_settings\x18@ \x01(\x08H\x00\x12\x1e\n\x14\x63ommit_edit_settings\x18\x41 \x01(\x08H\x00\x12\x1c\n\x12reboot_ota_seconds\x18_ \x01(\x05H\x00\x12\x18\n\x0e\x65xit_simulator\x18` \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18\x61 \x01(\x05H\x00\x12\x1a\n\x10shutdown_seconds\x18\x62 \x01(\x05H\x00\x12\x17\n\rfactory_reset\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x05H\x00\"\x95\x01\n\nConfigType\x12\x11\n\rDEVICE_CONFIG\x10\x00\x12\x13\n\x0fPOSITION_CONFIG\x10\x01\x12\x10\n\x0cPOWER_CONFIG\x10\x02\x12\x12\n\x0eNETWORK_CONFIG\x10\x03\x12\x12\n\x0e\x44ISPLAY_CONFIG\x10\x04\x12\x0f\n\x0bLORA_CONFIG\x10\x05\x12\x14\n\x10\x42LUETOOTH_CONFIG\x10\x06\"\xbb\x02\n\x10ModuleConfigType\x12\x0f\n\x0bMQTT_CONFIG\x10\x00\x12\x11\n\rSERIAL_CONFIG\x10\x01\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x02\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x03\x12\x14\n\x10RANGETEST_CONFIG\x10\x04\x12\x14\n\x10TELEMETRY_CONFIG\x10\x05\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10\x06\x12\x10\n\x0c\x41UDIO_CONFIG\x10\x07\x12\x19\n\x15REMOTEHARDWARE_CONFIG\x10\x08\x12\x17\n\x13NEIGHBORINFO_CONFIG\x10\t\x12\x1a\n\x16\x41MBIENTLIGHTING_CONFIG\x10\n\x12\x1a\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x0b\x12\x15\n\x11PAXCOUNTER_CONFIG\x10\x0c\x42\x11\n\x0fpayload_variant\"[\n\rHamParameters\x12\x11\n\tcall_sign\x18\x01 \x01(\t\x12\x10\n\x08tx_power\x18\x02 \x01(\x05\x12\x11\n\tfrequency\x18\x03 \x01(\x02\x12\x12\n\nshort_name\x18\x04 \x01(\t\"f\n\x1eNodeRemoteHardwarePinsResponse\x12\x44\n\x19node_remote_hardware_pins\x18\x01 \x03(\x0b\x32!.meshtastic.NodeRemoteHardwarePinB`\n\x13\x63om.geeksville.meshB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16meshtastic/admin.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\x1a\"meshtastic/connection_status.proto\x1a\x15meshtastic/mesh.proto\x1a\x1emeshtastic/module_config.proto\"\xe3\x11\n\x0c\x41\x64minMessage\x12\x1d\n\x13get_channel_request\x18\x01 \x01(\rH\x00\x12\x33\n\x14get_channel_response\x18\x02 \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12\x1b\n\x11get_owner_request\x18\x03 \x01(\x08H\x00\x12.\n\x12get_owner_response\x18\x04 \x01(\x0b\x32\x10.meshtastic.UserH\x00\x12\x41\n\x12get_config_request\x18\x05 \x01(\x0e\x32#.meshtastic.AdminMessage.ConfigTypeH\x00\x12\x31\n\x13get_config_response\x18\x06 \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12N\n\x19get_module_config_request\x18\x07 \x01(\x0e\x32).meshtastic.AdminMessage.ModuleConfigTypeH\x00\x12>\n\x1aget_module_config_response\x18\x08 \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12\x34\n*get_canned_message_module_messages_request\x18\n \x01(\x08H\x00\x12\x35\n+get_canned_message_module_messages_response\x18\x0b \x01(\tH\x00\x12%\n\x1bget_device_metadata_request\x18\x0c \x01(\x08H\x00\x12\x42\n\x1cget_device_metadata_response\x18\r \x01(\x0b\x32\x1a.meshtastic.DeviceMetadataH\x00\x12\x1e\n\x14get_ringtone_request\x18\x0e \x01(\x08H\x00\x12\x1f\n\x15get_ringtone_response\x18\x0f \x01(\tH\x00\x12.\n$get_device_connection_status_request\x18\x10 \x01(\x08H\x00\x12S\n%get_device_connection_status_response\x18\x11 \x01(\x0b\x32\".meshtastic.DeviceConnectionStatusH\x00\x12\x31\n\x0cset_ham_mode\x18\x12 \x01(\x0b\x32\x19.meshtastic.HamParametersH\x00\x12/\n%get_node_remote_hardware_pins_request\x18\x13 \x01(\x08H\x00\x12\\\n&get_node_remote_hardware_pins_response\x18\x14 \x01(\x0b\x32*.meshtastic.NodeRemoteHardwarePinsResponseH\x00\x12 \n\x16\x65nter_dfu_mode_request\x18\x15 \x01(\x08H\x00\x12\x1d\n\x13\x64\x65lete_file_request\x18\x16 \x01(\tH\x00\x12\x13\n\tset_scale\x18\x17 \x01(\rH\x00\x12%\n\tset_owner\x18 \x01(\x0b\x32\x10.meshtastic.UserH\x00\x12*\n\x0bset_channel\x18! \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12(\n\nset_config\x18\" \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12\x35\n\x11set_module_config\x18# \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12,\n\"set_canned_message_module_messages\x18$ \x01(\tH\x00\x12\x1e\n\x14set_ringtone_message\x18% \x01(\tH\x00\x12\x1b\n\x11remove_by_nodenum\x18& \x01(\rH\x00\x12\x1b\n\x11set_favorite_node\x18\' \x01(\rH\x00\x12\x1e\n\x14remove_favorite_node\x18( \x01(\rH\x00\x12\x32\n\x12set_fixed_position\x18) \x01(\x0b\x32\x14.meshtastic.PositionH\x00\x12\x1f\n\x15remove_fixed_position\x18* \x01(\x08H\x00\x12\x1d\n\x13\x62\x65gin_edit_settings\x18@ \x01(\x08H\x00\x12\x1e\n\x14\x63ommit_edit_settings\x18\x41 \x01(\x08H\x00\x12\x1c\n\x12reboot_ota_seconds\x18_ \x01(\x05H\x00\x12\x18\n\x0e\x65xit_simulator\x18` \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18\x61 \x01(\x05H\x00\x12\x1a\n\x10shutdown_seconds\x18\x62 \x01(\x05H\x00\x12\x17\n\rfactory_reset\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x05H\x00\"\x95\x01\n\nConfigType\x12\x11\n\rDEVICE_CONFIG\x10\x00\x12\x13\n\x0fPOSITION_CONFIG\x10\x01\x12\x10\n\x0cPOWER_CONFIG\x10\x02\x12\x12\n\x0eNETWORK_CONFIG\x10\x03\x12\x12\n\x0e\x44ISPLAY_CONFIG\x10\x04\x12\x0f\n\x0bLORA_CONFIG\x10\x05\x12\x14\n\x10\x42LUETOOTH_CONFIG\x10\x06\"\xbb\x02\n\x10ModuleConfigType\x12\x0f\n\x0bMQTT_CONFIG\x10\x00\x12\x11\n\rSERIAL_CONFIG\x10\x01\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x02\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x03\x12\x14\n\x10RANGETEST_CONFIG\x10\x04\x12\x14\n\x10TELEMETRY_CONFIG\x10\x05\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10\x06\x12\x10\n\x0c\x41UDIO_CONFIG\x10\x07\x12\x19\n\x15REMOTEHARDWARE_CONFIG\x10\x08\x12\x17\n\x13NEIGHBORINFO_CONFIG\x10\t\x12\x1a\n\x16\x41MBIENTLIGHTING_CONFIG\x10\n\x12\x1a\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x0b\x12\x15\n\x11PAXCOUNTER_CONFIG\x10\x0c\x42\x11\n\x0fpayload_variant\"[\n\rHamParameters\x12\x11\n\tcall_sign\x18\x01 \x01(\t\x12\x10\n\x08tx_power\x18\x02 \x01(\x05\x12\x11\n\tfrequency\x18\x03 \x01(\x02\x12\x12\n\nshort_name\x18\x04 \x01(\t\"f\n\x1eNodeRemoteHardwarePinsResponse\x12\x44\n\x19node_remote_hardware_pins\x18\x01 \x03(\x0b\x32!.meshtastic.NodeRemoteHardwarePinB`\n\x13\x63om.geeksville.meshB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.admin_pb2', globals())
@@ -27,13 +27,13 @@ if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\013AdminProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
_ADMINMESSAGE._serialized_start=181
- _ADMINMESSAGE._serialized_end=2435
- _ADMINMESSAGE_CONFIGTYPE._serialized_start=1949
- _ADMINMESSAGE_CONFIGTYPE._serialized_end=2098
- _ADMINMESSAGE_MODULECONFIGTYPE._serialized_start=2101
- _ADMINMESSAGE_MODULECONFIGTYPE._serialized_end=2416
- _HAMPARAMETERS._serialized_start=2437
- _HAMPARAMETERS._serialized_end=2528
- _NODEREMOTEHARDWAREPINSRESPONSE._serialized_start=2530
- _NODEREMOTEHARDWAREPINSRESPONSE._serialized_end=2632
+ _ADMINMESSAGE._serialized_end=2456
+ _ADMINMESSAGE_CONFIGTYPE._serialized_start=1970
+ _ADMINMESSAGE_CONFIGTYPE._serialized_end=2119
+ _ADMINMESSAGE_MODULECONFIGTYPE._serialized_start=2122
+ _ADMINMESSAGE_MODULECONFIGTYPE._serialized_end=2437
+ _HAMPARAMETERS._serialized_start=2458
+ _HAMPARAMETERS._serialized_end=2549
+ _NODEREMOTEHARDWAREPINSRESPONSE._serialized_start=2551
+ _NODEREMOTEHARDWAREPINSRESPONSE._serialized_end=2653
# @@protoc_insertion_point(module_scope)
diff --git a/meshtastic/atak_pb2.py b/meshtastic/atak_pb2.py
index f1900f2..a813729 100644
--- a/meshtastic/atak_pb2.py
+++ b/meshtastic/atak_pb2.py
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/atak.proto\x12\nmeshtastic\"\xe6\x01\n\tTAKPacket\x12\x15\n\ris_compressed\x18\x01 \x01(\x08\x12$\n\x07\x63ontact\x18\x02 \x01(\x0b\x32\x13.meshtastic.Contact\x12 \n\x05group\x18\x03 \x01(\x0b\x32\x11.meshtastic.Group\x12\"\n\x06status\x18\x04 \x01(\x0b\x32\x12.meshtastic.Status\x12\x1e\n\x03pli\x18\x05 \x01(\x0b\x32\x0f.meshtastic.PLIH\x00\x12#\n\x04\x63hat\x18\x06 \x01(\x0b\x32\x13.meshtastic.GeoChatH\x00\x42\x11\n\x0fpayload_variant\"2\n\x07GeoChat\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x02to\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x05\n\x03_to\"M\n\x05Group\x12$\n\x04role\x18\x01 \x01(\x0e\x32\x16.meshtastic.MemberRole\x12\x1e\n\x04team\x18\x02 \x01(\x0e\x32\x10.meshtastic.Team\"\x19\n\x06Status\x12\x0f\n\x07\x62\x61ttery\x18\x01 \x01(\r\"4\n\x07\x43ontact\x12\x10\n\x08\x63\x61llsign\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\t\"_\n\x03PLI\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x12\x0e\n\x06\x63ourse\x18\x05 \x01(\r*\xc0\x01\n\x04Team\x12\x14\n\x10Unspecifed_Color\x10\x00\x12\t\n\x05White\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\n\n\x06Orange\x10\x03\x12\x0b\n\x07Magenta\x10\x04\x12\x07\n\x03Red\x10\x05\x12\n\n\x06Maroon\x10\x06\x12\n\n\x06Purple\x10\x07\x12\r\n\tDark_Blue\x10\x08\x12\x08\n\x04\x42lue\x10\t\x12\x08\n\x04\x43yan\x10\n\x12\x08\n\x04Teal\x10\x0b\x12\t\n\x05Green\x10\x0c\x12\x0e\n\nDark_Green\x10\r\x12\t\n\x05\x42rown\x10\x0e*\x7f\n\nMemberRole\x12\x0e\n\nUnspecifed\x10\x00\x12\x0e\n\nTeamMember\x10\x01\x12\x0c\n\x08TeamLead\x10\x02\x12\x06\n\x02HQ\x10\x03\x12\n\n\x06Sniper\x10\x04\x12\t\n\x05Medic\x10\x05\x12\x13\n\x0f\x46orwardObserver\x10\x06\x12\x07\n\x03RTO\x10\x07\x12\x06\n\x02K9\x10\x08\x42_\n\x13\x63om.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/atak.proto\x12\nmeshtastic\"\xe6\x01\n\tTAKPacket\x12\x15\n\ris_compressed\x18\x01 \x01(\x08\x12$\n\x07\x63ontact\x18\x02 \x01(\x0b\x32\x13.meshtastic.Contact\x12 \n\x05group\x18\x03 \x01(\x0b\x32\x11.meshtastic.Group\x12\"\n\x06status\x18\x04 \x01(\x0b\x32\x12.meshtastic.Status\x12\x1e\n\x03pli\x18\x05 \x01(\x0b\x32\x0f.meshtastic.PLIH\x00\x12#\n\x04\x63hat\x18\x06 \x01(\x0b\x32\x13.meshtastic.GeoChatH\x00\x42\x11\n\x0fpayload_variant\"\\\n\x07GeoChat\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x02to\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bto_callsign\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_toB\x0e\n\x0c_to_callsign\"M\n\x05Group\x12$\n\x04role\x18\x01 \x01(\x0e\x32\x16.meshtastic.MemberRole\x12\x1e\n\x04team\x18\x02 \x01(\x0e\x32\x10.meshtastic.Team\"\x19\n\x06Status\x12\x0f\n\x07\x62\x61ttery\x18\x01 \x01(\r\"4\n\x07\x43ontact\x12\x10\n\x08\x63\x61llsign\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\t\"_\n\x03PLI\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x12\x0e\n\x06\x63ourse\x18\x05 \x01(\r*\xc0\x01\n\x04Team\x12\x14\n\x10Unspecifed_Color\x10\x00\x12\t\n\x05White\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\n\n\x06Orange\x10\x03\x12\x0b\n\x07Magenta\x10\x04\x12\x07\n\x03Red\x10\x05\x12\n\n\x06Maroon\x10\x06\x12\n\n\x06Purple\x10\x07\x12\r\n\tDark_Blue\x10\x08\x12\x08\n\x04\x42lue\x10\t\x12\x08\n\x04\x43yan\x10\n\x12\x08\n\x04Teal\x10\x0b\x12\t\n\x05Green\x10\x0c\x12\x0e\n\nDark_Green\x10\r\x12\t\n\x05\x42rown\x10\x0e*\x7f\n\nMemberRole\x12\x0e\n\nUnspecifed\x10\x00\x12\x0e\n\nTeamMember\x10\x01\x12\x0c\n\x08TeamLead\x10\x02\x12\x06\n\x02HQ\x10\x03\x12\n\n\x06Sniper\x10\x04\x12\t\n\x05Medic\x10\x05\x12\x13\n\x0f\x46orwardObserver\x10\x06\x12\x07\n\x03RTO\x10\x07\x12\x06\n\x02K9\x10\x08\x42_\n\x13\x63om.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.atak_pb2', globals())
@@ -21,20 +21,20 @@ if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
- _TEAM._serialized_start=580
- _TEAM._serialized_end=772
- _MEMBERROLE._serialized_start=774
- _MEMBERROLE._serialized_end=901
+ _TEAM._serialized_start=622
+ _TEAM._serialized_end=814
+ _MEMBERROLE._serialized_start=816
+ _MEMBERROLE._serialized_end=943
_TAKPACKET._serialized_start=38
_TAKPACKET._serialized_end=268
_GEOCHAT._serialized_start=270
- _GEOCHAT._serialized_end=320
- _GROUP._serialized_start=322
- _GROUP._serialized_end=399
- _STATUS._serialized_start=401
- _STATUS._serialized_end=426
- _CONTACT._serialized_start=428
- _CONTACT._serialized_end=480
- _PLI._serialized_start=482
- _PLI._serialized_end=577
+ _GEOCHAT._serialized_end=362
+ _GROUP._serialized_start=364
+ _GROUP._serialized_end=441
+ _STATUS._serialized_start=443
+ _STATUS._serialized_end=468
+ _CONTACT._serialized_start=470
+ _CONTACT._serialized_end=522
+ _PLI._serialized_start=524
+ _PLI._serialized_end=619
# @@protoc_insertion_point(module_scope)
diff --git a/meshtastic/config_pb2.py b/meshtastic/config_pb2.py
index 9b216f9..73e85e1 100644
--- a/meshtastic/config_pb2.py
+++ b/meshtastic/config_pb2.py
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17meshtastic/config.proto\x12\nmeshtastic\"\xc2\x1f\n\x06\x43onfig\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x1f.meshtastic.Config.DeviceConfigH\x00\x12\x35\n\x08position\x18\x02 \x01(\x0b\x32!.meshtastic.Config.PositionConfigH\x00\x12/\n\x05power\x18\x03 \x01(\x0b\x32\x1e.meshtastic.Config.PowerConfigH\x00\x12\x33\n\x07network\x18\x04 \x01(\x0b\x32 .meshtastic.Config.NetworkConfigH\x00\x12\x33\n\x07\x64isplay\x18\x05 \x01(\x0b\x32 .meshtastic.Config.DisplayConfigH\x00\x12-\n\x04lora\x18\x06 \x01(\x0b\x32\x1d.meshtastic.Config.LoRaConfigH\x00\x12\x37\n\tbluetooth\x18\x07 \x01(\x0b\x32\".meshtastic.Config.BluetoothConfigH\x00\x1a\x91\x05\n\x0c\x44\x65viceConfig\x12\x32\n\x04role\x18\x01 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12\x16\n\x0eserial_enabled\x18\x02 \x01(\x08\x12\x19\n\x11\x64\x65\x62ug_log_enabled\x18\x03 \x01(\x08\x12\x13\n\x0b\x62utton_gpio\x18\x04 \x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 \x01(\r\x12I\n\x10rebroadcast_mode\x18\x06 \x01(\x0e\x32/.meshtastic.Config.DeviceConfig.RebroadcastMode\x12 \n\x18node_info_broadcast_secs\x18\x07 \x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 \x01(\x08\x12\x12\n\nis_managed\x18\t \x01(\x08\x12\x1c\n\x14\x64isable_triple_click\x18\n \x01(\x08\x12\r\n\x05tzdef\x18\x0b \x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c \x01(\x08\"\xaa\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x11\n\rROUTER_CLIENT\x10\x03\x12\x0c\n\x08REPEATER\x10\x04\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x12\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\"Q\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x1a\x91\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 \x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 \x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 \x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 \x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t \x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n \x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b \x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x0c \x01(\r\x12;\n\x08gps_mode\x18\r \x01(\x0e\x32).meshtastic.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10 \x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\xea\x01\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 \x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 \x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 \x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 \x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 \x01(\r\x12\"\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\r\x1a\xfe\x02\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 \x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 \x01(\t\x12\x12\n\nntp_server\x18\x05 \x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 \x01(\x08\x12\x42\n\x0c\x61\x64\x64ress_mode\x18\x07 \x01(\x0e\x32,.meshtastic.Config.NetworkConfig.AddressMode\x12@\n\x0bipv4_config\x18\x08 \x01(\x0b\x32+.meshtastic.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t \x01(\t\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 \x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 \x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 \x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\x1a\xbe\x05\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12H\n\ngps_format\x18\x02 \x01(\x0e\x32\x34.meshtastic.Config.DisplayConfig.GpsCoordinateFormat\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x19\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x12\x13\n\x0b\x66lip_screen\x18\x05 \x01(\x08\x12<\n\x05units\x18\x06 \x01(\x0e\x32-.meshtastic.Config.DisplayConfig.DisplayUnits\x12\x37\n\x04oled\x18\x07 \x01(\x0e\x32).meshtastic.Config.DisplayConfig.OledType\x12\x41\n\x0b\x64isplaymode\x18\x08 \x01(\x0e\x32,.meshtastic.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n \x01(\x08\"M\n\x13GpsCoordinateFormat\x12\x07\n\x03\x44\x45\x43\x10\x00\x12\x07\n\x03\x44MS\x10\x01\x12\x07\n\x03UTM\x10\x02\x12\x08\n\x04MGRS\x10\x03\x12\x07\n\x03OLC\x10\x04\x12\x08\n\x04OSGR\x10\x05\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"M\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\x1a\xb0\x06\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01 \x01(\x08\x12?\n\x0cmodem_preset\x18\x02 \x01(\x0e\x32).meshtastic.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03 \x01(\r\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x05 \x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 \x01(\x02\x12\x38\n\x06region\x18\x07 \x01(\x0e\x32(.meshtastic.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n \x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b \x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c \x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r \x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e \x01(\x02\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\"\xcd\x01\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\"\x94\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x12\n\x0eVERY_LONG_SLOW\x10\x02\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x1a\xad\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12<\n\x04mode\x18\x02 \x01(\x0e\x32..meshtastic.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03 \x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x42\x11\n\x0fpayload_variantBa\n\x13\x63om.geeksville.meshB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17meshtastic/config.proto\x12\nmeshtastic\"\x8f\"\n\x06\x43onfig\x12\x31\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32\x1f.meshtastic.Config.DeviceConfigH\x00\x12\x35\n\x08position\x18\x02 \x01(\x0b\x32!.meshtastic.Config.PositionConfigH\x00\x12/\n\x05power\x18\x03 \x01(\x0b\x32\x1e.meshtastic.Config.PowerConfigH\x00\x12\x33\n\x07network\x18\x04 \x01(\x0b\x32 .meshtastic.Config.NetworkConfigH\x00\x12\x33\n\x07\x64isplay\x18\x05 \x01(\x0b\x32 .meshtastic.Config.DisplayConfigH\x00\x12-\n\x04lora\x18\x06 \x01(\x0b\x32\x1d.meshtastic.Config.LoRaConfigH\x00\x12\x37\n\tbluetooth\x18\x07 \x01(\x0b\x32\".meshtastic.Config.BluetoothConfigH\x00\x1a\x95\x05\n\x0c\x44\x65viceConfig\x12\x32\n\x04role\x18\x01 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12\x16\n\x0eserial_enabled\x18\x02 \x01(\x08\x12\x19\n\x11\x64\x65\x62ug_log_enabled\x18\x03 \x01(\x08\x12\x13\n\x0b\x62utton_gpio\x18\x04 \x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 \x01(\r\x12I\n\x10rebroadcast_mode\x18\x06 \x01(\x0e\x32/.meshtastic.Config.DeviceConfig.RebroadcastMode\x12 \n\x18node_info_broadcast_secs\x18\x07 \x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 \x01(\x08\x12\x12\n\nis_managed\x18\t \x01(\x08\x12\x1c\n\x14\x64isable_triple_click\x18\n \x01(\x08\x12\r\n\x05tzdef\x18\x0b \x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c \x01(\x08\"\xae\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\x0c\n\x08REPEATER\x10\x04\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x12\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\"Q\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x1a\x91\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 \x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 \x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 \x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 \x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t \x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n \x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b \x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x0c \x01(\r\x12;\n\x08gps_mode\x18\r \x01(\x0e\x32).meshtastic.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10 \x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\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\xfe\x02\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 \x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 \x01(\t\x12\x12\n\nntp_server\x18\x05 \x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 \x01(\x08\x12\x42\n\x0c\x61\x64\x64ress_mode\x18\x07 \x01(\x0e\x32,.meshtastic.Config.NetworkConfig.AddressMode\x12@\n\x0bipv4_config\x18\x08 \x01(\x0b\x32+.meshtastic.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t \x01(\t\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 \x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 \x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 \x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\x1a\xcd\x07\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12H\n\ngps_format\x18\x02 \x01(\x0e\x32\x34.meshtastic.Config.DisplayConfig.GpsCoordinateFormat\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x19\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x12\x13\n\x0b\x66lip_screen\x18\x05 \x01(\x08\x12<\n\x05units\x18\x06 \x01(\x0e\x32-.meshtastic.Config.DisplayConfig.DisplayUnits\x12\x37\n\x04oled\x18\x07 \x01(\x0e\x32).meshtastic.Config.DisplayConfig.OledType\x12\x41\n\x0b\x64isplaymode\x18\x08 \x01(\x0e\x32,.meshtastic.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n \x01(\x08\x12P\n\x13\x63ompass_orientation\x18\x0b \x01(\x0e\x32\x33.meshtastic.Config.DisplayConfig.CompassOrientation\"M\n\x13GpsCoordinateFormat\x12\x07\n\x03\x44\x45\x43\x10\x00\x12\x07\n\x03\x44MS\x10\x01\x12\x07\n\x03UTM\x10\x02\x12\x08\n\x04MGRS\x10\x03\x12\x07\n\x03OLC\x10\x04\x12\x08\n\x04OSGR\x10\x05\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"M\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\"\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\xb0\x06\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01 \x01(\x08\x12?\n\x0cmodem_preset\x18\x02 \x01(\x0e\x32).meshtastic.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03 \x01(\r\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x05 \x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 \x01(\x02\x12\x38\n\x06region\x18\x07 \x01(\x0e\x32(.meshtastic.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n \x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b \x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c \x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r \x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e \x01(\x02\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\"\xcd\x01\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\"\x94\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x12\n\x0eVERY_LONG_SLOW\x10\x02\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x1a\xcd\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12<\n\x04mode\x18\x02 \x01(\x0e\x32..meshtastic.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03 \x01(\r\x12\x1e\n\x16\x64\x65vice_logging_enabled\x18\x04 \x01(\x08\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x42\x11\n\x0fpayload_variantBa\n\x13\x63om.geeksville.meshB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.config_pb2', globals())
@@ -21,50 +21,54 @@ if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\014ConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
+ _CONFIG_DEVICECONFIG_ROLE.values_by_name["ROUTER_CLIENT"]._options = None
+ _CONFIG_DEVICECONFIG_ROLE.values_by_name["ROUTER_CLIENT"]._serialized_options = b'\010\001'
_CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._options = None
_CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._serialized_options = b'\030\001'
_CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._options = None
_CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._serialized_options = b'\030\001'
_CONFIG._serialized_start=40
- _CONFIG._serialized_end=4074
+ _CONFIG._serialized_end=4407
_CONFIG_DEVICECONFIG._serialized_start=416
- _CONFIG_DEVICECONFIG._serialized_end=1073
+ _CONFIG_DEVICECONFIG._serialized_end=1077
_CONFIG_DEVICECONFIG_ROLE._serialized_start=820
- _CONFIG_DEVICECONFIG_ROLE._serialized_end=990
- _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_start=992
- _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_end=1073
- _CONFIG_POSITIONCONFIG._serialized_start=1076
- _CONFIG_POSITIONCONFIG._serialized_end=1733
- _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_start=1507
- _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_end=1678
- _CONFIG_POSITIONCONFIG_GPSMODE._serialized_start=1680
- _CONFIG_POSITIONCONFIG_GPSMODE._serialized_end=1733
- _CONFIG_POWERCONFIG._serialized_start=1736
- _CONFIG_POWERCONFIG._serialized_end=1970
- _CONFIG_NETWORKCONFIG._serialized_start=1973
- _CONFIG_NETWORKCONFIG._serialized_end=2355
- _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_start=2248
- _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_end=2318
- _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_start=2320
- _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_end=2355
- _CONFIG_DISPLAYCONFIG._serialized_start=2358
- _CONFIG_DISPLAYCONFIG._serialized_end=3060
- _CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT._serialized_start=2795
- _CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT._serialized_end=2872
- _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_start=2874
- _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_end=2914
- _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_start=2916
- _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_end=2993
- _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_start=2995
- _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_end=3060
- _CONFIG_LORACONFIG._serialized_start=3063
- _CONFIG_LORACONFIG._serialized_end=3879
- _CONFIG_LORACONFIG_REGIONCODE._serialized_start=3523
- _CONFIG_LORACONFIG_REGIONCODE._serialized_end=3728
- _CONFIG_LORACONFIG_MODEMPRESET._serialized_start=3731
- _CONFIG_LORACONFIG_MODEMPRESET._serialized_end=3879
- _CONFIG_BLUETOOTHCONFIG._serialized_start=3882
- _CONFIG_BLUETOOTHCONFIG._serialized_end=4055
- _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_start=3999
- _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_end=4055
+ _CONFIG_DEVICECONFIG_ROLE._serialized_end=994
+ _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_start=996
+ _CONFIG_DEVICECONFIG_REBROADCASTMODE._serialized_end=1077
+ _CONFIG_POSITIONCONFIG._serialized_start=1080
+ _CONFIG_POSITIONCONFIG._serialized_end=1737
+ _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_start=1511
+ _CONFIG_POSITIONCONFIG_POSITIONFLAGS._serialized_end=1682
+ _CONFIG_POSITIONCONFIG_GPSMODE._serialized_start=1684
+ _CONFIG_POSITIONCONFIG_GPSMODE._serialized_end=1737
+ _CONFIG_POWERCONFIG._serialized_start=1740
+ _CONFIG_POWERCONFIG._serialized_end=2000
+ _CONFIG_NETWORKCONFIG._serialized_start=2003
+ _CONFIG_NETWORKCONFIG._serialized_end=2385
+ _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_start=2278
+ _CONFIG_NETWORKCONFIG_IPV4CONFIG._serialized_end=2348
+ _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_start=2350
+ _CONFIG_NETWORKCONFIG_ADDRESSMODE._serialized_end=2385
+ _CONFIG_DISPLAYCONFIG._serialized_start=2388
+ _CONFIG_DISPLAYCONFIG._serialized_end=3361
+ _CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT._serialized_start=2907
+ _CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT._serialized_end=2984
+ _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_start=2986
+ _CONFIG_DISPLAYCONFIG_DISPLAYUNITS._serialized_end=3026
+ _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_start=3028
+ _CONFIG_DISPLAYCONFIG_OLEDTYPE._serialized_end=3105
+ _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_start=3107
+ _CONFIG_DISPLAYCONFIG_DISPLAYMODE._serialized_end=3172
+ _CONFIG_DISPLAYCONFIG_COMPASSORIENTATION._serialized_start=3175
+ _CONFIG_DISPLAYCONFIG_COMPASSORIENTATION._serialized_end=3361
+ _CONFIG_LORACONFIG._serialized_start=3364
+ _CONFIG_LORACONFIG._serialized_end=4180
+ _CONFIG_LORACONFIG_REGIONCODE._serialized_start=3824
+ _CONFIG_LORACONFIG_REGIONCODE._serialized_end=4029
+ _CONFIG_LORACONFIG_MODEMPRESET._serialized_start=4032
+ _CONFIG_LORACONFIG_MODEMPRESET._serialized_end=4180
+ _CONFIG_BLUETOOTHCONFIG._serialized_start=4183
+ _CONFIG_BLUETOOTHCONFIG._serialized_end=4388
+ _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_start=4332
+ _CONFIG_BLUETOOTHCONFIG_PAIRINGMODE._serialized_end=4388
# @@protoc_insertion_point(module_scope)
diff --git a/meshtastic/mesh_pb2.py b/meshtastic/mesh_pb2.py
index 4b2e0bc..9a3fd37 100644
--- a/meshtastic/mesh_pb2.py
+++ b/meshtastic/mesh_pb2.py
@@ -19,7 +19,7 @@ from meshtastic import telemetry_pb2 as meshtastic_dot_telemetry__pb2
from meshtastic import xmodem_pb2 as meshtastic_dot_xmodem__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/mesh.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\x1a\x1emeshtastic/module_config.proto\x1a\x19meshtastic/portnums.proto\x1a\x1ameshtastic/telemetry.proto\x1a\x17meshtastic/xmodem.proto\"\xe5\x05\n\x08Position\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12\x37\n\x0flocation_source\x18\x05 \x01(\x0e\x32\x1e.meshtastic.Position.LocSource\x12\x37\n\x0f\x61ltitude_source\x18\x06 \x01(\x0e\x32\x1e.meshtastic.Position.AltSource\x12\x11\n\ttimestamp\x18\x07 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 \x01(\x05\x12\x14\n\x0c\x61ltitude_hae\x18\t \x01(\x11\x12#\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11\x12\x0c\n\x04PDOP\x18\x0b \x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e \x01(\r\x12\x14\n\x0cground_speed\x18\x0f \x01(\r\x12\x14\n\x0cground_track\x18\x10 \x01(\r\x12\x13\n\x0b\x66ix_quality\x18\x11 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 \x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 \x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 \x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 \x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\"\xc4\x01\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x13\n\x07macaddr\x18\x04 \x01(\x0c\x42\x02\x18\x01\x12+\n\x08hw_model\x18\x05 \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06 \x01(\x08\x12\x32\n\x04role\x18\x07 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\"\x1f\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\"\xfc\x02\n\x07Routing\x12\x33\n\rroute_request\x18\x01 \x01(\x0b\x32\x1a.meshtastic.RouteDiscoveryH\x00\x12\x31\n\x0broute_reply\x18\x02 \x01(\x0b\x32\x1a.meshtastic.RouteDiscoveryH\x00\x12\x31\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\x19.meshtastic.Routing.ErrorH\x00\"\xca\x01\n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!B\t\n\x07variant\"\xa7\x01\n\x04\x44\x61ta\x12$\n\x07portnum\x18\x01 \x01(\x0e\x32\x13.meshtastic.PortNum\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x15\n\rwant_response\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 \x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 \x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\"\x93\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x12\n\nlatitude_i\x18\x02 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x03 \x01(\x0f\x12\x0e\n\x06\x65xpire\x18\x04 \x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\x07\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 \x01(\tH\x00\x12\x10\n\x08retained\x18\x04 \x01(\x08\x42\x11\n\x0fpayload_variant\"\x95\x04\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\r\x12#\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x10.meshtastic.DataH\x00\x12\x13\n\tencrypted\x18\x05 \x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 \x01(\x07\x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t \x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12\x31\n\x08priority\x18\x0b \x01(\x0e\x32\x1f.meshtastic.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c \x01(\x05\x12\x33\n\x07\x64\x65layed\x18\r \x01(\x0e\x32\x1e.meshtastic.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\"[\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x12\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\x42\x11\n\x0fpayload_variant\"\xfe\x01\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x1e\n\x04user\x18\x02 \x01(\x0b\x32\x10.meshtastic.User\x12&\n\x08position\x18\x03 \x01(\x0b\x32\x14.meshtastic.Position\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12\x31\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\x19.meshtastic.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x11\n\thops_away\x18\t \x01(\r\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\"P\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b \x01(\r\"\xc0\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06source\x18\x03 \x01(\t\x12*\n\x05level\x18\x04 \x01(\x0e\x32\x1b.meshtastic.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 \x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 \x01(\r\"\xdb\x04\n\tFromRadio\x12\n\n\x02id\x18\x01 \x01(\r\x12(\n\x06packet\x18\x02 \x01(\x0b\x32\x16.meshtastic.MeshPacketH\x00\x12)\n\x07my_info\x18\x03 \x01(\x0b\x32\x16.meshtastic.MyNodeInfoH\x00\x12)\n\tnode_info\x18\x04 \x01(\x0b\x32\x14.meshtastic.NodeInfoH\x00\x12$\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12+\n\nlog_record\x18\x06 \x01(\x0b\x32\x15.meshtastic.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x30\n\x0cmoduleConfig\x18\t \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12&\n\x07\x63hannel\x18\n \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12.\n\x0bqueueStatus\x18\x0b \x01(\x0b\x32\x17.meshtastic.QueueStatusH\x00\x12*\n\x0cxmodemPacket\x18\x0c \x01(\x0b\x32\x12.meshtastic.XModemH\x00\x12.\n\x08metadata\x18\r \x01(\x0b\x32\x1a.meshtastic.DeviceMetadataH\x00\x12\x44\n\x16mqttClientProxyMessage\x18\x0e \x01(\x0b\x32\".meshtastic.MqttClientProxyMessageH\x00\x42\x11\n\x0fpayload_variant\"\x94\x02\n\x07ToRadio\x12(\n\x06packet\x18\x01 \x01(\x0b\x32\x16.meshtastic.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 \x01(\x08H\x00\x12*\n\x0cxmodemPacket\x18\x05 \x01(\x0b\x32\x12.meshtastic.XModemH\x00\x12\x44\n\x16mqttClientProxyMessage\x18\x06 \x01(\x0b\x32\".meshtastic.MqttClientProxyMessageH\x00\x12*\n\theartbeat\x18\x07 \x01(\x0b\x32\x15.meshtastic.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"@\n\nCompressed\x12$\n\x07portnum\x18\x01 \x01(\x0e\x32\x13.meshtastic.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x87\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_interval_secs\x18\x03 \x01(\r\x12\'\n\tneighbors\x18\x04 \x03(\x0b\x32\x14.meshtastic.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 \x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 \x01(\r\"\xad\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 \x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 \x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 \x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 \x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12\x32\n\x04role\x18\x07 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08 \x01(\r\x12+\n\x08hw_model\x18\t \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n \x01(\x08\"\x0b\n\tHeartbeat\"U\n\x15NodeRemoteHardwarePin\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12*\n\x03pin\x18\x02 \x01(\x0b\x32\x1d.meshtastic.RemoteHardwarePin*\xba\x08\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK4631\x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10 \x12\x0e\n\nNRF52840DK\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12 \n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xed\x01*\xee\x01\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x42_\n\x13\x63om.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15meshtastic/mesh.proto\x12\nmeshtastic\x1a\x18meshtastic/channel.proto\x1a\x17meshtastic/config.proto\x1a\x1emeshtastic/module_config.proto\x1a\x19meshtastic/portnums.proto\x1a\x1ameshtastic/telemetry.proto\x1a\x17meshtastic/xmodem.proto\"\xe5\x05\n\x08Position\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12\x37\n\x0flocation_source\x18\x05 \x01(\x0e\x32\x1e.meshtastic.Position.LocSource\x12\x37\n\x0f\x61ltitude_source\x18\x06 \x01(\x0e\x32\x1e.meshtastic.Position.AltSource\x12\x11\n\ttimestamp\x18\x07 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 \x01(\x05\x12\x14\n\x0c\x61ltitude_hae\x18\t \x01(\x11\x12#\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11\x12\x0c\n\x04PDOP\x18\x0b \x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e \x01(\r\x12\x14\n\x0cground_speed\x18\x0f \x01(\r\x12\x14\n\x0cground_track\x18\x10 \x01(\r\x12\x13\n\x0b\x66ix_quality\x18\x11 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 \x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 \x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 \x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 \x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\"\xc4\x01\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x13\n\x07macaddr\x18\x04 \x01(\x0c\x42\x02\x18\x01\x12+\n\x08hw_model\x18\x05 \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06 \x01(\x08\x12\x32\n\x04role\x18\x07 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\"\x1f\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\"\xfc\x02\n\x07Routing\x12\x33\n\rroute_request\x18\x01 \x01(\x0b\x32\x1a.meshtastic.RouteDiscoveryH\x00\x12\x31\n\x0broute_reply\x18\x02 \x01(\x0b\x32\x1a.meshtastic.RouteDiscoveryH\x00\x12\x31\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\x19.meshtastic.Routing.ErrorH\x00\"\xca\x01\n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!B\t\n\x07variant\"\xa7\x01\n\x04\x44\x61ta\x12$\n\x07portnum\x18\x01 \x01(\x0e\x32\x13.meshtastic.PortNum\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x15\n\rwant_response\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 \x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 \x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\"\x93\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x12\n\nlatitude_i\x18\x02 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x03 \x01(\x0f\x12\x0e\n\x06\x65xpire\x18\x04 \x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\x07\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 \x01(\tH\x00\x12\x10\n\x08retained\x18\x04 \x01(\x08\x42\x11\n\x0fpayload_variant\"\x95\x04\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\r\x12#\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x10.meshtastic.DataH\x00\x12\x13\n\tencrypted\x18\x05 \x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 \x01(\x07\x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t \x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12\x31\n\x08priority\x18\x0b \x01(\x0e\x32\x1f.meshtastic.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c \x01(\x05\x12\x33\n\x07\x64\x65layed\x18\r \x01(\x0e\x32\x1e.meshtastic.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\"[\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x12\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\x42\x11\n\x0fpayload_variant\"\xfe\x01\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x1e\n\x04user\x18\x02 \x01(\x0b\x32\x10.meshtastic.User\x12&\n\x08position\x18\x03 \x01(\x0b\x32\x14.meshtastic.Position\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12\x31\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\x19.meshtastic.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x11\n\thops_away\x18\t \x01(\r\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\"P\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b \x01(\r\"\xc0\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06source\x18\x03 \x01(\t\x12*\n\x05level\x18\x04 \x01(\x0e\x32\x1b.meshtastic.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 \x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 \x01(\r\"\x85\x05\n\tFromRadio\x12\n\n\x02id\x18\x01 \x01(\r\x12(\n\x06packet\x18\x02 \x01(\x0b\x32\x16.meshtastic.MeshPacketH\x00\x12)\n\x07my_info\x18\x03 \x01(\x0b\x32\x16.meshtastic.MyNodeInfoH\x00\x12)\n\tnode_info\x18\x04 \x01(\x0b\x32\x14.meshtastic.NodeInfoH\x00\x12$\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x12.meshtastic.ConfigH\x00\x12+\n\nlog_record\x18\x06 \x01(\x0b\x32\x15.meshtastic.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x30\n\x0cmoduleConfig\x18\t \x01(\x0b\x32\x18.meshtastic.ModuleConfigH\x00\x12&\n\x07\x63hannel\x18\n \x01(\x0b\x32\x13.meshtastic.ChannelH\x00\x12.\n\x0bqueueStatus\x18\x0b \x01(\x0b\x32\x17.meshtastic.QueueStatusH\x00\x12*\n\x0cxmodemPacket\x18\x0c \x01(\x0b\x32\x12.meshtastic.XModemH\x00\x12.\n\x08metadata\x18\r \x01(\x0b\x32\x1a.meshtastic.DeviceMetadataH\x00\x12\x44\n\x16mqttClientProxyMessage\x18\x0e \x01(\x0b\x32\".meshtastic.MqttClientProxyMessageH\x00\x12(\n\x08\x66ileInfo\x18\x0f \x01(\x0b\x32\x14.meshtastic.FileInfoH\x00\x42\x11\n\x0fpayload_variant\"1\n\x08\x46ileInfo\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\r\"\x94\x02\n\x07ToRadio\x12(\n\x06packet\x18\x01 \x01(\x0b\x32\x16.meshtastic.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 \x01(\x08H\x00\x12*\n\x0cxmodemPacket\x18\x05 \x01(\x0b\x32\x12.meshtastic.XModemH\x00\x12\x44\n\x16mqttClientProxyMessage\x18\x06 \x01(\x0b\x32\".meshtastic.MqttClientProxyMessageH\x00\x12*\n\theartbeat\x18\x07 \x01(\x0b\x32\x15.meshtastic.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"@\n\nCompressed\x12$\n\x07portnum\x18\x01 \x01(\x0e\x32\x13.meshtastic.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x87\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_interval_secs\x18\x03 \x01(\r\x12\'\n\tneighbors\x18\x04 \x03(\x0b\x32\x14.meshtastic.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 \x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 \x01(\r\"\xad\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 \x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 \x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 \x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 \x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12\x32\n\x04role\x18\x07 \x01(\x0e\x32$.meshtastic.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08 \x01(\r\x12+\n\x08hw_model\x18\t \x01(\x0e\x32\x19.meshtastic.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n \x01(\x08\"\x0b\n\tHeartbeat\"U\n\x15NodeRemoteHardwarePin\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12*\n\x03pin\x18\x02 \x01(\x0b\x32\x1d.meshtastic.RemoteHardwarePin\"e\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x13\n\x0b\x63hunk_count\x18\x02 \x01(\r\x12\x13\n\x0b\x63hunk_index\x18\x03 \x01(\r\x12\x15\n\rpayload_chunk\x18\x04 \x01(\x0c\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 \x03(\r\"\xaa\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x1a\n\x10request_transfer\x18\x02 \x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 \x01(\x08H\x00\x12\x32\n\rresend_chunks\x18\x04 \x01(\x0b\x32\x19.meshtastic.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xab\t\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\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10 \x12\x0e\n\nNRF52840DK\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12 \n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xed\x01*\xee\x01\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x42_\n\x13\x63om.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.mesh_pb2', globals())
@@ -31,12 +31,12 @@ 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'
- _HARDWAREMODEL._serialized_start=4737
- _HARDWAREMODEL._serialized_end=5819
- _CONSTANTS._serialized_start=5821
- _CONSTANTS._serialized_end=5865
- _CRITICALERRORCODE._serialized_start=5868
- _CRITICALERRORCODE._serialized_end=6106
+ _HARDWAREMODEL._serialized_start=5139
+ _HARDWAREMODEL._serialized_end=6334
+ _CONSTANTS._serialized_start=6336
+ _CONSTANTS._serialized_end=6380
+ _CRITICALERRORCODE._serialized_start=6383
+ _CRITICALERRORCODE._serialized_end=6621
_POSITION._serialized_start=201
_POSITION._serialized_end=942
_POSITION_LOCSOURCE._serialized_start=764
@@ -74,19 +74,27 @@ if _descriptor._USE_C_DESCRIPTORS == False:
_QUEUESTATUS._serialized_start=3059
_QUEUESTATUS._serialized_end=3139
_FROMRADIO._serialized_start=3142
- _FROMRADIO._serialized_end=3745
- _TORADIO._serialized_start=3748
- _TORADIO._serialized_end=4024
- _COMPRESSED._serialized_start=4026
- _COMPRESSED._serialized_end=4090
- _NEIGHBORINFO._serialized_start=4093
- _NEIGHBORINFO._serialized_end=4228
- _NEIGHBOR._serialized_start=4230
- _NEIGHBOR._serialized_end=4330
- _DEVICEMETADATA._serialized_start=4333
- _DEVICEMETADATA._serialized_end=4634
- _HEARTBEAT._serialized_start=4636
- _HEARTBEAT._serialized_end=4647
- _NODEREMOTEHARDWAREPIN._serialized_start=4649
- _NODEREMOTEHARDWAREPIN._serialized_end=4734
+ _FROMRADIO._serialized_end=3787
+ _FILEINFO._serialized_start=3789
+ _FILEINFO._serialized_end=3838
+ _TORADIO._serialized_start=3841
+ _TORADIO._serialized_end=4117
+ _COMPRESSED._serialized_start=4119
+ _COMPRESSED._serialized_end=4183
+ _NEIGHBORINFO._serialized_start=4186
+ _NEIGHBORINFO._serialized_end=4321
+ _NEIGHBOR._serialized_start=4323
+ _NEIGHBOR._serialized_end=4423
+ _DEVICEMETADATA._serialized_start=4426
+ _DEVICEMETADATA._serialized_end=4727
+ _HEARTBEAT._serialized_start=4729
+ _HEARTBEAT._serialized_end=4740
+ _NODEREMOTEHARDWAREPIN._serialized_start=4742
+ _NODEREMOTEHARDWAREPIN._serialized_end=4827
+ _CHUNKEDPAYLOAD._serialized_start=4829
+ _CHUNKEDPAYLOAD._serialized_end=4930
+ _RESEND_CHUNKS._serialized_start=4932
+ _RESEND_CHUNKS._serialized_end=4963
+ _CHUNKEDPAYLOADRESPONSE._serialized_start=4966
+ _CHUNKEDPAYLOADRESPONSE._serialized_end=5136
# @@protoc_insertion_point(module_scope)
diff --git a/meshtastic/telemetry_pb2.py b/meshtastic/telemetry_pb2.py
index cd116fc..601e3f2 100644
--- a/meshtastic/telemetry_pb2.py
+++ b/meshtastic/telemetry_pb2.py
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ameshtastic/telemetry.proto\x12\nmeshtastic\"\x81\x01\n\rDeviceMetrics\x12\x15\n\rbattery_level\x18\x01 \x01(\r\x12\x0f\n\x07voltage\x18\x02 \x01(\x02\x12\x1b\n\x13\x63hannel_utilization\x18\x03 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02\x12\x16\n\x0euptime_seconds\x18\x05 \x01(\r\"\xda\x01\n\x12\x45nvironmentMetrics\x12\x13\n\x0btemperature\x18\x01 \x01(\x02\x12\x19\n\x11relative_humidity\x18\x02 \x01(\x02\x12\x1b\n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02\x12\x16\n\x0egas_resistance\x18\x04 \x01(\x02\x12\x0f\n\x07voltage\x18\x05 \x01(\x02\x12\x0f\n\x07\x63urrent\x18\x06 \x01(\x02\x12\x0b\n\x03iaq\x18\x07 \x01(\r\x12\x10\n\x08\x64istance\x18\x08 \x01(\x02\x12\x0b\n\x03lux\x18\t \x01(\x02\x12\x11\n\twhite_lux\x18\n \x01(\x02\"\x8c\x01\n\x0cPowerMetrics\x12\x13\n\x0b\x63h1_voltage\x18\x01 \x01(\x02\x12\x13\n\x0b\x63h1_current\x18\x02 \x01(\x02\x12\x13\n\x0b\x63h2_voltage\x18\x03 \x01(\x02\x12\x13\n\x0b\x63h2_current\x18\x04 \x01(\x02\x12\x13\n\x0b\x63h3_voltage\x18\x05 \x01(\x02\x12\x13\n\x0b\x63h3_current\x18\x06 \x01(\x02\"\xbf\x02\n\x11\x41irQualityMetrics\x12\x15\n\rpm10_standard\x18\x01 \x01(\r\x12\x15\n\rpm25_standard\x18\x02 \x01(\r\x12\x16\n\x0epm100_standard\x18\x03 \x01(\r\x12\x1a\n\x12pm10_environmental\x18\x04 \x01(\r\x12\x1a\n\x12pm25_environmental\x18\x05 \x01(\r\x12\x1b\n\x13pm100_environmental\x18\x06 \x01(\r\x12\x16\n\x0eparticles_03um\x18\x07 \x01(\r\x12\x16\n\x0eparticles_05um\x18\x08 \x01(\r\x12\x16\n\x0eparticles_10um\x18\t \x01(\r\x12\x16\n\x0eparticles_25um\x18\n \x01(\r\x12\x16\n\x0eparticles_50um\x18\x0b \x01(\r\x12\x17\n\x0fparticles_100um\x18\x0c \x01(\r\"\x89\x02\n\tTelemetry\x12\x0c\n\x04time\x18\x01 \x01(\x07\x12\x33\n\x0e\x64\x65vice_metrics\x18\x02 \x01(\x0b\x32\x19.meshtastic.DeviceMetricsH\x00\x12=\n\x13\x65nvironment_metrics\x18\x03 \x01(\x0b\x32\x1e.meshtastic.EnvironmentMetricsH\x00\x12<\n\x13\x61ir_quality_metrics\x18\x04 \x01(\x0b\x32\x1d.meshtastic.AirQualityMetricsH\x00\x12\x31\n\rpower_metrics\x18\x05 \x01(\x0b\x32\x18.meshtastic.PowerMetricsH\x00\x42\t\n\x07variant*\xc0\x02\n\x13TelemetrySensorType\x12\x10\n\x0cSENSOR_UNSET\x10\x00\x12\n\n\x06\x42ME280\x10\x01\x12\n\n\x06\x42ME680\x10\x02\x12\x0b\n\x07MCP9808\x10\x03\x12\n\n\x06INA260\x10\x04\x12\n\n\x06INA219\x10\x05\x12\n\n\x06\x42MP280\x10\x06\x12\t\n\x05SHTC3\x10\x07\x12\t\n\x05LPS22\x10\x08\x12\x0b\n\x07QMC6310\x10\t\x12\x0b\n\x07QMI8658\x10\n\x12\x0c\n\x08QMC5883L\x10\x0b\x12\t\n\x05SHT31\x10\x0c\x12\x0c\n\x08PMSA003I\x10\r\x12\x0b\n\x07INA3221\x10\x0e\x12\n\n\x06\x42MP085\x10\x0f\x12\x0c\n\x08RCWL9620\x10\x10\x12\t\n\x05SHT4X\x10\x11\x12\x0c\n\x08VEML7700\x10\x12\x12\x0c\n\x08MLX90632\x10\x13\x12\x0b\n\x07OPT3001\x10\x14\x12\x0c\n\x08LTR390UV\x10\x15\x12\x0e\n\nTSL25911FN\x10\x16\x42\x64\n\x13\x63om.geeksville.meshB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ameshtastic/telemetry.proto\x12\nmeshtastic\"\x81\x01\n\rDeviceMetrics\x12\x15\n\rbattery_level\x18\x01 \x01(\r\x12\x0f\n\x07voltage\x18\x02 \x01(\x02\x12\x1b\n\x13\x63hannel_utilization\x18\x03 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02\x12\x16\n\x0euptime_seconds\x18\x05 \x01(\r\"\xb6\x02\n\x12\x45nvironmentMetrics\x12\x13\n\x0btemperature\x18\x01 \x01(\x02\x12\x19\n\x11relative_humidity\x18\x02 \x01(\x02\x12\x1b\n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02\x12\x16\n\x0egas_resistance\x18\x04 \x01(\x02\x12\x0f\n\x07voltage\x18\x05 \x01(\x02\x12\x0f\n\x07\x63urrent\x18\x06 \x01(\x02\x12\x0b\n\x03iaq\x18\x07 \x01(\r\x12\x10\n\x08\x64istance\x18\x08 \x01(\x02\x12\x0b\n\x03lux\x18\t \x01(\x02\x12\x11\n\twhite_lux\x18\n \x01(\x02\x12\x0e\n\x06ir_lux\x18\x0b \x01(\x02\x12\x0e\n\x06uv_lux\x18\x0c \x01(\x02\x12\x16\n\x0ewind_direction\x18\r \x01(\r\x12\x12\n\nwind_speed\x18\x0e \x01(\x02\x12\x0e\n\x06weight\x18\x0f \x01(\x02\"\x8c\x01\n\x0cPowerMetrics\x12\x13\n\x0b\x63h1_voltage\x18\x01 \x01(\x02\x12\x13\n\x0b\x63h1_current\x18\x02 \x01(\x02\x12\x13\n\x0b\x63h2_voltage\x18\x03 \x01(\x02\x12\x13\n\x0b\x63h2_current\x18\x04 \x01(\x02\x12\x13\n\x0b\x63h3_voltage\x18\x05 \x01(\x02\x12\x13\n\x0b\x63h3_current\x18\x06 \x01(\x02\"\xbf\x02\n\x11\x41irQualityMetrics\x12\x15\n\rpm10_standard\x18\x01 \x01(\r\x12\x15\n\rpm25_standard\x18\x02 \x01(\r\x12\x16\n\x0epm100_standard\x18\x03 \x01(\r\x12\x1a\n\x12pm10_environmental\x18\x04 \x01(\r\x12\x1a\n\x12pm25_environmental\x18\x05 \x01(\r\x12\x1b\n\x13pm100_environmental\x18\x06 \x01(\r\x12\x16\n\x0eparticles_03um\x18\x07 \x01(\r\x12\x16\n\x0eparticles_05um\x18\x08 \x01(\r\x12\x16\n\x0eparticles_10um\x18\t \x01(\r\x12\x16\n\x0eparticles_25um\x18\n \x01(\r\x12\x16\n\x0eparticles_50um\x18\x0b \x01(\r\x12\x17\n\x0fparticles_100um\x18\x0c \x01(\r\"\x89\x02\n\tTelemetry\x12\x0c\n\x04time\x18\x01 \x01(\x07\x12\x33\n\x0e\x64\x65vice_metrics\x18\x02 \x01(\x0b\x32\x19.meshtastic.DeviceMetricsH\x00\x12=\n\x13\x65nvironment_metrics\x18\x03 \x01(\x0b\x32\x1e.meshtastic.EnvironmentMetricsH\x00\x12<\n\x13\x61ir_quality_metrics\x18\x04 \x01(\x0b\x32\x1d.meshtastic.AirQualityMetricsH\x00\x12\x31\n\rpower_metrics\x18\x05 \x01(\x0b\x32\x18.meshtastic.PowerMetricsH\x00\x42\t\n\x07variant\">\n\rNau7802Config\x12\x12\n\nzeroOffset\x18\x01 \x01(\x05\x12\x19\n\x11\x63\x61librationFactor\x18\x02 \x01(\x02*\xea\x02\n\x13TelemetrySensorType\x12\x10\n\x0cSENSOR_UNSET\x10\x00\x12\n\n\x06\x42ME280\x10\x01\x12\n\n\x06\x42ME680\x10\x02\x12\x0b\n\x07MCP9808\x10\x03\x12\n\n\x06INA260\x10\x04\x12\n\n\x06INA219\x10\x05\x12\n\n\x06\x42MP280\x10\x06\x12\t\n\x05SHTC3\x10\x07\x12\t\n\x05LPS22\x10\x08\x12\x0b\n\x07QMC6310\x10\t\x12\x0b\n\x07QMI8658\x10\n\x12\x0c\n\x08QMC5883L\x10\x0b\x12\t\n\x05SHT31\x10\x0c\x12\x0c\n\x08PMSA003I\x10\r\x12\x0b\n\x07INA3221\x10\x0e\x12\n\n\x06\x42MP085\x10\x0f\x12\x0c\n\x08RCWL9620\x10\x10\x12\t\n\x05SHT4X\x10\x11\x12\x0c\n\x08VEML7700\x10\x12\x12\x0c\n\x08MLX90632\x10\x13\x12\x0b\n\x07OPT3001\x10\x14\x12\x0c\n\x08LTR390UV\x10\x15\x12\x0e\n\nTSL25911FN\x10\x16\x12\t\n\x05\x41HT10\x10\x17\x12\x10\n\x0c\x44\x46ROBOT_LARK\x10\x18\x12\x0b\n\x07NAU7802\x10\x19\x42\x64\n\x13\x63om.geeksville.meshB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.telemetry_pb2', globals())
@@ -21,16 +21,18 @@ if _descriptor._USE_C_DESCRIPTORS == False:
DESCRIPTOR._options = None
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\017TelemetryProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
- _TELEMETRYSENSORTYPE._serialized_start=1129
- _TELEMETRYSENSORTYPE._serialized_end=1449
+ _TELEMETRYSENSORTYPE._serialized_start=1285
+ _TELEMETRYSENSORTYPE._serialized_end=1647
_DEVICEMETRICS._serialized_start=43
_DEVICEMETRICS._serialized_end=172
_ENVIRONMENTMETRICS._serialized_start=175
- _ENVIRONMENTMETRICS._serialized_end=393
- _POWERMETRICS._serialized_start=396
- _POWERMETRICS._serialized_end=536
- _AIRQUALITYMETRICS._serialized_start=539
- _AIRQUALITYMETRICS._serialized_end=858
- _TELEMETRY._serialized_start=861
- _TELEMETRY._serialized_end=1126
+ _ENVIRONMENTMETRICS._serialized_end=485
+ _POWERMETRICS._serialized_start=488
+ _POWERMETRICS._serialized_end=628
+ _AIRQUALITYMETRICS._serialized_start=631
+ _AIRQUALITYMETRICS._serialized_end=950
+ _TELEMETRY._serialized_start=953
+ _TELEMETRY._serialized_end=1218
+ _NAU7802CONFIG._serialized_start=1220
+ _NAU7802CONFIG._serialized_end=1282
# @@protoc_insertion_point(module_scope)
diff --git a/proto_def/admin.options b/proto_def/admin.options
deleted file mode 100644
index 4804d89..0000000
--- a/proto_def/admin.options
+++ /dev/null
@@ -1,12 +0,0 @@
-*AdminMessage.payload_variant anonymous_oneof:true
-
-*AdminMessage.set_canned_message_module_messages max_size:201
-*AdminMessage.get_canned_message_module_messages_response max_size:201
-*AdminMessage.delete_file_request max_size:201
-
-*AdminMessage.set_ringtone_message max_size:231
-*AdminMessage.get_ringtone_response max_size:231
-
-*HamParameters.call_sign max_size:8
-*HamParameters.short_name max_size:5
-*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16
diff --git a/proto_def/admin.proto b/proto_def/admin.proto
deleted file mode 100644
index 3b227d8..0000000
--- a/proto_def/admin.proto
+++ /dev/null
@@ -1,383 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/channel.proto";
-import "meshtastic/config.proto";
-import "meshtastic/connection_status.proto";
-import "meshtastic/mesh.proto";
-import "meshtastic/module_config.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "AdminProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * This message is handled by the Admin module and is responsible for all settings/channel read/write operations.
- * This message is used to do settings operations to both remote AND local nodes.
- * (Prior to 1.2 these operations were done via special ToRadio operations)
- */
-message AdminMessage {
- /*
- * TODO: REPLACE
- */
- enum ConfigType {
- /*
- * TODO: REPLACE
- */
- DEVICE_CONFIG = 0;
-
- /*
- * TODO: REPLACE
- */
- POSITION_CONFIG = 1;
-
- /*
- * TODO: REPLACE
- */
- POWER_CONFIG = 2;
-
- /*
- * TODO: REPLACE
- */
- NETWORK_CONFIG = 3;
-
- /*
- * TODO: REPLACE
- */
- DISPLAY_CONFIG = 4;
-
- /*
- * TODO: REPLACE
- */
- LORA_CONFIG = 5;
-
- /*
- * TODO: REPLACE
- */
- BLUETOOTH_CONFIG = 6;
- }
-
- /*
- * TODO: REPLACE
- */
- enum ModuleConfigType {
- /*
- * TODO: REPLACE
- */
- MQTT_CONFIG = 0;
-
- /*
- * TODO: REPLACE
- */
- SERIAL_CONFIG = 1;
-
- /*
- * TODO: REPLACE
- */
- EXTNOTIF_CONFIG = 2;
-
- /*
- * TODO: REPLACE
- */
- STOREFORWARD_CONFIG = 3;
-
- /*
- * TODO: REPLACE
- */
- RANGETEST_CONFIG = 4;
-
- /*
- * TODO: REPLACE
- */
- TELEMETRY_CONFIG = 5;
-
- /*
- * TODO: REPLACE
- */
- CANNEDMSG_CONFIG = 6;
-
- /*
- * TODO: REPLACE
- */
- AUDIO_CONFIG = 7;
-
- /*
- * TODO: REPLACE
- */
- REMOTEHARDWARE_CONFIG = 8;
-
- /*
- * TODO: REPLACE
- */
- NEIGHBORINFO_CONFIG = 9;
-
- /*
- * TODO: REPLACE
- */
- AMBIENTLIGHTING_CONFIG = 10;
-
- /*
- * TODO: REPLACE
- */
- DETECTIONSENSOR_CONFIG = 11;
-
- /*
- * TODO: REPLACE
- */
- PAXCOUNTER_CONFIG = 12;
- }
-
- /*
- * TODO: REPLACE
- */
- oneof payload_variant {
- /*
- * Send the specified channel in the response to this message
- * NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present)
- */
- uint32 get_channel_request = 1;
-
- /*
- * TODO: REPLACE
- */
- Channel get_channel_response = 2;
-
- /*
- * Send the current owner data in the response to this message.
- */
- bool get_owner_request = 3;
-
- /*
- * TODO: REPLACE
- */
- User get_owner_response = 4;
-
- /*
- * Ask for the following config data to be sent
- */
- ConfigType get_config_request = 5;
-
- /*
- * Send the current Config in the response to this message.
- */
- Config get_config_response = 6;
-
- /*
- * Ask for the following config data to be sent
- */
- ModuleConfigType get_module_config_request = 7;
-
- /*
- * Send the current Config in the response to this message.
- */
- ModuleConfig get_module_config_response = 8;
-
- /*
- * Get the Canned Message Module messages in the response to this message.
- */
- bool get_canned_message_module_messages_request = 10;
-
- /*
- * Get the Canned Message Module messages in the response to this message.
- */
- string get_canned_message_module_messages_response = 11;
-
- /*
- * Request the node to send device metadata (firmware, protobuf version, etc)
- */
- bool get_device_metadata_request = 12;
-
- /*
- * Device metadata response
- */
- DeviceMetadata get_device_metadata_response = 13;
-
- /*
- * Get the Ringtone in the response to this message.
- */
- bool get_ringtone_request = 14;
-
- /*
- * Get the Ringtone in the response to this message.
- */
- string get_ringtone_response = 15;
-
- /*
- * Request the node to send it's connection status
- */
- bool get_device_connection_status_request = 16;
-
- /*
- * Device connection status response
- */
- DeviceConnectionStatus get_device_connection_status_response = 17;
-
- /*
- * Setup a node for licensed amateur (ham) radio operation
- */
- HamParameters set_ham_mode = 18;
-
- /*
- * Get the mesh's nodes with their available gpio pins for RemoteHardware module use
- */
- bool get_node_remote_hardware_pins_request = 19;
-
- /*
- * Respond with the mesh's nodes with their available gpio pins for RemoteHardware module use
- */
- NodeRemoteHardwarePinsResponse get_node_remote_hardware_pins_response = 20;
-
- /*
- * Enter (UF2) DFU mode
- * Only implemented on NRF52 currently
- */
- bool enter_dfu_mode_request = 21;
-
- /*
- * Delete the file by the specified path from the device
- */
- string delete_file_request = 22;
-
- /*
- * Set the owner for this node
- */
- User set_owner = 32;
-
- /*
- * Set channels (using the new API).
- * A special channel is the "primary channel".
- * The other records are secondary channels.
- * Note: only one channel can be marked as primary.
- * If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically.
- */
- Channel set_channel = 33;
-
- /*
- * Set the current Config
- */
- Config set_config = 34;
-
- /*
- * Set the current Config
- */
- ModuleConfig set_module_config = 35;
-
- /*
- * Set the Canned Message Module messages text.
- */
- string set_canned_message_module_messages = 36;
-
- /*
- * Set the ringtone for ExternalNotification.
- */
- string set_ringtone_message = 37;
-
- /*
- * Remove the node by the specified node-num from the NodeDB on the device
- */
- uint32 remove_by_nodenum = 38;
-
- /*
- * Set specified node-num to be favorited on the NodeDB on the device
- */
- uint32 set_favorite_node = 39;
-
- /*
- * Set specified node-num to be un-favorited on the NodeDB on the device
- */
- uint32 remove_favorite_node = 40;
-
- /*
- * Set fixed position data on the node and then set the position.fixed_position = true
- */
- Position set_fixed_position = 41;
-
- /*
- * Clear fixed position coordinates and then set position.fixed_position = false
- */
- bool remove_fixed_position = 42;
-
- /*
- * Begins an edit transaction for config, module config, owner, and channel settings changes
- * This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings)
- */
- bool begin_edit_settings = 64;
-
- /*
- * Commits an open transaction for any edits made to config, module config, owner, and channel settings
- */
- bool commit_edit_settings = 65;
-
- /*
- * Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot)
- * Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth.
- */
- int32 reboot_ota_seconds = 95;
-
- /*
- * This message is only supported for the simulator Portduino build.
- * If received the simulator will exit successfully.
- */
- bool exit_simulator = 96;
-
- /*
- * Tell the node to reboot in this many seconds (or <0 to cancel reboot)
- */
- int32 reboot_seconds = 97;
-
- /*
- * Tell the node to shutdown in this many seconds (or <0 to cancel shutdown)
- */
- int32 shutdown_seconds = 98;
-
- /*
- * Tell the node to factory reset, all device settings will be returned to factory defaults.
- */
- int32 factory_reset = 99;
-
- /*
- * Tell the node to reset the nodedb.
- */
- int32 nodedb_reset = 100;
- }
-}
-
-/*
- * Parameters for setting up Meshtastic for ameteur radio usage
- */
-message HamParameters {
- /*
- * Amateur radio call sign, eg. KD2ABC
- */
- string call_sign = 1;
-
- /*
- * Transmit power in dBm at the LoRA transceiver, not including any amplification
- */
- int32 tx_power = 2;
-
- /*
- * The selected frequency of LoRA operation
- * Please respect your local laws, regulations, and band plans.
- * Ensure your radio is capable of operating of the selected frequency before setting this.
- */
- float frequency = 3;
-
- /*
- * Optional short name of user
- */
- string short_name = 4;
-}
-
-/*
- * Response envelope for node_remote_hardware_pins
- */
-message NodeRemoteHardwarePinsResponse {
- /*
- * Nodes and their respective remote hardware GPIO pins
- */
- repeated NodeRemoteHardwarePin node_remote_hardware_pins = 1;
-}
diff --git a/proto_def/apponly.options b/proto_def/apponly.options
deleted file mode 100644
index 28244de..0000000
--- a/proto_def/apponly.options
+++ /dev/null
@@ -1 +0,0 @@
-*ChannelSet.settings max_count:8
diff --git a/proto_def/apponly.proto b/proto_def/apponly.proto
deleted file mode 100644
index 100833f..0000000
--- a/proto_def/apponly.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/channel.proto";
-import "meshtastic/config.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "AppOnlyProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * This is the most compact possible representation for a set of channels.
- * It includes only one PRIMARY channel (which must be first) and
- * any SECONDARY channels.
- * No DISABLED channels are included.
- * This abstraction is used only on the the 'app side' of the world (ie python, javascript and android etc) to show a group of Channels as a (long) URL
- */
-message ChannelSet {
- /*
- * Channel list with settings
- */
- repeated ChannelSettings settings = 1;
-
- /*
- * LoRa config
- */
- Config.LoRaConfig lora_config = 2;
-}
diff --git a/proto_def/atak.options b/proto_def/atak.options
deleted file mode 100644
index c341400..0000000
--- a/proto_def/atak.options
+++ /dev/null
@@ -1,6 +0,0 @@
-*Contact.callsign max_size:120
-*Contact.device_callsign max_size:120
-*Status.battery int_size:8
-*PLI.course int_size:16
-*GeoChat.message max_size:200
-*GeoChat.to max_size:120
\ No newline at end of file
diff --git a/proto_def/atak.proto b/proto_def/atak.proto
deleted file mode 100644
index 199f06b..0000000
--- a/proto_def/atak.proto
+++ /dev/null
@@ -1,252 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "ATAKProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * Packets for the official ATAK Plugin
- */
-message TAKPacket {
- /*
- * Are the payloads strings compressed for LoRA transport?
- */
- bool is_compressed = 1;
- /*
- * The contact / callsign for ATAK user
- */
- Contact contact = 2;
- /*
- * The group for ATAK user
- */
- Group group = 3;
- /*
- * The status of the ATAK EUD
- */
- Status status = 4;
- /*
- * The payload of the packet
- */
- oneof payload_variant {
- /*
- * TAK position report
- */
- PLI pli = 5;
- /*
- * ATAK GeoChat message
- */
- GeoChat chat = 6;
- }
-}
-
-/*
- * ATAK GeoChat message
- */
-message GeoChat {
- /*
- * The text message
- */
- string message = 1;
-
- /*
- * Uid recipient of the message
- */
- optional string to = 2;
-}
-
-/*
- * ATAK Group
- * <__group role='Team Member' name='Cyan'/>
- */
-message Group {
- /*
- * Role of the group member
- */
- MemberRole role = 1;
- /*
- * Team (color)
- * Default Cyan
- */
- Team team = 2;
-}
-
-enum Team {
- /*
- * Unspecifed
- */
- Unspecifed_Color = 0;
- /*
- * White
- */
- White = 1;
- /*
- * Yellow
- */
- Yellow = 2;
- /*
- * Orange
- */
- Orange = 3;
- /*
- * Magenta
- */
- Magenta = 4;
- /*
- * Red
- */
- Red = 5;
- /*
- * Maroon
- */
- Maroon = 6;
- /*
- * Purple
- */
- Purple = 7;
- /*
- * Dark Blue
- */
- Dark_Blue = 8;
- /*
- * Blue
- */
- Blue = 9;
- /*
- * Cyan
- */
- Cyan = 10;
- /*
- * Teal
- */
- Teal = 11;
- /*
- * Green
- */
- Green = 12;
- /*
- * Dark Green
- */
- Dark_Green = 13;
- /*
- * Brown
- */
- Brown = 14;
-}
-
-/*
- * Role of the group member
- */
-enum MemberRole {
- /*
- * Unspecifed
- */
- Unspecifed = 0;
- /*
- * Team Member
- */
- TeamMember = 1;
- /*
- * Team Lead
- */
- TeamLead = 2;
- /*
- * Headquarters
- */
- HQ = 3;
- /*
- * Airsoft enthusiast
- */
- Sniper = 4;
- /*
- * Medic
- */
- Medic = 5;
- /*
- * ForwardObserver
- */
- ForwardObserver = 6;
- /*
- * Radio Telephone Operator
- */
- RTO = 7;
- /*
- * Doggo
- */
- K9 = 8;
-}
-
-/*
- * ATAK EUD Status
- *
- */
-message Status {
- /*
- * Battery level
- */
- uint32 battery = 1;
-}
-
-/*
- * ATAK Contact
- *
- */
-message Contact {
- /*
- * Callsign
- */
- string callsign = 1;
-
- /*
- * Device callsign
- */
- string device_callsign = 2;
- /*
- * IP address of endpoint in integer form (0.0.0.0 default)
- */
- // fixed32 enpoint_address = 3;
- /*
- * Port of endpoint (4242 default)
- */
- // uint32 endpoint_port = 4;
- /*
- * Phone represented as integer
- * Terrible practice, but we really need the wire savings
- */
- // uint32 phone = 4;
-}
-
-/*
- * Position Location Information from ATAK
- */
-message PLI {
- /*
- * The new preferred location encoding, multiply by 1e-7 to get degrees
- * in floating point
- */
- sfixed32 latitude_i = 1;
-
- /*
- * The new preferred location encoding, multiply by 1e-7 to get degrees
- * in floating point
- */
- sfixed32 longitude_i = 2;
-
- /*
- * Altitude (ATAK prefers HAE)
- */
- int32 altitude = 3;
-
- /*
- * Speed
- */
- uint32 speed = 4;
-
- /*
- * Course in degrees
- */
- uint32 course = 5;
-}
diff --git a/proto_def/cannedmessages.options b/proto_def/cannedmessages.options
deleted file mode 100644
index c1d537b..0000000
--- a/proto_def/cannedmessages.options
+++ /dev/null
@@ -1 +0,0 @@
-*CannedMessageModuleConfig.messages max_size:201
diff --git a/proto_def/cannedmessages.proto b/proto_def/cannedmessages.proto
deleted file mode 100644
index baa5134..0000000
--- a/proto_def/cannedmessages.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "CannedMessageConfigProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * Canned message module configuration.
- */
-message CannedMessageModuleConfig {
- /*
- * Predefined messages for canned message module separated by '|' characters.
- */
- string messages = 1;
-}
diff --git a/proto_def/channel.options b/proto_def/channel.options
deleted file mode 100644
index d0bdcbc..0000000
--- a/proto_def/channel.options
+++ /dev/null
@@ -1,5 +0,0 @@
-*Channel.index int_size:8
-
-# 256 bit or 128 bit psk key
-*ChannelSettings.psk max_size:32
-*ChannelSettings.name max_size:12
diff --git a/proto_def/channel.proto b/proto_def/channel.proto
deleted file mode 100644
index 16c8c19..0000000
--- a/proto_def/channel.proto
+++ /dev/null
@@ -1,156 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "ChannelProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * This information can be encoded as a QRcode/url so that other users can configure
- * their radio to join the same channel.
- * A note about how channel names are shown to users: channelname-X
- * poundsymbol is a prefix used to indicate this is a channel name (idea from @professr).
- * Where X is a letter from A-Z (base 26) representing a hash of the PSK for this
- * channel - so that if the user changes anything about the channel (which does
- * force a new PSK) this letter will also change. Thus preventing user confusion if
- * two friends try to type in a channel name of "BobsChan" and then can't talk
- * because their PSKs will be different.
- * The PSK is hashed into this letter by "0x41 + [xor all bytes of the psk ] modulo 26"
- * This also allows the option of someday if people have the PSK off (zero), the
- * users COULD type in a channel name and be able to talk.
- * FIXME: Add description of multi-channel support and how primary vs secondary channels are used.
- * FIXME: explain how apps use channels for security.
- * explain how remote settings and remote gpio are managed as an example
- */
-message ChannelSettings {
- /*
- * Deprecated in favor of LoraConfig.channel_num
- */
- uint32 channel_num = 1 [deprecated = true];
-
- /*
- * A simple pre-shared key for now for crypto.
- * Must be either 0 bytes (no crypto), 16 bytes (AES128), or 32 bytes (AES256).
- * A special shorthand is used for 1 byte long psks.
- * These psks should be treated as only minimally secure,
- * because they are listed in this source code.
- * Those bytes are mapped using the following scheme:
- * `0` = No crypto
- * `1` = The special "default" channel key: {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0x01}
- * `2` through 10 = The default channel key, except with 1 through 9 added to the last byte.
- * Shown to user as simple1 through 10
- */
- bytes psk = 2;
-
- /*
- * A SHORT name that will be packed into the URL.
- * Less than 12 bytes.
- * Something for end users to call the channel
- * If this is the empty string it is assumed that this channel
- * is the special (minimally secure) "Default"channel.
- * In user interfaces it should be rendered as a local language translation of "X".
- * For channel_num hashing empty string will be treated as "X".
- * Where "X" is selected based on the English words listed above for ModemPreset
- */
- string name = 3;
-
- /*
- * Used to construct a globally unique channel ID.
- * The full globally unique ID will be: "name.id" where ID is shown as base36.
- * Assuming that the number of meshtastic users is below 20K (true for a long time)
- * the chance of this 64 bit random number colliding with anyone else is super low.
- * And the penalty for collision is low as well, it just means that anyone trying to decrypt channel messages might need to
- * try multiple candidate channels.
- * Any time a non wire compatible change is made to a channel, this field should be regenerated.
- * There are a small number of 'special' globally known (and fairly) insecure standard channels.
- * Those channels do not have a numeric id included in the settings, but instead it is pulled from
- * a table of well known IDs.
- * (see Well Known Channels FIXME)
- */
- fixed32 id = 4;
-
- /*
- * If true, messages on the mesh will be sent to the *public* internet by any gateway ndoe
- */
- bool uplink_enabled = 5;
-
- /*
- * If true, messages seen on the internet will be forwarded to the local mesh.
- */
- bool downlink_enabled = 6;
-
- /*
- * Per-channel module settings.
- */
- ModuleSettings module_settings = 7;
-}
-
-/*
- * This message is specifically for modules to store per-channel configuration data.
- */
-message ModuleSettings {
- /*
- * Bits of precision for the location sent in position packets.
- */
- uint32 position_precision = 1;
-
- /*
- * Controls whether or not the phone / clients should mute the current channel
- * Useful for noisy public channels you don't necessarily want to disable
- */
- bool is_client_muted = 2;
-}
-
-/*
- * A pair of a channel number, mode and the (sharable) settings for that channel
- */
-message Channel {
- /*
- * How this channel is being used (or not).
- * Note: this field is an enum to give us options for the future.
- * In particular, someday we might make a 'SCANNING' option.
- * SCANNING channels could have different frequencies and the radio would
- * occasionally check that freq to see if anything is being transmitted.
- * For devices that have multiple physical radios attached, we could keep multiple PRIMARY/SCANNING channels active at once to allow
- * cross band routing as needed.
- * If a device has only a single radio (the common case) only one channel can be PRIMARY at a time
- * (but any number of SECONDARY channels can't be sent received on that common frequency)
- */
- enum Role {
- /*
- * This channel is not in use right now
- */
- DISABLED = 0;
-
- /*
- * This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY
- */
- PRIMARY = 1;
-
- /*
- * Secondary channels are only used for encryption/decryption/authentication purposes.
- * Their radio settings (freq etc) are ignored, only psk is used.
- */
- SECONDARY = 2;
- }
-
- /*
- * The index of this channel in the channel table (from 0 to MAX_NUM_CHANNELS-1)
- * (Someday - not currently implemented) An index of -1 could be used to mean "set by name",
- * in which case the target node will find and set the channel by settings.name.
- */
- int32 index = 1;
-
- /*
- * The new settings, or NULL to disable that channel
- */
- ChannelSettings settings = 2;
-
- /*
- * TODO: REPLACE
- */
- Role role = 3;
-}
diff --git a/proto_def/clientonly.options b/proto_def/clientonly.options
deleted file mode 100644
index bc98b39..0000000
--- a/proto_def/clientonly.options
+++ /dev/null
@@ -1,2 +0,0 @@
-*DeviceProfile.long_name max_size:40
-*DeviceProfile.short_name max_size:5
\ No newline at end of file
diff --git a/proto_def/clientonly.proto b/proto_def/clientonly.proto
deleted file mode 100644
index b1a27b1..0000000
--- a/proto_def/clientonly.proto
+++ /dev/null
@@ -1,42 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/localonly.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "ClientOnlyProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * This abstraction is used to contain any configuration for provisioning a node on any client.
- * It is useful for importing and exporting configurations.
- */
-message DeviceProfile {
- /*
- * Long name for the node
- */
- optional string long_name = 1;
-
- /*
- * Short name of the node
- */
- optional string short_name = 2;
-
- /*
- * The url of the channels from our node
- */
- optional string channel_url = 3;
-
- /*
- * The Config of the node
- */
- optional LocalConfig config = 4;
-
- /*
- * The ModuleConfig of the node
- */
- optional LocalModuleConfig module_config = 5;
-}
diff --git a/proto_def/config.options b/proto_def/config.options
deleted file mode 100644
index 22dcc88..0000000
--- a/proto_def/config.options
+++ /dev/null
@@ -1,17 +0,0 @@
-# longest current is 45 chars, plan with a bit of buffer
-*DeviceConfig.tzdef max_size:65
-
-*NetworkConfig.wifi_ssid max_size:33
-*NetworkConfig.wifi_psk max_size:65
-*NetworkConfig.ntp_server max_size:33
-*NetworkConfig.rsyslog_server max_size:33
-
-# Max of three ignored nodes for our testing
-*LoRaConfig.ignore_incoming max_count:3
-
-*LoRaConfig.tx_power int_size:8
-*LoRaConfig.bandwidth int_size:16
-*LoRaConfig.coding_rate int_size:8
-*LoRaConfig.channel_num int_size:16
-
-*PowerConfig.device_battery_ina_address int_size:8
diff --git a/proto_def/config.proto b/proto_def/config.proto
deleted file mode 100644
index 43e8c6e..0000000
--- a/proto_def/config.proto
+++ /dev/null
@@ -1,960 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "ConfigProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-message Config {
- /*
- * Configuration
- */
- message DeviceConfig {
- /*
- * Defines the device's role on the Mesh network
- */
- enum Role {
- /*
- * Description: App connected or stand alone messaging device.
- * Technical Details: Default Role
- */
- CLIENT = 0;
- /*
- * Description: Device that does not forward packets from other devices.
- */
- CLIENT_MUTE = 1;
-
- /*
- * Description: Infrastructure node for extending network coverage by relaying messages. Visible in Nodes list.
- * Technical Details: Mesh packets will prefer to be routed over this node. This node will not be used by client apps.
- * The wifi radio and the oled screen will be put to sleep.
- * This mode may still potentially have higher power usage due to it's preference in message rebroadcasting on the mesh.
- */
- ROUTER = 2;
-
- /*
- * Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
- */
- ROUTER_CLIENT = 3;
-
- /*
- * Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
- * Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
- * or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
- */
- REPEATER = 4;
-
- /*
- * Description: Broadcasts GPS position packets as priority.
- * Technical Details: Position Mesh packets will be prioritized higher and sent more frequently by default.
- * When used in conjunction with power.is_power_saving = true, nodes will wake up,
- * send position, and then sleep for position.position_broadcast_secs seconds.
- */
- TRACKER = 5;
-
- /*
- * Description: Broadcasts telemetry packets as priority.
- * Technical Details: Telemetry Mesh packets will be prioritized higher and sent more frequently by default.
- * When used in conjunction with power.is_power_saving = true, nodes will wake up,
- * send environment telemetry, and then sleep for telemetry.environment_update_interval seconds.
- */
- SENSOR = 6;
-
- /*
- * Description: Optimized for ATAK system communication and reduces routine broadcasts.
- * Technical Details: Used for nodes dedicated for connection to an ATAK EUD.
- * Turns off many of the routine broadcasts to favor CoT packet stream
- * from the Meshtastic ATAK plugin -> IMeshService -> Node
- */
- TAK = 7;
-
- /*
- * Description: Device that only broadcasts as needed for stealth or power savings.
- * Technical Details: Used for nodes that "only speak when spoken to"
- * Turns all of the routine broadcasts but allows for ad-hoc communication
- * Still rebroadcasts, but with local only rebroadcast mode (known meshes only)
- * Can be used for clandestine operation or to dramatically reduce airtime / power consumption
- */
- CLIENT_HIDDEN = 8;
-
- /*
- * Description: Broadcasts location as message to default channel regularly for to assist with device recovery.
- * Technical Details: Used to automatically send a text message to the mesh
- * with the current position of the device on a frequent interval:
- * "I'm lost! Position: lat / long"
- */
- LOST_AND_FOUND = 9;
-
- /*
- * Description: Enables automatic TAK PLI broadcasts and reduces routine broadcasts.
- * Technical Details: Turns off many of the routine broadcasts to favor ATAK CoT packet stream
- * and automatic TAK PLI (position location information) broadcasts.
- * Uses position module configuration to determine TAK PLI broadcast interval.
- */
- TAK_TRACKER = 10;
- }
-
- /*
- * Defines the device's behavior for how messages are rebroadcast
- */
- enum RebroadcastMode {
- /*
- * Default behavior.
- * Rebroadcast any observed message, if it was on our private channel or from another mesh with the same lora params.
- */
- ALL = 0;
-
- /*
- * Same as behavior as ALL but skips packet decoding and simply rebroadcasts them.
- * Only available in Repeater role. Setting this on any other roles will result in ALL behavior.
- */
- ALL_SKIP_DECODING = 1;
-
- /*
- * Ignores observed messages from foreign meshes that are open or those which it cannot decrypt.
- * Only rebroadcasts message on the nodes local primary / secondary channels.
- */
- LOCAL_ONLY = 2;
-
- /*
- * Ignores observed messages from foreign meshes like LOCAL_ONLY,
- * but takes it step further by also ignoring messages from nodenums not in the node's known list (NodeDB)
- */
- KNOWN_ONLY = 3;
- }
-
- /*
- * Sets the role of node
- */
- Role role = 1;
-
- /*
- * Disabling this will disable the SerialConsole by not initilizing the StreamAPI
- */
- bool serial_enabled = 2;
-
- /*
- * By default we turn off logging as soon as an API client connects (to keep shared serial link quiet).
- * Set this to true to leave the debug log outputting even when API is active.
- */
- bool debug_log_enabled = 3;
-
- /*
- * For boards without a hard wired button, this is the pin number that will be used
- * Boards that have more than one button can swap the function with this one. defaults to BUTTON_PIN if defined.
- */
- uint32 button_gpio = 4;
-
- /*
- * For boards without a PWM buzzer, this is the pin number that will be used
- * Defaults to PIN_BUZZER if defined.
- */
- uint32 buzzer_gpio = 5;
-
- /*
- * Sets the role of node
- */
- RebroadcastMode rebroadcast_mode = 6;
-
- /*
- * Send our nodeinfo this often
- * Defaults to 900 Seconds (15 minutes)
- */
- uint32 node_info_broadcast_secs = 7;
-
- /*
- * Treat double tap interrupt on supported accelerometers as a button press if set to true
- */
- bool double_tap_as_button_press = 8;
-
- /*
- * If true, device is considered to be "managed" by a mesh administrator
- * Clients should then limit available configuration and administrative options inside the user interface
- */
- bool is_managed = 9;
-
- /*
- * Disables the triple-press of user button to enable or disable GPS
- */
- bool disable_triple_click = 10;
-
- /*
- * POSIX Timezone definition string from https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv.
- */
- string tzdef = 11;
-
- /*
- * If true, disable the default blinking LED (LED_PIN) behavior on the device
- */
- bool led_heartbeat_disabled = 12;
- }
-
- /*
- * Position Config
- */
- message PositionConfig {
- /*
- * Bit field of boolean configuration options, indicating which optional
- * fields to include when assembling POSITION messages.
- * Longitude, latitude, altitude, speed, heading, and DOP
- * are always included (also time if GPS-synced)
- * NOTE: the more fields are included, the larger the message will be -
- * leading to longer airtime and a higher risk of packet loss
- */
- enum PositionFlags {
- /*
- * Required for compilation
- */
- UNSET = 0x0000;
-
- /*
- * Include an altitude value (if available)
- */
- ALTITUDE = 0x0001;
-
- /*
- * Altitude value is MSL
- */
- ALTITUDE_MSL = 0x0002;
-
- /*
- * Include geoidal separation
- */
- GEOIDAL_SEPARATION = 0x0004;
-
- /*
- * Include the DOP value ; PDOP used by default, see below
- */
- DOP = 0x0008;
-
- /*
- * If POS_DOP set, send separate HDOP / VDOP values instead of PDOP
- */
- HVDOP = 0x0010;
-
- /*
- * Include number of "satellites in view"
- */
- SATINVIEW = 0x0020;
-
- /*
- * Include a sequence number incremented per packet
- */
- SEQ_NO = 0x0040;
-
- /*
- * Include positional timestamp (from GPS solution)
- */
- TIMESTAMP = 0x0080;
-
- /*
- * Include positional heading
- * Intended for use with vehicle not walking speeds
- * walking speeds are likely to be error prone like the compass
- */
- HEADING = 0x0100;
-
- /*
- * Include positional speed
- * Intended for use with vehicle not walking speeds
- * walking speeds are likely to be error prone like the compass
- */
- SPEED = 0x0200;
- }
-
- enum GpsMode {
- /*
- * GPS is present but disabled
- */
- DISABLED = 0;
-
- /*
- * GPS is present and enabled
- */
- ENABLED = 1;
-
- /*
- * GPS is not present on the device
- */
- NOT_PRESENT = 2;
- }
-
- /*
- * We should send our position this often (but only if it has changed significantly)
- * Defaults to 15 minutes
- */
- uint32 position_broadcast_secs = 1;
-
- /*
- * Adaptive position braoadcast, which is now the default.
- */
- bool position_broadcast_smart_enabled = 2;
-
- /*
- * If set, this node is at a fixed position.
- * We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node.
- * The lat/lon/alt can be set by an internal GPS or with the help of the app.
- */
- bool fixed_position = 3;
-
- /*
- * Is GPS enabled for this node?
- */
- bool gps_enabled = 4 [deprecated = true];
-
- /*
- * How often should we try to get GPS position (in seconds)
- * or zero for the default of once every 30 seconds
- * or a very large value (maxint) to update only once at boot.
- */
- uint32 gps_update_interval = 5;
-
- /*
- * Deprecated in favor of using smart / regular broadcast intervals as implicit attempt time
- */
- uint32 gps_attempt_time = 6 [deprecated = true];
-
- /*
- * Bit field of boolean configuration options for POSITION messages
- * (bitwise OR of PositionFlags)
- */
- uint32 position_flags = 7;
-
- /*
- * (Re)define GPS_RX_PIN for your board.
- */
- uint32 rx_gpio = 8;
-
- /*
- * (Re)define GPS_TX_PIN for your board.
- */
- uint32 tx_gpio = 9;
-
- /*
- * The minimum distance in meters traveled (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled
- */
- uint32 broadcast_smart_minimum_distance = 10;
-
- /*
- * The minimum number of seconds (since the last send) before we can send a position to the mesh if position_broadcast_smart_enabled
- */
- uint32 broadcast_smart_minimum_interval_secs = 11;
-
- /*
- * (Re)define PIN_GPS_EN for your board.
- */
- uint32 gps_en_gpio = 12;
-
- /*
- * Set where GPS is enabled, disabled, or not present
- */
- GpsMode gps_mode = 13;
- }
-
- /*
- * Power Config\
- * See [Power Config](/docs/settings/config/power) for additional power config details.
- */
- message PowerConfig {
- /*
- * Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio.
- * Don't use this setting if you want to use your device with the phone apps or are using a device without a user button.
- * Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles
- */
- bool is_power_saving = 1;
-
- /*
- * Description: If non-zero, the device will fully power off this many seconds after external power is removed.
- */
- uint32 on_battery_shutdown_after_secs = 2;
-
- /*
- * Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
- * Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
- * https://meshtastic.org/docs/configuration/radio/power/#adc-multiplier-override
- * Should be set to floating point value between 2 and 6
- */
- float adc_multiplier_override = 3;
-
- /*
- * Description: The number of seconds for to wait before turning off BLE in No Bluetooth states
- * Technical Details: ESP32 Only 0 for default of 1 minute
- */
- uint32 wait_bluetooth_secs = 4;
-
- /*
- * Super Deep Sleep Seconds
- * While in Light Sleep if mesh_sds_timeout_secs is exceeded we will lower into super deep sleep
- * for this value (default 1 year) or a button press
- * 0 for default of one year
- */
- uint32 sds_secs = 6;
-
- /*
- * Description: In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
- * Technical Details: ESP32 Only 0 for default of 300
- */
- uint32 ls_secs = 7;
-
- /*
- * Description: While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
- * Technical Details: ESP32 Only 0 for default of 10 seconds
- */
- uint32 min_wake_secs = 8;
-
- /*
- * I2C address of INA_2XX to use for reading device battery voltage
- */
- uint32 device_battery_ina_address = 9;
- }
-
- /*
- * Network Config
- */
- message NetworkConfig {
- enum AddressMode {
- /*
- * obtain ip address via DHCP
- */
- DHCP = 0;
-
- /*
- * use static ip address
- */
- STATIC = 1;
- }
-
- message IpV4Config {
- /*
- * Static IP address
- */
- fixed32 ip = 1;
-
- /*
- * Static gateway address
- */
- fixed32 gateway = 2;
-
- /*
- * Static subnet mask
- */
- fixed32 subnet = 3;
-
- /*
- * Static DNS server address
- */
- fixed32 dns = 4;
- }
-
- /*
- * Enable WiFi (disables Bluetooth)
- */
- bool wifi_enabled = 1;
-
- /*
- * If set, this node will try to join the specified wifi network and
- * acquire an address via DHCP
- */
- string wifi_ssid = 3;
-
- /*
- * If set, will be use to authenticate to the named wifi
- */
- string wifi_psk = 4;
-
- /*
- * NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org`
- */
- string ntp_server = 5;
-
- /*
- * Enable Ethernet
- */
- bool eth_enabled = 6;
-
- /*
- * acquire an address via DHCP or assign static
- */
- AddressMode address_mode = 7;
-
- /*
- * struct to keep static address
- */
- IpV4Config ipv4_config = 8;
-
- /*
- * rsyslog Server and Port
- */
- string rsyslog_server = 9;
- }
-
- /*
- * Display Config
- */
- message DisplayConfig {
- /*
- * How the GPS coordinates are displayed on the OLED screen.
- */
- enum GpsCoordinateFormat {
- /*
- * GPS coordinates are displayed in the normal decimal degrees format:
- * DD.DDDDDD DDD.DDDDDD
- */
- DEC = 0;
-
- /*
- * GPS coordinates are displayed in the degrees minutes seconds format:
- * DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
- */
- DMS = 1;
-
- /*
- * Universal Transverse Mercator format:
- * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
- */
- UTM = 2;
-
- /*
- * Military Grid Reference System format:
- * ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
- * E is easting, N is northing
- */
- MGRS = 3;
-
- /*
- * Open Location Code (aka Plus Codes).
- */
- OLC = 4;
-
- /*
- * Ordnance Survey Grid Reference (the National Grid System of the UK).
- * Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
- * E is the easting, N is the northing
- */
- OSGR = 5;
- }
-
- /*
- * Unit display preference
- */
- enum DisplayUnits {
- /*
- * Metric (Default)
- */
- METRIC = 0;
-
- /*
- * Imperial
- */
- IMPERIAL = 1;
- }
-
- /*
- * Override OLED outo detect with this if it fails.
- */
- enum OledType {
- /*
- * Default / Auto
- */
- OLED_AUTO = 0;
-
- /*
- * Default / Auto
- */
- OLED_SSD1306 = 1;
-
- /*
- * Default / Auto
- */
- OLED_SH1106 = 2;
-
- /*
- * Can not be auto detected but set by proto. Used for 128x128 screens
- */
- OLED_SH1107 = 3;
- }
-
- /*
- * Number of seconds the screen stays on after pressing the user button or receiving a message
- * 0 for default of one minute MAXUINT for always on
- */
- uint32 screen_on_secs = 1;
-
- /*
- * How the GPS coordinates are formatted on the OLED screen.
- */
- GpsCoordinateFormat gps_format = 2;
-
- /*
- * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds.
- * Potentially useful for devices without user buttons.
- */
- uint32 auto_screen_carousel_secs = 3;
-
- /*
- * If this is set, the displayed compass will always point north. if unset, the old behaviour
- * (top of display is heading direction) is used.
- */
- bool compass_north_top = 4;
-
- /*
- * Flip screen vertically, for cases that mount the screen upside down
- */
- bool flip_screen = 5;
-
- /*
- * Perferred display units
- */
- DisplayUnits units = 6;
-
- /*
- * Override auto-detect in screen
- */
- OledType oled = 7;
-
- enum DisplayMode {
- /*
- * Default. The old style for the 128x64 OLED screen
- */
- DEFAULT = 0;
-
- /*
- * Rearrange display elements to cater for bicolor OLED displays
- */
- TWOCOLOR = 1;
-
- /*
- * Same as TwoColor, but with inverted top bar. Not so good for Epaper displays
- */
- INVERTED = 2;
-
- /*
- * TFT Full Color Displays (not implemented yet)
- */
- COLOR = 3;
- }
- /*
- * Display Mode
- */
- DisplayMode displaymode = 8;
-
- /*
- * Print first line in pseudo-bold? FALSE is original style, TRUE is bold
- */
- bool heading_bold = 9;
-
- /*
- * Should we wake the screen up on accelerometer detected motion or tap
- */
- bool wake_on_tap_or_motion = 10;
- }
-
- /*
- * Lora Config
- */
- message LoRaConfig {
- enum RegionCode {
- /*
- * Region is not set
- */
- UNSET = 0;
-
- /*
- * United States
- */
- US = 1;
-
- /*
- * European Union 433mhz
- */
- EU_433 = 2;
-
- /*
- * European Union 868mhz
- */
- EU_868 = 3;
-
- /*
- * China
- */
- CN = 4;
-
- /*
- * Japan
- */
- JP = 5;
-
- /*
- * Australia / New Zealand
- */
- ANZ = 6;
-
- /*
- * Korea
- */
- KR = 7;
-
- /*
- * Taiwan
- */
- TW = 8;
-
- /*
- * Russia
- */
- RU = 9;
-
- /*
- * India
- */
- IN = 10;
-
- /*
- * New Zealand 865mhz
- */
- NZ_865 = 11;
-
- /*
- * Thailand
- */
- TH = 12;
-
- /*
- * WLAN Band
- */
- LORA_24 = 13;
-
- /*
- * Ukraine 433mhz
- */
- UA_433 = 14;
-
- /*
- * Ukraine 868mhz
- */
- UA_868 = 15;
-
- /*
- * Malaysia 433mhz
- */
- MY_433 = 16;
-
- /*
- * Malaysia 919mhz
- */
- MY_919 = 17;
-
- /*
- * Singapore 923mhz
- */
- SG_923 = 18;
- }
-
- /*
- * Standard predefined channel settings
- * Note: these mappings must match ModemPreset Choice in the device code.
- */
- enum ModemPreset {
- /*
- * Long Range - Fast
- */
- LONG_FAST = 0;
-
- /*
- * Long Range - Slow
- */
- LONG_SLOW = 1;
-
- /*
- * Very Long Range - Slow
- */
- VERY_LONG_SLOW = 2;
-
- /*
- * Medium Range - Slow
- */
- MEDIUM_SLOW = 3;
-
- /*
- * Medium Range - Fast
- */
- MEDIUM_FAST = 4;
-
- /*
- * Short Range - Slow
- */
- SHORT_SLOW = 5;
-
- /*
- * Short Range - Fast
- */
- SHORT_FAST = 6;
-
- /*
- * Long Range - Moderately Fast
- */
- LONG_MODERATE = 7;
- }
-
- /*
- * When enabled, the `modem_preset` fields will be adhered to, else the `bandwidth`/`spread_factor`/`coding_rate`
- * will be taked from their respective manually defined fields
- */
- bool use_preset = 1;
-
- /*
- * Either modem_config or bandwidth/spreading/coding will be specified - NOT BOTH.
- * As a heuristic: If bandwidth is specified, do not use modem_config.
- * Because protobufs take ZERO space when the value is zero this works out nicely.
- * This value is replaced by bandwidth/spread_factor/coding_rate.
- * If you'd like to experiment with other options add them to MeshRadio.cpp in the device code.
- */
- ModemPreset modem_preset = 2;
-
- /*
- * Bandwidth in MHz
- * Certain bandwidth numbers are 'special' and will be converted to the
- * appropriate floating point value: 31 -> 31.25MHz
- */
- uint32 bandwidth = 3;
-
- /*
- * A number from 7 to 12.
- * Indicates number of chirps per symbol as 1< 7 results in the default
- */
- uint32 hop_limit = 8;
-
- /*
- * Disable TX from the LoRa radio. Useful for hot-swapping antennas and other tests.
- * Defaults to false
- */
- bool tx_enabled = 9;
-
- /*
- * If zero, then use default max legal continuous power (ie. something that won't
- * burn out the radio hardware)
- * In most cases you should use zero here.
- * Units are in dBm.
- */
- int32 tx_power = 10;
-
- /*
- * This controls the actual hardware frequency the radio transmits on.
- * Most users should never need to be exposed to this field/concept.
- * A channel number between 1 and NUM_CHANNELS (whatever the max is in the current region).
- * If ZERO then the rule is "use the old channel name hash based
- * algorithm to derive the channel number")
- * If using the hash algorithm the channel number will be: hash(channel_name) %
- * NUM_CHANNELS (Where num channels depends on the regulatory region).
- */
- uint32 channel_num = 11;
-
- /*
- * If true, duty cycle limits will be exceeded and thus you're possibly not following
- * the local regulations if you're not a HAM.
- * Has no effect if the duty cycle of the used region is 100%.
- */
- bool override_duty_cycle = 12;
-
- /*
- * If true, sets RX boosted gain mode on SX126X based radios
- */
- bool sx126x_rx_boosted_gain = 13;
-
- /*
- * This parameter is for advanced users and licensed HAM radio operators.
- * Ignore Channel Calculation and use this frequency instead. The frequency_offset
- * will still be applied. This will allow you to use out-of-band frequencies.
- * Please respect your local laws and regulations. If you are a HAM, make sure you
- * enable HAM mode and turn off encryption.
- */
- float override_frequency = 14;
-
- /*
- * For testing it is useful sometimes to force a node to never listen to
- * particular other nodes (simulating radio out of range). All nodenums listed
- * in ignore_incoming will have packets they send dropped on receive (by router.cpp)
- */
- repeated uint32 ignore_incoming = 103;
-
- /*
- * If true, the device will not process any packets received via LoRa that passed via MQTT anywhere on the path towards it.
- */
- bool ignore_mqtt = 104;
- }
-
- message BluetoothConfig {
- enum PairingMode {
- /*
- * Device generates a random PIN that will be shown on the screen of the device for pairing
- */
- RANDOM_PIN = 0;
-
- /*
- * Device requires a specified fixed PIN for pairing
- */
- FIXED_PIN = 1;
-
- /*
- * Device requires no PIN for pairing
- */
- NO_PIN = 2;
- }
-
- /*
- * Enable Bluetooth on the device
- */
- bool enabled = 1;
-
- /*
- * Determines the pairing strategy for the device
- */
- PairingMode mode = 2;
-
- /*
- * Specified PIN for PairingMode.FixedPin
- */
- uint32 fixed_pin = 3;
- }
-
- /*
- * Payload Variant
- */
- oneof payload_variant {
- DeviceConfig device = 1;
- PositionConfig position = 2;
- PowerConfig power = 3;
- NetworkConfig network = 4;
- DisplayConfig display = 5;
- LoRaConfig lora = 6;
- BluetoothConfig bluetooth = 7;
- }
-}
diff --git a/proto_def/connection_status.options b/proto_def/connection_status.options
deleted file mode 100644
index d4901dd..0000000
--- a/proto_def/connection_status.options
+++ /dev/null
@@ -1 +0,0 @@
-*WifiConnectionStatus.ssid max_size:33
diff --git a/proto_def/connection_status.proto b/proto_def/connection_status.proto
deleted file mode 100644
index 7551596..0000000
--- a/proto_def/connection_status.proto
+++ /dev/null
@@ -1,120 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "ConnStatusProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-message DeviceConnectionStatus {
- /*
- * WiFi Status
- */
- optional WifiConnectionStatus wifi = 1;
- /*
- * WiFi Status
- */
- optional EthernetConnectionStatus ethernet = 2;
-
- /*
- * Bluetooth Status
- */
- optional BluetoothConnectionStatus bluetooth = 3;
-
- /*
- * Serial Status
- */
- optional SerialConnectionStatus serial = 4;
-}
-
-/*
- * WiFi connection status
- */
-message WifiConnectionStatus {
- /*
- * Connection status
- */
- NetworkConnectionStatus status = 1;
-
- /*
- * WiFi access point SSID
- */
- string ssid = 2;
-
- /*
- * RSSI of wireless connection
- */
- int32 rssi = 3;
-}
-
-/*
- * Ethernet connection status
- */
-message EthernetConnectionStatus {
- /*
- * Connection status
- */
- NetworkConnectionStatus status = 1;
-}
-
-/*
- * Ethernet or WiFi connection status
- */
-message NetworkConnectionStatus {
- /*
- * IP address of device
- */
- fixed32 ip_address = 1;
-
- /*
- * Whether the device has an active connection or not
- */
- bool is_connected = 2;
-
- /*
- * Whether the device has an active connection to an MQTT broker or not
- */
- bool is_mqtt_connected = 3;
-
- /*
- * Whether the device is actively remote syslogging or not
- */
- bool is_syslog_connected = 4;
-}
-
-/*
- * Bluetooth connection status
- */
-message BluetoothConnectionStatus {
- /*
- * The pairing PIN for bluetooth
- */
- uint32 pin = 1;
-
- /*
- * RSSI of bluetooth connection
- */
- int32 rssi = 2;
-
- /*
- * Whether the device has an active connection or not
- */
- bool is_connected = 3;
-}
-
-/*
- * Serial connection status
- */
-message SerialConnectionStatus {
- /*
- * Serial baud rate
- */
- uint32 baud = 1;
-
- /*
- * Whether the device has an active connection or not
- */
- bool is_connected = 2;
-}
diff --git a/proto_def/deviceonly.options b/proto_def/deviceonly.options
deleted file mode 100644
index e9477a0..0000000
--- a/proto_def/deviceonly.options
+++ /dev/null
@@ -1,16 +0,0 @@
-# options for nanopb
-# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
-
-# FIXME - max_count is actually 32 but we save/load this as one long string of preencoded MeshPacket bytes - not a big array in RAM
-*DeviceState.receive_queue max_count:1
-
-*ChannelFile.channels max_count:8
-
-*OEMStore.oem_text max_size:40
-*OEMStore.oem_icon_bits max_size:2048
-*OEMStore.oem_aes_key max_size:32
-
-*DeviceState.node_remote_hardware_pins max_count:12
-
-*NodeInfoLite.channel int_size:8
-*NodeInfoLite.hops_away int_size:8
diff --git a/proto_def/deviceonly.proto b/proto_def/deviceonly.proto
deleted file mode 100644
index eef59a7..0000000
--- a/proto_def/deviceonly.proto
+++ /dev/null
@@ -1,258 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/channel.proto";
-import "meshtastic/localonly.proto";
-import "meshtastic/mesh.proto";
-import "meshtastic/module_config.proto";
-import "meshtastic/telemetry.proto";
-import "nanopb.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "DeviceOnly";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-option (nanopb_fileopt).include = "";
-
-
-/*
- * Position with static location information only for NodeDBLite
- */
-message PositionLite {
- /*
- * The new preferred location encoding, multiply by 1e-7 to get degrees
- * in floating point
- */
- sfixed32 latitude_i = 1;
-
- /*
- * TODO: REPLACE
- */
- sfixed32 longitude_i = 2;
-
- /*
- * In meters above MSL (but see issue #359)
- */
- int32 altitude = 3;
-
- /*
- * This is usually not sent over the mesh (to save space), but it is sent
- * from the phone so that the local device can set its RTC If it is sent over
- * the mesh (because there are devices on the mesh without GPS), it will only
- * be sent by devices which has a hardware GPS clock.
- * seconds since 1970
- */
- fixed32 time = 4;
-
- /*
- * TODO: REPLACE
- */
- Position.LocSource location_source = 5;
-}
-
-message NodeInfoLite {
- /*
- * The node number
- */
- uint32 num = 1;
-
- /*
- * The user info for this node
- */
- User user = 2;
-
- /*
- * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
- * Position.time now indicates the last time we received a POSITION from that node.
- */
- PositionLite position = 3;
-
- /*
- * Returns the Signal-to-noise ratio (SNR) of the last received message,
- * as measured by the receiver. Return SNR of the last received message in dB
- */
- float snr = 4;
-
- /*
- * Set to indicate the last time we received a packet from this node
- */
- fixed32 last_heard = 5;
- /*
- * The latest device metrics for the node.
- */
- DeviceMetrics device_metrics = 6;
-
- /*
- * local channel index we heard that node on. Only populated if its not the default channel.
- */
- uint32 channel = 7;
-
- /*
- * True if we witnessed the node over MQTT instead of LoRA transport
- */
- bool via_mqtt = 8;
-
- /*
- * Number of hops away from us this node is (0 if adjacent)
- */
- uint32 hops_away = 9;
-
- /*
- * True if node is in our favorites list
- * Persists between NodeDB internal clean ups
- */
- bool is_favorite = 10;
-}
-
-/*
- * Font sizes for the device screen
- */
-enum ScreenFonts {
- /*
- * TODO: REPLACE
- */
- FONT_SMALL = 0;
-
- /*
- * TODO: REPLACE
- */
- FONT_MEDIUM = 1;
-
- /*
- * TODO: REPLACE
- */
- FONT_LARGE = 2;
-}
-
-
-/*
- * This message is never sent over the wire, but it is used for serializing DB
- * state to flash in the device code
- * FIXME, since we write this each time we enter deep sleep (and have infinite
- * flash) it would be better to use some sort of append only data structure for
- * the receive queue and use the preferences store for the other stuff
- */
-message DeviceState {
- /*
- * Read only settings/info about this node
- */
- MyNodeInfo my_node = 2;
-
- /*
- * My owner info
- */
- User owner = 3;
-
- /*
- * Received packets saved for delivery to the phone
- */
- repeated MeshPacket receive_queue = 5;
-
- /*
- * A version integer used to invalidate old save files when we make
- * incompatible changes This integer is set at build time and is private to
- * NodeDB.cpp in the device code.
- */
- uint32 version = 8;
-
- /*
- * We keep the last received text message (only) stored in the device flash,
- * so we can show it on the screen.
- * Might be null
- */
- MeshPacket rx_text_message = 7;
-
- /*
- * Used only during development.
- * Indicates developer is testing and changes should never be saved to flash.
- * Deprecated in 2.3.1
- */
- bool no_save = 9 [deprecated = true];
-
- /*
- * Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset.
- */
- bool did_gps_reset = 11;
-
- /*
- * We keep the last received waypoint stored in the device flash,
- * so we can show it on the screen.
- * Might be null
- */
- MeshPacket rx_waypoint = 12;
-
- /*
- * The mesh's nodes with their available gpio pins for RemoteHardware module
- */
- repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13;
-
- /*
- * New lite version of NodeDB to decrease memory footprint
- */
- repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype = "std::vector"];
-}
-
-/*
- * The on-disk saved channels
- */
-message ChannelFile {
- /*
- * The channels our node knows about
- */
- repeated Channel channels = 1;
-
- /*
- * A version integer used to invalidate old save files when we make
- * incompatible changes This integer is set at build time and is private to
- * NodeDB.cpp in the device code.
- */
- uint32 version = 2;
-}
-
-/*
- * This can be used for customizing the firmware distribution. If populated,
- * show a secondary bootup screen with custom logo and text for 2.5 seconds.
- */
-message OEMStore {
- /*
- * The Logo width in Px
- */
- uint32 oem_icon_width = 1;
-
- /*
- * The Logo height in Px
- */
- uint32 oem_icon_height = 2;
-
- /*
- * The Logo in XBM bytechar format
- */
- bytes oem_icon_bits = 3;
-
- /*
- * Use this font for the OEM text.
- */
- ScreenFonts oem_font = 4;
-
- /*
- * Use this font for the OEM text.
- */
- string oem_text = 5;
-
- /*
- * The default device encryption key, 16 or 32 byte
- */
- bytes oem_aes_key = 6;
-
- /*
- * A Preset LocalConfig to apply during factory reset
- */
- LocalConfig oem_local_config = 7;
-
- /*
- * A Preset LocalModuleConfig to apply during factory reset
- */
- LocalModuleConfig oem_local_module_config = 8;
-}
diff --git a/proto_def/localonly.proto b/proto_def/localonly.proto
deleted file mode 100644
index 9694d7b..0000000
--- a/proto_def/localonly.proto
+++ /dev/null
@@ -1,135 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/config.proto";
-import "meshtastic/module_config.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "LocalOnlyProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * Protobuf structures common to apponly.proto and deviceonly.proto
- * This is never sent over the wire, only for local use
- */
-
-message LocalConfig {
- /*
- * The part of the config that is specific to the Device
- */
- Config.DeviceConfig device = 1;
-
- /*
- * The part of the config that is specific to the GPS Position
- */
- Config.PositionConfig position = 2;
-
- /*
- * The part of the config that is specific to the Power settings
- */
- Config.PowerConfig power = 3;
-
- /*
- * The part of the config that is specific to the Wifi Settings
- */
- Config.NetworkConfig network = 4;
-
- /*
- * The part of the config that is specific to the Display
- */
- Config.DisplayConfig display = 5;
-
- /*
- * The part of the config that is specific to the Lora Radio
- */
- Config.LoRaConfig lora = 6;
-
- /*
- * The part of the config that is specific to the Bluetooth settings
- */
- Config.BluetoothConfig bluetooth = 7;
-
- /*
- * A version integer used to invalidate old save files when we make
- * incompatible changes This integer is set at build time and is private to
- * NodeDB.cpp in the device code.
- */
- uint32 version = 8;
-}
-
-message LocalModuleConfig {
- /*
- * The part of the config that is specific to the MQTT module
- */
- ModuleConfig.MQTTConfig mqtt = 1;
-
- /*
- * The part of the config that is specific to the Serial module
- */
- ModuleConfig.SerialConfig serial = 2;
-
- /*
- * The part of the config that is specific to the ExternalNotification module
- */
- ModuleConfig.ExternalNotificationConfig external_notification = 3;
-
- /*
- * The part of the config that is specific to the Store & Forward module
- */
- ModuleConfig.StoreForwardConfig store_forward = 4;
-
- /*
- * The part of the config that is specific to the RangeTest module
- */
- ModuleConfig.RangeTestConfig range_test = 5;
-
- /*
- * The part of the config that is specific to the Telemetry module
- */
- ModuleConfig.TelemetryConfig telemetry = 6;
-
- /*
- * The part of the config that is specific to the Canned Message module
- */
- ModuleConfig.CannedMessageConfig canned_message = 7;
-
- /*
- * The part of the config that is specific to the Audio module
- */
- ModuleConfig.AudioConfig audio = 9;
-
- /*
- * The part of the config that is specific to the Remote Hardware module
- */
- ModuleConfig.RemoteHardwareConfig remote_hardware = 10;
-
- /*
- * The part of the config that is specific to the Neighbor Info module
- */
- ModuleConfig.NeighborInfoConfig neighbor_info = 11;
-
- /*
- * The part of the config that is specific to the Ambient Lighting module
- */
- ModuleConfig.AmbientLightingConfig ambient_lighting = 12;
-
- /*
- * The part of the config that is specific to the Detection Sensor module
- */
- ModuleConfig.DetectionSensorConfig detection_sensor = 13;
-
- /*
- * Paxcounter Config
- */
- ModuleConfig.PaxcounterConfig paxcounter = 14;
-
- /*
- * A version integer used to invalidate old save files when we make
- * incompatible changes This integer is set at build time and is private to
- * NodeDB.cpp in the device code.
- */
- uint32 version = 8;
-}
diff --git a/proto_def/mesh.options b/proto_def/mesh.options
deleted file mode 100644
index aedfe99..0000000
--- a/proto_def/mesh.options
+++ /dev/null
@@ -1,61 +0,0 @@
-# options for nanopb
-# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
-
-*macaddr max_size:6 fixed_length:true # macaddrs
-*id max_size:16 # node id strings
-
-*User.long_name max_size:40
-*User.short_name max_size:5
-
-*RouteDiscovery.route max_count:8
-
-# note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is
-# outside of this envelope
-*Data.payload max_size:237
-
-*NodeInfo.channel int_size:8
-*NodeInfo.hops_away int_size:8
-
-# Big enough for 1.2.28.568032c-d
-*MyNodeInfo.firmware_version max_size:18
-
-*MyNodeInfo.air_period_tx max_count:8
-*MyNodeInfo.air_period_rx max_count:8
-
-# Note: the actual limit (because of header bytes) on the size of encrypted payloads is 251 bytes, but I use 256
-# here because we might need to fill with zeros for padding to encryption block size (16 bytes per block)
-*MeshPacket.encrypted max_size:256
-*MeshPacket.payload_variant anonymous_oneof:true
-*MeshPacket.hop_limit int_size:8
-*MeshPacket.hop_start int_size:8
-*MeshPacket.channel int_size:8
-
-*QueueStatus.res int_size:8
-*QueueStatus.free int_size:8
-*QueueStatus.maxlen int_size:8
-
-*ToRadio.payload_variant anonymous_oneof:true
-
-*FromRadio.payload_variant anonymous_oneof:true
-
-*Routing.variant anonymous_oneof:true
-
-*LogRecord.message max_size:64
-*LogRecord.source max_size:8
-
-# MyMessage.name max_size:40
-# or fixed_length or fixed_count, or max_count
-
-#This value may want to be a few bytes smaller to compensate for the parent fields.
-*Compressed.data max_size:237
-
-*Waypoint.name max_size:30
-*Waypoint.description max_size:100
-
-*NeighborInfo.neighbors max_count:10
-
-*DeviceMetadata.firmware_version max_size:18
-
-*MqttClientProxyMessage.topic max_size:60
-*MqttClientProxyMessage.data max_size:435
-*MqttClientProxyMessage.text max_size:435
diff --git a/proto_def/mesh.proto b/proto_def/mesh.proto
deleted file mode 100644
index 279f222..0000000
--- a/proto_def/mesh.proto
+++ /dev/null
@@ -1,1628 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/channel.proto";
-import "meshtastic/config.proto";
-import "meshtastic/module_config.proto";
-import "meshtastic/portnums.proto";
-import "meshtastic/telemetry.proto";
-import "meshtastic/xmodem.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "MeshProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * a gps position
- */
-message Position {
- /*
- * The new preferred location encoding, multiply by 1e-7 to get degrees
- * in floating point
- */
- sfixed32 latitude_i = 1;
-
- /*
- * TODO: REPLACE
- */
- sfixed32 longitude_i = 2;
-
- /*
- * In meters above MSL (but see issue #359)
- */
- int32 altitude = 3;
-
- /*
- * This is usually not sent over the mesh (to save space), but it is sent
- * from the phone so that the local device can set its time if it is sent over
- * the mesh (because there are devices on the mesh without GPS or RTC).
- * seconds since 1970
- */
- fixed32 time = 4;
-
- /*
- * How the location was acquired: manual, onboard GPS, external (EUD) GPS
- */
- enum LocSource {
- /*
- * TODO: REPLACE
- */
- LOC_UNSET = 0;
-
- /*
- * TODO: REPLACE
- */
- LOC_MANUAL = 1;
-
- /*
- * TODO: REPLACE
- */
- LOC_INTERNAL = 2;
-
- /*
- * TODO: REPLACE
- */
- LOC_EXTERNAL = 3;
- }
-
- /*
- * TODO: REPLACE
- */
- LocSource location_source = 5;
-
- /*
- * How the altitude was acquired: manual, GPS int/ext, etc
- * Default: same as location_source if present
- */
- enum AltSource {
- /*
- * TODO: REPLACE
- */
- ALT_UNSET = 0;
-
- /*
- * TODO: REPLACE
- */
- ALT_MANUAL = 1;
-
- /*
- * TODO: REPLACE
- */
- ALT_INTERNAL = 2;
-
- /*
- * TODO: REPLACE
- */
- ALT_EXTERNAL = 3;
-
- /*
- * TODO: REPLACE
- */
- ALT_BAROMETRIC = 4;
- }
-
- /*
- * TODO: REPLACE
- */
- AltSource altitude_source = 6;
-
- /*
- * Positional timestamp (actual timestamp of GPS solution) in integer epoch seconds
- */
- fixed32 timestamp = 7;
-
- /*
- * Pos. timestamp milliseconds adjustment (rarely available or required)
- */
- int32 timestamp_millis_adjust = 8;
-
- /*
- * HAE altitude in meters - can be used instead of MSL altitude
- */
- sint32 altitude_hae = 9;
-
- /*
- * Geoidal separation in meters
- */
- sint32 altitude_geoidal_separation = 10;
-
- /*
- * Horizontal, Vertical and Position Dilution of Precision, in 1/100 units
- * - PDOP is sufficient for most cases
- * - for higher precision scenarios, HDOP and VDOP can be used instead,
- * in which case PDOP becomes redundant (PDOP=sqrt(HDOP^2 + VDOP^2))
- * TODO: REMOVE/INTEGRATE
- */
- uint32 PDOP = 11;
-
- /*
- * TODO: REPLACE
- */
- uint32 HDOP = 12;
-
- /*
- * TODO: REPLACE
- */
- uint32 VDOP = 13;
-
- /*
- * GPS accuracy (a hardware specific constant) in mm
- * multiplied with DOP to calculate positional accuracy
- * Default: "'bout three meters-ish" :)
- */
- uint32 gps_accuracy = 14;
-
- /*
- * Ground speed in m/s and True North TRACK in 1/100 degrees
- * Clarification of terms:
- * - "track" is the direction of motion (measured in horizontal plane)
- * - "heading" is where the fuselage points (measured in horizontal plane)
- * - "yaw" indicates a relative rotation about the vertical axis
- * TODO: REMOVE/INTEGRATE
- */
- uint32 ground_speed = 15;
-
- /*
- * TODO: REPLACE
- */
- uint32 ground_track = 16;
-
- /*
- * GPS fix quality (from NMEA GxGGA statement or similar)
- */
- uint32 fix_quality = 17;
-
- /*
- * GPS fix type 2D/3D (from NMEA GxGSA statement)
- */
- uint32 fix_type = 18;
-
- /*
- * GPS "Satellites in View" number
- */
- uint32 sats_in_view = 19;
-
- /*
- * Sensor ID - in case multiple positioning sensors are being used
- */
- uint32 sensor_id = 20;
-
- /*
- * Estimated/expected time (in seconds) until next update:
- * - if we update at fixed intervals of X seconds, use X
- * - if we update at dynamic intervals (based on relative movement etc),
- * but "AT LEAST every Y seconds", use Y
- */
- uint32 next_update = 21;
-
- /*
- * A sequence number, incremented with each Position message to help
- * detect lost updates if needed
- */
- uint32 seq_number = 22;
-
- /*
- * Indicates the bits of precision set by the sending node
- */
- uint32 precision_bits = 23;
-}
-
-/*
- * Note: these enum names must EXACTLY match the string used in the device
- * bin/build-all.sh script.
- * Because they will be used to find firmware filenames in the android app for OTA updates.
- * To match the old style filenames, _ is converted to -, p is converted to .
- */
-enum HardwareModel {
- /*
- * TODO: REPLACE
- */
- UNSET = 0;
-
- /*
- * TODO: REPLACE
- */
- TLORA_V2 = 1;
-
- /*
- * TODO: REPLACE
- */
- TLORA_V1 = 2;
-
- /*
- * TODO: REPLACE
- */
- TLORA_V2_1_1P6 = 3;
-
- /*
- * TODO: REPLACE
- */
- TBEAM = 4;
-
- /*
- * The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13
- * (see HELTEC_V2 for the new version).
- */
- HELTEC_V2_0 = 5;
-
- /*
- * TODO: REPLACE
- */
- TBEAM_V0P7 = 6;
-
- /*
- * TODO: REPLACE
- */
- T_ECHO = 7;
-
- /*
- * TODO: REPLACE
- */
- TLORA_V1_1P3 = 8;
-
- /*
- * TODO: REPLACE
- */
- RAK4631 = 9;
-
- /*
- * The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37.
- * Sadly they did not update anything on the silkscreen to identify this board
- */
- HELTEC_V2_1 = 10;
-
- /*
- * Ancient heltec WiFi_Lora_32 board
- */
- HELTEC_V1 = 11;
-
- /*
- * New T-BEAM with ESP32-S3 CPU
- */
- LILYGO_TBEAM_S3_CORE = 12;
-
- /*
- * RAK WisBlock ESP32 core: https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/
- */
- RAK11200 = 13;
-
- /*
- * B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano
- */
- NANO_G1 = 14;
-
- /*
- * TODO: REPLACE
- */
- TLORA_V2_1_1P8 = 15;
-
- /*
- * TODO: REPLACE
- */
- TLORA_T3_S3 = 16;
-
- /*
- * B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer
- */
- NANO_G1_EXPLORER = 17;
-
- /*
- * B&Q Consulting Nano G2 Ultra: https://wiki.uniteng.com/en/meshtastic/nano-g2-ultra
- */
- NANO_G2_ULTRA = 18;
-
- /*
- * LoRAType device: https://loratype.org/
- */
- LORA_TYPE = 19;
-
- /*
- * wiphone https://www.wiphone.io/
- */
- WIPHONE = 20;
-
- /*
- * B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station
- */
- STATION_G1 = 25;
-
- /*
- * RAK11310 (RP2040 + SX1262)
- */
- RAK11310 = 26;
-
- /*
- * Makerfabs SenseLoRA Receiver (RP2040 + RFM96)
- */
- SENSELORA_RP2040 = 27;
-
- /*
- * Makerfabs SenseLoRA Industrial Monitor (ESP32-S3 + RFM96)
- */
- SENSELORA_S3 = 28;
-
- /*
- * Canary Radio Company - CanaryOne: https://canaryradio.io/products/canaryone
- */
- CANARYONE = 29;
-
- /*
- * Waveshare RP2040 LoRa - https://www.waveshare.com/rp2040-lora.htm
- */
- RP2040_LORA = 30;
-
- /*
- * B&Q Consulting Station G2: https://wiki.uniteng.com/en/meshtastic/station-g2
- */
- STATION_G2 = 31;
-
- /*
- * ---------------------------------------------------------------------------
- * Less common/prototype boards listed here (needs one more byte over the air)
- * ---------------------------------------------------------------------------
- */
- LORA_RELAY_V1 = 32;
-
- /*
- * TODO: REPLACE
- */
- NRF52840DK = 33;
-
- /*
- * TODO: REPLACE
- */
- PPR = 34;
-
- /*
- * TODO: REPLACE
- */
- GENIEBLOCKS = 35;
-
- /*
- * TODO: REPLACE
- */
- NRF52_UNKNOWN = 36;
-
- /*
- * TODO: REPLACE
- */
- PORTDUINO = 37;
-
- /*
- * The simulator built into the android app
- */
- ANDROID_SIM = 38;
-
- /*
- * Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics
- */
- DIY_V1 = 39;
-
- /*
- * nRF52840 Dongle : https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle/
- */
- NRF52840_PCA10059 = 40;
-
- /*
- * Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3
- */
- DR_DEV = 41;
-
- /*
- * M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/
- */
- M5STACK = 42;
-
- /*
- * New Heltec LoRA32 with ESP32-S3 CPU
- */
- HELTEC_V3 = 43;
-
- /*
- * New Heltec Wireless Stick Lite with ESP32-S3 CPU
- */
- HELTEC_WSL_V3 = 44;
-
- /*
- * New BETAFPV ELRS Micro TX Module 2.4G with ESP32 CPU
- */
- BETAFPV_2400_TX = 45;
-
- /*
- * BetaFPV ExpressLRS "Nano" TX Module 900MHz with ESP32 CPU
- */
- BETAFPV_900_NANO_TX = 46;
-
- /*
- * Raspberry Pi Pico (W) with Waveshare SX1262 LoRa Node Module
- */
- RPI_PICO = 47;
-
- /*
- * Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT
- * Newer V1.1, version is written on the PCB near the display.
- */
- HELTEC_WIRELESS_TRACKER = 48;
-
- /*
- * Heltec Wireless Paper with ESP32-S3 CPU and E-Ink display
- */
- HELTEC_WIRELESS_PAPER = 49;
-
- /*
- * LilyGo T-Deck with ESP32-S3 CPU, Keyboard and IPS display
- */
- T_DECK = 50;
-
- /*
- * LilyGo T-Watch S3 with ESP32-S3 CPU and IPS display
- */
- T_WATCH_S3 = 51;
-
- /*
- * Bobricius Picomputer with ESP32-S3 CPU, Keyboard and IPS display
- */
- PICOMPUTER_S3 = 52;
-
- /*
- * Heltec HT-CT62 with ESP32-C3 CPU and SX1262 LoRa
- */
- HELTEC_HT62 = 53;
-
- /*
- * EBYTE SPI LoRa module and ESP32-S3
- */
- EBYTE_ESP32_S3 = 54;
-
- /*
- * Waveshare ESP32-S3-PICO with PICO LoRa HAT and 2.9inch e-Ink
- */
- ESP32_S3_PICO = 55;
-
- /*
- * CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom
- * Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible
- * with one cut and one jumper Meshtastic works
- */
- CHATTER_2 = 56;
-
- /*
- * Heltec Wireless Paper, With ESP32-S3 CPU and E-Ink display
- * Older "V1.0" Variant, has no "version sticker"
- * E-Ink model is DEPG0213BNS800
- * Tab on the screen protector is RED
- * Flex connector marking is FPC-7528B
- */
- HELTEC_WIRELESS_PAPER_V1_0 = 57;
-
- /*
- * Heltec Wireless Tracker with ESP32-S3 CPU, built-in GPS, and TFT
- * Older "V1.0" Variant
- */
- HELTEC_WIRELESS_TRACKER_V1_0 = 58;
-
- /*
- * unPhone with ESP32-S3, TFT touchscreen, LSM6DS3TR-C accelerometer and gyroscope
- */
- UNPHONE = 59;
-
- /*
- * Teledatics TD-LORAC NRF52840 based M.2 LoRA module
- * Compatible with the TD-WRLS development board
- */
- TD_LORAC = 60;
-
- /*
- * CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3
- */
- CDEBYTE_EORA_S3 = 61;
-
-/*
- * TWC_MESH_V4
- * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS
- */
- TWC_MESH_V4 = 62;
-
- /*
- * NRF52_PROMICRO_DIY
- * Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS
- */
- NRF52_PROMICRO_DIY = 63;
- /*
- * ------------------------------------------------------------------------------------------------------------------------------------------
- * Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
- * ------------------------------------------------------------------------------------------------------------------------------------------
- */
- PRIVATE_HW = 255;
-}
-
-/*
- * Broadcast when a newly powered mesh node wants to find a node num it can use
- * Sent from the phone over bluetooth to set the user id for the owner of this node.
- * Also sent from nodes to each other when a new node signs on (so all clients can have this info)
- * The algorithm is as follows:
- * when a node starts up, it broadcasts their user and the normal flow is for all
- * other nodes to reply with their User as well (so the new node can build its nodedb)
- * If a node ever receives a User (not just the first broadcast) message where
- * the sender node number equals our node number, that indicates a collision has
- * occurred and the following steps should happen:
- * If the receiving node (that was already in the mesh)'s macaddr is LOWER than the
- * new User who just tried to sign in: it gets to keep its nodenum.
- * We send a broadcast message of OUR User (we use a broadcast so that the other node can
- * receive our message, considering we have the same id - it also serves to let
- * observers correct their nodedb) - this case is rare so it should be okay.
- * If any node receives a User where the macaddr is GTE than their local macaddr,
- * they have been vetoed and should pick a new random nodenum (filtering against
- * whatever it knows about the nodedb) and rebroadcast their User.
- * A few nodenums are reserved and will never be requested:
- * 0xff - broadcast
- * 0 through 3 - for future use
- */
-message User {
- /*
- * A globally unique ID string for this user.
- * In the case of Signal that would mean +16504442323, for the default macaddr derived id it would be !<8 hexidecimal bytes>.
- * Note: app developers are encouraged to also use the following standard
- * node IDs "^all" (for broadcast), "^local" (for the locally connected node)
- */
- string id = 1;
-
- /*
- * A full name for this user, i.e. "Kevin Hester"
- */
- string long_name = 2;
-
- /*
- * A VERY short name, ideally two characters.
- * Suitable for a tiny OLED screen
- */
- string short_name = 3;
-
- /*
- * Deprecated in Meshtastic 2.1.x
- * This is the addr of the radio.
- * Not populated by the phone, but added by the esp32 when broadcasting
- */
- bytes macaddr = 4 [deprecated = true];
-
- /*
- * TBEAM, HELTEC, etc...
- * Starting in 1.2.11 moved to hw_model enum in the NodeInfo object.
- * Apps will still need the string here for older builds
- * (so OTA update can find the right image), but if the enum is available it will be used instead.
- */
- HardwareModel hw_model = 5;
-
- /*
- * In some regions Ham radio operators have different bandwidth limitations than others.
- * If this user is a licensed operator, set this flag.
- * Also, "long_name" should be their licence number.
- */
- bool is_licensed = 6;
-
- /*
- * Indicates that the user's role in the mesh
- */
- Config.DeviceConfig.Role role = 7;
-}
-
-/*
- * A message used in our Dynamic Source Routing protocol (RFC 4728 based)
- */
-message RouteDiscovery {
- /*
- * The list of nodenums this packet has visited so far
- */
- repeated fixed32 route = 1;
-}
-
-/*
- * A Routing control Data packet handled by the routing module
- */
-message Routing {
- /*
- * A failure in delivering a message (usually used for routing control messages, but might be provided in addition to ack.fail_id to provide
- * details on the type of failure).
- */
- enum Error {
- /*
- * This message is not a failure
- */
- NONE = 0;
-
- /*
- * Our node doesn't have a route to the requested destination anymore.
- */
- NO_ROUTE = 1;
-
- /*
- * We received a nak while trying to forward on your behalf
- */
- GOT_NAK = 2;
-
- /*
- * TODO: REPLACE
- */
- TIMEOUT = 3;
-
- /*
- * No suitable interface could be found for delivering this packet
- */
- NO_INTERFACE = 4;
-
- /*
- * We reached the max retransmission count (typically for naive flood routing)
- */
- MAX_RETRANSMIT = 5;
-
- /*
- * No suitable channel was found for sending this packet (i.e. was requested channel index disabled?)
- */
- NO_CHANNEL = 6;
-
- /*
- * The packet was too big for sending (exceeds interface MTU after encoding)
- */
- TOO_LARGE = 7;
-
- /*
- * The request had want_response set, the request reached the destination node, but no service on that node wants to send a response
- * (possibly due to bad channel permissions)
- */
- NO_RESPONSE = 8;
-
- /*
- * Cannot send currently because duty cycle regulations will be violated.
- */
- DUTY_CYCLE_LIMIT = 9;
-
- /*
- * The application layer service on the remote node received your request, but considered your request somehow invalid
- */
- BAD_REQUEST = 32;
-
- /*
- * The application layer service on the remote node received your request, but considered your request not authorized
- * (i.e you did not send the request on the required bound channel)
- */
- NOT_AUTHORIZED = 33;
- }
-
- oneof variant {
- /*
- * A route request going from the requester
- */
- RouteDiscovery route_request = 1;
-
- /*
- * A route reply
- */
- RouteDiscovery route_reply = 2;
-
- /*
- * A failure in delivering a message (usually used for routing control messages, but might be provided
- * in addition to ack.fail_id to provide details on the type of failure).
- */
- Error error_reason = 3;
- }
-}
-
-/*
- * (Formerly called SubPacket)
- * The payload portion fo a packet, this is the actual bytes that are sent
- * inside a radio packet (because from/to are broken out by the comms library)
- */
-message Data {
- /*
- * Formerly named typ and of type Type
- */
- PortNum portnum = 1;
-
- /*
- * TODO: REPLACE
- */
- bytes payload = 2;
-
- /*
- * Not normally used, but for testing a sender can request that recipient
- * responds in kind (i.e. if it received a position, it should unicast back it's position).
- * Note: that if you set this on a broadcast you will receive many replies.
- */
- bool want_response = 3;
-
- /*
- * The address of the destination node.
- * This field is is filled in by the mesh radio device software, application
- * layer software should never need it.
- * RouteDiscovery messages _must_ populate this.
- * Other message types might need to if they are doing multihop routing.
- */
- fixed32 dest = 4;
-
- /*
- * The address of the original sender for this message.
- * This field should _only_ be populated for reliable multihop packets (to keep
- * packets small).
- */
- fixed32 source = 5;
-
- /*
- * Only used in routing or response messages.
- * Indicates the original message ID that this message is reporting failure on. (formerly called original_id)
- */
- fixed32 request_id = 6;
-
- /*
- * If set, this message is intened to be a reply to a previously sent message with the defined id.
- */
- fixed32 reply_id = 7;
-
- /*
- * Defaults to false. If true, then what is in the payload should be treated as an emoji like giving
- * a message a heart or poop emoji.
- */
- fixed32 emoji = 8;
-}
-
-/*
- * Waypoint message, used to share arbitrary locations across the mesh
- */
-message Waypoint {
- /*
- * Id of the waypoint
- */
- uint32 id = 1;
-
- /*
- * latitude_i
- */
- sfixed32 latitude_i = 2;
-
- /*
- * longitude_i
- */
- sfixed32 longitude_i = 3;
-
- /*
- * Time the waypoint is to expire (epoch)
- */
- uint32 expire = 4;
-
- /*
- * If greater than zero, treat the value as a nodenum only allowing them to update the waypoint.
- * If zero, the waypoint is open to be edited by any member of the mesh.
- */
- uint32 locked_to = 5;
-
- /*
- * Name of the waypoint - max 30 chars
- */
- string name = 6;
-
- /*
- * Description of the waypoint - max 100 chars
- */
- string description = 7;
-
- /*
- * Designator icon for the waypoint in the form of a unicode emoji
- */
- fixed32 icon = 8;
-}
-
-/*
- * This message will be proxied over the PhoneAPI for the client to deliver to the MQTT server
- */
-message MqttClientProxyMessage {
- /*
- * The MQTT topic this message will be sent /received on
- */
- string topic = 1;
-
- /*
- * The actual service envelope payload or text for mqtt pub / sub
- */
- oneof payload_variant {
- /*
- * Bytes
- */
- bytes data = 2;
-
- /*
- * Text
- */
- string text = 3;
- }
-
- /*
- * Whether the message should be retained (or not)
- */
- bool retained = 4;
-}
-
-/*
- * A packet envelope sent/received over the mesh
- * only payload_variant is sent in the payload portion of the LORA packet.
- * The other fields are either not sent at all, or sent in the special 16 byte LORA header.
- */
-message MeshPacket {
- /*
- * The priority of this message for sending.
- * Higher priorities are sent first (when managing the transmit queue).
- * This field is never sent over the air, it is only used internally inside of a local device node.
- * API clients (either on the local node or connected directly to the node)
- * can set this parameter if necessary.
- * (values must be <= 127 to keep protobuf field to one byte in size.
- * Detailed background on this field:
- * I noticed a funny side effect of lora being so slow: Usually when making
- * a protocol there isn’t much need to use message priority to change the order
- * of transmission (because interfaces are fairly fast).
- * But for lora where packets can take a few seconds each, it is very important
- * to make sure that critical packets are sent ASAP.
- * In the case of meshtastic that means we want to send protocol acks as soon as possible
- * (to prevent unneeded retransmissions), we want routing messages to be sent next,
- * then messages marked as reliable and finally 'background' packets like periodic position updates.
- * So I bit the bullet and implemented a new (internal - not sent over the air)
- * field in MeshPacket called 'priority'.
- * And the transmission queue in the router object is now a priority queue.
- */
- enum Priority {
- /*
- * Treated as Priority.DEFAULT
- */
- UNSET = 0;
-
- /*
- * TODO: REPLACE
- */
- MIN = 1;
-
- /*
- * Background position updates are sent with very low priority -
- * if the link is super congested they might not go out at all
- */
- BACKGROUND = 10;
-
- /*
- * This priority is used for most messages that don't have a priority set
- */
- DEFAULT = 64;
-
- /*
- * If priority is unset but the message is marked as want_ack,
- * assume it is important and use a slightly higher priority
- */
- RELIABLE = 70;
-
- /*
- * Ack/naks are sent with very high priority to ensure that retransmission
- * stops as soon as possible
- */
- ACK = 120;
-
- /*
- * TODO: REPLACE
- */
- MAX = 127;
- }
-
- /*
- * Identify if this is a delayed packet
- */
- enum Delayed {
- /*
- * If unset, the message is being sent in real time.
- */
- NO_DELAY = 0;
-
- /*
- * The message is delayed and was originally a broadcast
- */
- DELAYED_BROADCAST = 1;
-
- /*
- * The message is delayed and was originally a direct message
- */
- DELAYED_DIRECT = 2;
- }
-
- /*
- * The sending node number.
- * Note: Our crypto implementation uses this field as well.
- * See [crypto](/docs/overview/encryption) for details.
- */
- fixed32 from = 1;
-
- /*
- * The (immediate) destination for this packet
- */
- fixed32 to = 2;
-
- /*
- * (Usually) If set, this indicates the index in the secondary_channels table that this packet was sent/received on.
- * If unset, packet was on the primary channel.
- * A particular node might know only a subset of channels in use on the mesh.
- * Therefore channel_index is inherently a local concept and meaningless to send between nodes.
- * Very briefly, while sending and receiving deep inside the device Router code, this field instead
- * contains the 'channel hash' instead of the index.
- * This 'trick' is only used while the payload_variant is an 'encrypted'.
- */
- uint32 channel = 3;
-
- /*
- * Internally to the mesh radios we will route SubPackets encrypted per [this](docs/developers/firmware/encryption).
- * However, when a particular node has the correct
- * key to decode a particular packet, it will decode the payload into a SubPacket protobuf structure.
- * Software outside of the device nodes will never encounter a packet where
- * "decoded" is not populated (i.e. any encryption/decryption happens before reaching the applications)
- * The numeric IDs for these fields were selected to keep backwards compatibility with old applications.
- */
-
- oneof payload_variant {
- /*
- * TODO: REPLACE
- */
- Data decoded = 4;
-
- /*
- * TODO: REPLACE
- */
- bytes encrypted = 5;
- }
-
- /*
- * A unique ID for this packet.
- * Always 0 for no-ack packets or non broadcast packets (and therefore take zero bytes of space).
- * Otherwise a unique ID for this packet, useful for flooding algorithms.
- * ID only needs to be unique on a _per sender_ basis, and it only
- * needs to be unique for a few minutes (long enough to last for the length of
- * any ACK or the completion of a mesh broadcast flood).
- * Note: Our crypto implementation uses this id as well.
- * See [crypto](/docs/overview/encryption) for details.
- */
- fixed32 id = 6;
-
- /*
- * The time this message was received by the esp32 (secs since 1970).
- * Note: this field is _never_ sent on the radio link itself (to save space) Times
- * are typically not sent over the mesh, but they will be added to any Packet
- * (chain of SubPacket) sent to the phone (so the phone can know exact time of reception)
- */
- fixed32 rx_time = 7;
-
- /*
- * *Never* sent over the radio links.
- * Set during reception to indicate the SNR of this packet.
- * Used to collect statistics on current link quality.
- */
- float rx_snr = 8;
-
- /*
- * If unset treated as zero (no forwarding, send to adjacent nodes only)
- * if 1, allow hopping through one node, etc...
- * For our usecase real world topologies probably have a max of about 3.
- * This field is normally placed into a few of bits in the header.
- */
- uint32 hop_limit = 9;
-
- /*
- * This packet is being sent as a reliable message, we would prefer it to arrive at the destination.
- * We would like to receive a ack packet in response.
- * Broadcasts messages treat this flag specially: Since acks for broadcasts would
- * rapidly flood the channel, the normal ack behavior is suppressed.
- * Instead, the original sender listens to see if at least one node is rebroadcasting this packet (because naive flooding algorithm).
- * If it hears that the odds (given typical LoRa topologies) the odds are very high that every node should eventually receive the message.
- * So FloodingRouter.cpp generates an implicit ack which is delivered to the original sender.
- * If after some time we don't hear anyone rebroadcast our packet, we will timeout and retransmit, using the regular resend logic.
- * Note: This flag is normally sent in a flag bit in the header when sent over the wire
- */
- bool want_ack = 10;
-
- /*
- * The priority of this message for sending.
- * See MeshPacket.Priority description for more details.
- */
- Priority priority = 11;
-
- /*
- * rssi of received packet. Only sent to phone for dispay purposes.
- */
- int32 rx_rssi = 12;
-
- /*
- * Describe if this message is delayed
- */
- Delayed delayed = 13 [deprecated = true];
-
- /*
- * Describes whether this packet passed via MQTT somewhere along the path it currently took.
- */
- bool via_mqtt = 14;
-
- /*
- * Hop limit with which the original packet started. Sent via LoRa using three bits in the unencrypted header.
- * When receiving a packet, the difference between hop_start and hop_limit gives how many hops it traveled.
- */
- uint32 hop_start = 15;
-}
-
-/*
- * Shared constants between device and phone
- */
-enum Constants {
- /*
- * First enum must be zero, and we are just using this enum to
- * pass int constants between two very different environments
- */
- ZERO = 0;
-
- /*
- * From mesh.options
- * note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is
- * outside of this envelope
- */
- DATA_PAYLOAD_LEN = 237;
-}
-
-/*
- * The bluetooth to device link:
- * Old BTLE protocol docs from TODO, merge in above and make real docs...
- * use protocol buffers, and NanoPB
- * messages from device to phone:
- * POSITION_UPDATE (..., time)
- * TEXT_RECEIVED(from, text, time)
- * OPAQUE_RECEIVED(from, payload, time) (for signal messages or other applications)
- * messages from phone to device:
- * SET_MYID(id, human readable long, human readable short) (send down the unique ID
- * string used for this node, a human readable string shown for that id, and a very
- * short human readable string suitable for oled screen) SEND_OPAQUE(dest, payload)
- * (for signal messages or other applications) SEND_TEXT(dest, text) Get all
- * nodes() (returns list of nodes, with full info, last time seen, loc, battery
- * level etc) SET_CONFIG (switches device to a new set of radio params and
- * preshared key, drops all existing nodes, force our node to rejoin this new group)
- * Full information about a node on the mesh
- */
-message NodeInfo {
- /*
- * The node number
- */
- uint32 num = 1;
-
- /*
- * The user info for this node
- */
- User user = 2;
-
- /*
- * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
- * Position.time now indicates the last time we received a POSITION from that node.
- */
- Position position = 3;
-
- /*
- * Returns the Signal-to-noise ratio (SNR) of the last received message,
- * as measured by the receiver. Return SNR of the last received message in dB
- */
- float snr = 4;
-
- /*
- * TODO: REMOVE/INTEGRATE
- * Returns the last measured frequency error.
- * The LoRa receiver estimates the frequency offset between the receiver
- * center frequency and that of the received LoRa signal. This function
- * returns the estimates offset (in Hz) of the last received message.
- * Caution: this measurement is not absolute, but is measured relative to the
- * local receiver's oscillator. Apparent errors may be due to the
- * transmitter, the receiver or both. \return The estimated center frequency
- * offset in Hz of the last received message.
- * int32 frequency_error = 6;
- * enum RouteState {
- * Invalid = 0;
- * Discovering = 1;
- * Valid = 2;
- * }
- * Not needed?
- * RouteState route = 4;
- */
-
- /*
- * TODO: REMOVE/INTEGRATE
- * Not currently used (till full DSR deployment?) Our current preferred node node for routing - might be the same as num if
- * we are adjacent Or zero if we don't yet know a route to this node.
- * fixed32 next_hop = 5;
- */
-
- /*
- * Set to indicate the last time we received a packet from this node
- */
- fixed32 last_heard = 5;
- /*
- * The latest device metrics for the node.
- */
- DeviceMetrics device_metrics = 6;
-
- /*
- * local channel index we heard that node on. Only populated if its not the default channel.
- */
- uint32 channel = 7;
-
- /*
- * True if we witnessed the node over MQTT instead of LoRA transport
- */
- bool via_mqtt = 8;
-
- /*
- * Number of hops away from us this node is (0 if adjacent)
- */
- uint32 hops_away = 9;
-
- /*
- * True if node is in our favorites list
- * Persists between NodeDB internal clean ups
- */
- bool is_favorite = 10;
-}
-
-/*
- * Error codes for critical errors
- * The device might report these fault codes on the screen.
- * If you encounter a fault code, please post on the meshtastic.discourse.group
- * and we'll try to help.
- */
-enum CriticalErrorCode {
- /*
- * TODO: REPLACE
- */
- NONE = 0;
-
- /*
- * A software bug was detected while trying to send lora
- */
- TX_WATCHDOG = 1;
-
- /*
- * A software bug was detected on entry to sleep
- */
- SLEEP_ENTER_WAIT = 2;
-
- /*
- * No Lora radio hardware could be found
- */
- NO_RADIO = 3;
-
- /*
- * Not normally used
- */
- UNSPECIFIED = 4;
-
- /*
- * We failed while configuring a UBlox GPS
- */
- UBLOX_UNIT_FAILED = 5;
-
- /*
- * This board was expected to have a power management chip and it is missing or broken
- */
- NO_AXP192 = 6;
-
- /*
- * The channel tried to set a radio setting which is not supported by this chipset,
- * radio comms settings are now undefined.
- */
- INVALID_RADIO_SETTING = 7;
-
- /*
- * Radio transmit hardware failure. We sent data to the radio chip, but it didn't
- * reply with an interrupt.
- */
- TRANSMIT_FAILED = 8;
-
- /*
- * We detected that the main CPU voltage dropped below the minimum acceptable value
- */
- BROWNOUT = 9;
-
- /* Selftest of SX1262 radio chip failed */
- SX1262_FAILURE = 10;
-
- /*
- * A (likely software but possibly hardware) failure was detected while trying to send packets.
- * If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug
- */
- RADIO_SPI_BUG = 11;
-}
-
-/*
- * Unique local debugging info for this node
- * Note: we don't include position or the user info, because that will come in the
- * Sent to the phone in response to WantNodes.
- */
-message MyNodeInfo {
- /*
- * Tells the phone what our node number is, default starting value is
- * lowbyte of macaddr, but it will be fixed if that is already in use
- */
- uint32 my_node_num = 1;
-
- /*
- * The total number of reboots this node has ever encountered
- * (well - since the last time we discarded preferences)
- */
- uint32 reboot_count = 8;
-
- /*
- * The minimum app version that can talk to this device.
- * Phone/PC apps should compare this to their build number and if too low tell the user they must update their app
- */
- uint32 min_app_version = 11;
-}
-
-/*
- * Debug output from the device.
- * To minimize the size of records inside the device code, if a time/source/level is not set
- * on the message it is assumed to be a continuation of the previously sent message.
- * This allows the device code to use fixed maxlen 64 byte strings for messages,
- * and then extend as needed by emitting multiple records.
- */
-message LogRecord {
- /*
- * Log levels, chosen to match python logging conventions.
- */
- enum Level {
- /*
- * Log levels, chosen to match python logging conventions.
- */
- UNSET = 0;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- CRITICAL = 50;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- ERROR = 40;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- WARNING = 30;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- INFO = 20;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- DEBUG = 10;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- TRACE = 5;
- }
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- string message = 1;
-
- /*
- * Seconds since 1970 - or 0 for unknown/unset
- */
- fixed32 time = 2;
-
- /*
- * Usually based on thread name - if known
- */
- string source = 3;
-
- /*
- * Not yet set
- */
- Level level = 4;
-}
-
-message QueueStatus {
- /* Last attempt to queue status, ErrorCode */
- int32 res = 1;
-
- /* Free entries in the outgoing queue */
- uint32 free = 2;
-
- /* Maximum entries in the outgoing queue */
- uint32 maxlen = 3;
-
- /* What was mesh packet id that generated this response? */
- uint32 mesh_packet_id = 4;
-}
-
-/*
- * Packets from the radio to the phone will appear on the fromRadio characteristic.
- * It will support READ and NOTIFY. When a new packet arrives the device will BLE notify?
- * It will sit in that descriptor until consumed by the phone,
- * at which point the next item in the FIFO will be populated.
- */
-message FromRadio {
- /*
- * The packet id, used to allow the phone to request missing read packets from the FIFO,
- * see our bluetooth docs
- */
- uint32 id = 1;
-
- /*
- * Log levels, chosen to match python logging conventions.
- */
- oneof payload_variant {
- /*
- * Log levels, chosen to match python logging conventions.
- */
- MeshPacket packet = 2;
-
- /*
- * Tells the phone what our node number is, can be -1 if we've not yet joined a mesh.
- * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps.
- */
- MyNodeInfo my_info = 3;
-
- /*
- * One packet is sent for each node in the on radio DB
- * starts over with the first node in our DB
- */
- NodeInfo node_info = 4;
-
- /*
- * Include a part of the config (was: RadioConfig radio)
- */
- Config config = 5;
-
- /*
- * Set to send debug console output over our protobuf stream
- */
- LogRecord log_record = 6;
-
- /*
- * Sent as true once the device has finished sending all of the responses to want_config
- * recipient should check if this ID matches our original request nonce, if
- * not, it means your config responses haven't started yet.
- * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps.
- */
- uint32 config_complete_id = 7;
-
- /*
- * Sent to tell clients the radio has just rebooted.
- * Set to true if present.
- * Not used on all transports, currently just used for the serial console.
- * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps.
- */
- bool rebooted = 8;
-
- /*
- * Include module config
- */
- ModuleConfig moduleConfig = 9;
-
- /*
- * One packet is sent for each channel
- */
- Channel channel = 10;
-
- /*
- * Queue status info
- */
- QueueStatus queueStatus = 11;
-
- /*
- * File Transfer Chunk
- */
- XModem xmodemPacket = 12;
-
- /*
- * Device metadata message
- */
- DeviceMetadata metadata = 13;
-
- /*
- * MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT)
- */
- MqttClientProxyMessage mqttClientProxyMessage = 14;
- }
-}
-
-/*
- * Packets/commands to the radio will be written (reliably) to the toRadio characteristic.
- * Once the write completes the phone can assume it is handled.
- */
-message ToRadio {
- /*
- * Log levels, chosen to match python logging conventions.
- */
- oneof payload_variant {
- /*
- * Send this packet on the mesh
- */
- MeshPacket packet = 1;
-
- /*
- * Phone wants radio to send full node db to the phone, This is
- * typically the first packet sent to the radio when the phone gets a
- * bluetooth connection. The radio will respond by sending back a
- * MyNodeInfo, a owner, a radio config and a series of
- * FromRadio.node_infos, and config_complete
- * the integer you write into this field will be reported back in the
- * config_complete_id response this allows clients to never be confused by
- * a stale old partially sent config.
- */
- uint32 want_config_id = 3;
-
- /*
- * Tell API server we are disconnecting now.
- * This is useful for serial links where there is no hardware/protocol based notification that the client has dropped the link.
- * (Sending this message is optional for clients)
- */
- bool disconnect = 4;
-
- /*
- * File Transfer Chunk
- */
-
- XModem xmodemPacket = 5;
-
- /*
- * MQTT Client Proxy Message (for client / phone subscribed to MQTT sending to device)
- */
- MqttClientProxyMessage mqttClientProxyMessage = 6;
-
- /*
- * Heartbeat message (used to keep the device connection awake on serial)
- */
- Heartbeat heartbeat = 7;
- }
-}
-
-/*
- * Compressed message payload
- */
-message Compressed {
- /*
- * PortNum to determine the how to handle the compressed payload.
- */
- PortNum portnum = 1;
-
- /*
- * Compressed data.
- */
- bytes data = 2;
-}
-
-/*
- * Full info on edges for a single node
- */
-message NeighborInfo {
- /*
- * The node ID of the node sending info on its neighbors
- */
- uint32 node_id = 1;
- /*
- * Field to pass neighbor info for the next sending cycle
- */
- uint32 last_sent_by_id = 2;
-
- /*
- * Broadcast interval of the represented node (in seconds)
- */
- uint32 node_broadcast_interval_secs = 3;
- /*
- * The list of out edges from this node
- */
- repeated Neighbor neighbors = 4;
-}
-
-/*
- * A single edge in the mesh
- */
-message Neighbor {
- /*
- * Node ID of neighbor
- */
- uint32 node_id = 1;
-
- /*
- * SNR of last heard message
- */
- float snr = 2;
-
- /*
- * Reception time (in secs since 1970) of last message that was last sent by this ID.
- * Note: this is for local storage only and will not be sent out over the mesh.
- */
- fixed32 last_rx_time = 3;
-
- /*
- * Broadcast interval of this neighbor (in seconds).
- * Note: this is for local storage only and will not be sent out over the mesh.
- */
- uint32 node_broadcast_interval_secs = 4;
-}
-
-/*
- * Device metadata response
- */
-message DeviceMetadata {
- /*
- * Device firmware version string
- */
- string firmware_version = 1;
-
- /*
- * Device state version
- */
- uint32 device_state_version = 2;
-
- /*
- * Indicates whether the device can shutdown CPU natively or via power management chip
- */
- bool canShutdown = 3;
-
- /*
- * Indicates that the device has native wifi capability
- */
- bool hasWifi = 4;
-
- /*
- * Indicates that the device has native bluetooth capability
- */
- bool hasBluetooth = 5;
-
- /*
- * Indicates that the device has an ethernet peripheral
- */
- bool hasEthernet = 6;
-
- /*
- * Indicates that the device's role in the mesh
- */
- Config.DeviceConfig.Role role = 7;
-
- /*
- * Indicates the device's current enabled position flags
- */
- uint32 position_flags = 8;
-
- /*
- * Device hardware model
- */
- HardwareModel hw_model = 9;
-
- /*
- * Has Remote Hardware enabled
- */
- bool hasRemoteHardware = 10;
-}
-
-/*
- * A heartbeat message is sent to the node from the client to keep the connection alive.
- * This is currently only needed to keep serial connections alive, but can be used by any PhoneAPI.
- */
-message Heartbeat {}
-
-/*
- * RemoteHardwarePins associated with a node
- */
-message NodeRemoteHardwarePin {
- /*
- * The node_num exposing the available gpio pin
- */
- uint32 node_num = 1;
-
- /*
- * The the available gpio pin for usage with RemoteHardware module
- */
- RemoteHardwarePin pin = 2;
-}
diff --git a/proto_def/meshtastic/admin.options b/proto_def/meshtastic/admin.options
index 1d582e2..4804d89 100644
--- a/proto_def/meshtastic/admin.options
+++ b/proto_def/meshtastic/admin.options
@@ -8,5 +8,5 @@
*AdminMessage.get_ringtone_response max_size:231
*HamParameters.call_sign max_size:8
-*HamParameters.short_name max_size:6
-*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16
\ No newline at end of file
+*HamParameters.short_name max_size:5
+*NodeRemoteHardwarePinsResponse.node_remote_hardware_pins max_count:16
diff --git a/proto_def/meshtastic/admin.proto b/proto_def/meshtastic/admin.proto
index 3b227d8..9ddf856 100644
--- a/proto_def/meshtastic/admin.proto
+++ b/proto_def/meshtastic/admin.proto
@@ -241,6 +241,11 @@ message AdminMessage {
*/
string delete_file_request = 22;
+ /*
+ * Set zero and offset for scale chips
+ */
+ uint32 set_scale = 23;
+
/*
* Set the owner for this node
*/
diff --git a/proto_def/meshtastic/atak.options b/proto_def/meshtastic/atak.options
index c341400..6baa7ea 100644
--- a/proto_def/meshtastic/atak.options
+++ b/proto_def/meshtastic/atak.options
@@ -3,4 +3,5 @@
*Status.battery int_size:8
*PLI.course int_size:16
*GeoChat.message max_size:200
-*GeoChat.to max_size:120
\ No newline at end of file
+*GeoChat.to max_size:120
+*GeoChat.to_callsign max_size:120
diff --git a/proto_def/meshtastic/atak.proto b/proto_def/meshtastic/atak.proto
index 199f06b..ccde335 100644
--- a/proto_def/meshtastic/atak.proto
+++ b/proto_def/meshtastic/atak.proto
@@ -56,6 +56,11 @@ message GeoChat {
* Uid recipient of the message
*/
optional string to = 2;
+
+ /*
+ * Callsign of the recipient for the message
+ */
+ optional string to_callsign = 3;
}
/*
diff --git a/proto_def/meshtastic/channel.proto b/proto_def/meshtastic/channel.proto
index d2ec81a..16c8c19 100644
--- a/proto_def/meshtastic/channel.proto
+++ b/proto_def/meshtastic/channel.proto
@@ -96,6 +96,12 @@ message ModuleSettings {
* Bits of precision for the location sent in position packets.
*/
uint32 position_precision = 1;
+
+ /*
+ * Controls whether or not the phone / clients should mute the current channel
+ * Useful for noisy public channels you don't necessarily want to disable
+ */
+ bool is_client_muted = 2;
}
/*
diff --git a/proto_def/meshtastic/config.options b/proto_def/meshtastic/config.options
index 4490f08..22dcc88 100644
--- a/proto_def/meshtastic/config.options
+++ b/proto_def/meshtastic/config.options
@@ -1,3 +1,6 @@
+# longest current is 45 chars, plan with a bit of buffer
+*DeviceConfig.tzdef max_size:65
+
*NetworkConfig.wifi_ssid max_size:33
*NetworkConfig.wifi_psk max_size:65
*NetworkConfig.ntp_server max_size:33
diff --git a/proto_def/meshtastic/config.proto b/proto_def/meshtastic/config.proto
index 5b93649..50c7539 100644
--- a/proto_def/meshtastic/config.proto
+++ b/proto_def/meshtastic/config.proto
@@ -37,8 +37,10 @@ message Config {
/*
* Description: Combination of both ROUTER and CLIENT. Not for mobile devices.
+ * Deprecated in v2.3.15 because improper usage is impacting public meshes: Use ROUTER or CLIENT instead.
*/
- ROUTER_CLIENT = 3;
+
+ ROUTER_CLIENT = 3 [deprecated = true];
/*
* Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
@@ -180,6 +182,16 @@ message Config {
* Disables the triple-press of user button to enable or disable GPS
*/
bool disable_triple_click = 10;
+
+ /*
+ * POSIX Timezone definition string from https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv.
+ */
+ string tzdef = 11;
+
+ /*
+ * If true, disable the default blinking LED (LED_PIN) behavior on the device
+ */
+ bool led_heartbeat_disabled = 12;
}
/*
@@ -350,30 +362,28 @@ message Config {
*/
message PowerConfig {
/*
- * If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
- * we should try to minimize power consumption as much as possible.
- * YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
- * Advanced Option
+ * Description: Will sleep everything as much as possible, for the tracker and sensor role this will also include the lora radio.
+ * Don't use this setting if you want to use your device with the phone apps or are using a device without a user button.
+ * Technical Details: Works for ESP32 devices and NRF52 devices in the Sensor or Tracker roles
*/
bool is_power_saving = 1;
/*
- * If non-zero, the device will fully power off this many seconds after external power is removed.
+ * Description: If non-zero, the device will fully power off this many seconds after external power is removed.
*/
uint32 on_battery_shutdown_after_secs = 2;
/*
* Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
* Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
- * Should be set to floating point value between 2 and 4
- * Fixes issues on Heltec v2
+ * https://meshtastic.org/docs/configuration/radio/power/#adc-multiplier-override
+ * Should be set to floating point value between 2 and 6
*/
float adc_multiplier_override = 3;
/*
- * Wait Bluetooth Seconds
- * The number of seconds for to wait before turning off BLE in No Bluetooth states
- * 0 for default of 1 minute
+ * Description: The number of seconds for to wait before turning off BLE in No Bluetooth states
+ * Technical Details: ESP32 Only 0 for default of 1 minute
*/
uint32 wait_bluetooth_secs = 4;
@@ -386,17 +396,14 @@ message Config {
uint32 sds_secs = 6;
/*
- * Light Sleep Seconds
- * In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
- * ESP32 Only
- * 0 for default of 300
+ * Description: In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
+ * Technical Details: ESP32 Only 0 for default of 300
*/
uint32 ls_secs = 7;
/*
- * Minimum Wake Seconds
- * While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
- * 0 for default of 10 seconds
+ * Description: While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
+ * Technical Details: ESP32 Only 0 for default of 10 seconds
*/
uint32 min_wake_secs = 8;
@@ -404,6 +411,12 @@ message Config {
* I2C address of INA_2XX to use for reading device battery voltage
*/
uint32 device_battery_ina_address = 9;
+
+ /*
+ * If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled.
+ * Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options.
+ */
+ uint64 powermon_enables = 32;
}
/*
@@ -645,6 +658,53 @@ message Config {
* Should we wake the screen up on accelerometer detected motion or tap
*/
bool wake_on_tap_or_motion = 10;
+
+ enum CompassOrientation {
+ /*
+ * The compass and the display are in the same orientation.
+ */
+ DEGREES_0 = 0;
+
+ /*
+ * Rotate the compass by 90 degrees.
+ */
+ DEGREES_90 = 1;
+
+ /*
+ * Rotate the compass by 180 degrees.
+ */
+ DEGREES_180 = 2;
+
+ /*
+ * Rotate the compass by 270 degrees.
+ */
+ DEGREES_270 = 3;
+
+ /*
+ * Don't rotate the compass, but invert the result.
+ */
+ DEGREES_0_INVERTED = 4;
+
+ /*
+ * Rotate the compass by 90 degrees and invert.
+ */
+ DEGREES_90_INVERTED = 5;
+
+ /*
+ * Rotate the compass by 180 degrees and invert.
+ */
+ DEGREES_180_INVERTED = 6;
+
+ /*
+ * Rotate the compass by 270 degrees and invert.
+ */
+ DEGREES_270_INVERTED = 7;
+ }
+
+ /*
+ * Indicates how to rotate or invert the compass output to accurate display on the display.
+ */
+ CompassOrientation compass_orientation = 11;
}
/*
@@ -938,6 +998,11 @@ message Config {
* Specified PIN for PairingMode.FixedPin
*/
uint32 fixed_pin = 3;
+
+ /*
+ * Enables device (serial style logs) over Bluetooth
+ */
+ bool device_logging_enabled = 4;
}
/*
diff --git a/proto_def/meshtastic/deviceonly.proto b/proto_def/meshtastic/deviceonly.proto
index 2929559..eef59a7 100644
--- a/proto_def/meshtastic/deviceonly.proto
+++ b/proto_def/meshtastic/deviceonly.proto
@@ -16,6 +16,117 @@ option java_package = "com.geeksville.mesh";
option swift_prefix = "";
option (nanopb_fileopt).include = "";
+
+/*
+ * Position with static location information only for NodeDBLite
+ */
+message PositionLite {
+ /*
+ * The new preferred location encoding, multiply by 1e-7 to get degrees
+ * in floating point
+ */
+ sfixed32 latitude_i = 1;
+
+ /*
+ * TODO: REPLACE
+ */
+ sfixed32 longitude_i = 2;
+
+ /*
+ * In meters above MSL (but see issue #359)
+ */
+ int32 altitude = 3;
+
+ /*
+ * This is usually not sent over the mesh (to save space), but it is sent
+ * from the phone so that the local device can set its RTC If it is sent over
+ * the mesh (because there are devices on the mesh without GPS), it will only
+ * be sent by devices which has a hardware GPS clock.
+ * seconds since 1970
+ */
+ fixed32 time = 4;
+
+ /*
+ * TODO: REPLACE
+ */
+ Position.LocSource location_source = 5;
+}
+
+message NodeInfoLite {
+ /*
+ * The node number
+ */
+ uint32 num = 1;
+
+ /*
+ * The user info for this node
+ */
+ User user = 2;
+
+ /*
+ * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
+ * Position.time now indicates the last time we received a POSITION from that node.
+ */
+ PositionLite position = 3;
+
+ /*
+ * Returns the Signal-to-noise ratio (SNR) of the last received message,
+ * as measured by the receiver. Return SNR of the last received message in dB
+ */
+ float snr = 4;
+
+ /*
+ * Set to indicate the last time we received a packet from this node
+ */
+ fixed32 last_heard = 5;
+ /*
+ * The latest device metrics for the node.
+ */
+ DeviceMetrics device_metrics = 6;
+
+ /*
+ * local channel index we heard that node on. Only populated if its not the default channel.
+ */
+ uint32 channel = 7;
+
+ /*
+ * True if we witnessed the node over MQTT instead of LoRA transport
+ */
+ bool via_mqtt = 8;
+
+ /*
+ * Number of hops away from us this node is (0 if adjacent)
+ */
+ uint32 hops_away = 9;
+
+ /*
+ * True if node is in our favorites list
+ * Persists between NodeDB internal clean ups
+ */
+ bool is_favorite = 10;
+}
+
+/*
+ * Font sizes for the device screen
+ */
+enum ScreenFonts {
+ /*
+ * TODO: REPLACE
+ */
+ FONT_SMALL = 0;
+
+ /*
+ * TODO: REPLACE
+ */
+ FONT_MEDIUM = 1;
+
+ /*
+ * TODO: REPLACE
+ */
+ FONT_LARGE = 2;
+}
+
+
/*
* This message is never sent over the wire, but it is used for serializing DB
* state to flash in the device code
@@ -83,95 +194,6 @@ message DeviceState {
repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype = "std::vector"];
}
-message NodeInfoLite {
- /*
- * The node number
- */
- uint32 num = 1;
-
- /*
- * The user info for this node
- */
- User user = 2;
-
- /*
- * This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
- * Position.time now indicates the last time we received a POSITION from that node.
- */
- PositionLite position = 3;
-
- /*
- * Returns the Signal-to-noise ratio (SNR) of the last received message,
- * as measured by the receiver. Return SNR of the last received message in dB
- */
- float snr = 4;
-
- /*
- * Set to indicate the last time we received a packet from this node
- */
- fixed32 last_heard = 5;
- /*
- * The latest device metrics for the node.
- */
- DeviceMetrics device_metrics = 6;
-
- /*
- * local channel index we heard that node on. Only populated if its not the default channel.
- */
- uint32 channel = 7;
-
- /*
- * True if we witnessed the node over MQTT instead of LoRA transport
- */
- bool via_mqtt = 8;
-
- /*
- * Number of hops away from us this node is (0 if adjacent)
- */
- uint32 hops_away = 9;
-
- /*
- * True if node is in our favorites list
- * Persists between NodeDB internal clean ups
- */
- bool is_favorite = 10;
-}
-
-/*
- * Position with static location information only for NodeDBLite
- */
-message PositionLite {
- /*
- * The new preferred location encoding, multiply by 1e-7 to get degrees
- * in floating point
- */
- sfixed32 latitude_i = 1;
-
- /*
- * TODO: REPLACE
- */
- sfixed32 longitude_i = 2;
-
- /*
- * In meters above MSL (but see issue #359)
- */
- int32 altitude = 3;
-
- /*
- * This is usually not sent over the mesh (to save space), but it is sent
- * from the phone so that the local device can set its RTC If it is sent over
- * the mesh (because there are devices on the mesh without GPS), it will only
- * be sent by devices which has a hardware GPS clock.
- * seconds since 1970
- */
- fixed32 time = 4;
-
- /*
- * TODO: REPLACE
- */
- Position.LocSource location_source = 5;
-}
-
/*
* The on-disk saved channels
*/
@@ -189,26 +211,6 @@ message ChannelFile {
uint32 version = 2;
}
-/*
- * TODO: REPLACE
- */
-enum ScreenFonts {
- /*
- * TODO: REPLACE
- */
- FONT_SMALL = 0;
-
- /*
- * TODO: REPLACE
- */
- FONT_MEDIUM = 1;
-
- /*
- * TODO: REPLACE
- */
- FONT_LARGE = 2;
-}
-
/*
* This can be used for customizing the firmware distribution. If populated,
* show a secondary bootup screen with custom logo and text for 2.5 seconds.
diff --git a/proto_def/meshtastic/mesh.options b/proto_def/meshtastic/mesh.options
index aedfe99..1ae14d6 100644
--- a/proto_def/meshtastic/mesh.options
+++ b/proto_def/meshtastic/mesh.options
@@ -43,6 +43,8 @@
*LogRecord.message max_size:64
*LogRecord.source max_size:8
+*FileInfo.file_name max_size:228
+
# MyMessage.name max_size:40
# or fixed_length or fixed_count, or max_count
@@ -59,3 +61,7 @@
*MqttClientProxyMessage.topic max_size:60
*MqttClientProxyMessage.data max_size:435
*MqttClientProxyMessage.text max_size:435
+
+*ChunkedPayload.chunk_count int_size:16
+*ChunkedPayload.chunk_index int_size:16
+*ChunkedPayload.payload_chunk max_size:228
diff --git a/proto_def/meshtastic/mesh.proto b/proto_def/meshtastic/mesh.proto
index d59c8b2..bb12854 100644
--- a/proto_def/meshtastic/mesh.proto
+++ b/proto_def/meshtastic/mesh.proto
@@ -319,6 +319,26 @@ enum HardwareModel {
*/
LORA_TYPE = 19;
+ /*
+ * wiphone https://www.wiphone.io/
+ */
+ WIPHONE = 20;
+
+ /*
+ * WIO Tracker WM1110 family from Seeed Studio. Includes wio-1110-tracker and wio-1110-sdk
+ */
+ WIO_WM1110 = 21;
+
+ /*
+ * RAK2560 Solar base station based on RAK4630
+ */
+ RAK2560 = 22;
+
+ /*
+ * Heltec HRU-3601: https://heltec.org/project/hru-3601/
+ */
+ HELTEC_HRU_3601 = 23;
+
/*
* B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station
*/
@@ -504,6 +524,40 @@ enum HardwareModel {
*/
UNPHONE = 59;
+ /*
+ * Teledatics TD-LORAC NRF52840 based M.2 LoRA module
+ * Compatible with the TD-WRLS development board
+ */
+ TD_LORAC = 60;
+
+ /*
+ * CDEBYTE EoRa-S3 board using their own MM modules, clone of LILYGO T3S3
+ */
+ CDEBYTE_EORA_S3 = 61;
+
+ /*
+ * TWC_MESH_V4
+ * Adafruit NRF52840 feather express with SX1262, SSD1306 OLED and NEO6M GPS
+ */
+ TWC_MESH_V4 = 62;
+
+ /*
+ * NRF52_PROMICRO_DIY
+ * Promicro NRF52840 with SX1262/LLCC68, SSD1306 OLED and NEO6M GPS
+ */
+ NRF52_PROMICRO_DIY = 63;
+
+ /*
+ * RadioMaster 900 Bandit Nano, https://www.radiomasterrc.com/products/bandit-nano-expresslrs-rf-module
+ * ESP32-D0WDQ6 With SX1276/SKY66122, SSD1306 OLED and No GPS
+ */
+ RADIOMASTER_900_BANDIT_NANO = 64;
+
+ /*
+ * Heltec Capsule Sensor V3 with ESP32-S3 CPU, Portable LoRa device that can replace GNSS modules or sensors
+ */
+ HELTEC_CAPSULE_SENSOR_V3 = 65;
+
/*
* ------------------------------------------------------------------------------------------------------------------------------------------
* Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits.
@@ -1405,9 +1459,29 @@ message FromRadio {
* MQTT Client Proxy Message (device sending to client / phone for publishing to MQTT)
*/
MqttClientProxyMessage mqttClientProxyMessage = 14;
+
+ /*
+ * File system manifest messages
+ */
+ FileInfo fileInfo = 15;
}
}
+/*
+ * Individual File info for the device
+ */
+message FileInfo {
+ /*
+ * The fully qualified path of the file
+ */
+ string file_name = 1;
+
+ /*
+ * The size of the file in bytes
+ */
+ uint32 size_bytes = 2;
+}
+
/*
* Packets/commands to the radio will be written (reliably) to the toRadio characteristic.
* Once the write completes the phone can assume it is handled.
@@ -1599,3 +1673,58 @@ message NodeRemoteHardwarePin {
*/
RemoteHardwarePin pin = 2;
}
+
+message ChunkedPayload {
+ /*
+ * The ID of the entire payload
+ */
+ uint32 payload_id = 1;
+
+ /*
+ * The total number of chunks in the payload
+ */
+ uint32 chunk_count = 2;
+
+ /*
+ * The current chunk index in the total
+ */
+ uint32 chunk_index = 3;
+
+ /*
+ * The binary data of the current chunk
+ */
+ bytes payload_chunk = 4;
+}
+
+/*
+ * Wrapper message for broken repeated oneof support
+ */
+message resend_chunks {
+ repeated uint32 chunks = 1;
+}
+
+/*
+ * Responses to a ChunkedPayload request
+ */
+message ChunkedPayloadResponse {
+ /*
+ * The ID of the entire payload
+ */
+ uint32 payload_id = 1;
+
+ oneof payload_variant {
+ /*
+ * Request to transfer chunked payload
+ */
+ bool request_transfer = 2;
+
+ /*
+ * Accept the transfer chunked payload
+ */
+ bool accept_transfer = 3;
+ /*
+ * Request missing indexes in the chunked payload
+ */
+ resend_chunks resend_chunks = 4;
+ }
+}
diff --git a/proto_def/meshtastic/module_config.proto b/proto_def/meshtastic/module_config.proto
index 36a2b4b..8215e01 100644
--- a/proto_def/meshtastic/module_config.proto
+++ b/proto_def/meshtastic/module_config.proto
@@ -254,6 +254,17 @@ message ModuleConfig {
*/
uint32 paxcounter_update_interval = 2;
+
+ /*
+ * WiFi RSSI threshold. Defaults to -80
+ */
+ int32 wifi_threshold = 3;
+
+ /*
+ * BLE RSSI threshold. Defaults to -80
+ */
+ int32 ble_threshold = 4;
+
}
/*
diff --git a/proto_def/meshtastic/powermon.proto b/proto_def/meshtastic/powermon.proto
new file mode 100644
index 0000000..7e23bc4
--- /dev/null
+++ b/proto_def/meshtastic/powermon.proto
@@ -0,0 +1,52 @@
+syntax = "proto3";
+
+option csharp_namespace = "Meshtastic.Protobufs";
+option go_package = "github.com/meshtastic/go/generated";
+option java_outer_classname = "PowerMonProtos";
+option java_package = "com.geeksville.mesh";
+option swift_prefix = "";
+
+package meshtastic;
+
+/* Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs).
+But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us)
+*/
+message PowerMon {
+ /* Any significant power changing event in meshtastic should be tagged with a powermon state transition.
+ If you are making new meshtastic features feel free to add new entries at the end of this definition.
+ */
+ enum State {
+ None = 0;
+
+ CPU_DeepSleep = 0x01;
+ CPU_LightSleep = 0x02;
+
+ /*
+ The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only
+ occasionally. In cases where that rail has multiple devices on it we usually want to have logging on
+ the state of that rail as an independent record.
+ For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen.
+
+ The log messages will be short and complete (see PowerMon.Event in the protobufs for details).
+ something like "S:PM:C,0x00001234,REASON" where the hex number is the bitmask of all current states.
+ (We use a bitmask for states so that if a log message gets lost it won't be fatal)
+ */
+ Vext1_On = 0x04;
+
+ Lora_RXOn = 0x08;
+ Lora_TXOn = 0x10;
+ Lora_RXActive = 0x20;
+ BT_On = 0x40;
+ LED_On = 0x80;
+
+ Screen_On = 0x100;
+ Screen_Drawing = 0x200;
+ Wifi_On = 0x400;
+
+ /*
+ GPS is actively trying to find our location
+ See GPSPowerState for more details
+ */
+ GPS_Active = 0x800;
+ }
+}
\ No newline at end of file
diff --git a/proto_def/meshtastic/telemetry.options b/proto_def/meshtastic/telemetry.options
index 6c80df9..72aba92 100644
--- a/proto_def/meshtastic/telemetry.options
+++ b/proto_def/meshtastic/telemetry.options
@@ -1,4 +1,5 @@
# options for nanopb
# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
-
+*EnvironmentMetrics.iaq int_size:16
+*EnvironmentMetrics.wind_direction int_size:16
\ No newline at end of file
diff --git a/proto_def/meshtastic/telemetry.proto b/proto_def/meshtastic/telemetry.proto
index a822c5d..f23d8fb 100644
--- a/proto_def/meshtastic/telemetry.proto
+++ b/proto_def/meshtastic/telemetry.proto
@@ -31,6 +31,11 @@ message DeviceMetrics {
* Percent of airtime for transmission used within the last hour.
*/
float air_util_tx = 4;
+
+ /*
+ * How long the device has been running since the last reboot (in seconds)
+ */
+ uint32 uptime_seconds = 5;
}
/*
@@ -66,6 +71,53 @@ message EnvironmentMetrics {
* Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
*/
float current = 6;
+
+ /*
+ * relative scale IAQ value as measured by Bosch BME680 . value 0-500.
+ * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
+ */
+ uint32 iaq = 7;
+
+ /*
+ * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
+ */
+ float distance = 8;
+
+ /*
+ * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
+ */
+ float lux = 9;
+
+ /*
+ * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
+ */
+ float white_lux = 10;
+
+ /*
+ * Infrared lux
+ */
+ float ir_lux = 11;
+
+ /*
+ * Ultraviolet lux
+ */
+ float uv_lux = 12;
+
+ /*
+ * Wind direction in degrees
+ * 0 degrees = North, 90 = East, etc...
+ */
+ uint32 wind_direction = 13;
+
+ /*
+ * Wind speed in m/s
+ */
+ float wind_speed = 14;
+
+ /*
+ * Weight in KG
+ */
+ float weight = 15;
}
/*
@@ -283,4 +335,69 @@ enum TelemetrySensorType {
* BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280)
*/
BMP085 = 15;
+
+ /*
+ * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
+ */
+ RCWL9620 = 16;
+
+ /*
+ * Sensirion High accuracy temperature and humidity
+ */
+ SHT4X = 17;
+
+ /*
+ * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
+ */
+ VEML7700 = 18;
+
+ /*
+ * MLX90632 non-contact IR temperature sensor.
+ */
+ MLX90632 = 19;
+
+ /*
+ * TI OPT3001 Ambient Light Sensor
+ */
+ OPT3001 = 20;
+
+ /*
+ * Lite On LTR-390UV-01 UV Light Sensor
+ */
+ LTR390UV = 21;
+
+ /*
+ * AMS TSL25911FN RGB Light Sensor
+ */
+ TSL25911FN = 22;
+
+ /*
+ * AHT10 Integrated temperature and humidity sensor
+ */
+ AHT10 = 23;
+
+ /*
+ * DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction)
+ */
+ DFROBOT_LARK = 24;
+
+ /*
+ * NAU7802 Scale Chip or compatible
+ */
+ NAU7802 = 25;
+}
+
+/*
+ * NAU7802 Telemetry configuration, for saving to flash
+ */
+message Nau7802Config {
+ /*
+ * The offset setting for the NAU7802
+ */
+ int32 zeroOffset = 1;
+
+ /*
+ * The calibration factor for the NAU7802
+ */
+ float calibrationFactor = 2;
}
diff --git a/proto_def/module_config.options b/proto_def/module_config.options
deleted file mode 100644
index 68aba7c..0000000
--- a/proto_def/module_config.options
+++ /dev/null
@@ -1,28 +0,0 @@
-*CannedMessageConfig.allow_input_source max_size:16
-
-*MQTTConfig.address max_size:64
-*MQTTConfig.username max_size:64
-*MQTTConfig.password max_size:64
-*MQTTConfig.root max_size:32
-
-*AudioConfig.ptt_pin int_size:8
-*AudioConfig.i2s_ws int_size:8
-*AudioConfig.i2s_sd int_size:8
-*AudioConfig.i2s_din int_size:8
-*AudioConfig.i2s_sck int_size:8
-
-*ExternalNotificationConfig.output_vibra int_size:8
-*ExternalNotificationConfig.output_buzzer int_size:8
-*ExternalNotificationConfig.nag_timeout int_size:16
-
-*RemoteHardwareConfig.available_pins max_count:4
-*RemoteHardwarePin.name max_size:15
-*RemoteHardwarePin.gpio_pin int_size:8
-
-*AmbientLightingConfig.current int_size:8
-*AmbientLightingConfig.red int_size:8
-*AmbientLightingConfig.green int_size:8
-*AmbientLightingConfig.blue int_size:8
-
-*DetectionSensorConfig.monitor_pin int_size:8
-*DetectionSensorConfig.name max_size:20
diff --git a/proto_def/module_config.proto b/proto_def/module_config.proto
deleted file mode 100644
index 8215e01..0000000
--- a/proto_def/module_config.proto
+++ /dev/null
@@ -1,802 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "ModuleConfigProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * Module Config
- */
-message ModuleConfig {
- /*
- * MQTT Client Config
- */
- message MQTTConfig {
- /*
- * If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as
- * is_uplink_enabled or is_downlink_enabled.
- */
- bool enabled = 1;
-
- /*
- * The server to use for our MQTT global message gateway feature.
- * If not set, the default server will be used
- */
- string address = 2;
-
- /*
- * MQTT username to use (most useful for a custom MQTT server).
- * If using a custom server, this will be honoured even if empty.
- * If using the default server, this will only be honoured if set, otherwise the device will use the default username
- */
- string username = 3;
-
- /*
- * MQTT password to use (most useful for a custom MQTT server).
- * If using a custom server, this will be honoured even if empty.
- * If using the default server, this will only be honoured if set, otherwise the device will use the default password
- */
- string password = 4;
-
- /*
- * Whether to send encrypted or decrypted packets to MQTT.
- * This parameter is only honoured if you also set server
- * (the default official mqtt.meshtastic.org server can handle encrypted packets)
- * Decrypted packets may be useful for external systems that want to consume meshtastic packets
- */
- bool encryption_enabled = 5;
-
- /*
- * Whether to send / consume json packets on MQTT
- */
- bool json_enabled = 6;
-
- /*
- * If true, we attempt to establish a secure connection using TLS
- */
- bool tls_enabled = 7;
-
- /*
- * The root topic to use for MQTT messages. Default is "msh".
- * This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs
- */
- string root = 8;
-
- /*
- * If true, we can use the connected phone / client to proxy messages to MQTT instead of a direct connection
- */
- bool proxy_to_client_enabled = 9;
-
- /*
- * If true, we will periodically report unencrypted information about our node to a map via MQTT
- */
- bool map_reporting_enabled = 10;
-
- /*
- * Settings for reporting information about our node to a map via MQTT
- */
- MapReportSettings map_report_settings = 11;
- }
-
- /*
- * Settings for reporting unencrypted information about our node to a map via MQTT
- */
- message MapReportSettings {
- /*
- * How often we should report our info to the map (in seconds)
- */
- uint32 publish_interval_secs = 1;
-
- /*
- * Bits of precision for the location sent (default of 32 is full precision).
- */
- uint32 position_precision = 2;
- }
-
- /*
- * RemoteHardwareModule Config
- */
- message RemoteHardwareConfig {
- /*
- * Whether the Module is enabled
- */
- bool enabled = 1;
-
- /*
- * Whether the Module allows consumers to read / write to pins not defined in available_pins
- */
- bool allow_undefined_pin_access = 2;
-
- /*
- * Exposes the available pins to the mesh for reading and writing
- */
- repeated RemoteHardwarePin available_pins = 3;
- }
-
- /*
- * NeighborInfoModule Config
- */
- message NeighborInfoConfig {
- /*
- * Whether the Module is enabled
- */
- bool enabled = 1;
-
- /*
- * Interval in seconds of how often we should try to send our
- * Neighbor Info to the mesh
- */
- uint32 update_interval = 2;
- }
-
- /*
- * Detection Sensor Module Config
- */
- message DetectionSensorConfig {
- /*
- * Whether the Module is enabled
- */
- bool enabled = 1;
-
- /*
- * Interval in seconds of how often we can send a message to the mesh when a state change is detected
- */
- uint32 minimum_broadcast_secs = 2;
-
- /*
- * Interval in seconds of how often we should send a message to the mesh with the current state regardless of changes
- * When set to 0, only state changes will be broadcasted
- * Works as a sort of status heartbeat for peace of mind
- */
- uint32 state_broadcast_secs = 3;
- /*
- * Send ASCII bell with alert message
- * Useful for triggering ext. notification on bell
- */
- bool send_bell = 4;
-
- /*
- * Friendly name used to format message sent to mesh
- * Example: A name "Motion" would result in a message "Motion detected"
- * Maximum length of 20 characters
- */
- string name = 5;
-
- /*
- * GPIO pin to monitor for state changes
- */
- uint32 monitor_pin = 6;
-
- /*
- * Whether or not the GPIO pin state detection is triggered on HIGH (1)
- * Otherwise LOW (0)
- */
- bool detection_triggered_high = 7;
-
- /*
- * Whether or not use INPUT_PULLUP mode for GPIO pin
- * Only applicable if the board uses pull-up resistors on the pin
- */
- bool use_pullup = 8;
- }
-
- /*
- * Audio Config for codec2 voice
- */
- message AudioConfig {
- /*
- * Baudrate for codec2 voice
- */
- enum Audio_Baud {
- CODEC2_DEFAULT = 0;
- CODEC2_3200 = 1;
- CODEC2_2400 = 2;
- CODEC2_1600 = 3;
- CODEC2_1400 = 4;
- CODEC2_1300 = 5;
- CODEC2_1200 = 6;
- CODEC2_700 = 7;
- CODEC2_700B = 8;
- }
-
- /*
- * Whether Audio is enabled
- */
- bool codec2_enabled = 1;
-
- /*
- * PTT Pin
- */
- uint32 ptt_pin = 2;
-
- /*
- * The audio sample rate to use for codec2
- */
- Audio_Baud bitrate = 3;
-
- /*
- * I2S Word Select
- */
- uint32 i2s_ws = 4;
-
- /*
- * I2S Data IN
- */
- uint32 i2s_sd = 5;
-
- /*
- * I2S Data OUT
- */
- uint32 i2s_din = 6;
-
- /*
- * I2S Clock
- */
- uint32 i2s_sck = 7;
- }
-
- /*
- * Config for the Paxcounter Module
- */
- message PaxcounterConfig {
- /*
- * Enable the Paxcounter Module
- */
- bool enabled = 1;
-
- /*
- * Interval in seconds of how often we should try to send our
- * metrics to the mesh
- */
-
- uint32 paxcounter_update_interval = 2;
-
- /*
- * WiFi RSSI threshold. Defaults to -80
- */
- int32 wifi_threshold = 3;
-
- /*
- * BLE RSSI threshold. Defaults to -80
- */
- int32 ble_threshold = 4;
-
- }
-
- /*
- * Serial Config
- */
- message SerialConfig {
- /*
- * TODO: REPLACE
- */
- enum Serial_Baud {
- BAUD_DEFAULT = 0;
- BAUD_110 = 1;
- BAUD_300 = 2;
- BAUD_600 = 3;
- BAUD_1200 = 4;
- BAUD_2400 = 5;
- BAUD_4800 = 6;
- BAUD_9600 = 7;
- BAUD_19200 = 8;
- BAUD_38400 = 9;
- BAUD_57600 = 10;
- BAUD_115200 = 11;
- BAUD_230400 = 12;
- BAUD_460800 = 13;
- BAUD_576000 = 14;
- BAUD_921600 = 15;
- }
-
- /*
- * TODO: REPLACE
- */
- enum Serial_Mode {
- DEFAULT = 0;
- SIMPLE = 1;
- PROTO = 2;
- TEXTMSG = 3;
- NMEA = 4;
- // NMEA messages specifically tailored for CalTopo
- CALTOPO = 5;
- }
-
- /*
- * Preferences for the SerialModule
- */
- bool enabled = 1;
-
- /*
- * TODO: REPLACE
- */
- bool echo = 2;
-
- /*
- * RX pin (should match Arduino gpio pin number)
- */
- uint32 rxd = 3;
-
- /*
- * TX pin (should match Arduino gpio pin number)
- */
- uint32 txd = 4;
-
- /*
- * Serial baud rate
- */
- Serial_Baud baud = 5;
-
- /*
- * TODO: REPLACE
- */
- uint32 timeout = 6;
-
- /*
- * Mode for serial module operation
- */
- Serial_Mode mode = 7;
-
- /*
- * Overrides the platform's defacto Serial port instance to use with Serial module config settings
- * This is currently only usable in output modes like NMEA / CalTopo and may behave strangely or not work at all in other modes
- * Existing logging over the Serial Console will still be present
- */
- bool override_console_serial_port = 8;
- }
-
- /*
- * External Notifications Config
- */
- message ExternalNotificationConfig {
- /*
- * Enable the ExternalNotificationModule
- */
- bool enabled = 1;
-
- /*
- * When using in On/Off mode, keep the output on for this many
- * milliseconds. Default 1000ms (1 second).
- */
- uint32 output_ms = 2;
-
- /*
- * Define the output pin GPIO setting Defaults to
- * EXT_NOTIFY_OUT if set for the board.
- * In standalone devices this pin should drive the LED to match the UI.
- */
- uint32 output = 3;
-
- /*
- * Optional: Define a secondary output pin for a vibra motor
- * This is used in standalone devices to match the UI.
- */
- uint32 output_vibra = 8;
-
- /*
- * Optional: Define a tertiary output pin for an active buzzer
- * This is used in standalone devices to to match the UI.
- */
- uint32 output_buzzer = 9;
-
- /*
- * IF this is true, the 'output' Pin will be pulled active high, false
- * means active low.
- */
- bool active = 4;
-
- /*
- * True: Alert when a text message arrives (output)
- */
- bool alert_message = 5;
-
- /*
- * True: Alert when a text message arrives (output_vibra)
- */
- bool alert_message_vibra = 10;
-
- /*
- * True: Alert when a text message arrives (output_buzzer)
- */
- bool alert_message_buzzer = 11;
-
- /*
- * True: Alert when the bell character is received (output)
- */
- bool alert_bell = 6;
-
- /*
- * True: Alert when the bell character is received (output_vibra)
- */
- bool alert_bell_vibra = 12;
-
- /*
- * True: Alert when the bell character is received (output_buzzer)
- */
- bool alert_bell_buzzer = 13;
-
- /*
- * use a PWM output instead of a simple on/off output. This will ignore
- * the 'output', 'output_ms' and 'active' settings and use the
- * device.buzzer_gpio instead.
- */
- bool use_pwm = 7;
-
- /*
- * The notification will toggle with 'output_ms' for this time of seconds.
- * Default is 0 which means don't repeat at all. 60 would mean blink
- * and/or beep for 60 seconds
- */
- uint32 nag_timeout = 14;
-
- /*
- * When true, enables devices with native I2S audio output to use the RTTTL over speaker like a buzzer
- * T-Watch S3 and T-Deck for example have this capability
- */
- bool use_i2s_as_buzzer = 15;
- }
-
- /*
- * Store and Forward Module Config
- */
- message StoreForwardConfig {
- /*
- * Enable the Store and Forward Module
- */
- bool enabled = 1;
-
- /*
- * TODO: REPLACE
- */
- bool heartbeat = 2;
-
- /*
- * TODO: REPLACE
- */
- uint32 records = 3;
-
- /*
- * TODO: REPLACE
- */
- uint32 history_return_max = 4;
-
- /*
- * TODO: REPLACE
- */
- uint32 history_return_window = 5;
- }
-
- /*
- * Preferences for the RangeTestModule
- */
- message RangeTestConfig {
- /*
- * Enable the Range Test Module
- */
- bool enabled = 1;
-
- /*
- * Send out range test messages from this node
- */
- uint32 sender = 2;
-
- /*
- * Bool value indicating that this node should save a RangeTest.csv file.
- * ESP32 Only
- */
- bool save = 3;
- }
-
- /*
- * Configuration for both device and environment metrics
- */
- message TelemetryConfig {
- /*
- * Interval in seconds of how often we should try to send our
- * device metrics to the mesh
- */
- uint32 device_update_interval = 1;
-
- /*
- * Interval in seconds of how often we should try to send our
- * environment measurements to the mesh
- */
-
- uint32 environment_update_interval = 2;
-
- /*
- * Preferences for the Telemetry Module (Environment)
- * Enable/Disable the telemetry measurement module measurement collection
- */
- bool environment_measurement_enabled = 3;
-
- /*
- * Enable/Disable the telemetry measurement module on-device display
- */
- bool environment_screen_enabled = 4;
-
- /*
- * We'll always read the sensor in Celsius, but sometimes we might want to
- * display the results in Fahrenheit as a "user preference".
- */
- bool environment_display_fahrenheit = 5;
-
- /*
- * Enable/Disable the air quality metrics
- */
- bool air_quality_enabled = 6;
-
- /*
- * Interval in seconds of how often we should try to send our
- * air quality metrics to the mesh
- */
- uint32 air_quality_interval = 7;
-
- /*
- * Interval in seconds of how often we should try to send our
- * air quality metrics to the mesh
- */
- bool power_measurement_enabled = 8;
-
- /*
- * Interval in seconds of how often we should try to send our
- * air quality metrics to the mesh
- */
- uint32 power_update_interval = 9;
-
- /*
- * Interval in seconds of how often we should try to send our
- * air quality metrics to the mesh
- */
- bool power_screen_enabled = 10;
- }
-
- /*
- * TODO: REPLACE
- */
- message CannedMessageConfig {
- /*
- * TODO: REPLACE
- */
- enum InputEventChar {
- /*
- * TODO: REPLACE
- */
- NONE = 0;
-
- /*
- * TODO: REPLACE
- */
- UP = 17;
-
- /*
- * TODO: REPLACE
- */
- DOWN = 18;
-
- /*
- * TODO: REPLACE
- */
- LEFT = 19;
-
- /*
- * TODO: REPLACE
- */
- RIGHT = 20;
-
- /*
- * '\n'
- */
- SELECT = 10;
-
- /*
- * TODO: REPLACE
- */
- BACK = 27;
-
- /*
- * TODO: REPLACE
- */
- CANCEL = 24;
- }
-
- /*
- * Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating.
- */
- bool rotary1_enabled = 1;
-
- /*
- * GPIO pin for rotary encoder A port.
- */
- uint32 inputbroker_pin_a = 2;
-
- /*
- * GPIO pin for rotary encoder B port.
- */
- uint32 inputbroker_pin_b = 3;
-
- /*
- * GPIO pin for rotary encoder Press port.
- */
- uint32 inputbroker_pin_press = 4;
-
- /*
- * Generate input event on CW of this kind.
- */
- InputEventChar inputbroker_event_cw = 5;
-
- /*
- * Generate input event on CCW of this kind.
- */
- InputEventChar inputbroker_event_ccw = 6;
-
- /*
- * Generate input event on Press of this kind.
- */
- InputEventChar inputbroker_event_press = 7;
-
- /*
- * Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker.
- */
- bool updown1_enabled = 8;
-
- /*
- * Enable/disable CannedMessageModule.
- */
- bool enabled = 9;
-
- /*
- * Input event origin accepted by the canned message module.
- * Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any"
- */
- string allow_input_source = 10;
-
- /*
- * CannedMessageModule also sends a bell character with the messages.
- * ExternalNotificationModule can benefit from this feature.
- */
- bool send_bell = 11;
- }
-
- /*
- Ambient Lighting Module - Settings for control of onboard LEDs to allow users to adjust the brightness levels and respective color levels.
- Initially created for the RAK14001 RGB LED module.
- */
- message AmbientLightingConfig {
- /*
- * Sets LED to on or off.
- */
- bool led_state = 1;
-
- /*
- * Sets the current for the LED output. Default is 10.
- */
- uint32 current = 2;
-
- /*
- * Sets the red LED level. Values are 0-255.
- */
- uint32 red = 3;
-
- /*
- * Sets the green LED level. Values are 0-255.
- */
- uint32 green = 4;
-
- /*
- * Sets the blue LED level. Values are 0-255.
- */
- uint32 blue = 5;
- }
-
- /*
- * TODO: REPLACE
- */
- oneof payload_variant {
- /*
- * TODO: REPLACE
- */
- MQTTConfig mqtt = 1;
-
- /*
- * TODO: REPLACE
- */
- SerialConfig serial = 2;
-
- /*
- * TODO: REPLACE
- */
- ExternalNotificationConfig external_notification = 3;
-
- /*
- * TODO: REPLACE
- */
- StoreForwardConfig store_forward = 4;
-
- /*
- * TODO: REPLACE
- */
- RangeTestConfig range_test = 5;
-
- /*
- * TODO: REPLACE
- */
- TelemetryConfig telemetry = 6;
-
- /*
- * TODO: REPLACE
- */
- CannedMessageConfig canned_message = 7;
-
- /*
- * TODO: REPLACE
- */
- AudioConfig audio = 8;
-
- /*
- * TODO: REPLACE
- */
- RemoteHardwareConfig remote_hardware = 9;
-
- /*
- * TODO: REPLACE
- */
- NeighborInfoConfig neighbor_info = 10;
-
- /*
- * TODO: REPLACE
- */
- AmbientLightingConfig ambient_lighting = 11;
-
- /*
- * TODO: REPLACE
- */
- DetectionSensorConfig detection_sensor = 12;
-
- /*
- * TODO: REPLACE
- */
- PaxcounterConfig paxcounter = 13;
- }
-}
-
-/*
- * A GPIO pin definition for remote hardware module
- */
-message RemoteHardwarePin {
- /*
- * GPIO Pin number (must match Arduino)
- */
- uint32 gpio_pin = 1;
-
- /*
- * Name for the GPIO pin (i.e. Front gate, mailbox, etc)
- */
- string name = 2;
-
- /*
- * Type of GPIO access available to consumers on the mesh
- */
- RemoteHardwarePinType type = 3;
-}
-
-enum RemoteHardwarePinType {
- /*
- * Unset/unused
- */
- UNKNOWN = 0;
-
- /*
- * GPIO pin can be read (if it is high / low)
- */
- DIGITAL_READ = 1;
-
- /*
- * GPIO pin can be written to (high / low)
- */
- DIGITAL_WRITE = 2;
-}
diff --git a/proto_def/mqtt.options b/proto_def/mqtt.options
deleted file mode 100644
index 591e898..0000000
--- a/proto_def/mqtt.options
+++ /dev/null
@@ -1,8 +0,0 @@
-*ServiceEnvelope.packet type:FT_POINTER
-*ServiceEnvelope.channel_id type:FT_POINTER
-*ServiceEnvelope.gateway_id type:FT_POINTER
-
-*MapReport.long_name max_size:40
-*MapReport.short_name max_size:5
-*MapReport.firmware_version max_size:18
-*MapReport.num_online_local_nodes int_size:16
\ No newline at end of file
diff --git a/proto_def/mqtt.proto b/proto_def/mqtt.proto
deleted file mode 100644
index 2dbc820..0000000
--- a/proto_def/mqtt.proto
+++ /dev/null
@@ -1,106 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-import "meshtastic/config.proto";
-import "meshtastic/mesh.proto";
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "MQTTProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * This message wraps a MeshPacket with extra metadata about the sender and how it arrived.
- */
-message ServiceEnvelope {
- /*
- * The (probably encrypted) packet
- */
- MeshPacket packet = 1;
-
- /*
- * The global channel ID it was sent on
- */
- string channel_id = 2;
-
- /*
- * The sending gateway node ID. Can we use this to authenticate/prevent fake
- * nodeid impersonation for senders? - i.e. use gateway/mesh id (which is authenticated) + local node id as
- * the globally trusted nodenum
- */
- string gateway_id = 3;
-}
-
-/*
- * Information about a node intended to be reported unencrypted to a map using MQTT.
- */
-message MapReport {
- /*
- * A full name for this user, i.e. "Kevin Hester"
- */
- string long_name = 1;
-
- /*
- * A VERY short name, ideally two characters.
- * Suitable for a tiny OLED screen
- */
- string short_name = 2;
-
- /*
- * Role of the node that applies specific settings for a particular use-case
- */
- Config.DeviceConfig.Role role = 3;
-
- /*
- * Hardware model of the node, i.e. T-Beam, Heltec V3, etc...
- */
- HardwareModel hw_model = 4;
-
- /*
- * Device firmware version string
- */
- string firmware_version = 5;
-
- /*
- * The region code for the radio (US, CN, EU433, etc...)
- */
- Config.LoRaConfig.RegionCode region = 6;
-
- /*
- * Modem preset used by the radio (LongFast, MediumSlow, etc...)
- */
- Config.LoRaConfig.ModemPreset modem_preset = 7;
-
- /*
- * Whether the node has a channel with default PSK and name (LongFast, MediumSlow, etc...)
- * and it uses the default frequency slot given the region and modem preset.
- */
- bool has_default_channel = 8;
-
- /*
- * Latitude: multiply by 1e-7 to get degrees in floating point
- */
- sfixed32 latitude_i = 9;
-
- /*
- * Longitude: multiply by 1e-7 to get degrees in floating point
- */
- sfixed32 longitude_i = 10;
-
- /*
- * Altitude in meters above MSL
- */
- int32 altitude = 11;
-
- /*
- * Indicates the bits of precision for latitude and longitude set by the sending node
- */
- uint32 position_precision = 12;
-
- /*
- * Number of online nodes (heard in the last 2 hours) this node has in its list that were received locally (not via MQTT)
- */
- uint32 num_online_local_nodes = 13;
-}
diff --git a/proto_def/paxcount.proto b/proto_def/paxcount.proto
deleted file mode 100644
index 47b2639..0000000
--- a/proto_def/paxcount.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "PaxcountProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * TODO: REPLACE
- */
-message Paxcount {
- /*
- * seen Wifi devices
- */
- uint32 wifi = 1;
-
- /*
- * Seen BLE devices
- */
- uint32 ble = 2;
-
- /*
- * Uptime in seconds
- */
- uint32 uptime = 3;
-}
diff --git a/proto_def/portnums.proto b/proto_def/portnums.proto
deleted file mode 100644
index 5808eb7..0000000
--- a/proto_def/portnums.proto
+++ /dev/null
@@ -1,216 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "Portnums";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * For any new 'apps' that run on the device or via sister apps on phones/PCs they should pick and use a
- * unique 'portnum' for their application.
- * If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to this
- * master table.
- * PortNums should be assigned in the following range:
- * 0-63 Core Meshtastic use, do not use for third party apps
- * 64-127 Registered 3rd party apps, send in a pull request that adds a new entry to portnums.proto to register your application
- * 256-511 Use one of these portnums for your private applications that you don't want to register publically
- * All other values are reserved.
- * Note: This was formerly a Type enum named 'typ' with the same id #
- * We have change to this 'portnum' based scheme for specifying app handlers for particular payloads.
- * This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically.
- */
-enum PortNum {
- /*
- * Deprecated: do not use in new code (formerly called OPAQUE)
- * A message sent from a device outside of the mesh, in a form the mesh does not understand
- * NOTE: This must be 0, because it is documented in IMeshService.aidl to be so
- * ENCODING: binary undefined
- */
- UNKNOWN_APP = 0;
-
- /*
- * A simple UTF-8 text message, which even the little micros in the mesh
- * can understand and show on their screen eventually in some circumstances
- * even signal might send messages in this form (see below)
- * ENCODING: UTF-8 Plaintext (?)
- */
- TEXT_MESSAGE_APP = 1;
-
- /*
- * Reserved for built-in GPIO/example app.
- * See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number
- * ENCODING: Protobuf
- */
- REMOTE_HARDWARE_APP = 2;
-
- /*
- * The built-in position messaging app.
- * Payload is a Position message.
- * ENCODING: Protobuf
- */
- POSITION_APP = 3;
-
- /*
- * The built-in user info app.
- * Payload is a User message.
- * ENCODING: Protobuf
- */
- NODEINFO_APP = 4;
-
- /*
- * Protocol control packets for mesh protocol use.
- * Payload is a Routing message.
- * ENCODING: Protobuf
- */
- ROUTING_APP = 5;
-
- /*
- * Admin control packets.
- * Payload is a AdminMessage message.
- * ENCODING: Protobuf
- */
- ADMIN_APP = 6;
-
- /*
- * Compressed TEXT_MESSAGE payloads.
- * ENCODING: UTF-8 Plaintext (?) with Unishox2 Compression
- * NOTE: The Device Firmware converts a TEXT_MESSAGE_APP to TEXT_MESSAGE_COMPRESSED_APP if the compressed
- * payload is shorter. There's no need for app developers to do this themselves. Also the firmware will decompress
- * any incoming TEXT_MESSAGE_COMPRESSED_APP payload and convert to TEXT_MESSAGE_APP.
- */
- TEXT_MESSAGE_COMPRESSED_APP = 7;
-
- /*
- * Waypoint payloads.
- * Payload is a Waypoint message.
- * ENCODING: Protobuf
- */
- WAYPOINT_APP = 8;
-
- /*
- * Audio Payloads.
- * Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now
- * ENCODING: codec2 audio frames
- * NOTE: audio frames contain a 3 byte header (0xc0 0xde 0xc2) and a one byte marker for the decompressed bitrate.
- * This marker comes from the 'moduleConfig.audio.bitrate' enum minus one.
- */
- AUDIO_APP = 9;
-
- /*
- * Same as Text Message but originating from Detection Sensor Module.
- * NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9
- */
- DETECTION_SENSOR_APP = 10;
-
- /*
- * Provides a 'ping' service that replies to any packet it receives.
- * Also serves as a small example module.
- * ENCODING: ASCII Plaintext
- */
- REPLY_APP = 32;
-
- /*
- * Used for the python IP tunnel feature
- * ENCODING: IP Packet. Handled by the python API, firmware ignores this one and pases on.
- */
- IP_TUNNEL_APP = 33;
-
- /*
- * Paxcounter lib included in the firmware
- * ENCODING: protobuf
- */
- PAXCOUNTER_APP = 34;
-
- /*
- * Provides a hardware serial interface to send and receive from the Meshtastic network.
- * Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic
- * network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network.
- * Maximum packet size of 240 bytes.
- * Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp.
- * ENCODING: binary undefined
- */
- SERIAL_APP = 64;
-
- /*
- * STORE_FORWARD_APP (Work in Progress)
- * Maintained by Jm Casler (MC Hamster) : jm@casler.org
- * ENCODING: Protobuf
- */
- STORE_FORWARD_APP = 65;
-
- /*
- * Optional port for messages for the range test module.
- * ENCODING: ASCII Plaintext
- * NOTE: This portnum traffic is not sent to the public MQTT starting at firmware version 2.2.9
- */
- RANGE_TEST_APP = 66;
-
- /*
- * Provides a format to send and receive telemetry data from the Meshtastic network.
- * Maintained by Charles Crossan (crossan007) : crossan007@gmail.com
- * ENCODING: Protobuf
- */
- TELEMETRY_APP = 67;
-
- /*
- * Experimental tools for estimating node position without a GPS
- * Maintained by Github user a-f-G-U-C (a Meshtastic contributor)
- * Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS
- * ENCODING: arrays of int64 fields
- */
- ZPS_APP = 68;
-
- /*
- * Used to let multiple instances of Linux native applications communicate
- * as if they did using their LoRa chip.
- * Maintained by GitHub user GUVWAF.
- * Project files at https://github.com/GUVWAF/Meshtasticator
- * ENCODING: Protobuf (?)
- */
- SIMULATOR_APP = 69;
-
- /*
- * Provides a traceroute functionality to show the route a packet towards
- * a certain destination would take on the mesh.
- * ENCODING: Protobuf
- */
- TRACEROUTE_APP = 70;
-
- /*
- * Aggregates edge info for the network by sending out a list of each node's neighbors
- * ENCODING: Protobuf
- */
- NEIGHBORINFO_APP = 71;
-
- /*
- * ATAK Plugin
- * Portnum for payloads from the official Meshtastic ATAK plugin
- */
- ATAK_PLUGIN = 72;
-
- /*
- * Provides unencrypted information about a node for consumption by a map via MQTT
- */
- MAP_REPORT_APP = 73;
-
- /*
- * Private applications should use portnums >= 256.
- * To simplify initial development and testing you can use "PRIVATE_APP"
- * in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh))
- */
- PRIVATE_APP = 256;
-
- /*
- * ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder
- * ENCODING: libcotshrink
- */
- ATAK_FORWARDER = 257;
-
- /*
- * Currently we limit port nums to no higher than this value
- */
- MAX = 511;
-}
diff --git a/proto_def/remote_hardware.proto b/proto_def/remote_hardware.proto
deleted file mode 100644
index ba4a693..0000000
--- a/proto_def/remote_hardware.proto
+++ /dev/null
@@ -1,75 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "RemoteHardware";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * An example app to show off the module system. This message is used for
- * REMOTE_HARDWARE_APP PortNums.
- * Also provides easy remote access to any GPIO.
- * In the future other remote hardware operations can be added based on user interest
- * (i.e. serial output, spi/i2c input/output).
- * FIXME - currently this feature is turned on by default which is dangerous
- * because no security yet (beyond the channel mechanism).
- * It should be off by default and then protected based on some TBD mechanism
- * (a special channel once multichannel support is included?)
- */
-message HardwareMessage {
- /*
- * TODO: REPLACE
- */
- enum Type {
- /*
- * Unset/unused
- */
- UNSET = 0;
-
- /*
- * Set gpio gpios based on gpio_mask/gpio_value
- */
- WRITE_GPIOS = 1;
-
- /*
- * We are now interested in watching the gpio_mask gpios.
- * If the selected gpios change, please broadcast GPIOS_CHANGED.
- * Will implicitly change the gpios requested to be INPUT gpios.
- */
- WATCH_GPIOS = 2;
-
- /*
- * The gpios listed in gpio_mask have changed, the new values are listed in gpio_value
- */
- GPIOS_CHANGED = 3;
-
- /*
- * Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated
- */
- READ_GPIOS = 4;
-
- /*
- * A reply to READ_GPIOS. gpio_mask and gpio_value will be populated
- */
- READ_GPIOS_REPLY = 5;
- }
-
- /*
- * What type of HardwareMessage is this?
- */
- Type type = 1;
-
- /*
- * What gpios are we changing. Not used for all MessageTypes, see MessageType for details
- */
- uint64 gpio_mask = 2;
-
- /*
- * For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios.
- * Not used for all MessageTypes, see MessageType for details
- */
- uint64 gpio_value = 3;
-}
diff --git a/proto_def/rtttl.options b/proto_def/rtttl.options
deleted file mode 100644
index 1ae0c2f..0000000
--- a/proto_def/rtttl.options
+++ /dev/null
@@ -1 +0,0 @@
-*RTTTLConfig.ringtone max_size:230
diff --git a/proto_def/rtttl.proto b/proto_def/rtttl.proto
deleted file mode 100644
index 11c8b92..0000000
--- a/proto_def/rtttl.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "RTTTLConfigProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * Canned message module configuration.
- */
-message RTTTLConfig {
- /*
- * Ringtone for PWM Buzzer in RTTTL Format.
- */
- string ringtone = 1;
-}
diff --git a/proto_def/storeforward.options b/proto_def/storeforward.options
deleted file mode 100644
index 8580aab..0000000
--- a/proto_def/storeforward.options
+++ /dev/null
@@ -1 +0,0 @@
-*StoreAndForward.text max_size:237
\ No newline at end of file
diff --git a/proto_def/storeforward.proto b/proto_def/storeforward.proto
deleted file mode 100644
index 651eae5..0000000
--- a/proto_def/storeforward.proto
+++ /dev/null
@@ -1,218 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "StoreAndForwardProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * TODO: REPLACE
- */
-message StoreAndForward {
- /*
- * 001 - 063 = From Router
- * 064 - 127 = From Client
- */
- enum RequestResponse {
- /*
- * Unset/unused
- */
- UNSET = 0;
-
- /*
- * Router is an in error state.
- */
- ROUTER_ERROR = 1;
-
- /*
- * Router heartbeat
- */
- ROUTER_HEARTBEAT = 2;
-
- /*
- * Router has requested the client respond. This can work as a
- * "are you there" message.
- */
- ROUTER_PING = 3;
-
- /*
- * The response to a "Ping"
- */
- ROUTER_PONG = 4;
-
- /*
- * Router is currently busy. Please try again later.
- */
- ROUTER_BUSY = 5;
-
- /*
- * Router is responding to a request for history.
- */
- ROUTER_HISTORY = 6;
-
- /*
- * Router is responding to a request for stats.
- */
- ROUTER_STATS = 7;
-
- /*
- * Router sends a text message from its history that was a direct message.
- */
- ROUTER_TEXT_DIRECT = 8;
-
- /*
- * Router sends a text message from its history that was a broadcast.
- */
- ROUTER_TEXT_BROADCAST = 9;
-
- /*
- * Client is an in error state.
- */
- CLIENT_ERROR = 64;
-
- /*
- * Client has requested a replay from the router.
- */
- CLIENT_HISTORY = 65;
-
- /*
- * Client has requested stats from the router.
- */
- CLIENT_STATS = 66;
-
- /*
- * Client has requested the router respond. This can work as a
- * "are you there" message.
- */
- CLIENT_PING = 67;
-
- /*
- * The response to a "Ping"
- */
- CLIENT_PONG = 68;
-
- /*
- * Client has requested that the router abort processing the client's request
- */
- CLIENT_ABORT = 106;
- }
-
- /*
- * TODO: REPLACE
- */
- message Statistics {
- /*
- * Number of messages we have ever seen
- */
- uint32 messages_total = 1;
-
- /*
- * Number of messages we have currently saved our history.
- */
- uint32 messages_saved = 2;
-
- /*
- * Maximum number of messages we will save
- */
- uint32 messages_max = 3;
-
- /*
- * Router uptime in seconds
- */
- uint32 up_time = 4;
-
- /*
- * Number of times any client sent a request to the S&F.
- */
- uint32 requests = 5;
-
- /*
- * Number of times the history was requested.
- */
- uint32 requests_history = 6;
-
- /*
- * Is the heartbeat enabled on the server?
- */
- bool heartbeat = 7;
-
- /*
- * Maximum number of messages the server will return.
- */
- uint32 return_max = 8;
-
- /*
- * Maximum history window in minutes the server will return messages from.
- */
- uint32 return_window = 9;
- }
-
- /*
- * TODO: REPLACE
- */
- message History {
- /*
- * Number of that will be sent to the client
- */
- uint32 history_messages = 1;
-
- /*
- * The window of messages that was used to filter the history client requested
- */
- uint32 window = 2;
-
- /*
- * Index in the packet history of the last message sent in a previous request to the server.
- * Will be sent to the client before sending the history and can be set in a subsequent request to avoid getting packets the server already sent to the client.
- */
- uint32 last_request = 3;
- }
-
- /*
- * TODO: REPLACE
- */
- message Heartbeat {
- /*
- * Period in seconds that the heartbeat is sent out that will be sent to the client
- */
- uint32 period = 1;
-
- /*
- * If set, this is not the primary Store & Forward router on the mesh
- */
- uint32 secondary = 2;
- }
-
- /*
- * TODO: REPLACE
- */
- RequestResponse rr = 1;
-
- /*
- * TODO: REPLACE
- */
- oneof variant {
- /*
- * TODO: REPLACE
- */
- Statistics stats = 2;
-
- /*
- * TODO: REPLACE
- */
- History history = 3;
-
- /*
- * TODO: REPLACE
- */
- Heartbeat heartbeat = 4;
-
- /*
- * Text from history message.
- */
- bytes text = 5;
- }
-}
diff --git a/proto_def/telemetry.options b/proto_def/telemetry.options
deleted file mode 100644
index 2fe657c..0000000
--- a/proto_def/telemetry.options
+++ /dev/null
@@ -1,4 +0,0 @@
-# options for nanopb
-# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
-
-*EnvironmentMetrics.iaq int_size:16
\ No newline at end of file
diff --git a/proto_def/telemetry.proto b/proto_def/telemetry.proto
deleted file mode 100644
index 052a5a9..0000000
--- a/proto_def/telemetry.proto
+++ /dev/null
@@ -1,347 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "TelemetryProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-/*
- * Key native device metrics such as battery level
- */
-message DeviceMetrics {
- /*
- * 0-100 (>100 means powered)
- */
- uint32 battery_level = 1;
-
- /*
- * Voltage measured
- */
- float voltage = 2;
-
- /*
- * Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
- */
- float channel_utilization = 3;
-
- /*
- * Percent of airtime for transmission used within the last hour.
- */
- float air_util_tx = 4;
-
- /*
- * How long the device has been running since the last reboot (in seconds)
- */
- uint32 uptime_seconds = 5;
-}
-
-/*
- * Weather station or other environmental metrics
- */
-message EnvironmentMetrics {
- /*
- * Temperature measured
- */
- float temperature = 1;
-
- /*
- * Relative humidity percent measured
- */
- float relative_humidity = 2;
-
- /*
- * Barometric pressure in hPA measured
- */
- float barometric_pressure = 3;
-
- /*
- * Gas resistance in MOhm measured
- */
- float gas_resistance = 4;
-
- /*
- * Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
- */
- float voltage = 5;
-
- /*
- * Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
- */
- float current = 6;
-
- /*
- * relative scale IAQ value as measured by Bosch BME680 . value 0-500.
- * Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
- */
- uint32 iaq = 7;
-
- /*
- * RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
- */
- float distance = 8;
-
- /*
- * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
- */
- float lux = 9;
-
- /*
- * VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
- */
- float white_lux = 10;
-}
-
-/*
- * Power Metrics (voltage / current / etc)
- */
-message PowerMetrics {
- /*
- * Voltage (Ch1)
- */
- float ch1_voltage = 1;
-
- /*
- * Current (Ch1)
- */
- float ch1_current = 2;
-
- /*
- * Voltage (Ch2)
- */
- float ch2_voltage = 3;
-
- /*
- * Current (Ch2)
- */
- float ch2_current = 4;
-
- /*
- * Voltage (Ch3)
- */
- float ch3_voltage = 5;
-
- /*
- * Current (Ch3)
- */
- float ch3_current = 6;
-}
-
-/*
- * Air quality metrics
- */
-message AirQualityMetrics {
- /*
- * Concentration Units Standard PM1.0
- */
- uint32 pm10_standard = 1;
-
- /*
- * Concentration Units Standard PM2.5
- */
- uint32 pm25_standard = 2;
-
- /*
- * Concentration Units Standard PM10.0
- */
- uint32 pm100_standard = 3;
-
- /*
- * Concentration Units Environmental PM1.0
- */
- uint32 pm10_environmental = 4;
-
- /*
- * Concentration Units Environmental PM2.5
- */
- uint32 pm25_environmental = 5;
-
- /*
- * Concentration Units Environmental PM10.0
- */
- uint32 pm100_environmental = 6;
-
- /*
- * 0.3um Particle Count
- */
- uint32 particles_03um = 7;
-
- /*
- * 0.5um Particle Count
- */
- uint32 particles_05um = 8;
-
- /*
- * 1.0um Particle Count
- */
- uint32 particles_10um = 9;
-
- /*
- * 2.5um Particle Count
- */
- uint32 particles_25um = 10;
-
- /*
- * 5.0um Particle Count
- */
- uint32 particles_50um = 11;
-
- /*
- * 10.0um Particle Count
- */
- uint32 particles_100um = 12;
-}
-
-/*
- * Types of Measurements the telemetry module is equipped to handle
- */
-message Telemetry {
- /*
- * Seconds since 1970 - or 0 for unknown/unset
- */
- fixed32 time = 1;
-
- oneof variant {
- /*
- * Key native device metrics such as battery level
- */
- DeviceMetrics device_metrics = 2;
-
- /*
- * Weather station or other environmental metrics
- */
- EnvironmentMetrics environment_metrics = 3;
-
- /*
- * Air quality metrics
- */
- AirQualityMetrics air_quality_metrics = 4;
-
- /*
- * Power Metrics
- */
- PowerMetrics power_metrics = 5;
- }
-}
-
-/*
- * Supported I2C Sensors for telemetry in Meshtastic
- */
-enum TelemetrySensorType {
- /*
- * No external telemetry sensor explicitly set
- */
- SENSOR_UNSET = 0;
-
- /*
- * High accuracy temperature, pressure, humidity
- */
- BME280 = 1;
-
- /*
- * High accuracy temperature, pressure, humidity, and air resistance
- */
- BME680 = 2;
-
- /*
- * Very high accuracy temperature
- */
- MCP9808 = 3;
-
- /*
- * Moderate accuracy current and voltage
- */
- INA260 = 4;
-
- /*
- * Moderate accuracy current and voltage
- */
- INA219 = 5;
-
- /*
- * High accuracy temperature and pressure
- */
- BMP280 = 6;
-
- /*
- * High accuracy temperature and humidity
- */
- SHTC3 = 7;
-
- /*
- * High accuracy pressure
- */
- LPS22 = 8;
-
- /*
- * 3-Axis magnetic sensor
- */
- QMC6310 = 9;
-
- /*
- * 6-Axis inertial measurement sensor
- */
- QMI8658 = 10;
-
- /*
- * 3-Axis magnetic sensor
- */
- QMC5883L = 11;
-
- /*
- * High accuracy temperature and humidity
- */
- SHT31 = 12;
-
- /*
- * PM2.5 air quality sensor
- */
- PMSA003I = 13;
-
- /*
- * INA3221 3 Channel Voltage / Current Sensor
- */
- INA3221 = 14;
-
- /*
- * BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280)
- */
- BMP085 = 15;
-
- /*
- * RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
- */
- RCWL9620 = 16;
-
- /*
- * Sensirion High accuracy temperature and humidity
- */
- SHT4X = 17;
-
- /*
- * VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
- */
- VEML7700 = 18;
-
- /*
- * MLX90632 non-contact IR temperature sensor.
- */
- MLX90632 = 19;
-
- /*
- * TI OPT3001 Ambient Light Sensor
- */
- OPT3001 = 20;
-
- /*
- * Lite On LTR-390UV-01 UV Light Sensor
- */
- LTR390UV = 21;
-
- /*
- * AMS TSL25911FN RGB Light Sensor
- */
- TSL25911FN = 22;
-}
\ No newline at end of file
diff --git a/proto_def/xmodem.options b/proto_def/xmodem.options
deleted file mode 100644
index 3af6125..0000000
--- a/proto_def/xmodem.options
+++ /dev/null
@@ -1,6 +0,0 @@
-# options for nanopb
-# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
-
-*XModem.buffer max_size:128
-*XModem.seq int_size:16
-*XModem.crc16 int_size:16
diff --git a/proto_def/xmodem.proto b/proto_def/xmodem.proto
deleted file mode 100644
index 732780a..0000000
--- a/proto_def/xmodem.proto
+++ /dev/null
@@ -1,27 +0,0 @@
-syntax = "proto3";
-
-package meshtastic;
-
-option csharp_namespace = "Meshtastic.Protobufs";
-option go_package = "github.com/meshtastic/go/generated";
-option java_outer_classname = "XmodemProtos";
-option java_package = "com.geeksville.mesh";
-option swift_prefix = "";
-
-message XModem {
- enum Control {
- NUL = 0;
- SOH = 1;
- STX = 2;
- EOT = 4;
- ACK = 6;
- NAK = 21;
- CAN = 24;
- CTRLZ = 26;
- }
-
- Control control = 1;
- uint32 seq = 2;
- uint32 crc16 = 3;
- bytes buffer = 4;
-}