Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-meshtastic for 
openSUSE:Factory checked in at 2025-04-25 22:19:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-meshtastic (Old)
 and      /work/SRC/openSUSE:Factory/.python-meshtastic.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-meshtastic"

Fri Apr 25 22:19:47 2025 rev:5 rq:1272606 version:2.6.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-meshtastic/python-meshtastic.changes      
2025-04-14 12:57:22.277701791 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-meshtastic.new.30101/python-meshtastic.changes
   2025-04-25 22:21:00.495820430 +0200
@@ -1,0 +2,6 @@
+Fri Apr 25 06:54:57 UTC 2025 - Adrian Schröter <adr...@suse.de>
+
+- update to 2.6.2:
+  * fixing tcp_interface 100% cpu usage bug
+
+-------------------------------------------------------------------
@@ -16,0 +23,7 @@
+
+-------------------------------------------------------------------
+Thu Mar 13 16:09:55 UTC 2025 - Adrian Schröter <adr...@suse.de>
+
+- update to 2.6.0
+  * Enable setting things from more than one configuration section
+    with --set, using a configuration transaction

Old:
----
  meshtastic-2.6.1.tar.gz

New:
----
  meshtastic-2.6.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-meshtastic.spec ++++++
--- /var/tmp/diff_new_pack.M2ZVL6/_old  2025-04-25 22:21:00.955839763 +0200
+++ /var/tmp/diff_new_pack.M2ZVL6/_new  2025-04-25 22:21:00.955839763 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-meshtastic
-Version:        2.6.1
+Version:        2.6.2
 Release:        0
 Summary:        A Python client for use with Meshtastic devices
 License:        GPL-3.0-only
@@ -50,9 +50,6 @@
 %prep
 %setup -q -n meshtastic-%{version}
 
-# Remove hidden file
-rm -v meshtastic/.gitignore
-
 %build
 %pyproject_wheel
 

++++++ meshtastic-2.6.1.tar.gz -> meshtastic-2.6.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/PKG-INFO 
new/meshtastic-2.6.2/PKG-INFO
--- old/meshtastic-2.6.1/PKG-INFO       1970-01-01 01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/PKG-INFO       1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.3
 Name: meshtastic
-Version: 2.6.1
+Version: 2.6.2
 Summary: Python API & client shell for talking to Meshtastic devices
 License: GPL-3.0-only
 Author: Meshtastic Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/meshtastic/protobuf/config_pb2.py 
new/meshtastic-2.6.2/meshtastic/protobuf/config_pb2.py
--- old/meshtastic-2.6.1/meshtastic/protobuf/config_pb2.py      1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/protobuf/config_pb2.py      1970-01-01 
01:00:00.000000000 +0100
@@ -14,7 +14,7 @@
 from meshtastic.protobuf import device_ui_pb2 as 
meshtastic_dot_protobuf_dot_device__ui__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n 
meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/device_ui.proto\"\xa3(\n\x06\x43onfig\x12:\n\x06\x64\x65vice\x18\x01
 
\x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfigH\x00\x12>\n\x08position\x18\x02
 
\x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfigH\x00\x12\x38\n\x05power\x18\x03
 
\x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfigH\x00\x12<\n\x07network\x18\x04
 
\x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfigH\x00\x12<\n\x07\x64isplay\x18\x05
 
\x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfigH\x00\x12\x36\n\x04lora\x18\x06
 
\x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigH\x00\x12@\n\tbluetooth\x18\x07
 
\x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfigH\x00\x12>\n\x08security\x18\x08
 
\x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfigH\x00\x12\x42\n\nsessionkey\x18\t
 \x01(\x0b\x32,.meshtastic.protobuf.Config.SessionkeyConfigH\x00\x12\x38\n\tdev
 ice_ui\x18\n 
\x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x1a\xc7\x05\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01
 
\x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x1a\n\x0eserial_enabled\x18\x02
 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x62utton_gpio\x18\x04 
\x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 
\x01(\r\x12R\n\x10rebroadcast_mode\x18\x06 
\x01(\x0e\x32\x38.meshtastic.protobuf.Config.DeviceConfig.RebroadcastMode\x12 
\n\x18node_info_broadcast_secs\x18\x07 
\x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 
\x01(\x08\x12\x16\n\nis_managed\x18\t 
\x01(\x08\x42\x02\x18\x01\x12\x1c\n\x14\x64isable_triple_click\x18\n 
\x01(\x08\x12\r\n\x05tzdef\x18\x0b 
\x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c 
\x01(\x08\"\xbf\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x15\n\rROUTER_CLIENT\x10\x03\x1a\x02\x08\x01\x12\x0c\n\x08REPEATER\x10\x04\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x1
 
2\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\x12\x0f\n\x0bROUTER_LATE\x10\x0b\"s\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x12\x08\n\x04NONE\x10\x04\x12\x16\n\x12\x43ORE_PORTNUMS_ONLY\x10\x05\x1a\x9a\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01
 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 
\x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 
\x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 
\x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 
\x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 
\x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 
\x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t 
\x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n 
\x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b 
\x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x
 0c \x01(\r\x12\x44\n\x08gps_mode\x18\r 
\x01(\x0e\x32\x32.meshtastic.protobuf.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10
 
\x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\x84\x02\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01
 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 
\x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 
\x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 
\x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 
\x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 
\x01(\r\x12\"\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\r
 \x12\x18\n\x10powermon_enables\x18  
\x01(\x04\x1a\xe1\x03\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 
\x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 
\x01(\t\x12\x12\n\nntp_server\x18\x05 
\x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 
\x01(\x08\x12K\n\x0c\x61\x64\x64ress_mode\x18\x07 
\x01(\x0e\x32\x35.meshtastic.protobuf.Config.NetworkConfig.AddressMode\x12I\n\x0bipv4_config\x18\x08
 
\x01(\x0b\x32\x34.meshtastic.protobuf.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t
 \x01(\t\x12\x19\n\x11\x65nabled_protocols\x18\n 
\x01(\r\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 
\x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 
\x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 
\x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\"4\n\rProtocolFlags\x12\x10\n\x0cNO_BROADCAST\x10\x00\x12\x11\n\rUDP_BROADCAST\x10\x01\x1a\x91\x08\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01
 \x01(\r\x12Q\
 n\ngps_format\x18\x02 
\x01(\x0e\x32=.meshtastic.protobuf.Config.DisplayConfig.GpsCoordinateFormat\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03
 \x01(\r\x12\x19\n\x11\x63ompass_north_top\x18\x04 
\x01(\x08\x12\x13\n\x0b\x66lip_screen\x18\x05 
\x01(\x08\x12\x45\n\x05units\x18\x06 
\x01(\x0e\x32\x36.meshtastic.protobuf.Config.DisplayConfig.DisplayUnits\x12@\n\x04oled\x18\x07
 
\x01(\x0e\x32\x32.meshtastic.protobuf.Config.DisplayConfig.OledType\x12J\n\x0b\x64isplaymode\x18\x08
 
\x01(\x0e\x32\x35.meshtastic.protobuf.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t
 \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n 
\x01(\x08\x12Y\n\x13\x63ompass_orientation\x18\x0b 
\x01(\x0e\x32<.meshtastic.protobuf.Config.DisplayConfig.CompassOrientation\x12\x15\n\ruse_12h_clock\x18\x0c
 
\x01(\x08\"M\n\x13GpsCoordinateFormat\x12\x07\n\x03\x44\x45\x43\x10\x00\x12\x07\n\x03\x44MS\x10\x01\x12\x07\n\x03UTM\x10\x02\x12\x08\n\x04MGRS\x10\x03\x12\x07\n\x03OLC\x10\x04\x12\x08\n\x04OSGR\x10\x05\"(\n\x0c
 
\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"M\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\"\xba\x01\n\x12\x43ompassOrientation\x12\r\n\tDEGREES_0\x10\x00\x12\x0e\n\nDEGREES_90\x10\x01\x12\x0f\n\x0b\x44\x45GREES_180\x10\x02\x12\x0f\n\x0b\x44\x45GREES_270\x10\x03\x12\x16\n\x12\x44\x45GREES_0_INVERTED\x10\x04\x12\x17\n\x13\x44\x45GREES_90_INVERTED\x10\x05\x12\x18\n\x14\x44\x45GREES_180_INVERTED\x10\x06\x12\x18\n\x14\x44\x45GREES_270_INVERTED\x10\x07\x1a\xaf\x07\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01
 \x01(\x08\x12H\n\x0cmodem_preset\x18\x02 
\x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03
 \x01(\r\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x13\n\x0b\x63oding_ra
 te\x18\x05 \x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 
\x01(\x02\x12\x41\n\x06region\x18\x07 
\x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08
 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n 
\x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b 
\x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c 
\x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r 
\x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e 
\x01(\x02\x12\x17\n\x0fpa_fan_disabled\x18\x0f 
\x01(\x08\x12\x17\n\x0fignore_incoming\x18g 
\x03(\r\x12\x13\n\x0bignore_mqtt\x18h 
\x01(\x08\x12\x19\n\x11\x63onfig_ok_to_mqtt\x18i 
\x01(\x08\"\xf1\x01\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\
 
x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\x12\n\n\x06PH_433\x10\x13\x12\n\n\x06PH_868\x10\x14\x12\n\n\x06PH_915\x10\x15\"\xa9\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x16\n\x0eVERY_LONG_SLOW\x10\x02\x1a\x02\x08\x01\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x12\x0f\n\x0bSHORT_TURBO\x10\x08\x1a\xb6\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01
 \x01(\x08\x12\x45\n\x04mode\x18\x02 
\x01(\x0e\x32\x37.meshtastic.protobuf.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03
 
\x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x1a\xb6\x01\n\x0eSecurityConfig\x12\x12\n\npublic_key\x18\x01
 \x01(\x0c\x12\x13\n\x0bprivate_key\x18\x02 \x01(\x
 0c\x12\x11\n\tadmin_key\x18\x03 \x03(\x0c\x12\x12\n\nis_managed\x18\x04 
\x01(\x08\x12\x16\n\x0eserial_enabled\x18\x05 
\x01(\x08\x12\x1d\n\x15\x64\x65\x62ug_log_api_enabled\x18\x06 
\x01(\x08\x12\x1d\n\x15\x61\x64min_channel_enabled\x18\x08 
\x01(\x08\x1a\x12\n\x10SessionkeyConfigB\x11\n\x0fpayload_variantBa\n\x13\x63om.geeksville.meshB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n 
meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/device_ui.proto\"\xbb(\n\x06\x43onfig\x12:\n\x06\x64\x65vice\x18\x01
 
\x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfigH\x00\x12>\n\x08position\x18\x02
 
\x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfigH\x00\x12\x38\n\x05power\x18\x03
 
\x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfigH\x00\x12<\n\x07network\x18\x04
 
\x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfigH\x00\x12<\n\x07\x64isplay\x18\x05
 
\x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfigH\x00\x12\x36\n\x04lora\x18\x06
 
\x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigH\x00\x12@\n\tbluetooth\x18\x07
 
\x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfigH\x00\x12>\n\x08security\x18\x08
 
\x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfigH\x00\x12\x42\n\nsessionkey\x18\t
 \x01(\x0b\x32,.meshtastic.protobuf.Config.SessionkeyConfigH\x00\x12\x38\n\tdev
 ice_ui\x18\n 
\x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x1a\xc7\x05\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01
 
\x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x1a\n\x0eserial_enabled\x18\x02
 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x62utton_gpio\x18\x04 
\x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 
\x01(\r\x12R\n\x10rebroadcast_mode\x18\x06 
\x01(\x0e\x32\x38.meshtastic.protobuf.Config.DeviceConfig.RebroadcastMode\x12 
\n\x18node_info_broadcast_secs\x18\x07 
\x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 
\x01(\x08\x12\x16\n\nis_managed\x18\t 
\x01(\x08\x42\x02\x18\x01\x12\x1c\n\x14\x64isable_triple_click\x18\n 
\x01(\x08\x12\r\n\x05tzdef\x18\x0b 
\x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c 
\x01(\x08\"\xbf\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x15\n\rROUTER_CLIENT\x10\x03\x1a\x02\x08\x01\x12\x0c\n\x08REPEATER\x10\x04\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x1
 
2\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\x12\x0f\n\x0bROUTER_LATE\x10\x0b\"s\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x12\x08\n\x04NONE\x10\x04\x12\x16\n\x12\x43ORE_PORTNUMS_ONLY\x10\x05\x1a\x9a\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01
 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 
\x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 
\x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 
\x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 
\x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 
\x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 
\x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t 
\x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n 
\x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b 
\x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x
 0c \x01(\r\x12\x44\n\x08gps_mode\x18\r 
\x01(\x0e\x32\x32.meshtastic.protobuf.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10
 
\x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\x84\x02\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01
 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 
\x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 
\x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 
\x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 
\x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 
\x01(\r\x12\"\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\r
 \x12\x18\n\x10powermon_enables\x18  
\x01(\x04\x1a\xe1\x03\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 
\x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 
\x01(\t\x12\x12\n\nntp_server\x18\x05 
\x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 
\x01(\x08\x12K\n\x0c\x61\x64\x64ress_mode\x18\x07 
\x01(\x0e\x32\x35.meshtastic.protobuf.Config.NetworkConfig.AddressMode\x12I\n\x0bipv4_config\x18\x08
 
\x01(\x0b\x32\x34.meshtastic.protobuf.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t
 \x01(\t\x12\x19\n\x11\x65nabled_protocols\x18\n 
\x01(\r\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 
\x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 
\x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 
\x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\"4\n\rProtocolFlags\x12\x10\n\x0cNO_BROADCAST\x10\x00\x12\x11\n\rUDP_BROADCAST\x10\x01\x1a\xa9\x08\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01
 \x01(\r\x12Q\
 n\ngps_format\x18\x02 
\x01(\x0e\x32=.meshtastic.protobuf.Config.DisplayConfig.GpsCoordinateFormat\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03
 \x01(\r\x12\x19\n\x11\x63ompass_north_top\x18\x04 
\x01(\x08\x12\x13\n\x0b\x66lip_screen\x18\x05 
\x01(\x08\x12\x45\n\x05units\x18\x06 
\x01(\x0e\x32\x36.meshtastic.protobuf.Config.DisplayConfig.DisplayUnits\x12@\n\x04oled\x18\x07
 
\x01(\x0e\x32\x32.meshtastic.protobuf.Config.DisplayConfig.OledType\x12J\n\x0b\x64isplaymode\x18\x08
 
\x01(\x0e\x32\x35.meshtastic.protobuf.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t
 \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n 
\x01(\x08\x12Y\n\x13\x63ompass_orientation\x18\x0b 
\x01(\x0e\x32<.meshtastic.protobuf.Config.DisplayConfig.CompassOrientation\x12\x15\n\ruse_12h_clock\x18\x0c
 
\x01(\x08\"M\n\x13GpsCoordinateFormat\x12\x07\n\x03\x44\x45\x43\x10\x00\x12\x07\n\x03\x44MS\x10\x01\x12\x07\n\x03UTM\x10\x02\x12\x08\n\x04MGRS\x10\x03\x12\x07\n\x03OLC\x10\x04\x12\x08\n\x04OSGR\x10\x05\"(\n\x0c
 
\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"e\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\x12\x16\n\x12OLED_SH1107_128_64\x10\x04\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\"\xba\x01\n\x12\x43ompassOrientation\x12\r\n\tDEGREES_0\x10\x00\x12\x0e\n\nDEGREES_90\x10\x01\x12\x0f\n\x0b\x44\x45GREES_180\x10\x02\x12\x0f\n\x0b\x44\x45GREES_270\x10\x03\x12\x16\n\x12\x44\x45GREES_0_INVERTED\x10\x04\x12\x17\n\x13\x44\x45GREES_90_INVERTED\x10\x05\x12\x18\n\x14\x44\x45GREES_180_INVERTED\x10\x06\x12\x18\n\x14\x44\x45GREES_270_INVERTED\x10\x07\x1a\xaf\x07\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01
 \x01(\x08\x12H\n\x0cmodem_preset\x18\x02 
\x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03
 \x01(\r\x12\x15\n\rspread_factor\x
 18\x04 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x05 
\x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 
\x01(\x02\x12\x41\n\x06region\x18\x07 
\x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08
 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n 
\x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b 
\x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c 
\x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r 
\x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e 
\x01(\x02\x12\x17\n\x0fpa_fan_disabled\x18\x0f 
\x01(\x08\x12\x17\n\x0fignore_incoming\x18g 
\x03(\r\x12\x13\n\x0bignore_mqtt\x18h 
\x01(\x08\x12\x19\n\x11\x63onfig_ok_to_mqtt\x18i 
\x01(\x08\"\xf1\x01\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x1
 
2\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\x12\n\n\x06PH_433\x10\x13\x12\n\n\x06PH_868\x10\x14\x12\n\n\x06PH_915\x10\x15\"\xa9\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\r\n\tLONG_SLOW\x10\x01\x12\x16\n\x0eVERY_LONG_SLOW\x10\x02\x1a\x02\x08\x01\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x12\x0f\n\x0bSHORT_TURBO\x10\x08\x1a\xb6\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01
 \x01(\x08\x12\x45\n\x04mode\x18\x02 
\x01(\x0e\x32\x37.meshtastic.protobuf.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03
 
\x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x1a\xb6\x01\n\x0eSecurityConfig\x12\x12\n\npublic_key\x18\x01
 \x01(\x0c\
 x12\x13\n\x0bprivate_key\x18\x02 \x01(\x0c\x12\x11\n\tadmin_key\x18\x03 
\x03(\x0c\x12\x12\n\nis_managed\x18\x04 
\x01(\x08\x12\x16\n\x0eserial_enabled\x18\x05 
\x01(\x08\x12\x1d\n\x15\x64\x65\x62ug_log_api_enabled\x18\x06 
\x01(\x08\x12\x1d\n\x15\x61\x64min_channel_enabled\x18\x08 
\x01(\x08\x1a\x12\n\x10SessionkeyConfigB\x11\n\x0fpayload_variantBa\n\x13\x63om.geeksville.meshB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -35,7 +35,7 @@
   _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["VERY_LONG_SLOW"]._options = 
None
   
_CONFIG_LORACONFIG_MODEMPRESET.values_by_name["VERY_LONG_SLOW"]._serialized_options
 = b'\010\001'
   _globals['_CONFIG']._serialized_start=95
-  _globals['_CONFIG']._serialized_end=5250
+  _globals['_CONFIG']._serialized_end=5274
   _globals['_CONFIG_DEVICECONFIG']._serialized_start=724
   _globals['_CONFIG_DEVICECONFIG']._serialized_end=1435
   _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_start=1127
@@ -59,29 +59,29 @@
   _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_start=2799
   _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_end=2851
   _globals['_CONFIG_DISPLAYCONFIG']._serialized_start=2854
-  _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=3895
+  _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=3919
   _globals['_CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT']._serialized_start=3441
   _globals['_CONFIG_DISPLAYCONFIG_GPSCOORDINATEFORMAT']._serialized_end=3518
   _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_start=3520
   _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_end=3560
   _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_start=3562
-  _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3639
-  _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3641
-  _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=3706
-  _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=3709
-  _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=3895
-  _globals['_CONFIG_LORACONFIG']._serialized_start=3898
-  _globals['_CONFIG_LORACONFIG']._serialized_end=4841
-  _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4428
-  _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=4669
-  _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=4672
-  _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=4841
-  _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=4844
-  _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5026
-  _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=4970
-  _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5026
-  _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5029
-  _globals['_CONFIG_SECURITYCONFIG']._serialized_end=5211
-  _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=5213
-  _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_end=5231
+  _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3663
+  _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3665
+  _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=3730
+  _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=3733
+  _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=3919
+  _globals['_CONFIG_LORACONFIG']._serialized_start=3922
+  _globals['_CONFIG_LORACONFIG']._serialized_end=4865
+  _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4452
+  _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=4693
+  _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=4696
+  _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=4865
+  _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=4868
+  _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5050
+  _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=4994
+  _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5050
+  _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5053
+  _globals['_CONFIG_SECURITYCONFIG']._serialized_end=5235
+  _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=5237
+  _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_end=5255
 # @@protoc_insertion_point(module_scope)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/meshtastic/protobuf/config_pb2.pyi 
new/meshtastic-2.6.2/meshtastic/protobuf/config_pb2.pyi
--- old/meshtastic-2.6.1/meshtastic/protobuf/config_pb2.pyi     1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/protobuf/config_pb2.pyi     1970-01-01 
01:00:00.000000000 +0100
@@ -956,20 +956,24 @@
             DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
             OLED_AUTO: Config.DisplayConfig._OledType.ValueType  # 0
             """
-            Default / Auto
+            Default / Autodetect
             """
             OLED_SSD1306: Config.DisplayConfig._OledType.ValueType  # 1
             """
-            Default / Auto
+            Default / Autodetect
             """
             OLED_SH1106: Config.DisplayConfig._OledType.ValueType  # 2
             """
-            Default / Auto
+            Default / Autodetect
             """
             OLED_SH1107: Config.DisplayConfig._OledType.ValueType  # 3
             """
             Can not be auto detected but set by proto. Used for 128x128 screens
             """
+            OLED_SH1107_128_64: Config.DisplayConfig._OledType.ValueType  # 4
+            """
+            Can not be auto detected but set by proto. Used for 128x64 screens
+            """
 
         class OledType(_OledType, metaclass=_OledTypeEnumTypeWrapper):
             """
@@ -978,20 +982,24 @@
 
         OLED_AUTO: Config.DisplayConfig.OledType.ValueType  # 0
         """
-        Default / Auto
+        Default / Autodetect
         """
         OLED_SSD1306: Config.DisplayConfig.OledType.ValueType  # 1
         """
-        Default / Auto
+        Default / Autodetect
         """
         OLED_SH1106: Config.DisplayConfig.OledType.ValueType  # 2
         """
-        Default / Auto
+        Default / Autodetect
         """
         OLED_SH1107: Config.DisplayConfig.OledType.ValueType  # 3
         """
         Can not be auto detected but set by proto. Used for 128x128 screens
         """
+        OLED_SH1107_128_64: Config.DisplayConfig.OledType.ValueType  # 4
+        """
+        Can not be auto detected but set by proto. Used for 128x64 screens
+        """
 
         class _DisplayMode:
             ValueType = typing.NewType("ValueType", builtins.int)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/meshtastic/protobuf/mesh_pb2.py 
new/meshtastic-2.6.2/meshtastic/protobuf/mesh_pb2.py
--- old/meshtastic-2.6.1/meshtastic/protobuf/mesh_pb2.py        1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/protobuf/mesh_pb2.py        1970-01-01 
01:00:00.000000000 +0100
@@ -20,7 +20,7 @@
 from meshtastic.protobuf import device_ui_pb2 as 
meshtastic_dot_protobuf_dot_device__ui__pb2
 
 
-DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mesh.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a
 
meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a
 
meshtastic/protobuf/xmodem.proto\x1a#meshtastic/protobuf/device_ui.proto\"\x99\x07\n\x08Position\x12\x17\n\nlatitude_i\x18\x01
 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x02 
\x01(\x0fH\x01\x88\x01\x01\x12\x15\n\x08\x61ltitude\x18\x03 
\x01(\x05H\x02\x88\x01\x01\x12\x0c\n\x04time\x18\x04 
\x01(\x07\x12@\n\x0flocation_source\x18\x05 
\x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\x12@\n\x0f\x61ltitude_source\x18\x06
 
\x01(\x0e\x32\'.meshtastic.protobuf.Position.AltSource\x12\x11\n\ttimestamp\x18\x07
 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 
\x01(\x05\x12\x19\n\x0c\x61ltitude_hae\x18\t 
\x01(\x11H\x03\x88\x01\x01\x12(\n\x1b\x61ltitude_
 geoidal_separation\x18\n \x01(\x11H\x04\x88\x01\x01\x12\x0c\n\x04PDOP\x18\x0b 
\x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r 
\x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e 
\x01(\r\x12\x19\n\x0cground_speed\x18\x0f 
\x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cground_track\x18\x10 
\x01(\rH\x06\x88\x01\x01\x12\x13\n\x0b\x66ix_quality\x18\x11 
\x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 
\x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 
\x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 
\x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 
\x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_iB\x0b\n\t_altitudeB\x0f\n\
 
r_altitude_haeB\x1e\n\x1c_altitude_geoidal_separationB\x0f\n\r_ground_speedB\x0f\n\r_ground_track\"\xea\x01\n\x04User\x12\n\n\x02id\x18\x01
 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 
\x01(\t\x12\x13\n\x07macaddr\x18\x04 
\x01(\x0c\x42\x02\x18\x01\x12\x34\n\x08hw_model\x18\x05 
\x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06
 \x01(\x08\x12;\n\x04role\x18\x07 
\x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x12\n\npublic_key\x18\x08
 \x01(\x0c\"Z\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 
\x03(\x07\x12\x13\n\x0bsnr_towards\x18\x02 
\x03(\x05\x12\x12\n\nroute_back\x18\x03 \x03(\x07\x12\x10\n\x08snr_back\x18\x04 
\x03(\x05\"\xfd\x03\n\x07Routing\x12<\n\rroute_request\x18\x01 
\x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0broute_reply\x18\x02
 
\x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0c\x65rror_reason\x18\x03
 \x01(\x0e\x32\".meshtastic.protobuf.Routing.ErrorH\x00\"\xb0\x02\
 
n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10
 
\x12\x12\n\x0eNOT_AUTHORIZED\x10!\x12\x0e\n\nPKI_FAILED\x10\"\x12\x16\n\x12PKI_UNKNOWN_PUBKEY\x10#\x12\x19\n\x15\x41\x44MIN_BAD_SESSION_KEY\x10$\x12!\n\x1d\x41\x44MIN_PUBLIC_KEY_UNAUTHORIZED\x10%B\t\n\x07variant\"\xd4\x01\n\x04\x44\x61ta\x12-\n\x07portnum\x18\x01
 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0f\n\x07payload\x18\x02 
\x01(\x0c\x12\x15\n\rwant_response\x18\x03 
\x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 
\x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 
\x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\x12\x15\n\x08\x62itfield\x18\t 
\x01(\rH\x0
 
0\x88\x01\x01\x42\x0b\n\t_bitfield\"\xbc\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01
 \x01(\r\x12\x17\n\nlatitude_i\x18\x02 
\x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x03 
\x01(\x0fH\x01\x88\x01\x01\x12\x0e\n\x06\x65xpire\x18\x04 
\x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 
\x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 
\x01(\t\x12\x0c\n\x04icon\x18\x08 
\x01(\x07\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_i\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01
 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 
\x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 
\x01(\tH\x00\x12\x10\n\x08retained\x18\x04 
\x01(\x08\x42\x11\n\x0fpayload_variant\"\xb6\x05\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01
 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 
\x01(\r\x12,\n\x07\x64\x65\x63oded\x18\x04 
\x01(\x0b\x32\x19.meshtastic.protobuf.DataH\x00\x12\x13\n\tencrypted\x18\x05 
\x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 
\x01(\x07\
 x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t 
\x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12:\n\x08priority\x18\x0b 
\x01(\x0e\x32(.meshtastic.protobuf.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c
 \x01(\x05\x12<\n\x07\x64\x65layed\x18\r 
\x01(\x0e\x32\'.meshtastic.protobuf.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e
 \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\x12\x12\n\npublic_key\x18\x10 
\x01(\x0c\x12\x15\n\rpki_encrypted\x18\x11 
\x01(\x08\x12\x10\n\x08next_hop\x18\x12 \x01(\r\x12\x12\n\nrelay_node\x18\x13 
\x01(\r\x12\x10\n\x08tx_after\x18\x14 
\x01(\r\"~\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x0c\n\x08RESPONSE\x10P\x12\x08\n\x04HIGH\x10\x64\x12\t\n\x05\x41LERT\x10n\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x1
 
2\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\x42\x11\n\x0fpayload_variant\"\xc0\x02\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01
 \x01(\r\x12\'\n\x04user\x18\x02 
\x01(\x0b\x32\x19.meshtastic.protobuf.User\x12/\n\x08position\x18\x03 
\x01(\x0b\x32\x1d.meshtastic.protobuf.Position\x12\x0b\n\x03snr\x18\x04 
\x01(\x02\x12\x12\n\nlast_heard\x18\x05 
\x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 
\x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07
 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x16\n\thops_away\x18\t 
\x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n 
\x01(\x08\x12\x12\n\nis_ignored\x18\x0b 
\x01(\x08\x42\x0c\n\n_hops_away\"t\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01
 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 
\x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b 
\x01(\r\x12\x11\n\tdevice_id\x18\x0c \x01(\x0c\x12\x0f\n\x07pio_env\x18\r 
\x01(\t\"\xc9\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 
\x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06sou
 rce\x18\x03 \x01(\t\x12\x33\n\x05level\x18\x04 
\x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01
 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 
\x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 
\x01(\r\"\xf7\x06\n\tFromRadio\x12\n\n\x02id\x18\x01 
\x01(\r\x12\x31\n\x06packet\x18\x02 
\x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x32\n\x07my_info\x18\x03
 
\x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfoH\x00\x12\x32\n\tnode_info\x18\x04
 
\x01(\x0b\x32\x1d.meshtastic.protobuf.NodeInfoH\x00\x12-\n\x06\x63onfig\x18\x05 
\x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12\x34\n\nlog_record\x18\x06 
\x01(\x0b\x32\x1e.meshtastic.protobuf.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07
 \x01(\rH\x00\x1
 2\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x39\n\x0cmoduleConfig\x18\t 
\x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12/\n\x07\x63hannel\x18\n 
\x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x37\n\x0bqueueStatus\x18\x0b
 \x01(\x0b\x32 
.meshtastic.protobuf.QueueStatusH\x00\x12\x33\n\x0cxmodemPacket\x18\x0c 
\x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12\x37\n\x08metadata\x18\r 
\x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12M\n\x16mqttClientProxyMessage\x18\x0e
 
\x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x31\n\x08\x66ileInfo\x18\x0f
 
\x01(\x0b\x32\x1d.meshtastic.protobuf.FileInfoH\x00\x12\x45\n\x12\x63lientNotification\x18\x10
 
\x01(\x0b\x32\'.meshtastic.protobuf.ClientNotificationH\x00\x12=\n\x0e\x64\x65viceuiConfig\x18\x11
 
\x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x42\x11\n\x0fpayload_variant\"\x8c\x01\n\x12\x43lientNotification\x12\x15\n\x08reply_id\x18\x01
 \x01(\rH\x00\x88\x01\x01\x12\x0c\n\x04time\x18\x02 \x01(\
 x07\x12\x33\n\x05level\x18\x03 
\x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\x12\x0f\n\x07message\x18\x04 
\x01(\tB\x0b\n\t_reply_id\"1\n\x08\x46ileInfo\x12\x11\n\tfile_name\x18\x01 
\x01(\t\x12\x12\n\nsize_bytes\x18\x02 
\x01(\r\"\xb8\x02\n\x07ToRadio\x12\x31\n\x06packet\x18\x01 
\x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03
 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 
\x01(\x08H\x00\x12\x33\n\x0cxmodemPacket\x18\x05 
\x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12M\n\x16mqttClientProxyMessage\x18\x06
 
\x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x33\n\theartbeat\x18\x07
 
\x01(\x0b\x32\x1e.meshtastic.protobuf.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"I\n\nCompressed\x12-\n\x07portnum\x18\x01
 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 
\x01(\x0c\"\x90\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 
\x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_i
 nterval_secs\x18\x03 \x01(\r\x12\x30\n\tneighbors\x18\x04 
\x03(\x0b\x32\x1d.meshtastic.protobuf.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01
 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 
\x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 
\x01(\r\"\xe9\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01
 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 
\x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 
\x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 
\x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 
\x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 
\x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08
 \x01(\r\x12\x34\n\x08hw_model\x18\t 
\x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n
 \x01(\x08\x12\x0e\n\x06hasPKC\x18\x0b 
\x01(\x08\x12\x18\n\x10\x65xcluded_modules\x18\x0c 
\x01(\r\"\x0b\n\tHeartbeat\"^\n\x15NodeRemoteHardwarePin\
 x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\x33\n\x03pin\x18\x02 
\x01(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\"e\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01
 \x01(\r\x12\x13\n\x0b\x63hunk_count\x18\x02 
\x01(\r\x12\x13\n\x0b\x63hunk_index\x18\x03 
\x01(\r\x12\x15\n\rpayload_chunk\x18\x04 
\x01(\x0c\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 
\x03(\r\"\xb3\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 
\x01(\r\x12\x1a\n\x10request_transfer\x18\x02 
\x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 
\x01(\x08H\x00\x12;\n\rresend_chunks\x18\x04 
\x01(\x0b\x32\".meshtastic.protobuf.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xe7\r\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK4631\
 
x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nWIO_WM1110\x10\x15\x12\x0b\n\x07RAK2560\x10\x16\x12\x13\n\x0fHELTEC_HRU_3601\x10\x17\x12\x1a\n\x16HELTEC_WIRELESS_BRIDGE\x10\x18\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10
 
\x12\x0e\n\nNRF52840DK\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R
 
_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12
 
\n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x1d\n\x19HELTEC_VISION_MASTER_T190\x10\x42\x12\x1d\n\x19HELTEC_VISION_MASTER_E213\x10\x43\x12\x1d\n\x19HELTEC_VISION_MASTER_E290\x
 
10\x44\x12\x19\n\x15HELTEC_MESH_NODE_T114\x10\x45\x12\x16\n\x12SENSECAP_INDICATOR\x10\x46\x12\x13\n\x0fTRACKER_T1000_E\x10G\x12\x0b\n\x07RAK3172\x10H\x12\n\n\x06WIO_E5\x10I\x12\x1a\n\x16RADIOMASTER_900_BANDIT\x10J\x12\x13\n\x0fME25LS01_4Y10TD\x10K\x12\x18\n\x14RP2040_FEATHER_RFM95\x10L\x12\x15\n\x11M5STACK_COREBASIC\x10M\x12\x11\n\rM5STACK_CORE2\x10N\x12\r\n\tRPI_PICO2\x10O\x12\x12\n\x0eM5STACK_CORES3\x10P\x12\x11\n\rSEEED_XIAO_S3\x10Q\x12\x0b\n\x07MS24SF1\x10R\x12\x0c\n\x08TLORA_C6\x10S\x12\x0f\n\x0bWISMESH_TAP\x10T\x12\r\n\tROUTASTIC\x10U\x12\x0c\n\x08MESH_TAB\x10V\x12\x0c\n\x08MESHLINK\x10W\x12\x12\n\x0eXIAO_NRF52_KIT\x10X\x12\x10\n\x0cTHINKNODE_M1\x10Y\x12\x10\n\x0cTHINKNODE_M2\x10Z\x12\x0f\n\x0bT_ETH_ELITE\x10[\x12\x15\n\x11HELTEC_SENSOR_HUB\x10\\\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xe9\x01*\xb4\x02\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEE
 
P_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x12
 
\n\x1c\x46LASH_CORRUPTION_RECOVERABLE\x10\x0c\x12\"\n\x1e\x46LASH_CORRUPTION_UNRECOVERABLE\x10\r*\xd3\x02\n\x0f\x45xcludedModules\x12\x11\n\rEXCLUDED_NONE\x10\x00\x12\x0f\n\x0bMQTT_CONFIG\x10\x01\x12\x11\n\rSERIAL_CONFIG\x10\x02\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x04\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x08\x12\x14\n\x10RANGETEST_CONFIG\x10\x10\x12\x14\n\x10TELEMETRY_CONFIG\x10
 
\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10@\x12\x11\n\x0c\x41UDIO_CONFIG\x10\x80\x01\x12\x1a\n\x15REMOTEHARDWARE_CONFIG\x10\x80\x02\x12\x18\n\x13NEIGHBORINFO_CONFIG\x10\x80\x04\x12\x1b\n\x16\x41MBIENTLIGHTING_CONFIG\x10\x80\x08\x12\x1b\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x80\x10\x12
 \x16\n\x11PAXCOUNTER_CONFIG\x10\x80 
B_\n\x13\x63om.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
+DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mesh.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a
 
meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a
 
meshtastic/protobuf/xmodem.proto\x1a#meshtastic/protobuf/device_ui.proto\"\x99\x07\n\x08Position\x12\x17\n\nlatitude_i\x18\x01
 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x02 
\x01(\x0fH\x01\x88\x01\x01\x12\x15\n\x08\x61ltitude\x18\x03 
\x01(\x05H\x02\x88\x01\x01\x12\x0c\n\x04time\x18\x04 
\x01(\x07\x12@\n\x0flocation_source\x18\x05 
\x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\x12@\n\x0f\x61ltitude_source\x18\x06
 
\x01(\x0e\x32\'.meshtastic.protobuf.Position.AltSource\x12\x11\n\ttimestamp\x18\x07
 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 
\x01(\x05\x12\x19\n\x0c\x61ltitude_hae\x18\t 
\x01(\x11H\x03\x88\x01\x01\x12(\n\x1b\x61ltitude_
 geoidal_separation\x18\n \x01(\x11H\x04\x88\x01\x01\x12\x0c\n\x04PDOP\x18\x0b 
\x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r 
\x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e 
\x01(\r\x12\x19\n\x0cground_speed\x18\x0f 
\x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cground_track\x18\x10 
\x01(\rH\x06\x88\x01\x01\x12\x13\n\x0b\x66ix_quality\x18\x11 
\x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 
\x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 
\x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 
\x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 
\x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_iB\x0b\n\t_altitudeB\x0f\n\
 
r_altitude_haeB\x1e\n\x1c_altitude_geoidal_separationB\x0f\n\r_ground_speedB\x0f\n\r_ground_track\"\xea\x01\n\x04User\x12\n\n\x02id\x18\x01
 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 
\x01(\t\x12\x13\n\x07macaddr\x18\x04 
\x01(\x0c\x42\x02\x18\x01\x12\x34\n\x08hw_model\x18\x05 
\x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06
 \x01(\x08\x12;\n\x04role\x18\x07 
\x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x12\n\npublic_key\x18\x08
 \x01(\x0c\"Z\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 
\x03(\x07\x12\x13\n\x0bsnr_towards\x18\x02 
\x03(\x05\x12\x12\n\nroute_back\x18\x03 \x03(\x07\x12\x10\n\x08snr_back\x18\x04 
\x03(\x05\"\xfd\x03\n\x07Routing\x12<\n\rroute_request\x18\x01 
\x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0broute_reply\x18\x02
 
\x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0c\x65rror_reason\x18\x03
 \x01(\x0e\x32\".meshtastic.protobuf.Routing.ErrorH\x00\"\xb0\x02\
 
n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10
 
\x12\x12\n\x0eNOT_AUTHORIZED\x10!\x12\x0e\n\nPKI_FAILED\x10\"\x12\x16\n\x12PKI_UNKNOWN_PUBKEY\x10#\x12\x19\n\x15\x41\x44MIN_BAD_SESSION_KEY\x10$\x12!\n\x1d\x41\x44MIN_PUBLIC_KEY_UNAUTHORIZED\x10%B\t\n\x07variant\"\xd4\x01\n\x04\x44\x61ta\x12-\n\x07portnum\x18\x01
 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0f\n\x07payload\x18\x02 
\x01(\x0c\x12\x15\n\rwant_response\x18\x03 
\x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 
\x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 
\x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\x12\x15\n\x08\x62itfield\x18\t 
\x01(\rH\x0
 
0\x88\x01\x01\x42\x0b\n\t_bitfield\"\xbc\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01
 \x01(\r\x12\x17\n\nlatitude_i\x18\x02 
\x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x03 
\x01(\x0fH\x01\x88\x01\x01\x12\x0e\n\x06\x65xpire\x18\x04 
\x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 
\x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 
\x01(\t\x12\x0c\n\x04icon\x18\x08 
\x01(\x07\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_i\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01
 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 
\x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 
\x01(\tH\x00\x12\x10\n\x08retained\x18\x04 
\x01(\x08\x42\x11\n\x0fpayload_variant\"\xb6\x05\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01
 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 
\x01(\r\x12,\n\x07\x64\x65\x63oded\x18\x04 
\x01(\x0b\x32\x19.meshtastic.protobuf.DataH\x00\x12\x13\n\tencrypted\x18\x05 
\x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 
\x01(\x07\
 x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t 
\x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12:\n\x08priority\x18\x0b 
\x01(\x0e\x32(.meshtastic.protobuf.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c
 \x01(\x05\x12<\n\x07\x64\x65layed\x18\r 
\x01(\x0e\x32\'.meshtastic.protobuf.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e
 \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\x12\x12\n\npublic_key\x18\x10 
\x01(\x0c\x12\x15\n\rpki_encrypted\x18\x11 
\x01(\x08\x12\x10\n\x08next_hop\x18\x12 \x01(\r\x12\x12\n\nrelay_node\x18\x13 
\x01(\r\x12\x10\n\x08tx_after\x18\x14 
\x01(\r\"~\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x0c\n\x08RESPONSE\x10P\x12\x08\n\x04HIGH\x10\x64\x12\t\n\x05\x41LERT\x10n\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x1
 
2\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\x42\x11\n\x0fpayload_variant\"\xc0\x02\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01
 \x01(\r\x12\'\n\x04user\x18\x02 
\x01(\x0b\x32\x19.meshtastic.protobuf.User\x12/\n\x08position\x18\x03 
\x01(\x0b\x32\x1d.meshtastic.protobuf.Position\x12\x0b\n\x03snr\x18\x04 
\x01(\x02\x12\x12\n\nlast_heard\x18\x05 
\x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 
\x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07
 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x16\n\thops_away\x18\t 
\x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n 
\x01(\x08\x12\x12\n\nis_ignored\x18\x0b 
\x01(\x08\x42\x0c\n\n_hops_away\"t\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01
 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 
\x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b 
\x01(\r\x12\x11\n\tdevice_id\x18\x0c \x01(\x0c\x12\x0f\n\x07pio_env\x18\r 
\x01(\t\"\xc9\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 
\x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06sou
 rce\x18\x03 \x01(\t\x12\x33\n\x05level\x18\x04 
\x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01
 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 
\x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 
\x01(\r\"\xf7\x06\n\tFromRadio\x12\n\n\x02id\x18\x01 
\x01(\r\x12\x31\n\x06packet\x18\x02 
\x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x32\n\x07my_info\x18\x03
 
\x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfoH\x00\x12\x32\n\tnode_info\x18\x04
 
\x01(\x0b\x32\x1d.meshtastic.protobuf.NodeInfoH\x00\x12-\n\x06\x63onfig\x18\x05 
\x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12\x34\n\nlog_record\x18\x06 
\x01(\x0b\x32\x1e.meshtastic.protobuf.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07
 \x01(\rH\x00\x1
 2\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x39\n\x0cmoduleConfig\x18\t 
\x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12/\n\x07\x63hannel\x18\n 
\x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x37\n\x0bqueueStatus\x18\x0b
 \x01(\x0b\x32 
.meshtastic.protobuf.QueueStatusH\x00\x12\x33\n\x0cxmodemPacket\x18\x0c 
\x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12\x37\n\x08metadata\x18\r 
\x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12M\n\x16mqttClientProxyMessage\x18\x0e
 
\x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x31\n\x08\x66ileInfo\x18\x0f
 
\x01(\x0b\x32\x1d.meshtastic.protobuf.FileInfoH\x00\x12\x45\n\x12\x63lientNotification\x18\x10
 
\x01(\x0b\x32\'.meshtastic.protobuf.ClientNotificationH\x00\x12=\n\x0e\x64\x65viceuiConfig\x18\x11
 
\x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x42\x11\n\x0fpayload_variant\"\x8c\x01\n\x12\x43lientNotification\x12\x15\n\x08reply_id\x18\x01
 \x01(\rH\x00\x88\x01\x01\x12\x0c\n\x04time\x18\x02 \x01(\
 x07\x12\x33\n\x05level\x18\x03 
\x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\x12\x0f\n\x07message\x18\x04 
\x01(\tB\x0b\n\t_reply_id\"1\n\x08\x46ileInfo\x12\x11\n\tfile_name\x18\x01 
\x01(\t\x12\x12\n\nsize_bytes\x18\x02 
\x01(\r\"\xb8\x02\n\x07ToRadio\x12\x31\n\x06packet\x18\x01 
\x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03
 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 
\x01(\x08H\x00\x12\x33\n\x0cxmodemPacket\x18\x05 
\x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12M\n\x16mqttClientProxyMessage\x18\x06
 
\x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x33\n\theartbeat\x18\x07
 
\x01(\x0b\x32\x1e.meshtastic.protobuf.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"I\n\nCompressed\x12-\n\x07portnum\x18\x01
 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 
\x01(\x0c\"\x90\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 
\x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_i
 nterval_secs\x18\x03 \x01(\r\x12\x30\n\tneighbors\x18\x04 
\x03(\x0b\x32\x1d.meshtastic.protobuf.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01
 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 
\x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 
\x01(\r\"\xe9\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01
 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 
\x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 
\x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 
\x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 
\x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 
\x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08
 \x01(\r\x12\x34\n\x08hw_model\x18\t 
\x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n
 \x01(\x08\x12\x0e\n\x06hasPKC\x18\x0b 
\x01(\x08\x12\x18\n\x10\x65xcluded_modules\x18\x0c 
\x01(\r\"\x0b\n\tHeartbeat\"^\n\x15NodeRemoteHardwarePin\
 x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\x33\n\x03pin\x18\x02 
\x01(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\"e\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01
 \x01(\r\x12\x13\n\x0b\x63hunk_count\x18\x02 
\x01(\r\x12\x13\n\x0b\x63hunk_index\x18\x03 
\x01(\r\x12\x15\n\rpayload_chunk\x18\x04 
\x01(\x0c\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 
\x03(\r\"\xb3\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 
\x01(\r\x12\x1a\n\x10request_transfer\x18\x02 
\x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 
\x01(\x08H\x00\x12;\n\rresend_chunks\x18\x04 
\x01(\x0b\x32\".meshtastic.protobuf.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xda\x0e\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK463
 
1\x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nWIO_WM1110\x10\x15\x12\x0b\n\x07RAK2560\x10\x16\x12\x13\n\x0fHELTEC_HRU_3601\x10\x17\x12\x1a\n\x16HELTEC_WIRELESS_BRIDGE\x10\x18\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10
 
\x12\x0e\n\nNRF52840DK\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x4
 
4R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12
 
\n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x1d\n\x19HELTEC_VISION_MASTER_T190\x10\x42\x12\x1d\n\x19HELTEC_VISION_MASTER_E213\x10\x43\x12\x1d\n\x19HELTEC_VISION_MASTER_E290
 
\x10\x44\x12\x19\n\x15HELTEC_MESH_NODE_T114\x10\x45\x12\x16\n\x12SENSECAP_INDICATOR\x10\x46\x12\x13\n\x0fTRACKER_T1000_E\x10G\x12\x0b\n\x07RAK3172\x10H\x12\n\n\x06WIO_E5\x10I\x12\x1a\n\x16RADIOMASTER_900_BANDIT\x10J\x12\x13\n\x0fME25LS01_4Y10TD\x10K\x12\x18\n\x14RP2040_FEATHER_RFM95\x10L\x12\x15\n\x11M5STACK_COREBASIC\x10M\x12\x11\n\rM5STACK_CORE2\x10N\x12\r\n\tRPI_PICO2\x10O\x12\x12\n\x0eM5STACK_CORES3\x10P\x12\x11\n\rSEEED_XIAO_S3\x10Q\x12\x0b\n\x07MS24SF1\x10R\x12\x0c\n\x08TLORA_C6\x10S\x12\x0f\n\x0bWISMESH_TAP\x10T\x12\r\n\tROUTASTIC\x10U\x12\x0c\n\x08MESH_TAB\x10V\x12\x0c\n\x08MESHLINK\x10W\x12\x12\n\x0eXIAO_NRF52_KIT\x10X\x12\x10\n\x0cTHINKNODE_M1\x10Y\x12\x10\n\x0cTHINKNODE_M2\x10Z\x12\x0f\n\x0bT_ETH_ELITE\x10[\x12\x15\n\x11HELTEC_SENSOR_HUB\x10\\\x12\x1a\n\x16RESERVED_FRIED_CHICKEN\x10]\x12\x16\n\x12HELTEC_MESH_POCKET\x10^\x12\x14\n\x10SEEED_SOLAR_NODE\x10_\x12\x18\n\x14NOMADSTAR_METEOR_PRO\x10`\x12\r\n\tCROWPANEL\x10\x61\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\
 
x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xe9\x01*\xb4\x02\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x12
 
\n\x1c\x46LASH_CORRUPTION_RECOVERABLE\x10\x0c\x12\"\n\x1e\x46LASH_CORRUPTION_UNRECOVERABLE\x10\r*\x80\x03\n\x0f\x45xcludedModules\x12\x11\n\rEXCLUDED_NONE\x10\x00\x12\x0f\n\x0bMQTT_CONFIG\x10\x01\x12\x11\n\rSERIAL_CONFIG\x10\x02\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x04\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x08\x12\x14\n\x10RANGETEST_CONFIG\x10\x10\x12\x14\n\x10TELEMETRY_CONFIG\x10
 
\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10@\x12\x11\n\x0c\x41UDIO_CONFIG\x10\x80\x01\x12\x1a\n\x15REMOTE
 
HARDWARE_CONFIG\x10\x80\x02\x12\x18\n\x13NEIGHBORINFO_CONFIG\x10\x80\x04\x12\x1b\n\x16\x41MBIENTLIGHTING_CONFIG\x10\x80\x08\x12\x1b\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x80\x10\x12\x16\n\x11PAXCOUNTER_CONFIG\x10\x80
 
\x12\x15\n\x10\x42LUETOOTH_CONFIG\x10\x80@\x12\x14\n\x0eNETWORK_CONFIG\x10\x80\x80\x01\x42_\n\x13\x63om.geeksville.meshB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -33,13 +33,13 @@
   _MESHPACKET.fields_by_name['delayed']._options = None
   _MESHPACKET.fields_by_name['delayed']._serialized_options = b'\030\001'
   _globals['_HARDWAREMODEL']._serialized_start=6529
-  _globals['_HARDWAREMODEL']._serialized_end=8296
-  _globals['_CONSTANTS']._serialized_start=8298
-  _globals['_CONSTANTS']._serialized_end=8342
-  _globals['_CRITICALERRORCODE']._serialized_start=8345
-  _globals['_CRITICALERRORCODE']._serialized_end=8653
-  _globals['_EXCLUDEDMODULES']._serialized_start=8656
-  _globals['_EXCLUDEDMODULES']._serialized_end=8995
+  _globals['_HARDWAREMODEL']._serialized_end=8411
+  _globals['_CONSTANTS']._serialized_start=8413
+  _globals['_CONSTANTS']._serialized_end=8457
+  _globals['_CRITICALERRORCODE']._serialized_start=8460
+  _globals['_CRITICALERRORCODE']._serialized_end=8768
+  _globals['_EXCLUDEDMODULES']._serialized_start=8771
+  _globals['_EXCLUDEDMODULES']._serialized_end=9155
   _globals['_POSITION']._serialized_start=310
   _globals['_POSITION']._serialized_end=1231
   _globals['_POSITION_LOCSOURCE']._serialized_start=926
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/meshtastic/protobuf/mesh_pb2.pyi 
new/meshtastic-2.6.2/meshtastic/protobuf/mesh_pb2.pyi
--- old/meshtastic-2.6.1/meshtastic/protobuf/mesh_pb2.pyi       1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/protobuf/mesh_pb2.pyi       1970-01-01 
01:00:00.000000000 +0100
@@ -421,6 +421,26 @@
     """
     Heltec HRI-3621 industrial probe
     """
+    RESERVED_FRIED_CHICKEN: _HardwareModel.ValueType  # 93
+    """
+    Reserved Fried Chicken ID for future use
+    """
+    HELTEC_MESH_POCKET: _HardwareModel.ValueType  # 94
+    """
+    Heltec Magnetic Power Bank with Meshtastic compatible
+    """
+    SEEED_SOLAR_NODE: _HardwareModel.ValueType  # 95
+    """
+    Seeed Solar Node
+    """
+    NOMADSTAR_METEOR_PRO: _HardwareModel.ValueType  # 96
+    """
+    NomadStar Meteor Pro https://nomadstar.ch/
+    """
+    CROWPANEL: _HardwareModel.ValueType  # 97
+    """
+    Elecrow CrowPanel Advance models, ESP32-S3 and TFT with SX1262 radio plugin
+    """
     PRIVATE_HW: _HardwareModel.ValueType  # 255
     """
     
------------------------------------------------------------------------------------------------------------------------------------------
@@ -825,6 +845,26 @@
 """
 Heltec HRI-3621 industrial probe
 """
+RESERVED_FRIED_CHICKEN: HardwareModel.ValueType  # 93
+"""
+Reserved Fried Chicken ID for future use
+"""
+HELTEC_MESH_POCKET: HardwareModel.ValueType  # 94
+"""
+Heltec Magnetic Power Bank with Meshtastic compatible
+"""
+SEEED_SOLAR_NODE: HardwareModel.ValueType  # 95
+"""
+Seeed Solar Node
+"""
+NOMADSTAR_METEOR_PRO: HardwareModel.ValueType  # 96
+"""
+NomadStar Meteor Pro https://nomadstar.ch/
+"""
+CROWPANEL: HardwareModel.ValueType  # 97
+"""
+Elecrow CrowPanel Advance models, ESP32-S3 and TFT with SX1262 radio plugin
+"""
 PRIVATE_HW: HardwareModel.ValueType  # 255
 """
 
------------------------------------------------------------------------------------------------------------------------------------------
@@ -1068,6 +1108,14 @@
     """
     Paxcounter module
     """
+    BLUETOOTH_CONFIG: _ExcludedModules.ValueType  # 8192
+    """
+    Bluetooth config (not technically a module, but used to indicate bluetooth 
capabilities)
+    """
+    NETWORK_CONFIG: _ExcludedModules.ValueType  # 16384
+    """
+    Network config (not technically a module, but used to indicate network 
capabilities)
+    """
 
 class ExcludedModules(_ExcludedModules, 
metaclass=_ExcludedModulesEnumTypeWrapper):
     """
@@ -1132,6 +1180,14 @@
 """
 Paxcounter module
 """
+BLUETOOTH_CONFIG: ExcludedModules.ValueType  # 8192
+"""
+Bluetooth config (not technically a module, but used to indicate bluetooth 
capabilities)
+"""
+NETWORK_CONFIG: ExcludedModules.ValueType  # 16384
+"""
+Network config (not technically a module, but used to indicate network 
capabilities)
+"""
 global___ExcludedModules = ExcludedModules
 
 @typing.final
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/meshtastic-2.6.1/meshtastic/protobuf/telemetry_pb2.pyi 
new/meshtastic-2.6.2/meshtastic/protobuf/telemetry_pb2.pyi
--- old/meshtastic-2.6.1/meshtastic/protobuf/telemetry_pb2.pyi  1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/protobuf/telemetry_pb2.pyi  1970-01-01 
01:00:00.000000000 +0100
@@ -723,7 +723,7 @@
     """
     co2: builtins.int
     """
-    10.0um Particle Count
+    CO2 concentration in ppm
     """
     def __init__(
         self,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/meshtastic/serial_interface.py 
new/meshtastic-2.6.2/meshtastic/serial_interface.py
--- old/meshtastic-2.6.1/meshtastic/serial_interface.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/serial_interface.py 1970-01-01 
01:00:00.000000000 +0100
@@ -46,12 +46,7 @@
 
         logging.debug(f"Connecting to {self.devPath}")
 
-        # set port to None to prevent automatically opening
-        self.stream = serial.Serial(
-            port=None, baudrate=115200, exclusive=True, timeout=0.5, 
write_timeout=0
-        )
-
-        # first we need to clear HUPCL (UNIX) or clear RTS/DTR (Windows) so 
the device will not reboot based on RTS and/or DTR
+        # first we need to set the HUPCL so the device will not reboot based 
on RTS and/or DTR
         # see https://github.com/pyserial/pyserial/issues/124
         if platform.system() != "Windows":
             with open(self.devPath, encoding="utf8") as f:
@@ -60,14 +55,10 @@
                 termios.tcsetattr(f, termios.TCSAFLUSH, attrs)
                 f.close()
             time.sleep(0.1)
-        else:
-            self.stream.rts = 0
-            self.stream.dtr = 0
-
-        # set proper port and open now that we've worked-around RTS/DTR issues
-        self.stream.port = self.devPath
-        self.stream.open()
 
+        self.stream = serial.Serial(
+            self.devPath, 115200, exclusive=True, timeout=0.5, write_timeout=0
+        )
         self.stream.flush()    # type: ignore[attr-defined]
         time.sleep(0.1)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/meshtastic/tcp_interface.py 
new/meshtastic-2.6.2/meshtastic/tcp_interface.py
--- old/meshtastic-2.6.1/meshtastic/tcp_interface.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/meshtastic/tcp_interface.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,9 +1,11 @@
 """TCPInterface class for interfacing with http endpoint
 """
 # pylint: disable=R0917
+import contextlib
 import logging
 import socket
-from typing import Optional, cast
+import time
+from typing import Optional
 
 from meshtastic.stream_interface import StreamInterface
 
@@ -35,52 +37,63 @@
         self.socket: Optional[socket.socket] = None
 
         if connectNow:
-            logging.debug(f"Connecting to {hostname}") # type: 
ignore[str-bytes-safe]
-            server_address: tuple[str, int] = (hostname, portNumber)
-            sock: Optional[socket.socket] = 
socket.create_connection(server_address)
-            self.socket = sock
+            self.myConnect()
         else:
             self.socket = None
 
-        StreamInterface.__init__(
-            self, debugOut=debugOut, noProto=noProto, connectNow=connectNow, 
noNodes=noNodes
-        )
+        super().__init__(debugOut=debugOut, noProto=noProto, 
connectNow=connectNow, noNodes=noNodes)
 
     def _socket_shutdown(self) -> None:
         """Shutdown the socket.
         Note: Broke out this line so the exception could be unit tested.
         """
-        if self.socket:                #mian: please check that this should be 
"if self.socket:"
-            cast(socket.socket, self.socket).shutdown(socket.SHUT_RDWR)
+        if self.socket is not None:
+            self.socket.shutdown(socket.SHUT_RDWR)
 
     def myConnect(self) -> None:
         """Connect to socket"""
-        server_address: tuple[str, int] = (self.hostname, self.portNumber)
-        sock: Optional[socket.socket] = 
socket.create_connection(server_address)
-        self.socket = sock
+        logging.debug(f"Connecting to {self.hostname}") # type: 
ignore[str-bytes-safe]
+        server_address = (self.hostname, self.portNumber)
+        self.socket = socket.create_connection(server_address)
 
     def close(self) -> None:
         """Close a connection to the device"""
         logging.debug("Closing TCP stream")
-        StreamInterface.close(self)
+        super().close()
         # Sometimes the socket read might be blocked in the reader thread.
         # Therefore we force the shutdown by closing the socket here
-        self._wantExit: bool = True
-        if not self.socket is None:
-            try:
+        self._wantExit = True
+        if self.socket is not None:
+            with contextlib.suppress(Exception):  # Ignore errors in shutdown, 
because we might have a race with the server
                 self._socket_shutdown()
-            except:
-                pass  # Ignore errors in shutdown, because we might have a 
race with the server
             self.socket.close()
 
+        self.socket = None
+
     def _writeBytes(self, b: bytes) -> None:
         """Write an array of bytes to our stream and flush"""
-        if self.socket:
+        if self.socket is not None:
             self.socket.send(b)
 
     def _readBytes(self, length) -> Optional[bytes]:
         """Read an array of bytes from our stream"""
-        if self.socket:
-            return self.socket.recv(length)
-        else:
-            return None
+        if self.socket is not None:
+            data = self.socket.recv(length)
+            # empty byte indicates a disconnected socket,
+            # we need to handle it to avoid an infinite loop reading from null 
socket
+            if data == b'':
+                logging.debug("dead socket, re-connecting")
+                # cleanup and reconnect socket without breaking reader thread
+                with contextlib.suppress(Exception):
+                    self._socket_shutdown()
+                self.socket.close()
+                self.socket = None
+                time.sleep(1)
+                self.myConnect()
+                self._startConfig()
+                return None
+            return data
+
+        # no socket, break reader thread
+        self._wantExit = True
+        return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meshtastic-2.6.1/pyproject.toml 
new/meshtastic-2.6.2/pyproject.toml
--- old/meshtastic-2.6.1/pyproject.toml 1970-01-01 01:00:00.000000000 +0100
+++ new/meshtastic-2.6.2/pyproject.toml 1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "meshtastic"
-version = "2.6.1"
+version = "2.6.2"
 description = "Python API & client shell for talking to Meshtastic devices"
 authors = ["Meshtastic Developers <cont...@meshtastic.org>"]
 license = "GPL-3.0-only"

Reply via email to