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; -}