From 0627fbc2c6759495965b6338c5211c6e8d612a67 Mon Sep 17 00:00:00 2001 From: Carlos Alfredo Diaz Date: Tue, 26 Jul 2022 20:01:21 -0300 Subject: [PATCH] Initial version --- .dockerignore | 3 + .gitattributes | 2 + .gitignore | 4 + __init__.py | 0 ...ironmental_measurement_pb2.cpython-310.pyc | Bin 0 -> 2530 bytes __pycache__/ipmi-mqtt.cpython-310.pyc | Bin 0 -> 1263 bytes __pycache__/mesh_pb2.cpython-310.pyc | Bin 0 -> 36191 bytes __pycache__/meshtastic_mqtt.cpython-310.pyc | Bin 0 -> 3924 bytes .../meshtastic_mqtt_client.cpython-310.pyc | Bin 0 -> 17021 bytes __pycache__/mqtt_pb2.cpython-310.pyc | Bin 0 -> 2550 bytes __pycache__/portnums_pb2.cpython-310.pyc | Bin 0 -> 2792 bytes admin_pb2.py | 188 ++ apponly_pb2.py | 74 + channel_pb2.py | 267 +++ config/config - example.yaml | 48 + deviceonly_pb2.py | 260 +++ environmental_measurement_pb2.py | 85 + mesh_pb2.py | 1758 +++++++++++++++++ meshtastic-mqtt-client.py | 453 +++++ mqtt_pb2.py | 88 + portnums_pb2.py | 151 ++ radioconfig_pb2.py | 995 ++++++++++ remote_hardware_pb2.py | 133 ++ storeforward_pb2.py | 303 +++ 24 files changed, 4812 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 __pycache__/environmental_measurement_pb2.cpython-310.pyc create mode 100644 __pycache__/ipmi-mqtt.cpython-310.pyc create mode 100644 __pycache__/mesh_pb2.cpython-310.pyc create mode 100644 __pycache__/meshtastic_mqtt.cpython-310.pyc create mode 100644 __pycache__/meshtastic_mqtt_client.cpython-310.pyc create mode 100644 __pycache__/mqtt_pb2.cpython-310.pyc create mode 100644 __pycache__/portnums_pb2.cpython-310.pyc create mode 100644 admin_pb2.py create mode 100644 apponly_pb2.py create mode 100644 channel_pb2.py create mode 100644 config/config - example.yaml create mode 100644 deviceonly_pb2.py create mode 100644 environmental_measurement_pb2.py create mode 100644 mesh_pb2.py create mode 100644 meshtastic-mqtt-client.py create mode 100644 mqtt_pb2.py create mode 100644 portnums_pb2.py create mode 100644 radioconfig_pb2.py create mode 100644 remote_hardware_pb2.py create mode 100644 storeforward_pb2.py diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..32eb88c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +#Dockerignore to ignor config files on image build +*/config +*.md \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4880a2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ + +config.yaml +meshtastic-mqtt-client.db +meshtastic-mqtt-client.log diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/__pycache__/environmental_measurement_pb2.cpython-310.pyc b/__pycache__/environmental_measurement_pb2.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afd0738a902fcd39792199614d9484891b398c17 GIT binary patch literal 2530 zcmd57O>Y}Tba%a8JL|8+X&a|sNt=E-G!C?URu!T&X{kigDs4HeB8_%;o}EqCyJlux z)xL5=qL*Gdv`2mcNB#wf0aOGhA30K>@Mdf$OWOdKN_e$z-}jsMG0$VBeMLh3J=o(Bsv>$0s z0W#Y~YSA3c(+R{&)TV{cET@ckg}xJLv`9-2bXr!hLMIWQf-=IY!l$JTQv2{bInv*+ z^ba7Mp*q4Eoke(%9zuAS9zl3iapvee;>Tc$>YqrxZ3ZAF0Bj*kJ<^%n{?o^=)Q>$O-&s~KGn418d@31(D{WzTWy3HoAc|WGm7|1cL>%ykM zeHL_*m?4#G1LtlFq<}#)1V0Jl2&oG1wY@kb)J-p63?({bPkS!IBP1;FNrz$b(k>%~ z?=Sp^Gkc>P>y|Jhw+$lKas4}3KwrL%p;J#1L^BWI^MauA?%gao0m7P-MDpqL)e70W7-XYkT10QL6IYb z#y%mU(u(6&2*VqT+kvUZ7O;QgoxoJKc?_WT0yAas0@>XSEUS_t&+G@0TN%y(215~{ zo+w|zDP7s|EcTHgN`OVUJ$CN{TaxbVlv?GA9N-iq+YDnjac0Tt`bXC`uCK4HuHU-! z;o9n@o3}SsB_Z~w2aFT1H@qB=UAE&u%9i{Jm3yxVOPSYJ09!ylZGpU7Na9x$75>?w*fQ}R1t7W75hTKY3)jI<$*!J@^`g4(k8~BXA5aO zTX5_OKuJp?Nyz|d*#KlE2L$SzgS1idZz%Pgk4b`E+7Fu*&!VxeSW;AcVzsHfBC_^l z6(q$tk#U|0KAI#7#3spH=vCb6bk9IVi9zqiM`!|kCuR<=U+Y^B2XDcW9mFb$P6ki% zcrwtQ=p4o)WP+oD;6-j6Z~=A*`z3<9OSw@Y6&)z(aAqx>tNh{^ zODx)d!?0o@Hac>b_Up(NFD208Ovf&PPB$&Yh{R0`;axJ)9T!?+qGAcf(ZuafWf+X` z-_*%e{xm7k($+=8G_m`li%BYdl*Hgyg}%Wb@}HqGiy#vm3fO!T04&3?w*Ugl z>h1q-^98y<=UJO|=-;70eH_+43@FSImPpE~E#){@lN9NWl!ucjoqjRhnS*OiaqLX( zxd9Z$YH_3j@ZAXv%0#gBa(DanyY1H}-PH$cz18*my_MeDy>;P5YMf-Ez5D9<`{(ap z>^y!J2BMkfqfwHL4F2gA%dJ^LBa74a^sc&78?TsMH7$7XzmTfn(KM3{95Fi&(4j%S K=e_w`9rg!(kT!+@ literal 0 HcmV?d00001 diff --git a/__pycache__/mesh_pb2.cpython-310.pyc b/__pycache__/mesh_pb2.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20e1a6061cd846761f69e7eeb6efa6bc2d1436da GIT binary patch literal 36191 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 literal 0 HcmV?d00001 diff --git a/__pycache__/meshtastic_mqtt.cpython-310.pyc b/__pycache__/meshtastic_mqtt.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf1e9eb100b4929d5f719e586295feb16eb43c2a GIT binary patch literal 3924 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 literal 0 HcmV?d00001 diff --git a/admin_pb2.py b/admin_pb2.py new file mode 100644 index 0000000..b66cfa3 --- /dev/null +++ b/admin_pb2.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: admin.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import channel_pb2 as channel__pb2 +import mesh_pb2 as mesh__pb2 +import radioconfig_pb2 as radioconfig__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='admin.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\013AdminProtosH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x0b\x61\x64min.proto\x1a\rchannel.proto\x1a\nmesh.proto\x1a\x11radioconfig.proto\"\xfb\x02\n\x0c\x41\x64minMessage\x12!\n\tset_radio\x18\x01 \x01(\x0b\x32\x0c.RadioConfigH\x00\x12\x1a\n\tset_owner\x18\x02 \x01(\x0b\x32\x05.UserH\x00\x12\x1f\n\x0bset_channel\x18\x03 \x01(\x0b\x32\x08.ChannelH\x00\x12\x1b\n\x11get_radio_request\x18\x04 \x01(\x08H\x00\x12*\n\x12get_radio_response\x18\x05 \x01(\x0b\x32\x0c.RadioConfigH\x00\x12\x1d\n\x13get_channel_request\x18\x06 \x01(\rH\x00\x12(\n\x14get_channel_response\x18\x07 \x01(\x0b\x32\x08.ChannelH\x00\x12\x1d\n\x13\x63onfirm_set_channel\x18 \x01(\x08H\x00\x12\x1b\n\x11\x63onfirm_set_radio\x18! \x01(\x08H\x00\x12\x18\n\x0e\x65xit_simulator\x18\" \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18# \x01(\x05H\x00\x42\t\n\x07variantBG\n\x13\x63om.geeksville.meshB\x0b\x41\x64minProtosH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' + , + dependencies=[channel__pb2.DESCRIPTOR,mesh__pb2.DESCRIPTOR,radioconfig__pb2.DESCRIPTOR,]) + + + + +_ADMINMESSAGE = _descriptor.Descriptor( + name='AdminMessage', + full_name='AdminMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='set_radio', full_name='AdminMessage.set_radio', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='set_owner', full_name='AdminMessage.set_owner', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='set_channel', full_name='AdminMessage.set_channel', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='get_radio_request', full_name='AdminMessage.get_radio_request', index=3, + number=4, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='get_radio_response', full_name='AdminMessage.get_radio_response', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='get_channel_request', full_name='AdminMessage.get_channel_request', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='get_channel_response', full_name='AdminMessage.get_channel_response', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='confirm_set_channel', full_name='AdminMessage.confirm_set_channel', index=7, + number=32, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='confirm_set_radio', full_name='AdminMessage.confirm_set_radio', index=8, + number=33, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='exit_simulator', full_name='AdminMessage.exit_simulator', index=9, + number=34, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='reboot_seconds', full_name='AdminMessage.reboot_seconds', index=10, + number=35, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='variant', full_name='AdminMessage.variant', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=62, + serialized_end=441, +) + +_ADMINMESSAGE.fields_by_name['set_radio'].message_type = radioconfig__pb2._RADIOCONFIG +_ADMINMESSAGE.fields_by_name['set_owner'].message_type = mesh__pb2._USER +_ADMINMESSAGE.fields_by_name['set_channel'].message_type = channel__pb2._CHANNEL +_ADMINMESSAGE.fields_by_name['get_radio_response'].message_type = radioconfig__pb2._RADIOCONFIG +_ADMINMESSAGE.fields_by_name['get_channel_response'].message_type = channel__pb2._CHANNEL +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['set_radio']) +_ADMINMESSAGE.fields_by_name['set_radio'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['set_owner']) +_ADMINMESSAGE.fields_by_name['set_owner'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['set_channel']) +_ADMINMESSAGE.fields_by_name['set_channel'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['get_radio_request']) +_ADMINMESSAGE.fields_by_name['get_radio_request'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['get_radio_response']) +_ADMINMESSAGE.fields_by_name['get_radio_response'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['get_channel_request']) +_ADMINMESSAGE.fields_by_name['get_channel_request'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['get_channel_response']) +_ADMINMESSAGE.fields_by_name['get_channel_response'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['confirm_set_channel']) +_ADMINMESSAGE.fields_by_name['confirm_set_channel'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['confirm_set_radio']) +_ADMINMESSAGE.fields_by_name['confirm_set_radio'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['exit_simulator']) +_ADMINMESSAGE.fields_by_name['exit_simulator'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +_ADMINMESSAGE.oneofs_by_name['variant'].fields.append( + _ADMINMESSAGE.fields_by_name['reboot_seconds']) +_ADMINMESSAGE.fields_by_name['reboot_seconds'].containing_oneof = _ADMINMESSAGE.oneofs_by_name['variant'] +DESCRIPTOR.message_types_by_name['AdminMessage'] = _ADMINMESSAGE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +AdminMessage = _reflection.GeneratedProtocolMessageType('AdminMessage', (_message.Message,), { + 'DESCRIPTOR' : _ADMINMESSAGE, + '__module__' : 'admin_pb2' + # @@protoc_insertion_point(class_scope:AdminMessage) + }) +_sym_db.RegisterMessage(AdminMessage) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/apponly_pb2.py b/apponly_pb2.py new file mode 100644 index 0000000..bec79ef --- /dev/null +++ b/apponly_pb2.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: apponly.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import channel_pb2 as channel__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='apponly.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\rAppOnlyProtosH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\rapponly.proto\x1a\rchannel.proto\"0\n\nChannelSet\x12\"\n\x08settings\x18\x01 \x03(\x0b\x32\x10.ChannelSettingsBI\n\x13\x63om.geeksville.meshB\rAppOnlyProtosH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' + , + dependencies=[channel__pb2.DESCRIPTOR,]) + + + + +_CHANNELSET = _descriptor.Descriptor( + name='ChannelSet', + full_name='ChannelSet', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='settings', full_name='ChannelSet.settings', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=32, + serialized_end=80, +) + +_CHANNELSET.fields_by_name['settings'].message_type = channel__pb2._CHANNELSETTINGS +DESCRIPTOR.message_types_by_name['ChannelSet'] = _CHANNELSET +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +ChannelSet = _reflection.GeneratedProtocolMessageType('ChannelSet', (_message.Message,), { + 'DESCRIPTOR' : _CHANNELSET, + '__module__' : 'apponly_pb2' + # @@protoc_insertion_point(class_scope:ChannelSet) + }) +_sym_db.RegisterMessage(ChannelSet) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/channel_pb2.py b/channel_pb2.py new file mode 100644 index 0000000..b3af6d6 --- /dev/null +++ b/channel_pb2.py @@ -0,0 +1,267 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: channel.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='channel.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\rChannelProtosH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\rchannel.proto\"\xe6\x02\n\x0f\x43hannelSettings\x12\x10\n\x08tx_power\x18\x01 \x01(\x05\x12\x32\n\x0cmodem_config\x18\x03 \x01(\x0e\x32\x1c.ChannelSettings.ModemConfig\x12\x11\n\tbandwidth\x18\x06 \x01(\r\x12\x15\n\rspread_factor\x18\x07 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x08 \x01(\r\x12\x13\n\x0b\x63hannel_num\x18\t \x01(\r\x12\x0b\n\x03psk\x18\x04 \x01(\x0c\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\n\n\x02id\x18\n \x01(\x07\x12\x16\n\x0euplink_enabled\x18\x10 \x01(\x08\x12\x18\n\x10\x64ownlink_enabled\x18\x11 \x01(\x08\"`\n\x0bModemConfig\x12\x12\n\x0e\x42w125Cr45Sf128\x10\x00\x12\x12\n\x0e\x42w500Cr45Sf128\x10\x01\x12\x14\n\x10\x42w31_25Cr48Sf512\x10\x02\x12\x13\n\x0f\x42w125Cr48Sf4096\x10\x03\"\x8b\x01\n\x07\x43hannel\x12\r\n\x05index\x18\x01 \x01(\x05\x12\"\n\x08settings\x18\x02 \x01(\x0b\x32\x10.ChannelSettings\x12\x1b\n\x04role\x18\x03 \x01(\x0e\x32\r.Channel.Role\"0\n\x04Role\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07PRIMARY\x10\x01\x12\r\n\tSECONDARY\x10\x02\x42I\n\x13\x63om.geeksville.meshB\rChannelProtosH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' +) + + + +_CHANNELSETTINGS_MODEMCONFIG = _descriptor.EnumDescriptor( + name='ModemConfig', + full_name='ChannelSettings.ModemConfig', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='Bw125Cr45Sf128', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='Bw500Cr45Sf128', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='Bw31_25Cr48Sf512', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='Bw125Cr48Sf4096', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=280, + serialized_end=376, +) +_sym_db.RegisterEnumDescriptor(_CHANNELSETTINGS_MODEMCONFIG) + +_CHANNEL_ROLE = _descriptor.EnumDescriptor( + name='Role', + full_name='Channel.Role', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='DISABLED', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='PRIMARY', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='SECONDARY', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=470, + serialized_end=518, +) +_sym_db.RegisterEnumDescriptor(_CHANNEL_ROLE) + + +_CHANNELSETTINGS = _descriptor.Descriptor( + name='ChannelSettings', + full_name='ChannelSettings', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='tx_power', full_name='ChannelSettings.tx_power', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='modem_config', full_name='ChannelSettings.modem_config', index=1, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='bandwidth', full_name='ChannelSettings.bandwidth', index=2, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='spread_factor', full_name='ChannelSettings.spread_factor', index=3, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='coding_rate', full_name='ChannelSettings.coding_rate', index=4, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='channel_num', full_name='ChannelSettings.channel_num', index=5, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='psk', full_name='ChannelSettings.psk', index=6, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='name', full_name='ChannelSettings.name', index=7, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='id', full_name='ChannelSettings.id', index=8, + number=10, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='uplink_enabled', full_name='ChannelSettings.uplink_enabled', index=9, + number=16, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='downlink_enabled', full_name='ChannelSettings.downlink_enabled', index=10, + number=17, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CHANNELSETTINGS_MODEMCONFIG, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=18, + serialized_end=376, +) + + +_CHANNEL = _descriptor.Descriptor( + name='Channel', + full_name='Channel', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='index', full_name='Channel.index', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='settings', full_name='Channel.settings', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='role', full_name='Channel.role', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _CHANNEL_ROLE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=379, + serialized_end=518, +) + +_CHANNELSETTINGS.fields_by_name['modem_config'].enum_type = _CHANNELSETTINGS_MODEMCONFIG +_CHANNELSETTINGS_MODEMCONFIG.containing_type = _CHANNELSETTINGS +_CHANNEL.fields_by_name['settings'].message_type = _CHANNELSETTINGS +_CHANNEL.fields_by_name['role'].enum_type = _CHANNEL_ROLE +_CHANNEL_ROLE.containing_type = _CHANNEL +DESCRIPTOR.message_types_by_name['ChannelSettings'] = _CHANNELSETTINGS +DESCRIPTOR.message_types_by_name['Channel'] = _CHANNEL +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +ChannelSettings = _reflection.GeneratedProtocolMessageType('ChannelSettings', (_message.Message,), { + 'DESCRIPTOR' : _CHANNELSETTINGS, + '__module__' : 'channel_pb2' + # @@protoc_insertion_point(class_scope:ChannelSettings) + }) +_sym_db.RegisterMessage(ChannelSettings) + +Channel = _reflection.GeneratedProtocolMessageType('Channel', (_message.Message,), { + 'DESCRIPTOR' : _CHANNEL, + '__module__' : 'channel_pb2' + # @@protoc_insertion_point(class_scope:Channel) + }) +_sym_db.RegisterMessage(Channel) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/config/config - example.yaml b/config/config - example.yaml new file mode 100644 index 0000000..c25b660 --- /dev/null +++ b/config/config - example.yaml @@ -0,0 +1,48 @@ +MQTT: + MQTT_ip: 192.168.XXX.XXX + MQTT_USER: 'MQTTUSER' + MQTT_PW: 'MQTTPASSWORD' + HA_BINARY: 'homeassistant/binary_sensor' # MQTT topics for home assistant to automatically detect devices + HA_SENSOR: 'homeassistant/sensor' + HA_SWITCH: 'homeassistant/switch' + TIME_PERIOD: 300 # Time to try to get new sensor values. Set to 0 for one time execution. + +TOPICS: + POWER: 'server_power_state' #This is to get the server's ON OFF state, if you don't want it just leave an empty string + SDR_TYPES: #THESE ARE JUST EXAMPLES OF NAMES FOR THE SENSORS, ITS A DICTIONARY SO THE first part (before :) can be whatever you want, just ensure it matches the value in SDR TYPE for this description. + 1: 'server_cpu_temp' + 2: 'server_system_temp' + 3: 'server_cpu_fan' + 4: 'server_bmc_voltage' +SERVERS: + - IPMI_NODENAME: XXXXX + BRAND: ASUS #THIS IS AN ASUS EXAMPLE + IPMI_IP: 192.168.XXX.XXX + IPMI_USER: 'SERVER IPMI USER' + IPMI_PASSWORD: 'SERVER IPMI PASSWORD' + SDRS: + - SDR_TYPE: 1 + SDR_CLASS: temperature #THERE ARE THREE CLASSES - temperature fan and voltage + SUBCLASS: MB Temp + VALUE: 3.0 + - SDR_TYPE: 2 + SDR_CLASS: fan + SUBCLASS: XXXX + VALUE: XXXX + - SDR_TYPE: XXXX + SDR_CLASS: voltage + SUBCLASS: XXX + VALUE: XXX + - IPMI_NODENAME: XXXXXXX + BRAND: SUPERMICRO #THIS IS A SUPERMICRO EXAMPLE + IPMI_IP: 192.168.XXX.XXX + IPMI_USER: 'SERVER IPMI USER' + IPMI_PASSWORD: 'SERVER IPMI PASSWORD' + SDRS: # YOU CAN ADD ALL THE SDRS YOU WAN + - SDR_TYPE: XXX + VALUE: XXXX + SDR_CLASS: XXXX + - SDR_TYPE: XXXX + VALUE: XXX + SDR_CLASS: XXXX + diff --git a/deviceonly_pb2.py b/deviceonly_pb2.py new file mode 100644 index 0000000..88fc84b --- /dev/null +++ b/deviceonly_pb2.py @@ -0,0 +1,260 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: deviceonly.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import channel_pb2 as channel__pb2 +import mesh_pb2 as mesh__pb2 +import radioconfig_pb2 as radioconfig__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='deviceonly.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\nDeviceOnlyH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x10\x64\x65viceonly.proto\x1a\rchannel.proto\x1a\nmesh.proto\x1a\x11radioconfig.proto\"\x80\x01\n\x11LegacyRadioConfig\x12\x39\n\x0bpreferences\x18\x01 \x01(\x0b\x32$.LegacyRadioConfig.LegacyPreferences\x1a\x30\n\x11LegacyPreferences\x12\x1b\n\x06region\x18\x0f \x01(\x0e\x32\x0b.RegionCode\"\x8f\x02\n\x0b\x44\x65viceState\x12\'\n\x0blegacyRadio\x18\x01 \x01(\x0b\x32\x12.LegacyRadioConfig\x12\x1c\n\x07my_node\x18\x02 \x01(\x0b\x32\x0b.MyNodeInfo\x12\x14\n\x05owner\x18\x03 \x01(\x0b\x32\x05.User\x12\x1a\n\x07node_db\x18\x04 \x03(\x0b\x32\t.NodeInfo\x12\"\n\rreceive_queue\x18\x05 \x03(\x0b\x32\x0b.MeshPacket\x12\x0f\n\x07version\x18\x08 \x01(\r\x12$\n\x0frx_text_message\x18\x07 \x01(\x0b\x32\x0b.MeshPacket\x12\x0f\n\x07no_save\x18\t \x01(\x08\x12\x15\n\rdid_gps_reset\x18\x0b \x01(\x08J\x04\x08\x0c\x10\r\")\n\x0b\x43hannelFile\x12\x1a\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x08.ChannelBF\n\x13\x63om.geeksville.meshB\nDeviceOnlyH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' + , + dependencies=[channel__pb2.DESCRIPTOR,mesh__pb2.DESCRIPTOR,radioconfig__pb2.DESCRIPTOR,]) + + + + +_LEGACYRADIOCONFIG_LEGACYPREFERENCES = _descriptor.Descriptor( + name='LegacyPreferences', + full_name='LegacyRadioConfig.LegacyPreferences', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='region', full_name='LegacyRadioConfig.LegacyPreferences.region', index=0, + number=15, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=147, + serialized_end=195, +) + +_LEGACYRADIOCONFIG = _descriptor.Descriptor( + name='LegacyRadioConfig', + full_name='LegacyRadioConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='preferences', full_name='LegacyRadioConfig.preferences', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_LEGACYRADIOCONFIG_LEGACYPREFERENCES, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=67, + serialized_end=195, +) + + +_DEVICESTATE = _descriptor.Descriptor( + name='DeviceState', + full_name='DeviceState', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='legacyRadio', full_name='DeviceState.legacyRadio', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='my_node', full_name='DeviceState.my_node', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='owner', full_name='DeviceState.owner', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='node_db', full_name='DeviceState.node_db', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='receive_queue', full_name='DeviceState.receive_queue', index=4, + number=5, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='version', full_name='DeviceState.version', index=5, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='rx_text_message', full_name='DeviceState.rx_text_message', index=6, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='no_save', full_name='DeviceState.no_save', index=7, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='did_gps_reset', full_name='DeviceState.did_gps_reset', index=8, + number=11, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=198, + serialized_end=469, +) + + +_CHANNELFILE = _descriptor.Descriptor( + name='ChannelFile', + full_name='ChannelFile', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='channels', full_name='ChannelFile.channels', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=471, + serialized_end=512, +) + +_LEGACYRADIOCONFIG_LEGACYPREFERENCES.fields_by_name['region'].enum_type = radioconfig__pb2._REGIONCODE +_LEGACYRADIOCONFIG_LEGACYPREFERENCES.containing_type = _LEGACYRADIOCONFIG +_LEGACYRADIOCONFIG.fields_by_name['preferences'].message_type = _LEGACYRADIOCONFIG_LEGACYPREFERENCES +_DEVICESTATE.fields_by_name['legacyRadio'].message_type = _LEGACYRADIOCONFIG +_DEVICESTATE.fields_by_name['my_node'].message_type = mesh__pb2._MYNODEINFO +_DEVICESTATE.fields_by_name['owner'].message_type = mesh__pb2._USER +_DEVICESTATE.fields_by_name['node_db'].message_type = mesh__pb2._NODEINFO +_DEVICESTATE.fields_by_name['receive_queue'].message_type = mesh__pb2._MESHPACKET +_DEVICESTATE.fields_by_name['rx_text_message'].message_type = mesh__pb2._MESHPACKET +_CHANNELFILE.fields_by_name['channels'].message_type = channel__pb2._CHANNEL +DESCRIPTOR.message_types_by_name['LegacyRadioConfig'] = _LEGACYRADIOCONFIG +DESCRIPTOR.message_types_by_name['DeviceState'] = _DEVICESTATE +DESCRIPTOR.message_types_by_name['ChannelFile'] = _CHANNELFILE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +LegacyRadioConfig = _reflection.GeneratedProtocolMessageType('LegacyRadioConfig', (_message.Message,), { + + 'LegacyPreferences' : _reflection.GeneratedProtocolMessageType('LegacyPreferences', (_message.Message,), { + 'DESCRIPTOR' : _LEGACYRADIOCONFIG_LEGACYPREFERENCES, + '__module__' : 'deviceonly_pb2' + # @@protoc_insertion_point(class_scope:LegacyRadioConfig.LegacyPreferences) + }) + , + 'DESCRIPTOR' : _LEGACYRADIOCONFIG, + '__module__' : 'deviceonly_pb2' + # @@protoc_insertion_point(class_scope:LegacyRadioConfig) + }) +_sym_db.RegisterMessage(LegacyRadioConfig) +_sym_db.RegisterMessage(LegacyRadioConfig.LegacyPreferences) + +DeviceState = _reflection.GeneratedProtocolMessageType('DeviceState', (_message.Message,), { + 'DESCRIPTOR' : _DEVICESTATE, + '__module__' : 'deviceonly_pb2' + # @@protoc_insertion_point(class_scope:DeviceState) + }) +_sym_db.RegisterMessage(DeviceState) + +ChannelFile = _reflection.GeneratedProtocolMessageType('ChannelFile', (_message.Message,), { + 'DESCRIPTOR' : _CHANNELFILE, + '__module__' : 'deviceonly_pb2' + # @@protoc_insertion_point(class_scope:ChannelFile) + }) +_sym_db.RegisterMessage(ChannelFile) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/environmental_measurement_pb2.py b/environmental_measurement_pb2.py new file mode 100644 index 0000000..788c9c1 --- /dev/null +++ b/environmental_measurement_pb2.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: environmental_measurement.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='environmental_measurement.proto', + package='', + syntax='proto3', + serialized_options=b'Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x1f\x65nvironmental_measurement.proto\"g\n\x18\x45nvironmentalMeasurement\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\x42#Z!github.com/meshtastic/gomeshprotob\x06proto3' +) + + + + +_ENVIRONMENTALMEASUREMENT = _descriptor.Descriptor( + name='EnvironmentalMeasurement', + full_name='EnvironmentalMeasurement', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='temperature', full_name='EnvironmentalMeasurement.temperature', index=0, + number=1, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='relative_humidity', full_name='EnvironmentalMeasurement.relative_humidity', index=1, + number=2, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='barometric_pressure', full_name='EnvironmentalMeasurement.barometric_pressure', index=2, + number=3, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=35, + serialized_end=138, +) + +DESCRIPTOR.message_types_by_name['EnvironmentalMeasurement'] = _ENVIRONMENTALMEASUREMENT +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +EnvironmentalMeasurement = _reflection.GeneratedProtocolMessageType('EnvironmentalMeasurement', (_message.Message,), { + 'DESCRIPTOR' : _ENVIRONMENTALMEASUREMENT, + '__module__' : 'environmental_measurement_pb2' + # @@protoc_insertion_point(class_scope:EnvironmentalMeasurement) + }) +_sym_db.RegisterMessage(EnvironmentalMeasurement) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/mesh_pb2.py b/mesh_pb2.py new file mode 100644 index 0000000..97734ab --- /dev/null +++ b/mesh_pb2.py @@ -0,0 +1,1758 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: mesh.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import portnums_pb2 as portnums__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='mesh.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\nMeshProtosH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\nmesh.proto\x1a\x0eportnums.proto\"\x94\x06\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\x15\n\rbattery_level\x18\x04 \x01(\x05\x12\x0c\n\x04time\x18\t \x01(\x07\x12,\n\x0flocation_source\x18\n \x01(\x0e\x32\x13.Position.LocSource\x12,\n\x0f\x61ltitude_source\x18\x0b \x01(\x0e\x32\x13.Position.AltSource\x12\x15\n\rpos_timestamp\x18\x0c \x01(\x07\x12\x17\n\x0fpos_time_millis\x18\r \x01(\x05\x12\x14\n\x0c\x61ltitude_hae\x18\x0e \x01(\x11\x12\x15\n\ralt_geoid_sep\x18\x0f \x01(\x11\x12\x0c\n\x04PDOP\x18\x10 \x01(\r\x12\x0c\n\x04HDOP\x18\x11 \x01(\r\x12\x0c\n\x04VDOP\x18\x12 \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x13 \x01(\r\x12\x14\n\x0cground_speed\x18\x14 \x01(\r\x12\x14\n\x0cground_track\x18\x15 \x01(\r\x12\x13\n\x0b\x66ix_quality\x18\x16 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x17 \x01(\r\x12\x14\n\x0csats_in_view\x18\x18 \x01(\r\x12\x11\n\tsensor_id\x18\x19 \x01(\r\x12\x17\n\x0fpos_next_update\x18( \x01(\r\x12\x16\n\x0epos_seq_number\x18) \x01(\r\"n\n\tLocSource\x12\x16\n\x12LOCSRC_UNSPECIFIED\x10\x00\x12\x17\n\x13LOCSRC_MANUAL_ENTRY\x10\x01\x12\x17\n\x13LOCSRC_GPS_INTERNAL\x10\x02\x12\x17\n\x13LOCSRC_GPS_EXTERNAL\x10\x03\"\x85\x01\n\tAltSource\x12\x16\n\x12\x41LTSRC_UNSPECIFIED\x10\x00\x12\x17\n\x13\x41LTSRC_MANUAL_ENTRY\x10\x01\x12\x17\n\x13\x41LTSRC_GPS_INTERNAL\x10\x02\x12\x17\n\x13\x41LTSRC_GPS_EXTERNAL\x10\x03\x12\x15\n\x11\x41LTSRC_BAROMETRIC\x10\x04J\x04\x08\x07\x10\x08J\x04\x08\x08\x10\t\"\xd7\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\x0f\n\x07macaddr\x18\x04 \x01(\x0c\x12 \n\x08hw_model\x18\x06 \x01(\x0e\x32\x0e.HardwareModel\x12\x13\n\x0bis_licensed\x18\x07 \x01(\x08\x12\x13\n\x04team\x18\x08 \x01(\x0e\x32\x05.Team\x12\x14\n\x0ctx_power_dbm\x18\n \x01(\r\x12\x14\n\x0c\x61nt_gain_dbi\x18\x0b \x01(\r\x12\x13\n\x0b\x61nt_azimuth\x18\x0c \x01(\r\"\x1f\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x02 \x03(\x07\"\xc5\x02\n\x07Routing\x12(\n\rroute_request\x18\x01 \x01(\x0b\x32\x0f.RouteDiscoveryH\x00\x12&\n\x0broute_reply\x18\x02 \x01(\x0b\x32\x0f.RouteDiscoveryH\x00\x12&\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\x0e.Routing.ErrorH\x00\"\xb4\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\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!B\t\n\x07variant\"{\n\x04\x44\x61ta\x12\x19\n\x07portnum\x18\x01 \x01(\x0e\x32\x08.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\"\xe0\x02\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\x18\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x05.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\n \x01(\r\x12\x10\n\x08want_ack\x18\x0b \x01(\x08\x12&\n\x08priority\x18\x0c \x01(\x0e\x32\x14.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\r \x01(\x05\"[\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\x42\x10\n\x0epayloadVariant\"j\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x13\n\x04user\x18\x02 \x01(\x0b\x32\x05.User\x12\x1b\n\x08position\x18\x03 \x01(\x0b\x32\t.Position\x12\x0b\n\x03snr\x18\x07 \x01(\x02\x12\x12\n\nlast_heard\x18\x04 \x01(\x07\"\xcb\x02\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x0f\n\x07has_gps\x18\x02 \x01(\x08\x12\x11\n\tnum_bands\x18\x03 \x01(\r\x12\x14\n\x0cmax_channels\x18\x0f \x01(\r\x12\x12\n\x06region\x18\x04 \x01(\tB\x02\x18\x01\x12\x1f\n\x13hw_model_deprecated\x18\x05 \x01(\tB\x02\x18\x01\x12\x18\n\x10\x66irmware_version\x18\x06 \x01(\t\x12&\n\nerror_code\x18\x07 \x01(\x0e\x32\x12.CriticalErrorCode\x12\x15\n\rerror_address\x18\x08 \x01(\r\x12\x13\n\x0b\x65rror_count\x18\t \x01(\r\x12\x14\n\x0creboot_count\x18\n \x01(\r\x12\x1c\n\x14message_timeout_msec\x18\r \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0e \x01(\r\"\xb5\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\x1f\n\x05level\x18\x04 \x01(\x0e\x32\x10.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\"\xe9\x01\n\tFromRadio\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\x1d\n\x06packet\x18\x0b \x01(\x0b\x32\x0b.MeshPacketH\x00\x12\x1e\n\x07my_info\x18\x03 \x01(\x0b\x32\x0b.MyNodeInfoH\x00\x12\x1e\n\tnode_info\x18\x04 \x01(\x0b\x32\t.NodeInfoH\x00\x12 \n\nlog_record\x18\x07 \x01(\x0b\x32\n.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x08 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\t \x01(\x08H\x00\x42\x10\n\x0epayloadVariantJ\x04\x08\x02\x10\x03J\x04\x08\x06\x10\x07\"\xe1\x01\n\x07ToRadio\x12\x1d\n\x06packet\x18\x02 \x01(\x0b\x32\x0b.MeshPacketH\x00\x12&\n\tpeer_info\x18\x03 \x01(\x0b\x32\x11.ToRadio.PeerInfoH\x00\x12\x18\n\x0ewant_config_id\x18\x64 \x01(\rH\x00\x12\x14\n\ndisconnect\x18h \x01(\x08H\x00\x1a\x35\n\x08PeerInfo\x12\x13\n\x0b\x61pp_version\x18\x01 \x01(\r\x12\x14\n\x0cmqtt_gateway\x18\x02 \x01(\x08\x42\x10\n\x0epayloadVariantJ\x04\x08\x01\x10\x02J\x04\x08\x65\x10\x66J\x04\x08\x66\x10gJ\x04\x08g\x10h*\xac\x02\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\x0c\n\x08TBEAM0p7\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\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\'*\xb5\x01\n\x04Team\x12\t\n\x05\x43LEAR\x10\x00\x12\x08\n\x04\x43YAN\x10\x01\x12\t\n\x05WHITE\x10\x02\x12\n\n\x06YELLOW\x10\x03\x12\n\n\x06ORANGE\x10\x04\x12\x0b\n\x07MAGENTA\x10\x05\x12\x07\n\x03RED\x10\x06\x12\n\n\x06MAROON\x10\x07\x12\n\n\x06PURPLE\x10\x08\x12\r\n\tDARK_BLUE\x10\t\x12\x08\n\x04\x42LUE\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*.\n\tConstants\x12\n\n\x06Unused\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xed\x01*\xe1\x01\n\x11\x43riticalErrorCode\x12\x08\n\x04None\x10\x00\x12\x0e\n\nTxWatchdog\x10\x01\x12\x12\n\x0eSleepEnterWait\x10\x02\x12\x0b\n\x07NoRadio\x10\x03\x12\x0f\n\x0bUnspecified\x10\x04\x12\x13\n\x0fUBloxInitFailed\x10\x05\x12\x0c\n\x08NoAXP192\x10\x06\x12\x17\n\x13InvalidRadioSetting\x10\x07\x12\x12\n\x0eTransmitFailed\x10\x08\x12\x0c\n\x08\x42rownout\x10\t\x12\x11\n\rSX1262Failure\x10\n\x12\x0f\n\x0bRadioSpiBug\x10\x0b\x42\x46\n\x13\x63om.geeksville.meshB\nMeshProtosH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' + , + dependencies=[portnums__pb2.DESCRIPTOR,]) + +_HARDWAREMODEL = _descriptor.EnumDescriptor( + name='HardwareModel', + full_name='HardwareModel', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TLORA_V2', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TLORA_V1', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TLORA_V2_1_1p6', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TBEAM', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HELTEC_V2_0', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TBEAM0p7', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='T_ECHO', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TLORA_V1_1p3', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RAK4631', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='HELTEC_V2_1', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LORA_RELAY_V1', index=11, number=32, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NRF52840DK', index=12, number=33, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='PPR', index=13, number=34, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GENIEBLOCKS', index=14, number=35, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NRF52_UNKNOWN', index=15, number=36, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='PORTDUINO', index=16, number=37, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ANDROID_SIM', index=17, number=38, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DIY_V1', index=18, number=39, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2971, + serialized_end=3271, +) +_sym_db.RegisterEnumDescriptor(_HARDWAREMODEL) + +HardwareModel = enum_type_wrapper.EnumTypeWrapper(_HARDWAREMODEL) +_TEAM = _descriptor.EnumDescriptor( + name='Team', + full_name='Team', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='CLEAR', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CYAN', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WHITE', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='YELLOW', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ORANGE', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAGENTA', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RED', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAROON', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='PURPLE', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DARK_BLUE', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='BLUE', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TEAL', index=11, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GREEN', index=12, number=12, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DARK_GREEN', index=13, number=13, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='BROWN', index=14, number=14, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=3274, + serialized_end=3455, +) +_sym_db.RegisterEnumDescriptor(_TEAM) + +Team = enum_type_wrapper.EnumTypeWrapper(_TEAM) +_CONSTANTS = _descriptor.EnumDescriptor( + name='Constants', + full_name='Constants', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='Unused', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DATA_PAYLOAD_LEN', index=1, number=237, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=3457, + serialized_end=3503, +) +_sym_db.RegisterEnumDescriptor(_CONSTANTS) + +Constants = enum_type_wrapper.EnumTypeWrapper(_CONSTANTS) +_CRITICALERRORCODE = _descriptor.EnumDescriptor( + name='CriticalErrorCode', + full_name='CriticalErrorCode', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='None', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TxWatchdog', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='SleepEnterWait', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NoRadio', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='Unspecified', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='UBloxInitFailed', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NoAXP192', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='InvalidRadioSetting', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TransmitFailed', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='Brownout', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='SX1262Failure', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RadioSpiBug', index=11, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=3506, + serialized_end=3731, +) +_sym_db.RegisterEnumDescriptor(_CRITICALERRORCODE) + +CriticalErrorCode = enum_type_wrapper.EnumTypeWrapper(_CRITICALERRORCODE) +UNSET = 0 +TLORA_V2 = 1 +TLORA_V1 = 2 +TLORA_V2_1_1p6 = 3 +TBEAM = 4 +HELTEC_V2_0 = 5 +TBEAM0p7 = 6 +T_ECHO = 7 +TLORA_V1_1p3 = 8 +RAK4631 = 9 +HELTEC_V2_1 = 10 +LORA_RELAY_V1 = 32 +NRF52840DK = 33 +PPR = 34 +GENIEBLOCKS = 35 +NRF52_UNKNOWN = 36 +PORTDUINO = 37 +ANDROID_SIM = 38 +DIY_V1 = 39 +CLEAR = 0 +CYAN = 1 +WHITE = 2 +YELLOW = 3 +ORANGE = 4 +MAGENTA = 5 +RED = 6 +MAROON = 7 +PURPLE = 8 +DARK_BLUE = 9 +BLUE = 10 +TEAL = 11 +GREEN = 12 +DARK_GREEN = 13 +BROWN = 14 +Unused = 0 +DATA_PAYLOAD_LEN = 237 +globals()['None'] = 0 +TxWatchdog = 1 +SleepEnterWait = 2 +NoRadio = 3 +Unspecified = 4 +UBloxInitFailed = 5 +NoAXP192 = 6 +InvalidRadioSetting = 7 +TransmitFailed = 8 +Brownout = 9 +SX1262Failure = 10 +RadioSpiBug = 11 + + +_POSITION_LOCSOURCE = _descriptor.EnumDescriptor( + name='LocSource', + full_name='Position.LocSource', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='LOCSRC_UNSPECIFIED', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LOCSRC_MANUAL_ENTRY', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LOCSRC_GPS_INTERNAL', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LOCSRC_GPS_EXTERNAL', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=561, + serialized_end=671, +) +_sym_db.RegisterEnumDescriptor(_POSITION_LOCSOURCE) + +_POSITION_ALTSOURCE = _descriptor.EnumDescriptor( + name='AltSource', + full_name='Position.AltSource', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='ALTSRC_UNSPECIFIED', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ALTSRC_MANUAL_ENTRY', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ALTSRC_GPS_INTERNAL', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ALTSRC_GPS_EXTERNAL', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ALTSRC_BAROMETRIC', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=674, + serialized_end=807, +) +_sym_db.RegisterEnumDescriptor(_POSITION_ALTSOURCE) + +_ROUTING_ERROR = _descriptor.EnumDescriptor( + name='Error', + full_name='Routing.Error', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='NONE', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NO_ROUTE', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GOT_NAK', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TIMEOUT', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NO_INTERFACE', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAX_RETRANSMIT', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NO_CHANNEL', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TOO_LARGE', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NO_RESPONSE', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='BAD_REQUEST', index=9, number=32, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NOT_AUTHORIZED', index=10, number=33, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=1207, + serialized_end=1387, +) +_sym_db.RegisterEnumDescriptor(_ROUTING_ERROR) + +_MESHPACKET_PRIORITY = _descriptor.EnumDescriptor( + name='Priority', + full_name='MeshPacket.Priority', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MIN', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='BACKGROUND', index=2, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DEFAULT', index=3, number=64, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RELIABLE', index=4, number=70, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ACK', index=5, number=120, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAX', index=6, number=127, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=1769, + serialized_end=1860, +) +_sym_db.RegisterEnumDescriptor(_MESHPACKET_PRIORITY) + +_LOGRECORD_LEVEL = _descriptor.EnumDescriptor( + name='Level', + full_name='LogRecord.Level', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CRITICAL', index=1, number=50, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ERROR', index=2, number=40, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WARNING', index=3, number=30, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='INFO', index=4, number=20, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DEBUG', index=5, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TRACE', index=6, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2416, + serialized_end=2504, +) +_sym_db.RegisterEnumDescriptor(_LOGRECORD_LEVEL) + + +_POSITION = _descriptor.Descriptor( + name='Position', + full_name='Position', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='latitude_i', full_name='Position.latitude_i', index=0, + number=1, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='longitude_i', full_name='Position.longitude_i', index=1, + number=2, type=15, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='altitude', full_name='Position.altitude', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='battery_level', full_name='Position.battery_level', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time', full_name='Position.time', index=4, + number=9, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='location_source', full_name='Position.location_source', index=5, + number=10, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='altitude_source', full_name='Position.altitude_source', index=6, + number=11, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pos_timestamp', full_name='Position.pos_timestamp', index=7, + number=12, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pos_time_millis', full_name='Position.pos_time_millis', index=8, + number=13, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='altitude_hae', full_name='Position.altitude_hae', index=9, + number=14, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='alt_geoid_sep', full_name='Position.alt_geoid_sep', index=10, + number=15, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='PDOP', full_name='Position.PDOP', index=11, + number=16, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='HDOP', full_name='Position.HDOP', index=12, + number=17, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='VDOP', full_name='Position.VDOP', index=13, + number=18, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_accuracy', full_name='Position.gps_accuracy', index=14, + number=19, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ground_speed', full_name='Position.ground_speed', index=15, + number=20, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ground_track', full_name='Position.ground_track', index=16, + number=21, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='fix_quality', full_name='Position.fix_quality', index=17, + number=22, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='fix_type', full_name='Position.fix_type', index=18, + number=23, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sats_in_view', full_name='Position.sats_in_view', index=19, + number=24, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sensor_id', full_name='Position.sensor_id', index=20, + number=25, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pos_next_update', full_name='Position.pos_next_update', index=21, + number=40, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='pos_seq_number', full_name='Position.pos_seq_number', index=22, + number=41, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _POSITION_LOCSOURCE, + _POSITION_ALTSOURCE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=31, + serialized_end=819, +) + + +_USER = _descriptor.Descriptor( + name='User', + full_name='User', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='User.id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='long_name', full_name='User.long_name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='short_name', full_name='User.short_name', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='macaddr', full_name='User.macaddr', index=3, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='hw_model', full_name='User.hw_model', index=4, + number=6, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='is_licensed', full_name='User.is_licensed', index=5, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='team', full_name='User.team', index=6, + number=8, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='tx_power_dbm', full_name='User.tx_power_dbm', index=7, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ant_gain_dbi', full_name='User.ant_gain_dbi', index=8, + number=11, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ant_azimuth', full_name='User.ant_azimuth', index=9, + number=12, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=822, + serialized_end=1037, +) + + +_ROUTEDISCOVERY = _descriptor.Descriptor( + name='RouteDiscovery', + full_name='RouteDiscovery', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='route', full_name='RouteDiscovery.route', index=0, + number=2, type=7, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1039, + serialized_end=1070, +) + + +_ROUTING = _descriptor.Descriptor( + name='Routing', + full_name='Routing', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='route_request', full_name='Routing.route_request', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='route_reply', full_name='Routing.route_reply', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='error_reason', full_name='Routing.error_reason', index=2, + number=3, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _ROUTING_ERROR, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='variant', full_name='Routing.variant', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=1073, + serialized_end=1398, +) + + +_DATA = _descriptor.Descriptor( + name='Data', + full_name='Data', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='portnum', full_name='Data.portnum', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='payload', full_name='Data.payload', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='want_response', full_name='Data.want_response', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='dest', full_name='Data.dest', index=3, + number=4, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='source', full_name='Data.source', index=4, + number=5, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='request_id', full_name='Data.request_id', index=5, + number=6, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1400, + serialized_end=1523, +) + + +_MESHPACKET = _descriptor.Descriptor( + name='MeshPacket', + full_name='MeshPacket', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='from', full_name='MeshPacket.from', index=0, + number=1, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='to', full_name='MeshPacket.to', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='channel', full_name='MeshPacket.channel', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='decoded', full_name='MeshPacket.decoded', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='encrypted', full_name='MeshPacket.encrypted', index=4, + number=5, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='id', full_name='MeshPacket.id', index=5, + number=6, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='rx_time', full_name='MeshPacket.rx_time', index=6, + number=7, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='rx_snr', full_name='MeshPacket.rx_snr', index=7, + number=8, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='hop_limit', full_name='MeshPacket.hop_limit', index=8, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='want_ack', full_name='MeshPacket.want_ack', index=9, + number=11, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='priority', full_name='MeshPacket.priority', index=10, + number=12, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='rx_rssi', full_name='MeshPacket.rx_rssi', index=11, + number=13, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _MESHPACKET_PRIORITY, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='payloadVariant', full_name='MeshPacket.payloadVariant', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=1526, + serialized_end=1878, +) + + +_NODEINFO = _descriptor.Descriptor( + name='NodeInfo', + full_name='NodeInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='num', full_name='NodeInfo.num', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='user', full_name='NodeInfo.user', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position', full_name='NodeInfo.position', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='snr', full_name='NodeInfo.snr', index=3, + number=7, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='last_heard', full_name='NodeInfo.last_heard', index=4, + number=4, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1880, + serialized_end=1986, +) + + +_MYNODEINFO = _descriptor.Descriptor( + name='MyNodeInfo', + full_name='MyNodeInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='my_node_num', full_name='MyNodeInfo.my_node_num', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='has_gps', full_name='MyNodeInfo.has_gps', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='num_bands', full_name='MyNodeInfo.num_bands', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='max_channels', full_name='MyNodeInfo.max_channels', index=3, + number=15, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='region', full_name='MyNodeInfo.region', index=4, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=b'\030\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='hw_model_deprecated', full_name='MyNodeInfo.hw_model_deprecated', index=5, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=b'\030\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='firmware_version', full_name='MyNodeInfo.firmware_version', index=6, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='error_code', full_name='MyNodeInfo.error_code', index=7, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='error_address', full_name='MyNodeInfo.error_address', index=8, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='error_count', full_name='MyNodeInfo.error_count', index=9, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='reboot_count', full_name='MyNodeInfo.reboot_count', index=10, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='message_timeout_msec', full_name='MyNodeInfo.message_timeout_msec', index=11, + number=13, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_app_version', full_name='MyNodeInfo.min_app_version', index=12, + number=14, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1989, + serialized_end=2320, +) + + +_LOGRECORD = _descriptor.Descriptor( + name='LogRecord', + full_name='LogRecord', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='message', full_name='LogRecord.message', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time', full_name='LogRecord.time', index=1, + number=2, type=7, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='source', full_name='LogRecord.source', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='level', full_name='LogRecord.level', index=3, + number=4, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _LOGRECORD_LEVEL, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2323, + serialized_end=2504, +) + + +_FROMRADIO = _descriptor.Descriptor( + name='FromRadio', + full_name='FromRadio', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='num', full_name='FromRadio.num', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='packet', full_name='FromRadio.packet', index=1, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='my_info', full_name='FromRadio.my_info', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='node_info', full_name='FromRadio.node_info', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='log_record', full_name='FromRadio.log_record', index=4, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='config_complete_id', full_name='FromRadio.config_complete_id', index=5, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='rebooted', full_name='FromRadio.rebooted', index=6, + number=9, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='payloadVariant', full_name='FromRadio.payloadVariant', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=2507, + serialized_end=2740, +) + + +_TORADIO_PEERINFO = _descriptor.Descriptor( + name='PeerInfo', + full_name='ToRadio.PeerInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='app_version', full_name='ToRadio.PeerInfo.app_version', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='mqtt_gateway', full_name='ToRadio.PeerInfo.mqtt_gateway', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2873, + serialized_end=2926, +) + +_TORADIO = _descriptor.Descriptor( + name='ToRadio', + full_name='ToRadio', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='packet', full_name='ToRadio.packet', index=0, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='peer_info', full_name='ToRadio.peer_info', index=1, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='want_config_id', full_name='ToRadio.want_config_id', index=2, + number=100, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='disconnect', full_name='ToRadio.disconnect', index=3, + number=104, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_TORADIO_PEERINFO, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='payloadVariant', full_name='ToRadio.payloadVariant', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=2743, + serialized_end=2968, +) + +_POSITION.fields_by_name['location_source'].enum_type = _POSITION_LOCSOURCE +_POSITION.fields_by_name['altitude_source'].enum_type = _POSITION_ALTSOURCE +_POSITION_LOCSOURCE.containing_type = _POSITION +_POSITION_ALTSOURCE.containing_type = _POSITION +_USER.fields_by_name['hw_model'].enum_type = _HARDWAREMODEL +_USER.fields_by_name['team'].enum_type = _TEAM +_ROUTING.fields_by_name['route_request'].message_type = _ROUTEDISCOVERY +_ROUTING.fields_by_name['route_reply'].message_type = _ROUTEDISCOVERY +_ROUTING.fields_by_name['error_reason'].enum_type = _ROUTING_ERROR +_ROUTING_ERROR.containing_type = _ROUTING +_ROUTING.oneofs_by_name['variant'].fields.append( + _ROUTING.fields_by_name['route_request']) +_ROUTING.fields_by_name['route_request'].containing_oneof = _ROUTING.oneofs_by_name['variant'] +_ROUTING.oneofs_by_name['variant'].fields.append( + _ROUTING.fields_by_name['route_reply']) +_ROUTING.fields_by_name['route_reply'].containing_oneof = _ROUTING.oneofs_by_name['variant'] +_ROUTING.oneofs_by_name['variant'].fields.append( + _ROUTING.fields_by_name['error_reason']) +_ROUTING.fields_by_name['error_reason'].containing_oneof = _ROUTING.oneofs_by_name['variant'] +_DATA.fields_by_name['portnum'].enum_type = portnums__pb2._PORTNUM +_MESHPACKET.fields_by_name['decoded'].message_type = _DATA +_MESHPACKET.fields_by_name['priority'].enum_type = _MESHPACKET_PRIORITY +_MESHPACKET_PRIORITY.containing_type = _MESHPACKET +_MESHPACKET.oneofs_by_name['payloadVariant'].fields.append( + _MESHPACKET.fields_by_name['decoded']) +_MESHPACKET.fields_by_name['decoded'].containing_oneof = _MESHPACKET.oneofs_by_name['payloadVariant'] +_MESHPACKET.oneofs_by_name['payloadVariant'].fields.append( + _MESHPACKET.fields_by_name['encrypted']) +_MESHPACKET.fields_by_name['encrypted'].containing_oneof = _MESHPACKET.oneofs_by_name['payloadVariant'] +_NODEINFO.fields_by_name['user'].message_type = _USER +_NODEINFO.fields_by_name['position'].message_type = _POSITION +_MYNODEINFO.fields_by_name['error_code'].enum_type = _CRITICALERRORCODE +_LOGRECORD.fields_by_name['level'].enum_type = _LOGRECORD_LEVEL +_LOGRECORD_LEVEL.containing_type = _LOGRECORD +_FROMRADIO.fields_by_name['packet'].message_type = _MESHPACKET +_FROMRADIO.fields_by_name['my_info'].message_type = _MYNODEINFO +_FROMRADIO.fields_by_name['node_info'].message_type = _NODEINFO +_FROMRADIO.fields_by_name['log_record'].message_type = _LOGRECORD +_FROMRADIO.oneofs_by_name['payloadVariant'].fields.append( + _FROMRADIO.fields_by_name['packet']) +_FROMRADIO.fields_by_name['packet'].containing_oneof = _FROMRADIO.oneofs_by_name['payloadVariant'] +_FROMRADIO.oneofs_by_name['payloadVariant'].fields.append( + _FROMRADIO.fields_by_name['my_info']) +_FROMRADIO.fields_by_name['my_info'].containing_oneof = _FROMRADIO.oneofs_by_name['payloadVariant'] +_FROMRADIO.oneofs_by_name['payloadVariant'].fields.append( + _FROMRADIO.fields_by_name['node_info']) +_FROMRADIO.fields_by_name['node_info'].containing_oneof = _FROMRADIO.oneofs_by_name['payloadVariant'] +_FROMRADIO.oneofs_by_name['payloadVariant'].fields.append( + _FROMRADIO.fields_by_name['log_record']) +_FROMRADIO.fields_by_name['log_record'].containing_oneof = _FROMRADIO.oneofs_by_name['payloadVariant'] +_FROMRADIO.oneofs_by_name['payloadVariant'].fields.append( + _FROMRADIO.fields_by_name['config_complete_id']) +_FROMRADIO.fields_by_name['config_complete_id'].containing_oneof = _FROMRADIO.oneofs_by_name['payloadVariant'] +_FROMRADIO.oneofs_by_name['payloadVariant'].fields.append( + _FROMRADIO.fields_by_name['rebooted']) +_FROMRADIO.fields_by_name['rebooted'].containing_oneof = _FROMRADIO.oneofs_by_name['payloadVariant'] +_TORADIO_PEERINFO.containing_type = _TORADIO +_TORADIO.fields_by_name['packet'].message_type = _MESHPACKET +_TORADIO.fields_by_name['peer_info'].message_type = _TORADIO_PEERINFO +_TORADIO.oneofs_by_name['payloadVariant'].fields.append( + _TORADIO.fields_by_name['packet']) +_TORADIO.fields_by_name['packet'].containing_oneof = _TORADIO.oneofs_by_name['payloadVariant'] +_TORADIO.oneofs_by_name['payloadVariant'].fields.append( + _TORADIO.fields_by_name['peer_info']) +_TORADIO.fields_by_name['peer_info'].containing_oneof = _TORADIO.oneofs_by_name['payloadVariant'] +_TORADIO.oneofs_by_name['payloadVariant'].fields.append( + _TORADIO.fields_by_name['want_config_id']) +_TORADIO.fields_by_name['want_config_id'].containing_oneof = _TORADIO.oneofs_by_name['payloadVariant'] +_TORADIO.oneofs_by_name['payloadVariant'].fields.append( + _TORADIO.fields_by_name['disconnect']) +_TORADIO.fields_by_name['disconnect'].containing_oneof = _TORADIO.oneofs_by_name['payloadVariant'] +DESCRIPTOR.message_types_by_name['Position'] = _POSITION +DESCRIPTOR.message_types_by_name['User'] = _USER +DESCRIPTOR.message_types_by_name['RouteDiscovery'] = _ROUTEDISCOVERY +DESCRIPTOR.message_types_by_name['Routing'] = _ROUTING +DESCRIPTOR.message_types_by_name['Data'] = _DATA +DESCRIPTOR.message_types_by_name['MeshPacket'] = _MESHPACKET +DESCRIPTOR.message_types_by_name['NodeInfo'] = _NODEINFO +DESCRIPTOR.message_types_by_name['MyNodeInfo'] = _MYNODEINFO +DESCRIPTOR.message_types_by_name['LogRecord'] = _LOGRECORD +DESCRIPTOR.message_types_by_name['FromRadio'] = _FROMRADIO +DESCRIPTOR.message_types_by_name['ToRadio'] = _TORADIO +DESCRIPTOR.enum_types_by_name['HardwareModel'] = _HARDWAREMODEL +DESCRIPTOR.enum_types_by_name['Team'] = _TEAM +DESCRIPTOR.enum_types_by_name['Constants'] = _CONSTANTS +DESCRIPTOR.enum_types_by_name['CriticalErrorCode'] = _CRITICALERRORCODE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Position = _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), { + 'DESCRIPTOR' : _POSITION, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:Position) + }) +_sym_db.RegisterMessage(Position) + +User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), { + 'DESCRIPTOR' : _USER, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:User) + }) +_sym_db.RegisterMessage(User) + +RouteDiscovery = _reflection.GeneratedProtocolMessageType('RouteDiscovery', (_message.Message,), { + 'DESCRIPTOR' : _ROUTEDISCOVERY, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:RouteDiscovery) + }) +_sym_db.RegisterMessage(RouteDiscovery) + +Routing = _reflection.GeneratedProtocolMessageType('Routing', (_message.Message,), { + 'DESCRIPTOR' : _ROUTING, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:Routing) + }) +_sym_db.RegisterMessage(Routing) + +Data = _reflection.GeneratedProtocolMessageType('Data', (_message.Message,), { + 'DESCRIPTOR' : _DATA, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:Data) + }) +_sym_db.RegisterMessage(Data) + +MeshPacket = _reflection.GeneratedProtocolMessageType('MeshPacket', (_message.Message,), { + 'DESCRIPTOR' : _MESHPACKET, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:MeshPacket) + }) +_sym_db.RegisterMessage(MeshPacket) + +NodeInfo = _reflection.GeneratedProtocolMessageType('NodeInfo', (_message.Message,), { + 'DESCRIPTOR' : _NODEINFO, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:NodeInfo) + }) +_sym_db.RegisterMessage(NodeInfo) + +MyNodeInfo = _reflection.GeneratedProtocolMessageType('MyNodeInfo', (_message.Message,), { + 'DESCRIPTOR' : _MYNODEINFO, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:MyNodeInfo) + }) +_sym_db.RegisterMessage(MyNodeInfo) + +LogRecord = _reflection.GeneratedProtocolMessageType('LogRecord', (_message.Message,), { + 'DESCRIPTOR' : _LOGRECORD, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:LogRecord) + }) +_sym_db.RegisterMessage(LogRecord) + +FromRadio = _reflection.GeneratedProtocolMessageType('FromRadio', (_message.Message,), { + 'DESCRIPTOR' : _FROMRADIO, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:FromRadio) + }) +_sym_db.RegisterMessage(FromRadio) + +ToRadio = _reflection.GeneratedProtocolMessageType('ToRadio', (_message.Message,), { + + 'PeerInfo' : _reflection.GeneratedProtocolMessageType('PeerInfo', (_message.Message,), { + 'DESCRIPTOR' : _TORADIO_PEERINFO, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:ToRadio.PeerInfo) + }) + , + 'DESCRIPTOR' : _TORADIO, + '__module__' : 'mesh_pb2' + # @@protoc_insertion_point(class_scope:ToRadio) + }) +_sym_db.RegisterMessage(ToRadio) +_sym_db.RegisterMessage(ToRadio.PeerInfo) + + +DESCRIPTOR._options = None +_MYNODEINFO.fields_by_name['region']._options = None +_MYNODEINFO.fields_by_name['hw_model_deprecated']._options = None +# @@protoc_insertion_point(module_scope) diff --git a/meshtastic-mqtt-client.py b/meshtastic-mqtt-client.py new file mode 100644 index 0000000..2c1d4e7 --- /dev/null +++ b/meshtastic-mqtt-client.py @@ -0,0 +1,453 @@ +#!/bin/python +# Las dependencias: +import yaml +import json +import time +import os +import sys +import argparse +import paho.mqtt.client as mqtt +import logging +#import logging.handlers as handlers +import PySimpleGUI as sg +import sqlite3 as sl +#import sqlalchemy for future version +import random +#from queue import Queue +from logging import NullHandler + +#PROTOBUF dependencies copied from joshpirihi/meshtastic-mqtt +import portnums_pb2 as portnums_pb2 +from portnums_pb2 import ENVIRONMENTAL_MEASUREMENT_APP, POSITION_APP +import mesh_pb2 as mesh_pb2 +import mqtt_pb2 as mqtt_pb2 +import environmental_measurement_pb2 as environmental_measurement_pb2 +from google.protobuf.json_format import MessageToJson + + +# First we define the GUI +def generate_main_window(menu_def): + sg.theme('Reddit') + sg.set_options(element_padding=(1, 1)) + + layout = [ + [sg.Menu(menu_def, tearoff=False, pad=(200, 1))], + [sg.Text('Meshtastic MQTT Client')], + [sg.Output(size=(80,25),key='-OUTPUT_RADIO-')], + [sg.Button('Send Message to every node ',key='-SEND-'), sg.InputText(key='-MSGINPUT-'), + sg.Checkbox('Want Response',key='-WNTRSPTF-')], + [sg.Button('Send Message to one node '),sg.Text('message'),sg.InputText(size=(20,1),key='-NODE_MSG-'), + sg.Text('Node'),sg.InputText(size=(10,1),key='-NODE-')], + [sg.Button('Connect to MQTT Server ', key='-CONNECT-')], [sg.Button('Disconnect from MQTT Server', key='-DISCONNECT-')]] + + return sg.Window('Meshtastic MQTT Client', layout, finalize=True, grab_anywhere=True) +def generate_gps_window(menu_def): + sg.theme('Reddit') + sg.set_options(element_padding=(1, 1)) + layout = [ + [sg.Menu(menu_def, tearoff=False, pad=(200, 1))], + [sg.Text('GPS Client Positions')], + [sg.Output(size=(80,25),key='-POSITIONS-')], + [sg.Button('Export Positions',key='-EXPORT-')]] + return sg.Window('GPS Client Positions', layout, finalize=True, grab_anywhere=True) +def load_config(): + try: + config_dir = os.path.dirname(os.path.realpath(__file__)) + config_file = os.path.join(config_dir, 'config/config.yaml') + configuration = open(config_file, 'r') + logging.info(f"Opening the following file: {config_file}") + config = yaml.safe_load(configuration) + return config + except Exception as exception: + logging.critical(f"There's an error accessing your config.yml file, the error is the following: {exception}") + print("There's no config yaml file in the program's folder, please check the logs.") + sys.exit() +# Connect to MQTT funcionts - this I took directly from the paho docs. +def on_connect(client, userdata, flags, rc): + if int(rc) == 0: + logging.info(f"Succesfully connected to the server.The rc is {rc}.") + client.subscribe("$SYS/#") + elif int(rc) == 1: + logging.info(f"The connection was refused due to an incorrect protocol version.The rc is {rc}.") + print("The connection was refused due to an incorrect protocol version.") + elif int(rc) == 2: + logging.info(f"The connection was refused due to an incorrect client identifier. The rc is {rc}.") + print("The connection was refused due to an incorrect client identifier.") + elif int(rc) == 3: + logging.info(f"The connection was refused, the server is unavailable or there is mistake in the IP address.The rc is {rc}.") + print("The connection was refused, the server is unavailable or there is mistake in the IP address.The rc is {rc}.") + elif int(rc) == 4: + logging.info(f"The connection was refused due to lack of authorization (wrong user or password).The rc is {rc}.") + print("The connection was refused due to lack of authorization (wrong user or password).") + elif int(rc) == 5: + logging.info(f"The connection was refused due to lack of authorization (wrong user or password).The rc is {rc}.") + print("The connection was refused due to lack of authorization (wrong user or password).") +def on_message(client, userdata, msg): + if "$SYS/" in msg.topic: # I filter out the $SYS internal mqtt topic + pass + else: + logging.debug("You have received the following message:" +str(msg.payload) + " on topic: " + str(msg.topic)) + decode_message(msg) +def decode_message(msg): + try: + full_message = msg.payload +#I add service envelope decoding from protobuf + se = mqtt_pb2.ServiceEnvelope() + se.ParseFromString(full_message) + decoded_message = se.packet +#I use portnums to detect the type of message (text, position or nodeinfo) + if decoded_message.decoded.portnum == portnums_pb2.TEXT_MESSAGE_APP: + text_message = decoded_message.decoded.payload.decode("utf-8") + mesh_node_id = str(getattr(decoded_message, "from")) + if mesh_node_id == mesh_client_id: + pass + else: + print(mesh_node_id + ": " + text_message) + main_window.Refresh() + save_text_message(text_message, mesh_node_id) + elif decoded_message.decoded.portnum == portnums_pb2.POSITION_APP: + mesh_node_id = str(getattr(decoded_message, "from")) + if mesh_node_id == mesh_client_id: + pass + else: + decoded_packet = mesh_pb2.Position() + decoded_packet.ParseFromString(decoded_message.decoded.payload) + battery_level = decoded_packet.battery_level + lat = decoded_packet.latitude_i * 1e-7 + lon = decoded_packet.longitude_i * 1e-7 + altitude= decoded_packet.altitude + node_time = decoded_packet.time + save_position(lat, lon, altitude, node_time, battery_level, mesh_node_id) + elif decoded_message.decoded.portnum == portnums_pb2.NODEINFO_APP: + mesh_node_full_id = mesh_pb2.User() + mesh_node_id = str(getattr(decoded_message, "from")) + if mesh_node_id == mesh_client_id: + pass + else: + mesh_node_full_id = mesh_pb2.User() + mesh_node_id = str(getattr(decoded_message, "from")) + + save_full_message(full_message,mesh_node_id) + except Exception as exception: + logging.critical(f'There was an error decoding your received message. You get the following error: {exception} ') +def encode_message(message,mesh_channel_id,mesh_gateway_id,mesh_client_id): + try: + decoded_message = bytes(message,"ascii") +# print(decoded_message) + + encoded_message = mesh_pb2.Data() + encoded_message.portnum = portnums_pb2.TEXT_MESSAGE_APP + encoded_message.payload = decoded_message + packet = mesh_pb2.MeshPacket() + setattr(packet,"from",int(mesh_client_id)) + setattr(packet,"to",random.getrandbits(32)) + setattr(packet,"id",random.getrandbits(32)) + # setattr(packet,"rx_time",random.getrandbits(20)) + setattr(packet,"hop_limit",2) + packet.decoded.CopyFrom(encoded_message) + + mesh_se = mqtt_pb2.ServiceEnvelope() + mesh_se.channel_id = mesh_channel_id + mesh_se.gateway_id = mesh_gateway_id + mesh_se.packet.CopyFrom(packet) + mesh_se=mesh_se.SerializeToString() + #print(packet) + #mesh_se=mesh_se.encode('base64') + + #mesh_se = mesh_se.SerializeToString() + return mesh_se + except Exception as exception: + logging.critical(f'There was an error encoding you message. You get the following error: {exception} ') + +def check_id(mesh_node_id): + try: + con = sl.connect('config/meshtastic-mqtt-client.db') + cur = con.cursor() + cur.execute(f'''SELECT COUNT(node_id) FROM NODE WHERE nodemeshid = '{str(mesh_node_id)}';''') + sql_id_results = int(cur.fetchone()[0] or 0) + if (sql_id_results == 0): + logging.info("The mesh id that the message contained was not registered on the database. We will create a new record.") + sqlite_query = f'''INSERT INTO NODE (nodemeshid) VALUES ('{str(mesh_node_id)}');''' + cur.execute(str(sqlite_query)) + con.commit() + logging.info(f"{str(mesh_node_id)} has been inserted in the NODE table.") + cur.execute(f'''SELECT node_id FROM NODE WHERE nodemeshid = '{str(mesh_node_id)}';''') + node_id = str(cur.fetchone()[0]) + else: + cur.execute(f'''SELECT node_id FROM NODE WHERE nodemeshid = '{mesh_node_id}';''') + node_id = int(cur.fetchone()[0]) + return node_id + except Exception as exception: + logging.critical(f' There was a problem getting your node id. The exception is: {exception} ') +def save_full_message(full_message,mesh_node_id): + try: + #full_message=re.escape(full_message) + node_id = check_id(mesh_node_id) + con = sl.connect('config/meshtastic-mqtt-client.db') + cur = con.cursor() + sqlite_query = 'INSERT INTO MESSAGE (node_id,fullmessage) VALUES (?,?);' + data_tuple = (node_id,str(full_message)) + cur.execute(str(sqlite_query), data_tuple) + con.commit() + except Exception as exception: + logging.critical(f' There was a problem saving the full message to your database. The exception is: {exception} ') +def save_text_message(text_message, mesh_node_id): + try: + node_id = check_id(mesh_node_id) + con = sl.connect('config/meshtastic-mqtt-client.db') + cur = con.cursor() + cur.execute(f''' INSERT INTO TEXTMESSAGE (node_id,textmessage) VALUES ('{node_id}','{text_message}');''') + con.commit() + except Exception as exception: + logging.critical(f'There was an error saving your text message. The exception is: {exception} ') +def save_position(lat,lon,altitude,node_time,battery_level,mesh_node_id): + try: + node_id = check_id(mesh_node_id) + con = sl.connect('config/meshtastic-mqtt-client.db') + cur = con.cursor() + cur.execute(f''' INSERT INTO POSITION (node_id,lat,long,altitude,node_time,battery) VALUES ('{node_id}','{lat}','{lon}', '{altitude}','{node_time}','{battery_level}');''') + con.commit() + except Exception as exception: + logging.critical(f'There was an error saving your position, the exception is: {exception} ') +def on_publish(client, userdata, mid): + logging.debug("the published message status:" + str(int(userdata or 0)) + " (0 means published)") + logging.debug("the published message id is:" + str(mid)) +def mqtt_publish_dict(mqtt_dict, client, mqtt_ip): + for x, y in mqtt_dict.items(): + client.connect(mqtt_ip, 1883, 60) + client.publish(str(x), str(y), qos=1, retain=True).wait_for_publish + logging.debug("You have sent the following payload: " + str(y)) + logging.debug("To the following topic: " + str(x)) + logging.debug("On the server with IP: " + mqtt_ip) +def mqtt_publish_message(message,mqtt_topic,client,mqtt_ip,mesh_client_id): + try: + mesh_se = encode_message(message,mesh_channel_id,mesh_gateway_id,mesh_client_id) + client.publish(str(mqtt_topic), mesh_se, qos=1, retain=True).wait_for_publish + logging.debug("You have sent the following payload: " + str(message)) + logging.debug("To the following topic: " + str(mqtt_topic)) + logging.debug("On the server with IP: " + mqtt_ip) + except Exception as exception: + logging.critical(f'There was an error sending you message. You get the following error: {exception} ') +def get_mqtt_config(config): + try: + mqtt_dict = config['MQTT'] + mqtt_ip = mqtt_dict['GATEWAY_ip'] + mqtt_user = mqtt_dict['MQTT_USER'] + mqtt_pass = mqtt_dict['MQTT_PW'] + period = mqtt_dict['TIME_PERIOD'] + logging.debug("This is your mqtt dictionary:" + str(mqtt_dict)) + except Exception as exception: + logging.critical(f'Your YAML is missing something in the MQTT section. You get the following error: {exception} ') + return mqtt_ip, mqtt_user, mqtt_pass, period +def get_meshtastic_config(config): + try: + meshtastic_dict = dict(config['MESHTASTIC']) + mesh_channel_id = str(meshtastic_dict['CHANNEL_ID']) + logging.debug(f"This is your channel id: {str(mesh_channel_id)}") + mesh_client_id = str(meshtastic_dict['CLIENT_ID']) + logging.debug(f"This is your client id: {str(mesh_client_id)}") + mesh_gateway_id = str(meshtastic_dict['GATEWAY_ID']) + logging.debug(f"This is your gateway id: {str(mesh_gateway_id)}") + common_ports_dict = meshtastic_dict['COMMON_PORTS'] + extra_ports_dict = {} + try: + if "EXTRA_PORTS" in meshtastic_dict.keys(): + extra_ports_list = meshtastic_dict['EXTRA_PORTS'] + for port in extra_ports_list: + port_number = port['PORT_NUMBER'] + port_name = port['PORT_NAME'] + port_ha_class = port['HA_CLASS'] + extra_ports_dict[port_number]= {"port_number": port_number, "port_name": port_name, "port_ha_class": port_ha_class} + ports_count = len(extra_ports_dict) + logging.info(f"You have {ports_count} extra ports configured.") + logging.debug(f"This is the configuration information they have: {str(extra_ports_dict)}") + else: + logging.debug("You have no extra ports configured.") + except Exception as exception: + logging.critical(f'Your YAML is missing something in the ports section. You get the following error: {exception} ') + return mesh_channel_id, mesh_client_id, mesh_gateway_id, common_ports_dict, extra_ports_dict + except Exception as exception: + logging.critical(f'Your YAML is missing something in the Meshtastic section. You get the following error: {exception}') +def gateway_subscribe(client, mqtt_ip, common_ports_list, extra_ports_dict, mesh_channel_id, mesh_gateway_id): + try: + #for port in common_ports_list: + mesh_mqtt_topic = "msh/1/c/" + str(mesh_channel_id) + "/#" #+ "/" + str(mesh_gateway_id) + "/" + port[0] + client.subscribe(mesh_mqtt_topic) + logging.info(f"You are now subscribed to {mesh_mqtt_topic}.") + except Exception as exception: + logging.error(f"There is an error in your power sensor collection. The error is the following: {exception}") +def client_db(): + try: + con = sl.connect('config/meshtastic-mqtt-client.db') + cur = con.cursor() + cur.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' and name ='NODE' ''') + if cur.fetchone()[0]==1 : + print('NODE table exists.') + else: + cur.execute("""CREATE TABLE NODE(node_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, nodemeshid VARCHAR(255),Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP);""") + print("NODE table created.") + cur.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' and name ='MESSAGE' ''') + if cur.fetchone()[0]==1 : + print('MESSAGE table exists.') + else: + cur.execute("""CREATE TABLE MESSAGE(message_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, node_id INTEGER, fullmessage VARCHAR(255),Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (node_id) REFERENCES NODE(node_id));""") + print("MESSAGE table created.") + cur.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' and name ='POSITION' ''') + if cur.fetchone()[0]==1 : + print('POSITION table exists.') + else: + cur.execute("""CREATE TABLE POSITION(position_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, node_id INTEGER, lat VARCHAR(255),long VARCHAR(255),altitude VARCHAR(255),node_time DATETIME, battery VARCHAR(255),Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (node_id) REFERENCES NODE(node_id));""") + print("POSITION table created.") + cur.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' and name ='TEXTMESSAGE' ''') + if cur.fetchone()[0]==1 : + print('TEXTMESSAGE table exists.') + else: + cur.execute("""CREATE TABLE TEXTMESSAGE(textmessage_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, node_id INTEGER, textmessage VARCHAR(255),Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (node_id) REFERENCES NODE(node_id));""") + print("TEXTMESSAGE table created.") + cur.execute(''' SELECT count(name) FROM sqlite_master WHERE type='table' and name ='GATEWAY' ''') + if cur.fetchone()[0]==1 : + print('GATEWAY table exists.') + else: + cur.execute("""CREATE TABLE GATEWAY(gateway_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, node_id INTEGER, nodemeshid VARCHAR(255),Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (node_id) REFERENCES NODE(node_id));""") + print("GATEWAY table created.") + cur.execute(f''' SELECT count(node_id) FROM NODE WHERE nodemeshid ='{mesh_client_id}' ''') + if cur.fetchone()[0]==1: + logging.info("Your node is already registered in the Database.") + else: + cur.execute(""" INSERT into NODE (nodemeshid) VALUES ('!7efeee00');""") + con.commit() + logging.info(f"Registering node {mesh_client_id} on your local database.") + except Exception as exception: + logging.critical(f"There was a problem starting you database. The exception is {exception}") +#def sql_db(): for future cases with external connection +def main(): # Here i have the main program + """Main function to run window in a loop.""" + try: + #Here I load yaml configuration files and create variables for the elements in the yaml + global config + config = load_config() + except Exception as exception: + logging.critical(f"Please check your YAML, it might be missing somethings. The exception is {exception}") + #Create mqtt global variables + global mqtt_ip, mqtt_user, mqtt_pass, period + try: + mqtt_ip, mqtt_user, mqtt_pass, period = get_mqtt_config(config) + except Exception as exception: + logging.critical(f"Please check your YAML, it might be missing some parts in the MQTT configuration. The exception is {exception}") + try: + global mesh_channel_id, mesh_client_id, mesh_gateway_id, common_ports_list, extra_ports_dict + mesh_channel_id, mesh_client_id, mesh_gateway_id, common_ports_list, extra_ports_dict = get_meshtastic_config(config) + except Exception as exception: + logging.critical(f'Your YAML is missing something in the Meshtastic section. You get the following error: {exception} ') +# I define the ports list with all the meshtastic ports + + try: + client_db() + except Exception as exception: + logging.critical(f"There was an error connecting to the Database. The exception is {exception}") + global main_window +# I define my window menu and my first window + menu_def = ['File', ['Properties','Change Language - not yet implemented', 'Exit']],['Gateway', ['Gateway Information',' - not yet implemented']],['Messages',['See Crypto Key - Not yet implemented', 'List Known Nodes - not yet implemented', 'Export Message History - not yet implemented']],['GPS',['Open GPS Tab', 'Export GPS Locations']], ['&Help',['&Help', 'About...']] + main_window = generate_main_window(menu_def) + main_window.move(main_window.current_location()[0]-350, main_window.current_location()[1]+0) + #output_window = main_window + + #I first copy methods according to Paho MQTT documentation, then I set the mqtt user and password (which is why I needed first the get_mqtt method, then I start the connection and finnally I create the network loop.) + try: + client = mqtt.Client("meshtastic-mqtt-user") + client.on_message = on_message + client.on_publish= on_publish + client.username_pw_set(mqtt_user, password=mqtt_pass) + client.enable_logger(logger=logger) + client.on_connect = on_connect + client.connect(mqtt_ip, 1883, 60) + print("Connecting") + client.loop_start() + print("Succesfully connected to the MQTT Broker.") + + except Exception as exception: + logging.critical(f"There seems to be a problem connecting to the mqtt server. The exception is {exception}") + try: + time.sleep(1) + #I wait 1 second and subscribe to the mqtt_broker's gateway topic from my Meshtastic Gateway + gateway_subscribe(client, mqtt_ip, common_ports_list, extra_ports_dict, mesh_channel_id, mesh_gateway_id) + except Exception as exception: + logging.critical(f"There seems to be a problem subscribing to the topics. The exception is {exception}") + while(True): + window, event, values = sg.read_all_windows() + if sg.WIN_CLOSED: + main_window.close() + quit() + #else: + #window, event, values = sg.read_all_windows() + if window == sg.WIN_CLOSED: + force_exit = True + client.disconnect + client.loop_stop() + window.close() + quit() + elif event == 'Exit': + force_exit = True + client.disconnect + client.loop_stop() + window.close() + quit() + elif event == sg.WIN_CLOSED: + window.close() + if event == 'Open GPS Tab': + #If the Open GPS Tab option is clicked, I generate the GPS Window + gps_window = generate_gps_window(menu_def) + #And put it nice and tidy on the right of the main window + gps_window.move(main_window.current_location()[0]+680, main_window.current_location()[1]+0) + if event == '-DISCONNECT-': + client.disconnect + client.loop_stop() + print("Disconnected from MQTT Server.") + logging.info("Manually disconnected from MQTT Server.") + if event == '-CONNECT-': + try: + print("Connecting") + client.connect(mqtt_ip, 1883, 60) + client.loop_start() + gateway_subscribe(client, mqtt_ip, common_ports_list, extra_ports_dict, mesh_channel_id, mesh_gateway_id) + print("Succesfully connected to the MQTT Broker.") + except Exception as exception: + logging.critical(f"There seems to be a problem connecting to the mqtt server. The exception is {exception}") + elif event == '-SEND-': #if user clicks send message take input and send to radio + try: + message=str(values['-MSGINPUT-']) + mqtt_topic = "msh/1/c/" + mesh_channel_id +"/" + mesh_gateway_id + print(mesh_client_id + "(You): " + message) + mqtt_publish_message(message,mqtt_topic,client,mqtt_ip,mesh_client_id) + except Exception as exception: + sg.popup(f'There was an error sending your message. The exception is the following: {exception}') + +#We define some arguments to be parsed as well as help messages and description for the script. +parser = argparse.ArgumentParser(description='This is a simple python GUI that connects to an MQTT server to send and receive messages sent by a Meshtastic MQTT Gateway.') +parser.add_argument('-i', action='store_true', help='Run once to only create the entities in your MQTT broker (and see them in home assistant), in a silent initialization.') +parser.add_argument('-DEBUG', action='store_true', help='Add Debug messages to log.') +args = parser.parse_args() +#We define the logic and place where we're gonna log things +log_dir = os.path.dirname(os.path.realpath(__file__)) +log_fname = os.path.join(log_dir, 'config/meshtastic-mqtt-client.log') #I define a relative path for the log to be saved on the same folder as my py +formatter = logging.Formatter("[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s") +logger = logging.getLogger() # I define format and instantiate first logger +#fh = handlers.RotatingFileHandler(log_fname, mode='w', maxBytes=100000, backupCount=3) +#fh.setFormatter(formatter) +#logger.addHandler(fh) +if getattr(args,'i'): + logging.info("Started in silent iniatilization mode, so stopping now.") + logging.info("Initialization complete.") +# client.disconnect +# client.loop_stop() + quit() +if getattr(args,'DEBUG'): + logger.setLevel(logging.DEBUG) #I create an option to run the program in debug mode and receive more information on the logs +else: + logger.setLevel(logging.INFO) +if getattr(args,'i'): + logging.info("Running with -i in silent initialization mode. No GUI will open.") +if getattr(args,'DEBUG'): + logging.info("Running with -DEBUG in DEBUG log mode.") +if __name__== '__main__': + main() \ No newline at end of file diff --git a/mqtt_pb2.py b/mqtt_pb2.py new file mode 100644 index 0000000..38c1f87 --- /dev/null +++ b/mqtt_pb2.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: mqtt.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import mesh_pb2 as mesh__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='mqtt.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\nMQTTProtosH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\nmqtt.proto\x1a\nmesh.proto\"V\n\x0fServiceEnvelope\x12\x1b\n\x06packet\x18\x01 \x01(\x0b\x32\x0b.MeshPacket\x12\x12\n\nchannel_id\x18\x02 \x01(\t\x12\x12\n\ngateway_id\x18\x03 \x01(\tBF\n\x13\x63om.geeksville.meshB\nMQTTProtosH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' + , + dependencies=[mesh__pb2.DESCRIPTOR,]) + + + + +_SERVICEENVELOPE = _descriptor.Descriptor( + name='ServiceEnvelope', + full_name='ServiceEnvelope', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='packet', full_name='ServiceEnvelope.packet', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='channel_id', full_name='ServiceEnvelope.channel_id', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gateway_id', full_name='ServiceEnvelope.gateway_id', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=26, + serialized_end=112, +) + +_SERVICEENVELOPE.fields_by_name['packet'].message_type = mesh__pb2._MESHPACKET +DESCRIPTOR.message_types_by_name['ServiceEnvelope'] = _SERVICEENVELOPE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +ServiceEnvelope = _reflection.GeneratedProtocolMessageType('ServiceEnvelope', (_message.Message,), { + 'DESCRIPTOR' : _SERVICEENVELOPE, + '__module__' : 'mqtt_pb2' + # @@protoc_insertion_point(class_scope:ServiceEnvelope) + }) +_sym_db.RegisterMessage(ServiceEnvelope) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/portnums_pb2.py b/portnums_pb2.py new file mode 100644 index 0000000..66d52b2 --- /dev/null +++ b/portnums_pb2.py @@ -0,0 +1,151 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: portnums.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='portnums.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\010PortnumsH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x0eportnums.proto*\xcb\x02\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12!\n\x1d\x45NVIRONMENTAL_MEASUREMENT_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42\x44\n\x13\x63om.geeksville.meshB\x08PortnumsH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' +) + +_PORTNUM = _descriptor.EnumDescriptor( + name='PortNum', + full_name='PortNum', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNKNOWN_APP', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TEXT_MESSAGE_APP', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='REMOTE_HARDWARE_APP', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POSITION_APP', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='NODEINFO_APP', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ROUTING_APP', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ADMIN_APP', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='REPLY_APP', index=7, number=32, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='IP_TUNNEL_APP', index=8, number=33, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='SERIAL_APP', index=9, number=64, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='STORE_FORWARD_APP', index=10, number=65, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RANGE_TEST_APP', index=11, number=66, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ENVIRONMENTAL_MEASUREMENT_APP', index=12, number=67, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ZPS_APP', index=13, number=68, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='PRIVATE_APP', index=14, number=256, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ATAK_FORWARDER', index=15, number=257, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MAX', index=16, number=511, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=19, + serialized_end=350, +) +_sym_db.RegisterEnumDescriptor(_PORTNUM) + +PortNum = enum_type_wrapper.EnumTypeWrapper(_PORTNUM) +UNKNOWN_APP = 0 +TEXT_MESSAGE_APP = 1 +REMOTE_HARDWARE_APP = 2 +POSITION_APP = 3 +NODEINFO_APP = 4 +ROUTING_APP = 5 +ADMIN_APP = 6 +REPLY_APP = 32 +IP_TUNNEL_APP = 33 +SERIAL_APP = 64 +STORE_FORWARD_APP = 65 +RANGE_TEST_APP = 66 +ENVIRONMENTAL_MEASUREMENT_APP = 67 +ZPS_APP = 68 +PRIVATE_APP = 256 +ATAK_FORWARDER = 257 +MAX = 511 + + +DESCRIPTOR.enum_types_by_name['PortNum'] = _PORTNUM +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/radioconfig_pb2.py b/radioconfig_pb2.py new file mode 100644 index 0000000..a3bf384 --- /dev/null +++ b/radioconfig_pb2.py @@ -0,0 +1,995 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: radioconfig.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='radioconfig.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\021RadioConfigProtosH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x11radioconfig.proto\"\xfa\x12\n\x0bRadioConfig\x12\x31\n\x0bpreferences\x18\x01 \x01(\x0b\x32\x1c.RadioConfig.UserPreferences\x1a\xb7\x12\n\x0fUserPreferences\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12 \n\x18position_broadcast_smart\x18\x11 \x01(\x08\x12\x1b\n\x13send_owner_interval\x18\x02 \x01(\r\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 \x01(\r\x12\x16\n\x0escreen_on_secs\x18\x05 \x01(\r\x12\x1a\n\x12phone_timeout_secs\x18\x06 \x01(\r\x12\x1d\n\x15phone_sds_timeout_sec\x18\x07 \x01(\r\x12\x1d\n\x15mesh_sds_timeout_secs\x18\x08 \x01(\r\x12\x10\n\x08sds_secs\x18\t \x01(\r\x12\x0f\n\x07ls_secs\x18\n \x01(\r\x12\x15\n\rmin_wake_secs\x18\x0b \x01(\r\x12\x11\n\twifi_ssid\x18\x0c \x01(\t\x12\x15\n\rwifi_password\x18\r \x01(\t\x12\x14\n\x0cwifi_ap_mode\x18\x0e \x01(\x08\x12\x1b\n\x06region\x18\x0f \x01(\x0e\x32\x0b.RegionCode\x12&\n\x0e\x63harge_current\x18\x10 \x01(\x0e\x32\x0e.ChargeCurrent\x12\x11\n\tis_router\x18% \x01(\x08\x12\x14\n\x0cis_low_power\x18& \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\' \x01(\x08\x12\x17\n\x0fserial_disabled\x18( \x01(\x08\x12(\n\x0elocation_share\x18 \x01(\x0e\x32\x10.LocationSharing\x12$\n\rgps_operation\x18! \x01(\x0e\x32\r.GpsOperation\x12\x1b\n\x13gps_update_interval\x18\" \x01(\r\x12\x18\n\x10gps_attempt_time\x18$ \x01(\r\x12\x15\n\rgps_accept_2d\x18- \x01(\x08\x12\x13\n\x0bgps_max_dop\x18. \x01(\r\x12\x18\n\x10\x66requency_offset\x18) \x01(\x02\x12\x13\n\x0bmqtt_server\x18* \x01(\t\x12\x15\n\rmqtt_disabled\x18+ \x01(\x08\x12(\n\ngps_format\x18, \x01(\x0e\x32\x14.GpsCoordinateFormat\x12\x15\n\rfactory_reset\x18\x64 \x01(\x08\x12\x19\n\x11\x64\x65\x62ug_log_enabled\x18\x65 \x01(\x08\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x1c\n\x14serialplugin_enabled\x18x \x01(\x08\x12\x19\n\x11serialplugin_echo\x18y \x01(\x08\x12\x18\n\x10serialplugin_rxd\x18z \x01(\r\x12\x18\n\x10serialplugin_txd\x18{ \x01(\r\x12\x1c\n\x14serialplugin_timeout\x18| \x01(\r\x12\x19\n\x11serialplugin_mode\x18} \x01(\r\x12\'\n\x1f\x65xt_notification_plugin_enabled\x18~ \x01(\x08\x12)\n!ext_notification_plugin_output_ms\x18\x7f \x01(\r\x12\'\n\x1e\x65xt_notification_plugin_output\x18\x80\x01 \x01(\r\x12\'\n\x1e\x65xt_notification_plugin_active\x18\x81\x01 \x01(\x08\x12.\n%ext_notification_plugin_alert_message\x18\x82\x01 \x01(\x08\x12+\n\"ext_notification_plugin_alert_bell\x18\x83\x01 \x01(\x08\x12\"\n\x19range_test_plugin_enabled\x18\x84\x01 \x01(\x08\x12!\n\x18range_test_plugin_sender\x18\x85\x01 \x01(\r\x12\x1f\n\x16range_test_plugin_save\x18\x86\x01 \x01(\x08\x12%\n\x1cstore_forward_plugin_enabled\x18\x94\x01 \x01(\x08\x12\'\n\x1estore_forward_plugin_heartbeat\x18\x95\x01 \x01(\x08\x12%\n\x1cstore_forward_plugin_records\x18\x89\x01 \x01(\r\x12\x30\n\'store_forward_plugin_history_return_max\x18\x8a\x01 \x01(\r\x12\x33\n*store_forward_plugin_history_return_window\x18\x8b\x01 \x01(\r\x12=\n4environmental_measurement_plugin_measurement_enabled\x18\x8c\x01 \x01(\x08\x12\x38\n/environmental_measurement_plugin_screen_enabled\x18\x8d\x01 \x01(\x08\x12\x44\n;environmental_measurement_plugin_read_error_count_threshold\x18\x8e\x01 \x01(\r\x12\x39\n0environmental_measurement_plugin_update_interval\x18\x8f\x01 \x01(\r\x12;\n2environmental_measurement_plugin_recovery_interval\x18\x90\x01 \x01(\r\x12;\n2environmental_measurement_plugin_display_farenheit\x18\x91\x01 \x01(\x08\x12v\n,environmental_measurement_plugin_sensor_type\x18\x92\x01 \x01(\x0e\x32?.RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType\x12\x34\n+environmental_measurement_plugin_sensor_pin\x18\x93\x01 \x01(\r\x12\x17\n\x0eposition_flags\x18\x96\x01 \x01(\r\x12\x1a\n\x11is_always_powered\x18\x97\x01 \x01(\x08\x12\"\n\x19\x61uto_screen_carousel_secs\x18\x98\x01 \x01(\r\"<\n\"EnvironmentalMeasurementSensorType\x12\t\n\x05\x44HT11\x10\x00\x12\x0b\n\x07\x44S18B20\x10\x01J\x06\x08\x88\x01\x10\x89\x01*f\n\nRegionCode\x12\t\n\x05Unset\x10\x00\x12\x06\n\x02US\x10\x01\x12\t\n\x05\x45U433\x10\x02\x12\t\n\x05\x45U865\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*\xd1\x01\n\rChargeCurrent\x12\x0b\n\x07MAUnset\x10\x00\x12\t\n\x05MA100\x10\x01\x12\t\n\x05MA190\x10\x02\x12\t\n\x05MA280\x10\x03\x12\t\n\x05MA360\x10\x04\x12\t\n\x05MA450\x10\x05\x12\t\n\x05MA550\x10\x06\x12\t\n\x05MA630\x10\x07\x12\t\n\x05MA700\x10\x08\x12\t\n\x05MA780\x10\t\x12\t\n\x05MA880\x10\n\x12\t\n\x05MA960\x10\x0b\x12\n\n\x06MA1000\x10\x0c\x12\n\n\x06MA1080\x10\r\x12\n\n\x06MA1160\x10\x0e\x12\n\n\x06MA1240\x10\x0f\x12\n\n\x06MA1320\x10\x10*j\n\x0cGpsOperation\x12\x0e\n\nGpsOpUnset\x10\x00\x12\x13\n\x0fGpsOpStationary\x10\x01\x12\x0f\n\x0bGpsOpMobile\x10\x02\x12\x11\n\rGpsOpTimeOnly\x10\x03\x12\x11\n\rGpsOpDisabled\x10\x04*\x83\x01\n\x13GpsCoordinateFormat\x12\x10\n\x0cGpsFormatDec\x10\x00\x12\x10\n\x0cGpsFormatDMS\x10\x01\x12\x10\n\x0cGpsFormatUTM\x10\x02\x12\x11\n\rGpsFormatMGRS\x10\x03\x12\x10\n\x0cGpsFormatOLC\x10\x04\x12\x11\n\rGpsFormatOSGR\x10\x05*@\n\x0fLocationSharing\x12\x0c\n\x08LocUnset\x10\x00\x12\x0e\n\nLocEnabled\x10\x01\x12\x0f\n\x0bLocDisabled\x10\x02*\xbc\x01\n\rPositionFlags\x12\x11\n\rPOS_UNDEFINED\x10\x00\x12\x10\n\x0cPOS_ALTITUDE\x10\x01\x12\x0f\n\x0bPOS_ALT_MSL\x10\x02\x12\x0f\n\x0bPOS_GEO_SEP\x10\x04\x12\x0b\n\x07POS_DOP\x10\x08\x12\r\n\tPOS_HVDOP\x10\x10\x12\x0f\n\x0bPOS_BATTERY\x10 \x12\x11\n\rPOS_SATINVIEW\x10@\x12\x10\n\x0bPOS_SEQ_NOS\x10\x80\x01\x12\x12\n\rPOS_TIMESTAMP\x10\x80\x02\x42M\n\x13\x63om.geeksville.meshB\x11RadioConfigProtosH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' +) + +_REGIONCODE = _descriptor.EnumDescriptor( + name='RegionCode', + full_name='RegionCode', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='Unset', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='US', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='EU433', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='EU865', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CN', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='JP', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ANZ', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='KR', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='TW', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='RU', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2450, + serialized_end=2552, +) +_sym_db.RegisterEnumDescriptor(_REGIONCODE) + +RegionCode = enum_type_wrapper.EnumTypeWrapper(_REGIONCODE) +_CHARGECURRENT = _descriptor.EnumDescriptor( + name='ChargeCurrent', + full_name='ChargeCurrent', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='MAUnset', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA100', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA190', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA280', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA360', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA450', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA550', index=6, number=6, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA630', index=7, number=7, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA700', index=8, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA780', index=9, number=9, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA880', index=10, number=10, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA960', index=11, number=11, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA1000', index=12, number=12, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA1080', index=13, number=13, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA1160', index=14, number=14, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA1240', index=15, number=15, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='MA1320', index=16, number=16, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2555, + serialized_end=2764, +) +_sym_db.RegisterEnumDescriptor(_CHARGECURRENT) + +ChargeCurrent = enum_type_wrapper.EnumTypeWrapper(_CHARGECURRENT) +_GPSOPERATION = _descriptor.EnumDescriptor( + name='GpsOperation', + full_name='GpsOperation', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='GpsOpUnset', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsOpStationary', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsOpMobile', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsOpTimeOnly', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsOpDisabled', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2766, + serialized_end=2872, +) +_sym_db.RegisterEnumDescriptor(_GPSOPERATION) + +GpsOperation = enum_type_wrapper.EnumTypeWrapper(_GPSOPERATION) +_GPSCOORDINATEFORMAT = _descriptor.EnumDescriptor( + name='GpsCoordinateFormat', + full_name='GpsCoordinateFormat', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='GpsFormatDec', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsFormatDMS', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsFormatUTM', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsFormatMGRS', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsFormatOLC', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GpsFormatOSGR', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2875, + serialized_end=3006, +) +_sym_db.RegisterEnumDescriptor(_GPSCOORDINATEFORMAT) + +GpsCoordinateFormat = enum_type_wrapper.EnumTypeWrapper(_GPSCOORDINATEFORMAT) +_LOCATIONSHARING = _descriptor.EnumDescriptor( + name='LocationSharing', + full_name='LocationSharing', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='LocUnset', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LocEnabled', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='LocDisabled', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=3008, + serialized_end=3072, +) +_sym_db.RegisterEnumDescriptor(_LOCATIONSHARING) + +LocationSharing = enum_type_wrapper.EnumTypeWrapper(_LOCATIONSHARING) +_POSITIONFLAGS = _descriptor.EnumDescriptor( + name='PositionFlags', + full_name='PositionFlags', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='POS_UNDEFINED', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_ALTITUDE', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_ALT_MSL', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_GEO_SEP', index=3, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_DOP', index=4, number=8, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_HVDOP', index=5, number=16, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_BATTERY', index=6, number=32, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_SATINVIEW', index=7, number=64, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_SEQ_NOS', index=8, number=128, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='POS_TIMESTAMP', index=9, number=256, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=3075, + serialized_end=3263, +) +_sym_db.RegisterEnumDescriptor(_POSITIONFLAGS) + +PositionFlags = enum_type_wrapper.EnumTypeWrapper(_POSITIONFLAGS) +Unset = 0 +US = 1 +EU433 = 2 +EU865 = 3 +CN = 4 +JP = 5 +ANZ = 6 +KR = 7 +TW = 8 +RU = 9 +MAUnset = 0 +MA100 = 1 +MA190 = 2 +MA280 = 3 +MA360 = 4 +MA450 = 5 +MA550 = 6 +MA630 = 7 +MA700 = 8 +MA780 = 9 +MA880 = 10 +MA960 = 11 +MA1000 = 12 +MA1080 = 13 +MA1160 = 14 +MA1240 = 15 +MA1320 = 16 +GpsOpUnset = 0 +GpsOpStationary = 1 +GpsOpMobile = 2 +GpsOpTimeOnly = 3 +GpsOpDisabled = 4 +GpsFormatDec = 0 +GpsFormatDMS = 1 +GpsFormatUTM = 2 +GpsFormatMGRS = 3 +GpsFormatOLC = 4 +GpsFormatOSGR = 5 +LocUnset = 0 +LocEnabled = 1 +LocDisabled = 2 +POS_UNDEFINED = 0 +POS_ALTITUDE = 1 +POS_ALT_MSL = 2 +POS_GEO_SEP = 4 +POS_DOP = 8 +POS_HVDOP = 16 +POS_BATTERY = 32 +POS_SATINVIEW = 64 +POS_SEQ_NOS = 128 +POS_TIMESTAMP = 256 + + +_RADIOCONFIG_USERPREFERENCES_ENVIRONMENTALMEASUREMENTSENSORTYPE = _descriptor.EnumDescriptor( + name='EnvironmentalMeasurementSensorType', + full_name='RadioConfig.UserPreferences.EnvironmentalMeasurementSensorType', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='DHT11', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='DS18B20', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=2380, + serialized_end=2440, +) +_sym_db.RegisterEnumDescriptor(_RADIOCONFIG_USERPREFERENCES_ENVIRONMENTALMEASUREMENTSENSORTYPE) + + +_RADIOCONFIG_USERPREFERENCES = _descriptor.Descriptor( + name='UserPreferences', + full_name='RadioConfig.UserPreferences', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='position_broadcast_secs', full_name='RadioConfig.UserPreferences.position_broadcast_secs', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_broadcast_smart', full_name='RadioConfig.UserPreferences.position_broadcast_smart', index=1, + number=17, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='send_owner_interval', full_name='RadioConfig.UserPreferences.send_owner_interval', index=2, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='wait_bluetooth_secs', full_name='RadioConfig.UserPreferences.wait_bluetooth_secs', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='screen_on_secs', full_name='RadioConfig.UserPreferences.screen_on_secs', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='phone_timeout_secs', full_name='RadioConfig.UserPreferences.phone_timeout_secs', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='phone_sds_timeout_sec', full_name='RadioConfig.UserPreferences.phone_sds_timeout_sec', index=6, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='mesh_sds_timeout_secs', full_name='RadioConfig.UserPreferences.mesh_sds_timeout_secs', index=7, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='sds_secs', full_name='RadioConfig.UserPreferences.sds_secs', index=8, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ls_secs', full_name='RadioConfig.UserPreferences.ls_secs', index=9, + number=10, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='min_wake_secs', full_name='RadioConfig.UserPreferences.min_wake_secs', index=10, + number=11, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='wifi_ssid', full_name='RadioConfig.UserPreferences.wifi_ssid', index=11, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='wifi_password', full_name='RadioConfig.UserPreferences.wifi_password', index=12, + number=13, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='wifi_ap_mode', full_name='RadioConfig.UserPreferences.wifi_ap_mode', index=13, + number=14, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='region', full_name='RadioConfig.UserPreferences.region', index=14, + number=15, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='charge_current', full_name='RadioConfig.UserPreferences.charge_current', index=15, + number=16, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='is_router', full_name='RadioConfig.UserPreferences.is_router', index=16, + number=37, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='is_low_power', full_name='RadioConfig.UserPreferences.is_low_power', index=17, + number=38, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='fixed_position', full_name='RadioConfig.UserPreferences.fixed_position', index=18, + number=39, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serial_disabled', full_name='RadioConfig.UserPreferences.serial_disabled', index=19, + number=40, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='location_share', full_name='RadioConfig.UserPreferences.location_share', index=20, + number=32, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_operation', full_name='RadioConfig.UserPreferences.gps_operation', index=21, + number=33, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_update_interval', full_name='RadioConfig.UserPreferences.gps_update_interval', index=22, + number=34, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_attempt_time', full_name='RadioConfig.UserPreferences.gps_attempt_time', index=23, + number=36, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_accept_2d', full_name='RadioConfig.UserPreferences.gps_accept_2d', index=24, + number=45, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_max_dop', full_name='RadioConfig.UserPreferences.gps_max_dop', index=25, + number=46, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='frequency_offset', full_name='RadioConfig.UserPreferences.frequency_offset', index=26, + number=41, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='mqtt_server', full_name='RadioConfig.UserPreferences.mqtt_server', index=27, + number=42, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='mqtt_disabled', full_name='RadioConfig.UserPreferences.mqtt_disabled', index=28, + number=43, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gps_format', full_name='RadioConfig.UserPreferences.gps_format', index=29, + number=44, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='factory_reset', full_name='RadioConfig.UserPreferences.factory_reset', index=30, + number=100, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='debug_log_enabled', full_name='RadioConfig.UserPreferences.debug_log_enabled', index=31, + number=101, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ignore_incoming', full_name='RadioConfig.UserPreferences.ignore_incoming', index=32, + number=103, type=13, cpp_type=3, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serialplugin_enabled', full_name='RadioConfig.UserPreferences.serialplugin_enabled', index=33, + number=120, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serialplugin_echo', full_name='RadioConfig.UserPreferences.serialplugin_echo', index=34, + number=121, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serialplugin_rxd', full_name='RadioConfig.UserPreferences.serialplugin_rxd', index=35, + number=122, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serialplugin_txd', full_name='RadioConfig.UserPreferences.serialplugin_txd', index=36, + number=123, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serialplugin_timeout', full_name='RadioConfig.UserPreferences.serialplugin_timeout', index=37, + number=124, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='serialplugin_mode', full_name='RadioConfig.UserPreferences.serialplugin_mode', index=38, + number=125, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ext_notification_plugin_enabled', full_name='RadioConfig.UserPreferences.ext_notification_plugin_enabled', index=39, + number=126, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ext_notification_plugin_output_ms', full_name='RadioConfig.UserPreferences.ext_notification_plugin_output_ms', index=40, + number=127, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ext_notification_plugin_output', full_name='RadioConfig.UserPreferences.ext_notification_plugin_output', index=41, + number=128, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ext_notification_plugin_active', full_name='RadioConfig.UserPreferences.ext_notification_plugin_active', index=42, + number=129, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ext_notification_plugin_alert_message', full_name='RadioConfig.UserPreferences.ext_notification_plugin_alert_message', index=43, + number=130, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ext_notification_plugin_alert_bell', full_name='RadioConfig.UserPreferences.ext_notification_plugin_alert_bell', index=44, + number=131, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='range_test_plugin_enabled', full_name='RadioConfig.UserPreferences.range_test_plugin_enabled', index=45, + number=132, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='range_test_plugin_sender', full_name='RadioConfig.UserPreferences.range_test_plugin_sender', index=46, + number=133, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='range_test_plugin_save', full_name='RadioConfig.UserPreferences.range_test_plugin_save', index=47, + number=134, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='store_forward_plugin_enabled', full_name='RadioConfig.UserPreferences.store_forward_plugin_enabled', index=48, + number=148, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='store_forward_plugin_heartbeat', full_name='RadioConfig.UserPreferences.store_forward_plugin_heartbeat', index=49, + number=149, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='store_forward_plugin_records', full_name='RadioConfig.UserPreferences.store_forward_plugin_records', index=50, + number=137, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='store_forward_plugin_history_return_max', full_name='RadioConfig.UserPreferences.store_forward_plugin_history_return_max', index=51, + number=138, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='store_forward_plugin_history_return_window', full_name='RadioConfig.UserPreferences.store_forward_plugin_history_return_window', index=52, + number=139, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_measurement_enabled', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_measurement_enabled', index=53, + number=140, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_screen_enabled', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_screen_enabled', index=54, + number=141, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_read_error_count_threshold', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_read_error_count_threshold', index=55, + number=142, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_update_interval', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_update_interval', index=56, + number=143, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_recovery_interval', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_recovery_interval', index=57, + number=144, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_display_farenheit', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_display_farenheit', index=58, + number=145, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_sensor_type', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_sensor_type', index=59, + number=146, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='environmental_measurement_plugin_sensor_pin', full_name='RadioConfig.UserPreferences.environmental_measurement_plugin_sensor_pin', index=60, + number=147, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='position_flags', full_name='RadioConfig.UserPreferences.position_flags', index=61, + number=150, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='is_always_powered', full_name='RadioConfig.UserPreferences.is_always_powered', index=62, + number=151, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='auto_screen_carousel_secs', full_name='RadioConfig.UserPreferences.auto_screen_carousel_secs', index=63, + number=152, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _RADIOCONFIG_USERPREFERENCES_ENVIRONMENTALMEASUREMENTSENSORTYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=89, + serialized_end=2448, +) + +_RADIOCONFIG = _descriptor.Descriptor( + name='RadioConfig', + full_name='RadioConfig', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='preferences', full_name='RadioConfig.preferences', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_RADIOCONFIG_USERPREFERENCES, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=22, + serialized_end=2448, +) + +_RADIOCONFIG_USERPREFERENCES.fields_by_name['region'].enum_type = _REGIONCODE +_RADIOCONFIG_USERPREFERENCES.fields_by_name['charge_current'].enum_type = _CHARGECURRENT +_RADIOCONFIG_USERPREFERENCES.fields_by_name['location_share'].enum_type = _LOCATIONSHARING +_RADIOCONFIG_USERPREFERENCES.fields_by_name['gps_operation'].enum_type = _GPSOPERATION +_RADIOCONFIG_USERPREFERENCES.fields_by_name['gps_format'].enum_type = _GPSCOORDINATEFORMAT +_RADIOCONFIG_USERPREFERENCES.fields_by_name['environmental_measurement_plugin_sensor_type'].enum_type = _RADIOCONFIG_USERPREFERENCES_ENVIRONMENTALMEASUREMENTSENSORTYPE +_RADIOCONFIG_USERPREFERENCES.containing_type = _RADIOCONFIG +_RADIOCONFIG_USERPREFERENCES_ENVIRONMENTALMEASUREMENTSENSORTYPE.containing_type = _RADIOCONFIG_USERPREFERENCES +_RADIOCONFIG.fields_by_name['preferences'].message_type = _RADIOCONFIG_USERPREFERENCES +DESCRIPTOR.message_types_by_name['RadioConfig'] = _RADIOCONFIG +DESCRIPTOR.enum_types_by_name['RegionCode'] = _REGIONCODE +DESCRIPTOR.enum_types_by_name['ChargeCurrent'] = _CHARGECURRENT +DESCRIPTOR.enum_types_by_name['GpsOperation'] = _GPSOPERATION +DESCRIPTOR.enum_types_by_name['GpsCoordinateFormat'] = _GPSCOORDINATEFORMAT +DESCRIPTOR.enum_types_by_name['LocationSharing'] = _LOCATIONSHARING +DESCRIPTOR.enum_types_by_name['PositionFlags'] = _POSITIONFLAGS +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +RadioConfig = _reflection.GeneratedProtocolMessageType('RadioConfig', (_message.Message,), { + + 'UserPreferences' : _reflection.GeneratedProtocolMessageType('UserPreferences', (_message.Message,), { + 'DESCRIPTOR' : _RADIOCONFIG_USERPREFERENCES, + '__module__' : 'radioconfig_pb2' + # @@protoc_insertion_point(class_scope:RadioConfig.UserPreferences) + }) + , + 'DESCRIPTOR' : _RADIOCONFIG, + '__module__' : 'radioconfig_pb2' + # @@protoc_insertion_point(class_scope:RadioConfig) + }) +_sym_db.RegisterMessage(RadioConfig) +_sym_db.RegisterMessage(RadioConfig.UserPreferences) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/remote_hardware_pb2.py b/remote_hardware_pb2.py new file mode 100644 index 0000000..44ae274 --- /dev/null +++ b/remote_hardware_pb2.py @@ -0,0 +1,133 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: remote_hardware.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='remote_hardware.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\016RemoteHardwareH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x15remote_hardware.proto\"\xca\x01\n\x0fHardwareMessage\x12\"\n\x03typ\x18\x01 \x01(\x0e\x32\x15.HardwareMessage.Type\x12\x11\n\tgpio_mask\x18\x02 \x01(\x04\x12\x12\n\ngpio_value\x18\x03 \x01(\x04\"l\n\x04Type\x12\t\n\x05UNSET\x10\x00\x12\x0f\n\x0bWRITE_GPIOS\x10\x01\x12\x0f\n\x0bWATCH_GPIOS\x10\x02\x12\x11\n\rGPIOS_CHANGED\x10\x03\x12\x0e\n\nREAD_GPIOS\x10\x04\x12\x14\n\x10READ_GPIOS_REPLY\x10\x05\x42J\n\x13\x63om.geeksville.meshB\x0eRemoteHardwareH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' +) + + + +_HARDWAREMESSAGE_TYPE = _descriptor.EnumDescriptor( + name='Type', + full_name='HardwareMessage.Type', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WRITE_GPIOS', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='WATCH_GPIOS', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='GPIOS_CHANGED', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='READ_GPIOS', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='READ_GPIOS_REPLY', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=120, + serialized_end=228, +) +_sym_db.RegisterEnumDescriptor(_HARDWAREMESSAGE_TYPE) + + +_HARDWAREMESSAGE = _descriptor.Descriptor( + name='HardwareMessage', + full_name='HardwareMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='typ', full_name='HardwareMessage.typ', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gpio_mask', full_name='HardwareMessage.gpio_mask', index=1, + number=2, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='gpio_value', full_name='HardwareMessage.gpio_value', index=2, + number=3, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _HARDWAREMESSAGE_TYPE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=26, + serialized_end=228, +) + +_HARDWAREMESSAGE.fields_by_name['typ'].enum_type = _HARDWAREMESSAGE_TYPE +_HARDWAREMESSAGE_TYPE.containing_type = _HARDWAREMESSAGE +DESCRIPTOR.message_types_by_name['HardwareMessage'] = _HARDWAREMESSAGE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +HardwareMessage = _reflection.GeneratedProtocolMessageType('HardwareMessage', (_message.Message,), { + 'DESCRIPTOR' : _HARDWAREMESSAGE, + '__module__' : 'remote_hardware_pb2' + # @@protoc_insertion_point(class_scope:HardwareMessage) + }) +_sym_db.RegisterMessage(HardwareMessage) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/storeforward_pb2.py b/storeforward_pb2.py new file mode 100644 index 0000000..074f2c1 --- /dev/null +++ b/storeforward_pb2.py @@ -0,0 +1,303 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: storeforward.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='storeforward.proto', + package='', + syntax='proto3', + serialized_options=b'\n\023com.geeksville.meshB\017StoreAndForwardH\003Z!github.com/meshtastic/gomeshproto', + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\x12storeforward.proto\"\xe7\x04\n\x0fStoreAndForward\x12,\n\x02rr\x18\x01 \x01(\x0e\x32 .StoreAndForward.RequestResponse\x12*\n\x05stats\x18\x02 \x01(\x0b\x32\x1b.StoreAndForward.Statistics\x12)\n\x07history\x18\x03 \x01(\x0b\x32\x18.StoreAndForward.History\x1a\xc6\x01\n\nStatistics\x12\x15\n\rMessagesTotal\x18\x01 \x01(\r\x12\x15\n\rMessagesSaved\x18\x02 \x01(\r\x12\x13\n\x0bMessagesMax\x18\x03 \x01(\r\x12\x0e\n\x06UpTime\x18\x04 \x01(\r\x12\x10\n\x08Requests\x18\x05 \x01(\r\x12\x17\n\x0fRequestsHistory\x18\x06 \x01(\r\x12\x11\n\tHeartbeat\x18\x07 \x01(\x08\x12\x11\n\tReturnMax\x18\x08 \x01(\r\x12\x14\n\x0cReturnWindow\x18\t \x01(\r\x1a\x32\n\x07History\x12\x17\n\x0fHistoryMessages\x18\x01 \x01(\r\x12\x0e\n\x06Window\x18\x02 \x01(\r\"\xd1\x01\n\x0fRequestResponse\x12\t\n\x05UNSET\x10\x00\x12\x10\n\x0cROUTER_ERROR\x10\x01\x12\x14\n\x10ROUTER_HEARTBEAT\x10\x02\x12\x0f\n\x0bROUTER_PING\x10\x03\x12\x0f\n\x0bROUTER_PONG\x10\x04\x12\x0f\n\x0bROUTER_BUSY\x10\x05\x12\x10\n\x0c\x43LIENT_ERROR\x10\x65\x12\x12\n\x0e\x43LIENT_HISTORY\x10\x66\x12\x10\n\x0c\x43LIENT_STATS\x10g\x12\x0f\n\x0b\x43LIENT_PING\x10h\x12\x0f\n\x0b\x43LIENT_PONG\x10iBK\n\x13\x63om.geeksville.meshB\x0fStoreAndForwardH\x03Z!github.com/meshtastic/gomeshprotob\x06proto3' +) + + + +_STOREANDFORWARD_REQUESTRESPONSE = _descriptor.EnumDescriptor( + name='RequestResponse', + full_name='StoreAndForward.RequestResponse', + filename=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + values=[ + _descriptor.EnumValueDescriptor( + name='UNSET', index=0, number=0, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ROUTER_ERROR', index=1, number=1, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ROUTER_HEARTBEAT', index=2, number=2, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ROUTER_PING', index=3, number=3, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ROUTER_PONG', index=4, number=4, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='ROUTER_BUSY', index=5, number=5, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CLIENT_ERROR', index=6, number=101, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CLIENT_HISTORY', index=7, number=102, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CLIENT_STATS', index=8, number=103, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CLIENT_PING', index=9, number=104, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + _descriptor.EnumValueDescriptor( + name='CLIENT_PONG', index=10, number=105, + serialized_options=None, + type=None, + create_key=_descriptor._internal_create_key), + ], + containing_type=None, + serialized_options=None, + serialized_start=429, + serialized_end=638, +) +_sym_db.RegisterEnumDescriptor(_STOREANDFORWARD_REQUESTRESPONSE) + + +_STOREANDFORWARD_STATISTICS = _descriptor.Descriptor( + name='Statistics', + full_name='StoreAndForward.Statistics', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='MessagesTotal', full_name='StoreAndForward.Statistics.MessagesTotal', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='MessagesSaved', full_name='StoreAndForward.Statistics.MessagesSaved', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='MessagesMax', full_name='StoreAndForward.Statistics.MessagesMax', index=2, + number=3, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='UpTime', full_name='StoreAndForward.Statistics.UpTime', index=3, + number=4, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='Requests', full_name='StoreAndForward.Statistics.Requests', index=4, + number=5, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='RequestsHistory', full_name='StoreAndForward.Statistics.RequestsHistory', index=5, + number=6, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='Heartbeat', full_name='StoreAndForward.Statistics.Heartbeat', index=6, + number=7, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ReturnMax', full_name='StoreAndForward.Statistics.ReturnMax', index=7, + number=8, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='ReturnWindow', full_name='StoreAndForward.Statistics.ReturnWindow', index=8, + number=9, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=176, + serialized_end=374, +) + +_STOREANDFORWARD_HISTORY = _descriptor.Descriptor( + name='History', + full_name='StoreAndForward.History', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='HistoryMessages', full_name='StoreAndForward.History.HistoryMessages', index=0, + number=1, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='Window', full_name='StoreAndForward.History.Window', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=376, + serialized_end=426, +) + +_STOREANDFORWARD = _descriptor.Descriptor( + name='StoreAndForward', + full_name='StoreAndForward', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='rr', full_name='StoreAndForward.rr', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='stats', full_name='StoreAndForward.stats', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='history', full_name='StoreAndForward.history', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_STOREANDFORWARD_STATISTICS, _STOREANDFORWARD_HISTORY, ], + enum_types=[ + _STOREANDFORWARD_REQUESTRESPONSE, + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=23, + serialized_end=638, +) + +_STOREANDFORWARD_STATISTICS.containing_type = _STOREANDFORWARD +_STOREANDFORWARD_HISTORY.containing_type = _STOREANDFORWARD +_STOREANDFORWARD.fields_by_name['rr'].enum_type = _STOREANDFORWARD_REQUESTRESPONSE +_STOREANDFORWARD.fields_by_name['stats'].message_type = _STOREANDFORWARD_STATISTICS +_STOREANDFORWARD.fields_by_name['history'].message_type = _STOREANDFORWARD_HISTORY +_STOREANDFORWARD_REQUESTRESPONSE.containing_type = _STOREANDFORWARD +DESCRIPTOR.message_types_by_name['StoreAndForward'] = _STOREANDFORWARD +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +StoreAndForward = _reflection.GeneratedProtocolMessageType('StoreAndForward', (_message.Message,), { + + 'Statistics' : _reflection.GeneratedProtocolMessageType('Statistics', (_message.Message,), { + 'DESCRIPTOR' : _STOREANDFORWARD_STATISTICS, + '__module__' : 'storeforward_pb2' + # @@protoc_insertion_point(class_scope:StoreAndForward.Statistics) + }) + , + + 'History' : _reflection.GeneratedProtocolMessageType('History', (_message.Message,), { + 'DESCRIPTOR' : _STOREANDFORWARD_HISTORY, + '__module__' : 'storeforward_pb2' + # @@protoc_insertion_point(class_scope:StoreAndForward.History) + }) + , + 'DESCRIPTOR' : _STOREANDFORWARD, + '__module__' : 'storeforward_pb2' + # @@protoc_insertion_point(class_scope:StoreAndForward) + }) +_sym_db.RegisterMessage(StoreAndForward) +_sym_db.RegisterMessage(StoreAndForward.Statistics) +_sym_db.RegisterMessage(StoreAndForward.History) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope)