mirror of
https://github.com/meshtastic/python.git
synced 2025-12-26 09:27:52 -05:00
Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cc0dae394 | ||
|
|
1a50377d34 | ||
|
|
2a44be9269 | ||
|
|
776debcc86 | ||
|
|
1088cc607e | ||
|
|
aeec5447ed | ||
|
|
096fec95c8 | ||
|
|
dea5f788a2 | ||
|
|
f15a0bdc0b | ||
|
|
0906fc6bc0 | ||
|
|
ccb530574b | ||
|
|
dbc0101a7a | ||
|
|
debbb8caeb | ||
|
|
3c6dba78a3 | ||
|
|
8a3b114153 | ||
|
|
0bb04100e1 | ||
|
|
ad04c26d13 | ||
|
|
0e67ef37aa | ||
|
|
e924afd140 | ||
|
|
87682c153b | ||
|
|
e6c276fe96 | ||
|
|
b4662251ed | ||
|
|
a17cfe9d2b | ||
|
|
471e3ce145 | ||
|
|
39c9864682 | ||
|
|
1d3a7d39f7 | ||
|
|
2065598754 | ||
|
|
4cac15686b | ||
|
|
9285f7d13f | ||
|
|
f6f1b748dc | ||
|
|
d2d9c03bc8 | ||
|
|
c44f9b1bb4 | ||
|
|
6f35eb3923 | ||
|
|
dcd077d85e | ||
|
|
da416fcd20 | ||
|
|
93da1da386 | ||
|
|
2de7c30a27 | ||
|
|
43a685f012 | ||
|
|
7554c03a26 | ||
|
|
49783d9108 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -17,4 +17,5 @@ examples/__pycache__
|
|||||||
meshtastic.spec
|
meshtastic.spec
|
||||||
.hypothesis/
|
.hypothesis/
|
||||||
coverage.xml
|
coverage.xml
|
||||||
.ipynb_checkpoints
|
.ipynb_checkpoints
|
||||||
|
.cursor/
|
||||||
@@ -25,6 +25,7 @@ parser_create = subparsers.add_parser('create', help='Create a new waypoint')
|
|||||||
parser_create.add_argument('id', help="id of the waypoint")
|
parser_create.add_argument('id', help="id of the waypoint")
|
||||||
parser_create.add_argument('name', help="name of the waypoint")
|
parser_create.add_argument('name', help="name of the waypoint")
|
||||||
parser_create.add_argument('description', help="description of the waypoint")
|
parser_create.add_argument('description', help="description of the waypoint")
|
||||||
|
parser_create.add_argument('icon', help="icon of the waypoint")
|
||||||
parser_create.add_argument('expire', help="expiration date of the waypoint as interpreted by datetime.fromisoformat")
|
parser_create.add_argument('expire', help="expiration date of the waypoint as interpreted by datetime.fromisoformat")
|
||||||
parser_create.add_argument('latitude', help="latitude of the waypoint")
|
parser_create.add_argument('latitude', help="latitude of the waypoint")
|
||||||
parser_create.add_argument('longitude', help="longitude of the waypoint")
|
parser_create.add_argument('longitude', help="longitude of the waypoint")
|
||||||
@@ -44,6 +45,7 @@ with meshtastic.serial_interface.SerialInterface(args.port, debugOut=d) as iface
|
|||||||
waypoint_id=int(args.id),
|
waypoint_id=int(args.id),
|
||||||
name=args.name,
|
name=args.name,
|
||||||
description=args.description,
|
description=args.description,
|
||||||
|
icon=args.icon,
|
||||||
expire=int(datetime.datetime.fromisoformat(args.expire).timestamp()),
|
expire=int(datetime.datetime.fromisoformat(args.expire).timestamp()),
|
||||||
latitude=float(args.latitude),
|
latitude=float(args.latitude),
|
||||||
longitude=float(args.longitude),
|
longitude=float(args.longitude),
|
||||||
|
|||||||
@@ -277,7 +277,8 @@ def setPref(config, comp_name, raw_val) -> bool:
|
|||||||
else:
|
else:
|
||||||
print(f"Adding '{raw_val}' to the {pref.name} list")
|
print(f"Adding '{raw_val}' to the {pref.name} list")
|
||||||
cur_vals = [x for x in getattr(config_values, pref.name) if x not in [0, "", b""]]
|
cur_vals = [x for x in getattr(config_values, pref.name) if x not in [0, "", b""]]
|
||||||
cur_vals.append(val)
|
if val not in cur_vals:
|
||||||
|
cur_vals.append(val)
|
||||||
getattr(config_values, pref.name)[:] = cur_vals
|
getattr(config_values, pref.name)[:] = cur_vals
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -1146,13 +1147,16 @@ def export_config(interface) -> str:
|
|||||||
configObj = {}
|
configObj = {}
|
||||||
|
|
||||||
# A list of configuration keys that should be set to False if they are missing
|
# A list of configuration keys that should be set to False if they are missing
|
||||||
true_defaults = {
|
config_true_defaults = {
|
||||||
("bluetooth", "enabled"),
|
("bluetooth", "enabled"),
|
||||||
("lora", "sx126xRxBoostedGain"),
|
("lora", "sx126xRxBoostedGain"),
|
||||||
("lora", "txEnabled"),
|
("lora", "txEnabled"),
|
||||||
("lora", "usePreset"),
|
("lora", "usePreset"),
|
||||||
("position", "positionBroadcastSmartEnabled"),
|
("position", "positionBroadcastSmartEnabled"),
|
||||||
("security", "serialEnabled"),
|
("security", "serialEnabled"),
|
||||||
|
}
|
||||||
|
|
||||||
|
module_true_defaults = {
|
||||||
("mqtt", "encryptionEnabled"),
|
("mqtt", "encryptionEnabled"),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1214,7 +1218,7 @@ def export_config(interface) -> str:
|
|||||||
else:
|
else:
|
||||||
configObj["config"] = config
|
configObj["config"] = config
|
||||||
|
|
||||||
set_missing_flags_false(configObj["config"], true_defaults)
|
set_missing_flags_false(configObj["config"], config_true_defaults)
|
||||||
|
|
||||||
module_config = MessageToDict(interface.localNode.moduleConfig)
|
module_config = MessageToDict(interface.localNode.moduleConfig)
|
||||||
if module_config:
|
if module_config:
|
||||||
@@ -1228,6 +1232,8 @@ def export_config(interface) -> str:
|
|||||||
else:
|
else:
|
||||||
configObj["module_config"] = prefs
|
configObj["module_config"] = prefs
|
||||||
|
|
||||||
|
set_missing_flags_false(configObj["module_config"], module_true_defaults)
|
||||||
|
|
||||||
config_txt = "# start of Meshtastic configure yaml\n" #checkme - "config" (now changed to config_out)
|
config_txt = "# start of Meshtastic configure yaml\n" #checkme - "config" (now changed to config_out)
|
||||||
#was used as a string here and a Dictionary above
|
#was used as a string here and a Dictionary above
|
||||||
config_txt += yaml.dump(configObj)
|
config_txt += yaml.dump(configObj)
|
||||||
@@ -1364,6 +1370,7 @@ def common():
|
|||||||
debugOut=logfile,
|
debugOut=logfile,
|
||||||
noProto=args.noproto,
|
noProto=args.noproto,
|
||||||
noNodes=args.no_nodes,
|
noNodes=args.no_nodes,
|
||||||
|
timeout=args.timeout,
|
||||||
)
|
)
|
||||||
elif args.host:
|
elif args.host:
|
||||||
try:
|
try:
|
||||||
@@ -1378,6 +1385,7 @@ def common():
|
|||||||
debugOut=logfile,
|
debugOut=logfile,
|
||||||
noProto=args.noproto,
|
noProto=args.noproto,
|
||||||
noNodes=args.no_nodes,
|
noNodes=args.no_nodes,
|
||||||
|
timeout=args.timeout,
|
||||||
)
|
)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
meshtastic.util.our_exit(f"Error connecting to {args.host}:{ex}", 1)
|
meshtastic.util.our_exit(f"Error connecting to {args.host}:{ex}", 1)
|
||||||
@@ -1388,6 +1396,7 @@ def common():
|
|||||||
debugOut=logfile,
|
debugOut=logfile,
|
||||||
noProto=args.noproto,
|
noProto=args.noproto,
|
||||||
noNodes=args.no_nodes,
|
noNodes=args.no_nodes,
|
||||||
|
timeout=args.timeout,
|
||||||
)
|
)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
# Handle the case where the serial device is not found
|
# Handle the case where the serial device is not found
|
||||||
@@ -1425,6 +1434,7 @@ def common():
|
|||||||
debugOut=logfile,
|
debugOut=logfile,
|
||||||
noProto=args.noproto,
|
noProto=args.noproto,
|
||||||
noNodes=args.no_nodes,
|
noNodes=args.no_nodes,
|
||||||
|
timeout=args.timeout,
|
||||||
)
|
)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
meshtastic.util.our_exit(
|
meshtastic.util.our_exit(
|
||||||
|
|||||||
@@ -32,15 +32,16 @@ class BLEInterface(MeshInterface):
|
|||||||
class BLEError(Exception):
|
class BLEError(Exception):
|
||||||
"""An exception class for BLE errors."""
|
"""An exception class for BLE errors."""
|
||||||
|
|
||||||
def __init__(
|
def __init__( # pylint: disable=R0917
|
||||||
self,
|
self,
|
||||||
address: Optional[str],
|
address: Optional[str],
|
||||||
noProto: bool = False,
|
noProto: bool = False,
|
||||||
debugOut: Optional[io.TextIOWrapper]=None,
|
debugOut: Optional[io.TextIOWrapper]=None,
|
||||||
noNodes: bool = False,
|
noNodes: bool = False,
|
||||||
|
timeout: int = 300,
|
||||||
) -> None:
|
) -> None:
|
||||||
MeshInterface.__init__(
|
MeshInterface.__init__(
|
||||||
self, debugOut=debugOut, noProto=noProto, noNodes=noNodes
|
self, debugOut=debugOut, noProto=noProto, noNodes=noNodes, timeout=timeout
|
||||||
)
|
)
|
||||||
|
|
||||||
self.should_read = False
|
self.should_read = False
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class MeshInterface: # pylint: disable=R0902
|
|||||||
super().__init__(self.message)
|
super().__init__(self.message)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, debugOut=None, noProto: bool = False, noNodes: bool = False
|
self, debugOut=None, noProto: bool = False, noNodes: bool = False, timeout: int = 300
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Constructor
|
"""Constructor
|
||||||
|
|
||||||
@@ -99,13 +99,14 @@ class MeshInterface: # pylint: disable=R0902
|
|||||||
link - just be a dumb serial client.
|
link - just be a dumb serial client.
|
||||||
noNodes -- If True, instruct the node to not send its nodedb
|
noNodes -- If True, instruct the node to not send its nodedb
|
||||||
on startup, just other configuration information.
|
on startup, just other configuration information.
|
||||||
|
timeout -- How long to wait for replies (default: 300 seconds)
|
||||||
"""
|
"""
|
||||||
self.debugOut = debugOut
|
self.debugOut = debugOut
|
||||||
self.nodes: Optional[Dict[str, Dict]] = None # FIXME
|
self.nodes: Optional[Dict[str, Dict]] = None # FIXME
|
||||||
self.isConnected: threading.Event = threading.Event()
|
self.isConnected: threading.Event = threading.Event()
|
||||||
self.noProto: bool = noProto
|
self.noProto: bool = noProto
|
||||||
self.localNode: meshtastic.node.Node = meshtastic.node.Node(
|
self.localNode: meshtastic.node.Node = meshtastic.node.Node(
|
||||||
self, -1
|
self, -1, timeout=timeout
|
||||||
) # We fixup nodenum later
|
) # We fixup nodenum later
|
||||||
self.myInfo: Optional[
|
self.myInfo: Optional[
|
||||||
mesh_pb2.MyNodeInfo
|
mesh_pb2.MyNodeInfo
|
||||||
@@ -119,7 +120,7 @@ class MeshInterface: # pylint: disable=R0902
|
|||||||
self.failure = (
|
self.failure = (
|
||||||
None # If we've encountered a fatal exception it will be kept here
|
None # If we've encountered a fatal exception it will be kept here
|
||||||
)
|
)
|
||||||
self._timeout: Timeout = Timeout()
|
self._timeout: Timeout = Timeout(maxSecs=timeout)
|
||||||
self._acknowledgment: Acknowledgment = Acknowledgment()
|
self._acknowledgment: Acknowledgment = Acknowledgment()
|
||||||
self.heartbeatTimer: Optional[threading.Timer] = None
|
self.heartbeatTimer: Optional[threading.Timer] = None
|
||||||
random.seed() # FIXME, we should not clobber the random seedval here, instead tell user they must call it
|
random.seed() # FIXME, we should not clobber the random seedval here, instead tell user they must call it
|
||||||
@@ -829,6 +830,7 @@ class MeshInterface: # pylint: disable=R0902
|
|||||||
self,
|
self,
|
||||||
name,
|
name,
|
||||||
description,
|
description,
|
||||||
|
icon,
|
||||||
expire: int,
|
expire: int,
|
||||||
waypoint_id: Optional[int] = None,
|
waypoint_id: Optional[int] = None,
|
||||||
latitude: float = 0.0,
|
latitude: float = 0.0,
|
||||||
@@ -847,6 +849,7 @@ class MeshInterface: # pylint: disable=R0902
|
|||||||
w = mesh_pb2.Waypoint()
|
w = mesh_pb2.Waypoint()
|
||||||
w.name = name
|
w.name = name
|
||||||
w.description = description
|
w.description = description
|
||||||
|
w.icon = icon
|
||||||
w.expire = expire
|
w.expire = expire
|
||||||
if waypoint_id is None:
|
if waypoint_id is None:
|
||||||
# Generate a waypoint's id, NOT a packet ID.
|
# Generate a waypoint's id, NOT a packet ID.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import time
|
|||||||
|
|
||||||
from typing import Optional, Union, List
|
from typing import Optional, Union, List
|
||||||
|
|
||||||
from meshtastic.protobuf import admin_pb2, apponly_pb2, channel_pb2, localonly_pb2, mesh_pb2, portnums_pb2
|
from meshtastic.protobuf import admin_pb2, apponly_pb2, channel_pb2, config_pb2, localonly_pb2, mesh_pb2, portnums_pb2
|
||||||
from meshtastic.util import (
|
from meshtastic.util import (
|
||||||
Timeout,
|
Timeout,
|
||||||
camel_to_snake,
|
camel_to_snake,
|
||||||
@@ -16,6 +16,9 @@ from meshtastic.util import (
|
|||||||
pskToString,
|
pskToString,
|
||||||
stripnl,
|
stripnl,
|
||||||
message_to_json,
|
message_to_json,
|
||||||
|
generate_channel_hash,
|
||||||
|
to_node_num,
|
||||||
|
flags_to_list,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -52,6 +55,16 @@ class Node:
|
|||||||
r += ")"
|
r += ")"
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def position_flags_list(position_flags: int) -> List[str]:
|
||||||
|
"Return a list of position flags from the given flags integer"
|
||||||
|
return flags_to_list(config_pb2.Config.PositionConfig.PositionFlags, position_flags)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def excluded_modules_list(excluded_modules: int) -> List[str]:
|
||||||
|
"Return a list of excluded modules from the given flags integer"
|
||||||
|
return flags_to_list(mesh_pb2.ExcludedModules, excluded_modules)
|
||||||
|
|
||||||
def module_available(self, excluded_bit: int) -> bool:
|
def module_available(self, excluded_bit: int) -> bool:
|
||||||
"""Check DeviceMetadata.excluded_modules to see if a module is available."""
|
"""Check DeviceMetadata.excluded_modules to see if a module is available."""
|
||||||
meta = getattr(self.iface, "metadata", None)
|
meta = getattr(self.iface, "metadata", None)
|
||||||
@@ -714,11 +727,7 @@ class Node:
|
|||||||
def removeNode(self, nodeId: Union[int, str]):
|
def removeNode(self, nodeId: Union[int, str]):
|
||||||
"""Tell the node to remove a specific node by ID"""
|
"""Tell the node to remove a specific node by ID"""
|
||||||
self.ensureSessionKey()
|
self.ensureSessionKey()
|
||||||
if isinstance(nodeId, str):
|
nodeId = to_node_num(nodeId)
|
||||||
if nodeId.startswith("!"):
|
|
||||||
nodeId = int(nodeId[1:], 16)
|
|
||||||
else:
|
|
||||||
nodeId = int(nodeId)
|
|
||||||
|
|
||||||
p = admin_pb2.AdminMessage()
|
p = admin_pb2.AdminMessage()
|
||||||
p.remove_by_nodenum = nodeId
|
p.remove_by_nodenum = nodeId
|
||||||
@@ -732,11 +741,7 @@ class Node:
|
|||||||
def setFavorite(self, nodeId: Union[int, str]):
|
def setFavorite(self, nodeId: Union[int, str]):
|
||||||
"""Tell the node to set the specified node ID to be favorited on the NodeDB on the device"""
|
"""Tell the node to set the specified node ID to be favorited on the NodeDB on the device"""
|
||||||
self.ensureSessionKey()
|
self.ensureSessionKey()
|
||||||
if isinstance(nodeId, str):
|
nodeId = to_node_num(nodeId)
|
||||||
if nodeId.startswith("!"):
|
|
||||||
nodeId = int(nodeId[1:], 16)
|
|
||||||
else:
|
|
||||||
nodeId = int(nodeId)
|
|
||||||
|
|
||||||
p = admin_pb2.AdminMessage()
|
p = admin_pb2.AdminMessage()
|
||||||
p.set_favorite_node = nodeId
|
p.set_favorite_node = nodeId
|
||||||
@@ -750,11 +755,7 @@ class Node:
|
|||||||
def removeFavorite(self, nodeId: Union[int, str]):
|
def removeFavorite(self, nodeId: Union[int, str]):
|
||||||
"""Tell the node to set the specified node ID to be un-favorited on the NodeDB on the device"""
|
"""Tell the node to set the specified node ID to be un-favorited on the NodeDB on the device"""
|
||||||
self.ensureSessionKey()
|
self.ensureSessionKey()
|
||||||
if isinstance(nodeId, str):
|
nodeId = to_node_num(nodeId)
|
||||||
if nodeId.startswith("!"):
|
|
||||||
nodeId = int(nodeId[1:], 16)
|
|
||||||
else:
|
|
||||||
nodeId = int(nodeId)
|
|
||||||
|
|
||||||
p = admin_pb2.AdminMessage()
|
p = admin_pb2.AdminMessage()
|
||||||
p.remove_favorite_node = nodeId
|
p.remove_favorite_node = nodeId
|
||||||
@@ -768,11 +769,7 @@ class Node:
|
|||||||
def setIgnored(self, nodeId: Union[int, str]):
|
def setIgnored(self, nodeId: Union[int, str]):
|
||||||
"""Tell the node to set the specified node ID to be ignored on the NodeDB on the device"""
|
"""Tell the node to set the specified node ID to be ignored on the NodeDB on the device"""
|
||||||
self.ensureSessionKey()
|
self.ensureSessionKey()
|
||||||
if isinstance(nodeId, str):
|
nodeId = to_node_num(nodeId)
|
||||||
if nodeId.startswith("!"):
|
|
||||||
nodeId = int(nodeId[1:], 16)
|
|
||||||
else:
|
|
||||||
nodeId = int(nodeId)
|
|
||||||
|
|
||||||
p = admin_pb2.AdminMessage()
|
p = admin_pb2.AdminMessage()
|
||||||
p.set_ignored_node = nodeId
|
p.set_ignored_node = nodeId
|
||||||
@@ -786,11 +783,7 @@ class Node:
|
|||||||
def removeIgnored(self, nodeId: Union[int, str]):
|
def removeIgnored(self, nodeId: Union[int, str]):
|
||||||
"""Tell the node to set the specified node ID to be un-ignored on the NodeDB on the device"""
|
"""Tell the node to set the specified node ID to be un-ignored on the NodeDB on the device"""
|
||||||
self.ensureSessionKey()
|
self.ensureSessionKey()
|
||||||
if isinstance(nodeId, str):
|
nodeId = to_node_num(nodeId)
|
||||||
if nodeId.startswith("!"):
|
|
||||||
nodeId = int(nodeId[1:], 16)
|
|
||||||
else:
|
|
||||||
nodeId = int(nodeId)
|
|
||||||
|
|
||||||
p = admin_pb2.AdminMessage()
|
p = admin_pb2.AdminMessage()
|
||||||
p.remove_ignored_node = nodeId
|
p.remove_ignored_node = nodeId
|
||||||
@@ -920,6 +913,18 @@ class Node:
|
|||||||
logger.debug(f"Received metadata {stripnl(c)}")
|
logger.debug(f"Received metadata {stripnl(c)}")
|
||||||
print(f"\nfirmware_version: {c.firmware_version}")
|
print(f"\nfirmware_version: {c.firmware_version}")
|
||||||
print(f"device_state_version: {c.device_state_version}")
|
print(f"device_state_version: {c.device_state_version}")
|
||||||
|
if c.role in config_pb2.Config.DeviceConfig.Role.values():
|
||||||
|
print(f"role: {config_pb2.Config.DeviceConfig.Role.Name(c.role)}")
|
||||||
|
else:
|
||||||
|
print(f"role: {c.role}")
|
||||||
|
print(f"position_flags: {self.position_flags_list(c.position_flags)}")
|
||||||
|
if c.hw_model in mesh_pb2.HardwareModel.values():
|
||||||
|
print(f"hw_model: {mesh_pb2.HardwareModel.Name(c.hw_model)}")
|
||||||
|
else:
|
||||||
|
print(f"hw_model: {c.hw_model}")
|
||||||
|
print(f"hasPKC: {c.hasPKC}")
|
||||||
|
if c.excluded_modules > 0:
|
||||||
|
print(f"excluded_modules: {self.excluded_modules_list(c.excluded_modules)}")
|
||||||
|
|
||||||
def onResponseRequestChannel(self, p):
|
def onResponseRequestChannel(self, p):
|
||||||
"""Handle the response packet for requesting a channel _requestChannel()"""
|
"""Handle the response packet for requesting a channel _requestChannel()"""
|
||||||
@@ -1013,10 +1018,7 @@ class Node:
|
|||||||
): # unless a special channel index was used, we want to use the admin index
|
): # unless a special channel index was used, we want to use the admin index
|
||||||
adminIndex = self.iface.localNode._getAdminChannelIndex()
|
adminIndex = self.iface.localNode._getAdminChannelIndex()
|
||||||
logger.debug(f"adminIndex:{adminIndex}")
|
logger.debug(f"adminIndex:{adminIndex}")
|
||||||
if isinstance(self.nodeNum, int):
|
nodeid = to_node_num(self.nodeNum)
|
||||||
nodeid = self.nodeNum
|
|
||||||
else: # assume string starting with !
|
|
||||||
nodeid = int(self.nodeNum[1:],16)
|
|
||||||
if "adminSessionPassKey" in self.iface._getOrCreateByNum(nodeid):
|
if "adminSessionPassKey" in self.iface._getOrCreateByNum(nodeid):
|
||||||
p.session_passkey = self.iface._getOrCreateByNum(nodeid).get("adminSessionPassKey")
|
p.session_passkey = self.iface._getOrCreateByNum(nodeid).get("adminSessionPassKey")
|
||||||
return self.iface.sendData(
|
return self.iface.sendData(
|
||||||
@@ -1037,9 +1039,23 @@ class Node:
|
|||||||
f"Not ensuring session key, because protocol use is disabled by noProto"
|
f"Not ensuring session key, because protocol use is disabled by noProto"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
if isinstance(self.nodeNum, int):
|
nodeid = to_node_num(self.nodeNum)
|
||||||
nodeid = self.nodeNum
|
|
||||||
else: # assume string starting with !
|
|
||||||
nodeid = int(self.nodeNum[1:],16)
|
|
||||||
if self.iface._getOrCreateByNum(nodeid).get("adminSessionPassKey") is None:
|
if self.iface._getOrCreateByNum(nodeid).get("adminSessionPassKey") is None:
|
||||||
self.requestConfig(admin_pb2.AdminMessage.SESSIONKEY_CONFIG)
|
self.requestConfig(admin_pb2.AdminMessage.SESSIONKEY_CONFIG)
|
||||||
|
|
||||||
|
def get_channels_with_hash(self):
|
||||||
|
"""Return a list of dicts with channel info and hash."""
|
||||||
|
result = []
|
||||||
|
if self.channels:
|
||||||
|
for c in self.channels:
|
||||||
|
if c.settings and hasattr(c.settings, "name") and hasattr(c.settings, "psk"):
|
||||||
|
hash_val = generate_channel_hash(c.settings.name, c.settings.psk)
|
||||||
|
else:
|
||||||
|
hash_val = None
|
||||||
|
result.append({
|
||||||
|
"index": c.index,
|
||||||
|
"role": channel_pb2.Channel.Role.Name(c.role),
|
||||||
|
"name": c.settings.name if c.settings and hasattr(c.settings, "name") else "",
|
||||||
|
"hash": hash_val,
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
|||||||
14
meshtastic/protobuf/admin_pb2.py
generated
14
meshtastic/protobuf/admin_pb2.py
generated
File diff suppressed because one or more lines are too long
13
meshtastic/protobuf/admin_pb2.pyi
generated
13
meshtastic/protobuf/admin_pb2.pyi
generated
@@ -515,9 +515,10 @@ class AdminMessage(google.protobuf.message.Message):
|
|||||||
"""
|
"""
|
||||||
Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved.
|
Tell the node to factory reset config; all device state and configuration will be returned to factory defaults; BLE bonds will be preserved.
|
||||||
"""
|
"""
|
||||||
nodedb_reset: builtins.int
|
nodedb_reset: builtins.bool
|
||||||
"""
|
"""
|
||||||
Tell the node to reset the nodedb.
|
Tell the node to reset the nodedb.
|
||||||
|
When true, favorites are preserved through reset.
|
||||||
"""
|
"""
|
||||||
@property
|
@property
|
||||||
def get_channel_response(self) -> meshtastic.protobuf.channel_pb2.Channel:
|
def get_channel_response(self) -> meshtastic.protobuf.channel_pb2.Channel:
|
||||||
@@ -689,7 +690,7 @@ class AdminMessage(google.protobuf.message.Message):
|
|||||||
reboot_seconds: builtins.int = ...,
|
reboot_seconds: builtins.int = ...,
|
||||||
shutdown_seconds: builtins.int = ...,
|
shutdown_seconds: builtins.int = ...,
|
||||||
factory_reset_config: builtins.int = ...,
|
factory_reset_config: builtins.int = ...,
|
||||||
nodedb_reset: builtins.int = ...,
|
nodedb_reset: builtins.bool = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def HasField(self, field_name: typing.Literal["add_contact", b"add_contact", "backup_preferences", b"backup_preferences", "begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset_config", b"factory_reset_config", "factory_reset_device", b"factory_reset_device", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "get_ui_config_request", b"get_ui_config_request", "get_ui_config_response", b"get_ui_config_response", "key_verification", b"key_verification", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_backup_preferences", b"remove_backup_preferences", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "remove_ignored_node", b"remove_ignored_node", "restore_preferences", b"restore_preferences", "send_input_event", b"send_input_event", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_ignored_node", b"set_ignored_node", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "set_scale", b"set_scale", "set_time_only", b"set_time_only", "shutdown_seconds", b"shutdown_seconds", "store_ui_config", b"store_ui_config"]) -> builtins.bool: ...
|
def HasField(self, field_name: typing.Literal["add_contact", b"add_contact", "backup_preferences", b"backup_preferences", "begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset_config", b"factory_reset_config", "factory_reset_device", b"factory_reset_device", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "get_ui_config_request", b"get_ui_config_request", "get_ui_config_response", b"get_ui_config_response", "key_verification", b"key_verification", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_backup_preferences", b"remove_backup_preferences", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "remove_ignored_node", b"remove_ignored_node", "restore_preferences", b"restore_preferences", "send_input_event", b"send_input_event", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_ignored_node", b"set_ignored_node", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "set_scale", b"set_scale", "set_time_only", b"set_time_only", "shutdown_seconds", b"shutdown_seconds", "store_ui_config", b"store_ui_config"]) -> builtins.bool: ...
|
||||||
def ClearField(self, field_name: typing.Literal["add_contact", b"add_contact", "backup_preferences", b"backup_preferences", "begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset_config", b"factory_reset_config", "factory_reset_device", b"factory_reset_device", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "get_ui_config_request", b"get_ui_config_request", "get_ui_config_response", b"get_ui_config_response", "key_verification", b"key_verification", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_backup_preferences", b"remove_backup_preferences", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "remove_ignored_node", b"remove_ignored_node", "restore_preferences", b"restore_preferences", "send_input_event", b"send_input_event", "session_passkey", b"session_passkey", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_ignored_node", b"set_ignored_node", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "set_scale", b"set_scale", "set_time_only", b"set_time_only", "shutdown_seconds", b"shutdown_seconds", "store_ui_config", b"store_ui_config"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["add_contact", b"add_contact", "backup_preferences", b"backup_preferences", "begin_edit_settings", b"begin_edit_settings", "commit_edit_settings", b"commit_edit_settings", "delete_file_request", b"delete_file_request", "enter_dfu_mode_request", b"enter_dfu_mode_request", "exit_simulator", b"exit_simulator", "factory_reset_config", b"factory_reset_config", "factory_reset_device", b"factory_reset_device", "get_canned_message_module_messages_request", b"get_canned_message_module_messages_request", "get_canned_message_module_messages_response", b"get_canned_message_module_messages_response", "get_channel_request", b"get_channel_request", "get_channel_response", b"get_channel_response", "get_config_request", b"get_config_request", "get_config_response", b"get_config_response", "get_device_connection_status_request", b"get_device_connection_status_request", "get_device_connection_status_response", b"get_device_connection_status_response", "get_device_metadata_request", b"get_device_metadata_request", "get_device_metadata_response", b"get_device_metadata_response", "get_module_config_request", b"get_module_config_request", "get_module_config_response", b"get_module_config_response", "get_node_remote_hardware_pins_request", b"get_node_remote_hardware_pins_request", "get_node_remote_hardware_pins_response", b"get_node_remote_hardware_pins_response", "get_owner_request", b"get_owner_request", "get_owner_response", b"get_owner_response", "get_ringtone_request", b"get_ringtone_request", "get_ringtone_response", b"get_ringtone_response", "get_ui_config_request", b"get_ui_config_request", "get_ui_config_response", b"get_ui_config_response", "key_verification", b"key_verification", "nodedb_reset", b"nodedb_reset", "payload_variant", b"payload_variant", "reboot_ota_seconds", b"reboot_ota_seconds", "reboot_seconds", b"reboot_seconds", "remove_backup_preferences", b"remove_backup_preferences", "remove_by_nodenum", b"remove_by_nodenum", "remove_favorite_node", b"remove_favorite_node", "remove_fixed_position", b"remove_fixed_position", "remove_ignored_node", b"remove_ignored_node", "restore_preferences", b"restore_preferences", "send_input_event", b"send_input_event", "session_passkey", b"session_passkey", "set_canned_message_module_messages", b"set_canned_message_module_messages", "set_channel", b"set_channel", "set_config", b"set_config", "set_favorite_node", b"set_favorite_node", "set_fixed_position", b"set_fixed_position", "set_ham_mode", b"set_ham_mode", "set_ignored_node", b"set_ignored_node", "set_module_config", b"set_module_config", "set_owner", b"set_owner", "set_ringtone_message", b"set_ringtone_message", "set_scale", b"set_scale", "set_time_only", b"set_time_only", "shutdown_seconds", b"shutdown_seconds", "store_ui_config", b"store_ui_config"]) -> None: ...
|
||||||
@@ -770,6 +771,7 @@ class SharedContact(google.protobuf.message.Message):
|
|||||||
NODE_NUM_FIELD_NUMBER: builtins.int
|
NODE_NUM_FIELD_NUMBER: builtins.int
|
||||||
USER_FIELD_NUMBER: builtins.int
|
USER_FIELD_NUMBER: builtins.int
|
||||||
SHOULD_IGNORE_FIELD_NUMBER: builtins.int
|
SHOULD_IGNORE_FIELD_NUMBER: builtins.int
|
||||||
|
MANUALLY_VERIFIED_FIELD_NUMBER: builtins.int
|
||||||
node_num: builtins.int
|
node_num: builtins.int
|
||||||
"""
|
"""
|
||||||
The node number of the contact
|
The node number of the contact
|
||||||
@@ -778,6 +780,10 @@ class SharedContact(google.protobuf.message.Message):
|
|||||||
"""
|
"""
|
||||||
Add this contact to the blocked / ignored list
|
Add this contact to the blocked / ignored list
|
||||||
"""
|
"""
|
||||||
|
manually_verified: builtins.bool
|
||||||
|
"""
|
||||||
|
Set the IS_KEY_MANUALLY_VERIFIED bit
|
||||||
|
"""
|
||||||
@property
|
@property
|
||||||
def user(self) -> meshtastic.protobuf.mesh_pb2.User:
|
def user(self) -> meshtastic.protobuf.mesh_pb2.User:
|
||||||
"""
|
"""
|
||||||
@@ -790,9 +796,10 @@ class SharedContact(google.protobuf.message.Message):
|
|||||||
node_num: builtins.int = ...,
|
node_num: builtins.int = ...,
|
||||||
user: meshtastic.protobuf.mesh_pb2.User | None = ...,
|
user: meshtastic.protobuf.mesh_pb2.User | None = ...,
|
||||||
should_ignore: builtins.bool = ...,
|
should_ignore: builtins.bool = ...,
|
||||||
|
manually_verified: builtins.bool = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def HasField(self, field_name: typing.Literal["user", b"user"]) -> builtins.bool: ...
|
def HasField(self, field_name: typing.Literal["user", b"user"]) -> builtins.bool: ...
|
||||||
def ClearField(self, field_name: typing.Literal["node_num", b"node_num", "should_ignore", b"should_ignore", "user", b"user"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["manually_verified", b"manually_verified", "node_num", b"node_num", "should_ignore", b"should_ignore", "user", b"user"]) -> None: ...
|
||||||
|
|
||||||
global___SharedContact = SharedContact
|
global___SharedContact = SharedContact
|
||||||
|
|
||||||
|
|||||||
4
meshtastic/protobuf/apponly_pb2.py
generated
4
meshtastic/protobuf/apponly_pb2.py
generated
@@ -15,14 +15,14 @@ from meshtastic.protobuf import channel_pb2 as meshtastic_dot_protobuf_dot_chann
|
|||||||
from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2
|
from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/apponly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\"\x81\x01\n\nChannelSet\x12\x36\n\x08settings\x18\x01 \x03(\x0b\x32$.meshtastic.protobuf.ChannelSettings\x12;\n\x0blora_config\x18\x02 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigBb\n\x13\x63om.geeksville.meshB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/apponly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\"\x81\x01\n\nChannelSet\x12\x36\n\x08settings\x18\x01 \x03(\x0b\x32$.meshtastic.protobuf.ChannelSettings\x12;\n\x0blora_config\x18\x02 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigBc\n\x14org.meshtastic.protoB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.apponly_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.apponly_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\rAppOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_CHANNELSET']._serialized_start=128
|
_globals['_CHANNELSET']._serialized_start=128
|
||||||
_globals['_CHANNELSET']._serialized_end=257
|
_globals['_CHANNELSET']._serialized_end=257
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
4
meshtastic/protobuf/atak_pb2.py
generated
4
meshtastic/protobuf/atak_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/atak.proto\x12\x13meshtastic.protobuf\"\xa5\x02\n\tTAKPacket\x12\x15\n\ris_compressed\x18\x01 \x01(\x08\x12-\n\x07\x63ontact\x18\x02 \x01(\x0b\x32\x1c.meshtastic.protobuf.Contact\x12)\n\x05group\x18\x03 \x01(\x0b\x32\x1a.meshtastic.protobuf.Group\x12+\n\x06status\x18\x04 \x01(\x0b\x32\x1b.meshtastic.protobuf.Status\x12\'\n\x03pli\x18\x05 \x01(\x0b\x32\x18.meshtastic.protobuf.PLIH\x00\x12,\n\x04\x63hat\x18\x06 \x01(\x0b\x32\x1c.meshtastic.protobuf.GeoChatH\x00\x12\x10\n\x06\x64\x65tail\x18\x07 \x01(\x0cH\x00\x42\x11\n\x0fpayload_variant\"\\\n\x07GeoChat\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x02to\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bto_callsign\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_toB\x0e\n\x0c_to_callsign\"_\n\x05Group\x12-\n\x04role\x18\x01 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRole\x12\'\n\x04team\x18\x02 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\"\x19\n\x06Status\x12\x0f\n\x07\x62\x61ttery\x18\x01 \x01(\r\"4\n\x07\x43ontact\x12\x10\n\x08\x63\x61llsign\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\t\"_\n\x03PLI\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x12\x0e\n\x06\x63ourse\x18\x05 \x01(\r*\xc0\x01\n\x04Team\x12\x14\n\x10Unspecifed_Color\x10\x00\x12\t\n\x05White\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\n\n\x06Orange\x10\x03\x12\x0b\n\x07Magenta\x10\x04\x12\x07\n\x03Red\x10\x05\x12\n\n\x06Maroon\x10\x06\x12\n\n\x06Purple\x10\x07\x12\r\n\tDark_Blue\x10\x08\x12\x08\n\x04\x42lue\x10\t\x12\x08\n\x04\x43yan\x10\n\x12\x08\n\x04Teal\x10\x0b\x12\t\n\x05Green\x10\x0c\x12\x0e\n\nDark_Green\x10\r\x12\t\n\x05\x42rown\x10\x0e*\x7f\n\nMemberRole\x12\x0e\n\nUnspecifed\x10\x00\x12\x0e\n\nTeamMember\x10\x01\x12\x0c\n\x08TeamLead\x10\x02\x12\x06\n\x02HQ\x10\x03\x12\n\n\x06Sniper\x10\x04\x12\t\n\x05Medic\x10\x05\x12\x13\n\x0f\x46orwardObserver\x10\x06\x12\x07\n\x03RTO\x10\x07\x12\x06\n\x02K9\x10\x08\x42_\n\x13\x63om.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/atak.proto\x12\x13meshtastic.protobuf\"\xa5\x02\n\tTAKPacket\x12\x15\n\ris_compressed\x18\x01 \x01(\x08\x12-\n\x07\x63ontact\x18\x02 \x01(\x0b\x32\x1c.meshtastic.protobuf.Contact\x12)\n\x05group\x18\x03 \x01(\x0b\x32\x1a.meshtastic.protobuf.Group\x12+\n\x06status\x18\x04 \x01(\x0b\x32\x1b.meshtastic.protobuf.Status\x12\'\n\x03pli\x18\x05 \x01(\x0b\x32\x18.meshtastic.protobuf.PLIH\x00\x12,\n\x04\x63hat\x18\x06 \x01(\x0b\x32\x1c.meshtastic.protobuf.GeoChatH\x00\x12\x10\n\x06\x64\x65tail\x18\x07 \x01(\x0cH\x00\x42\x11\n\x0fpayload_variant\"\\\n\x07GeoChat\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0f\n\x02to\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0bto_callsign\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x05\n\x03_toB\x0e\n\x0c_to_callsign\"_\n\x05Group\x12-\n\x04role\x18\x01 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRole\x12\'\n\x04team\x18\x02 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\"\x19\n\x06Status\x12\x0f\n\x07\x62\x61ttery\x18\x01 \x01(\r\"4\n\x07\x43ontact\x12\x10\n\x08\x63\x61llsign\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\t\"_\n\x03PLI\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\r\n\x05speed\x18\x04 \x01(\r\x12\x0e\n\x06\x63ourse\x18\x05 \x01(\r*\xc0\x01\n\x04Team\x12\x14\n\x10Unspecifed_Color\x10\x00\x12\t\n\x05White\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\n\n\x06Orange\x10\x03\x12\x0b\n\x07Magenta\x10\x04\x12\x07\n\x03Red\x10\x05\x12\n\n\x06Maroon\x10\x06\x12\n\n\x06Purple\x10\x07\x12\r\n\tDark_Blue\x10\x08\x12\x08\n\x04\x42lue\x10\t\x12\x08\n\x04\x43yan\x10\n\x12\x08\n\x04Teal\x10\x0b\x12\t\n\x05Green\x10\x0c\x12\x0e\n\nDark_Green\x10\r\x12\t\n\x05\x42rown\x10\x0e*\x7f\n\nMemberRole\x12\x0e\n\nUnspecifed\x10\x00\x12\x0e\n\nTeamMember\x10\x01\x12\x0c\n\x08TeamLead\x10\x02\x12\x06\n\x02HQ\x10\x03\x12\n\n\x06Sniper\x10\x04\x12\t\n\x05Medic\x10\x05\x12\x13\n\x0f\x46orwardObserver\x10\x06\x12\x07\n\x03RTO\x10\x07\x12\x06\n\x02K9\x10\x08\x42`\n\x14org.meshtastic.protoB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.atak_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.atak_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_TEAM']._serialized_start=721
|
_globals['_TEAM']._serialized_start=721
|
||||||
_globals['_TEAM']._serialized_end=913
|
_globals['_TEAM']._serialized_end=913
|
||||||
_globals['_MEMBERROLE']._serialized_start=915
|
_globals['_MEMBERROLE']._serialized_start=915
|
||||||
|
|||||||
4
meshtastic/protobuf/cannedmessages_pb2.py
generated
4
meshtastic/protobuf/cannedmessages_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(meshtastic/protobuf/cannedmessages.proto\x12\x13meshtastic.protobuf\"-\n\x19\x43\x61nnedMessageModuleConfig\x12\x10\n\x08messages\x18\x01 \x01(\tBn\n\x13\x63om.geeksville.meshB\x19\x43\x61nnedMessageConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(meshtastic/protobuf/cannedmessages.proto\x12\x13meshtastic.protobuf\"-\n\x19\x43\x61nnedMessageModuleConfig\x12\x10\n\x08messages\x18\x01 \x01(\tBo\n\x14org.meshtastic.protoB\x19\x43\x61nnedMessageConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.cannedmessages_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.cannedmessages_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\031CannedMessageConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\031CannedMessageConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_CANNEDMESSAGEMODULECONFIG']._serialized_start=65
|
_globals['_CANNEDMESSAGEMODULECONFIG']._serialized_start=65
|
||||||
_globals['_CANNEDMESSAGEMODULECONFIG']._serialized_end=110
|
_globals['_CANNEDMESSAGEMODULECONFIG']._serialized_end=110
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
14
meshtastic/protobuf/channel_pb2.py
generated
14
meshtastic/protobuf/channel_pb2.py
generated
@@ -13,22 +13,22 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/channel.proto\x12\x13meshtastic.protobuf\"\xc1\x01\n\x0f\x43hannelSettings\x12\x17\n\x0b\x63hannel_num\x18\x01 \x01(\rB\x02\x18\x01\x12\x0b\n\x03psk\x18\x02 \x01(\x0c\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\n\n\x02id\x18\x04 \x01(\x07\x12\x16\n\x0euplink_enabled\x18\x05 \x01(\x08\x12\x18\n\x10\x64ownlink_enabled\x18\x06 \x01(\x08\x12<\n\x0fmodule_settings\x18\x07 \x01(\x0b\x32#.meshtastic.protobuf.ModuleSettings\"E\n\x0eModuleSettings\x12\x1a\n\x12position_precision\x18\x01 \x01(\r\x12\x17\n\x0fis_client_muted\x18\x02 \x01(\x08\"\xb3\x01\n\x07\x43hannel\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x36\n\x08settings\x18\x02 \x01(\x0b\x32$.meshtastic.protobuf.ChannelSettings\x12/\n\x04role\x18\x03 \x01(\x0e\x32!.meshtastic.protobuf.Channel.Role\"0\n\x04Role\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07PRIMARY\x10\x01\x12\r\n\tSECONDARY\x10\x02\x42\x62\n\x13\x63om.geeksville.meshB\rChannelProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/channel.proto\x12\x13meshtastic.protobuf\"\xc1\x01\n\x0f\x43hannelSettings\x12\x17\n\x0b\x63hannel_num\x18\x01 \x01(\rB\x02\x18\x01\x12\x0b\n\x03psk\x18\x02 \x01(\x0c\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\n\n\x02id\x18\x04 \x01(\x07\x12\x16\n\x0euplink_enabled\x18\x05 \x01(\x08\x12\x18\n\x10\x64ownlink_enabled\x18\x06 \x01(\x08\x12<\n\x0fmodule_settings\x18\x07 \x01(\x0b\x32#.meshtastic.protobuf.ModuleSettings\">\n\x0eModuleSettings\x12\x1a\n\x12position_precision\x18\x01 \x01(\r\x12\x10\n\x08is_muted\x18\x02 \x01(\x08\"\xb3\x01\n\x07\x43hannel\x12\r\n\x05index\x18\x01 \x01(\x05\x12\x36\n\x08settings\x18\x02 \x01(\x0b\x32$.meshtastic.protobuf.ChannelSettings\x12/\n\x04role\x18\x03 \x01(\x0e\x32!.meshtastic.protobuf.Channel.Role\"0\n\x04Role\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07PRIMARY\x10\x01\x12\r\n\tSECONDARY\x10\x02\x42\x63\n\x14org.meshtastic.protoB\rChannelProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.channel_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.channel_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\rChannelProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\rChannelProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_CHANNELSETTINGS.fields_by_name['channel_num']._options = None
|
_CHANNELSETTINGS.fields_by_name['channel_num']._options = None
|
||||||
_CHANNELSETTINGS.fields_by_name['channel_num']._serialized_options = b'\030\001'
|
_CHANNELSETTINGS.fields_by_name['channel_num']._serialized_options = b'\030\001'
|
||||||
_globals['_CHANNELSETTINGS']._serialized_start=59
|
_globals['_CHANNELSETTINGS']._serialized_start=59
|
||||||
_globals['_CHANNELSETTINGS']._serialized_end=252
|
_globals['_CHANNELSETTINGS']._serialized_end=252
|
||||||
_globals['_MODULESETTINGS']._serialized_start=254
|
_globals['_MODULESETTINGS']._serialized_start=254
|
||||||
_globals['_MODULESETTINGS']._serialized_end=323
|
_globals['_MODULESETTINGS']._serialized_end=316
|
||||||
_globals['_CHANNEL']._serialized_start=326
|
_globals['_CHANNEL']._serialized_start=319
|
||||||
_globals['_CHANNEL']._serialized_end=505
|
_globals['_CHANNEL']._serialized_end=498
|
||||||
_globals['_CHANNEL_ROLE']._serialized_start=457
|
_globals['_CHANNEL_ROLE']._serialized_start=450
|
||||||
_globals['_CHANNEL_ROLE']._serialized_end=505
|
_globals['_CHANNEL_ROLE']._serialized_end=498
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
10
meshtastic/protobuf/channel_pb2.pyi
generated
10
meshtastic/protobuf/channel_pb2.pyi
generated
@@ -127,23 +127,23 @@ class ModuleSettings(google.protobuf.message.Message):
|
|||||||
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||||||
|
|
||||||
POSITION_PRECISION_FIELD_NUMBER: builtins.int
|
POSITION_PRECISION_FIELD_NUMBER: builtins.int
|
||||||
IS_CLIENT_MUTED_FIELD_NUMBER: builtins.int
|
IS_MUTED_FIELD_NUMBER: builtins.int
|
||||||
position_precision: builtins.int
|
position_precision: builtins.int
|
||||||
"""
|
"""
|
||||||
Bits of precision for the location sent in position packets.
|
Bits of precision for the location sent in position packets.
|
||||||
"""
|
"""
|
||||||
is_client_muted: builtins.bool
|
is_muted: builtins.bool
|
||||||
"""
|
"""
|
||||||
Controls whether or not the phone / clients should mute the current channel
|
Controls whether or not the client / device should mute the current channel
|
||||||
Useful for noisy public channels you don't necessarily want to disable
|
Useful for noisy public channels you don't necessarily want to disable
|
||||||
"""
|
"""
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
position_precision: builtins.int = ...,
|
position_precision: builtins.int = ...,
|
||||||
is_client_muted: builtins.bool = ...,
|
is_muted: builtins.bool = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def ClearField(self, field_name: typing.Literal["is_client_muted", b"is_client_muted", "position_precision", b"position_precision"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["is_muted", b"is_muted", "position_precision", b"position_precision"]) -> None: ...
|
||||||
|
|
||||||
global___ModuleSettings = ModuleSettings
|
global___ModuleSettings = ModuleSettings
|
||||||
|
|
||||||
|
|||||||
4
meshtastic/protobuf/clientonly_pb2.py
generated
4
meshtastic/protobuf/clientonly_pb2.py
generated
@@ -15,14 +15,14 @@ from meshtastic.protobuf import localonly_pb2 as meshtastic_dot_protobuf_dot_loc
|
|||||||
from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2
|
from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/clientonly.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\"\xc4\x03\n\rDeviceProfile\x12\x16\n\tlong_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nshort_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x63hannel_url\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x06\x63onfig\x18\x04 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfigH\x03\x88\x01\x01\x12\x42\n\rmodule_config\x18\x05 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfigH\x04\x88\x01\x01\x12:\n\x0e\x66ixed_position\x18\x06 \x01(\x0b\x32\x1d.meshtastic.protobuf.PositionH\x05\x88\x01\x01\x12\x15\n\x08ringtone\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1c\n\x0f\x63\x61nned_messages\x18\x08 \x01(\tH\x07\x88\x01\x01\x42\x0c\n\n_long_nameB\r\n\x0b_short_nameB\x0e\n\x0c_channel_urlB\t\n\x07_configB\x10\n\x0e_module_configB\x11\n\x0f_fixed_positionB\x0b\n\t_ringtoneB\x12\n\x10_canned_messagesBe\n\x13\x63om.geeksville.meshB\x10\x43lientOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/clientonly.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\"\xc4\x03\n\rDeviceProfile\x12\x16\n\tlong_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\nshort_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x63hannel_url\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x35\n\x06\x63onfig\x18\x04 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfigH\x03\x88\x01\x01\x12\x42\n\rmodule_config\x18\x05 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfigH\x04\x88\x01\x01\x12:\n\x0e\x66ixed_position\x18\x06 \x01(\x0b\x32\x1d.meshtastic.protobuf.PositionH\x05\x88\x01\x01\x12\x15\n\x08ringtone\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1c\n\x0f\x63\x61nned_messages\x18\x08 \x01(\tH\x07\x88\x01\x01\x42\x0c\n\n_long_nameB\r\n\x0b_short_nameB\x0e\n\x0c_channel_urlB\t\n\x07_configB\x10\n\x0e_module_configB\x11\n\x0f_fixed_positionB\x0b\n\t_ringtoneB\x12\n\x10_canned_messagesBf\n\x14org.meshtastic.protoB\x10\x43lientOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.clientonly_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.clientonly_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\020ClientOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\020ClientOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_DEVICEPROFILE']._serialized_start=131
|
_globals['_DEVICEPROFILE']._serialized_start=131
|
||||||
_globals['_DEVICEPROFILE']._serialized_end=583
|
_globals['_DEVICEPROFILE']._serialized_end=583
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
104
meshtastic/protobuf/config_pb2.py
generated
104
meshtastic/protobuf/config_pb2.py
generated
File diff suppressed because one or more lines are too long
89
meshtastic/protobuf/config_pb2.pyi
generated
89
meshtastic/protobuf/config_pb2.pyi
generated
@@ -64,6 +64,7 @@ class Config(google.protobuf.message.Message):
|
|||||||
Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
||||||
Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
||||||
or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
||||||
|
Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain.
|
||||||
"""
|
"""
|
||||||
TRACKER: Config.DeviceConfig._Role.ValueType # 5
|
TRACKER: Config.DeviceConfig._Role.ValueType # 5
|
||||||
"""
|
"""
|
||||||
@@ -155,6 +156,7 @@ class Config(google.protobuf.message.Message):
|
|||||||
Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
Description: Infrastructure node for extending network coverage by relaying messages with minimal overhead. Not visible in Nodes list.
|
||||||
Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
Technical Details: Mesh packets will simply be rebroadcasted over this node. Nodes configured with this role will not originate NodeInfo, Position, Telemetry
|
||||||
or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
or any other packet type. They will simply rebroadcast any mesh packets on the same frequency, channel num, spread factor, and coding rate.
|
||||||
|
Deprecated in v2.7.11 because it creates "holes" in the mesh rebroadcast chain.
|
||||||
"""
|
"""
|
||||||
TRACKER: Config.DeviceConfig.Role.ValueType # 5
|
TRACKER: Config.DeviceConfig.Role.ValueType # 5
|
||||||
"""
|
"""
|
||||||
@@ -938,80 +940,20 @@ class Config(google.protobuf.message.Message):
|
|||||||
|
|
||||||
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||||||
|
|
||||||
class _GpsCoordinateFormat:
|
class _DeprecatedGpsCoordinateFormat:
|
||||||
ValueType = typing.NewType("ValueType", builtins.int)
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||||||
V: typing_extensions.TypeAlias = ValueType
|
V: typing_extensions.TypeAlias = ValueType
|
||||||
|
|
||||||
class _GpsCoordinateFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._GpsCoordinateFormat.ValueType], builtins.type):
|
class _DeprecatedGpsCoordinateFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Config.DisplayConfig._DeprecatedGpsCoordinateFormat.ValueType], builtins.type):
|
||||||
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||||||
DEC: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 0
|
UNUSED: Config.DisplayConfig._DeprecatedGpsCoordinateFormat.ValueType # 0
|
||||||
|
|
||||||
|
class DeprecatedGpsCoordinateFormat(_DeprecatedGpsCoordinateFormat, metaclass=_DeprecatedGpsCoordinateFormatEnumTypeWrapper):
|
||||||
"""
|
"""
|
||||||
GPS coordinates are displayed in the normal decimal degrees format:
|
Deprecated in 2.7.4: Unused
|
||||||
DD.DDDDDD DDD.DDDDDD
|
|
||||||
"""
|
|
||||||
DMS: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 1
|
|
||||||
"""
|
|
||||||
GPS coordinates are displayed in the degrees minutes seconds format:
|
|
||||||
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
|
||||||
"""
|
|
||||||
UTM: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 2
|
|
||||||
"""
|
|
||||||
Universal Transverse Mercator format:
|
|
||||||
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
|
||||||
"""
|
|
||||||
MGRS: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 3
|
|
||||||
"""
|
|
||||||
Military Grid Reference System format:
|
|
||||||
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
|
||||||
E is easting, N is northing
|
|
||||||
"""
|
|
||||||
OLC: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 4
|
|
||||||
"""
|
|
||||||
Open Location Code (aka Plus Codes).
|
|
||||||
"""
|
|
||||||
OSGR: Config.DisplayConfig._GpsCoordinateFormat.ValueType # 5
|
|
||||||
"""
|
|
||||||
Ordnance Survey Grid Reference (the National Grid System of the UK).
|
|
||||||
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
|
||||||
E is the easting, N is the northing
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class GpsCoordinateFormat(_GpsCoordinateFormat, metaclass=_GpsCoordinateFormatEnumTypeWrapper):
|
UNUSED: Config.DisplayConfig.DeprecatedGpsCoordinateFormat.ValueType # 0
|
||||||
"""
|
|
||||||
How the GPS coordinates are displayed on the OLED screen.
|
|
||||||
"""
|
|
||||||
|
|
||||||
DEC: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 0
|
|
||||||
"""
|
|
||||||
GPS coordinates are displayed in the normal decimal degrees format:
|
|
||||||
DD.DDDDDD DDD.DDDDDD
|
|
||||||
"""
|
|
||||||
DMS: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 1
|
|
||||||
"""
|
|
||||||
GPS coordinates are displayed in the degrees minutes seconds format:
|
|
||||||
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
|
||||||
"""
|
|
||||||
UTM: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 2
|
|
||||||
"""
|
|
||||||
Universal Transverse Mercator format:
|
|
||||||
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
|
||||||
"""
|
|
||||||
MGRS: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 3
|
|
||||||
"""
|
|
||||||
Military Grid Reference System format:
|
|
||||||
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
|
||||||
E is easting, N is northing
|
|
||||||
"""
|
|
||||||
OLC: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 4
|
|
||||||
"""
|
|
||||||
Open Location Code (aka Plus Codes).
|
|
||||||
"""
|
|
||||||
OSGR: Config.DisplayConfig.GpsCoordinateFormat.ValueType # 5
|
|
||||||
"""
|
|
||||||
Ordnance Survey Grid Reference (the National Grid System of the UK).
|
|
||||||
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
|
||||||
E is the easting, N is the northing
|
|
||||||
"""
|
|
||||||
|
|
||||||
class _DisplayUnits:
|
class _DisplayUnits:
|
||||||
ValueType = typing.NewType("ValueType", builtins.int)
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||||||
@@ -1221,12 +1163,13 @@ class Config(google.protobuf.message.Message):
|
|||||||
WAKE_ON_TAP_OR_MOTION_FIELD_NUMBER: builtins.int
|
WAKE_ON_TAP_OR_MOTION_FIELD_NUMBER: builtins.int
|
||||||
COMPASS_ORIENTATION_FIELD_NUMBER: builtins.int
|
COMPASS_ORIENTATION_FIELD_NUMBER: builtins.int
|
||||||
USE_12H_CLOCK_FIELD_NUMBER: builtins.int
|
USE_12H_CLOCK_FIELD_NUMBER: builtins.int
|
||||||
|
USE_LONG_NODE_NAME_FIELD_NUMBER: builtins.int
|
||||||
screen_on_secs: builtins.int
|
screen_on_secs: builtins.int
|
||||||
"""
|
"""
|
||||||
Number of seconds the screen stays on after pressing the user button or receiving a message
|
Number of seconds the screen stays on after pressing the user button or receiving a message
|
||||||
0 for default of one minute MAXUINT for always on
|
0 for default of one minute MAXUINT for always on
|
||||||
"""
|
"""
|
||||||
gps_format: global___Config.DisplayConfig.GpsCoordinateFormat.ValueType
|
gps_format: global___Config.DisplayConfig.DeprecatedGpsCoordinateFormat.ValueType
|
||||||
"""
|
"""
|
||||||
Deprecated in 2.7.4: Unused
|
Deprecated in 2.7.4: Unused
|
||||||
How the GPS coordinates are formatted on the OLED screen.
|
How the GPS coordinates are formatted on the OLED screen.
|
||||||
@@ -1274,11 +1217,16 @@ class Config(google.protobuf.message.Message):
|
|||||||
If false (default), the device will display the time in 24-hour format on screen.
|
If false (default), the device will display the time in 24-hour format on screen.
|
||||||
If true, the device will display the time in 12-hour format on screen.
|
If true, the device will display the time in 12-hour format on screen.
|
||||||
"""
|
"""
|
||||||
|
use_long_node_name: builtins.bool
|
||||||
|
"""
|
||||||
|
If false (default), the device will use short names for various display screens.
|
||||||
|
If true, node names will show in long format
|
||||||
|
"""
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
screen_on_secs: builtins.int = ...,
|
screen_on_secs: builtins.int = ...,
|
||||||
gps_format: global___Config.DisplayConfig.GpsCoordinateFormat.ValueType = ...,
|
gps_format: global___Config.DisplayConfig.DeprecatedGpsCoordinateFormat.ValueType = ...,
|
||||||
auto_screen_carousel_secs: builtins.int = ...,
|
auto_screen_carousel_secs: builtins.int = ...,
|
||||||
compass_north_top: builtins.bool = ...,
|
compass_north_top: builtins.bool = ...,
|
||||||
flip_screen: builtins.bool = ...,
|
flip_screen: builtins.bool = ...,
|
||||||
@@ -1289,8 +1237,9 @@ class Config(google.protobuf.message.Message):
|
|||||||
wake_on_tap_or_motion: builtins.bool = ...,
|
wake_on_tap_or_motion: builtins.bool = ...,
|
||||||
compass_orientation: global___Config.DisplayConfig.CompassOrientation.ValueType = ...,
|
compass_orientation: global___Config.DisplayConfig.CompassOrientation.ValueType = ...,
|
||||||
use_12h_clock: builtins.bool = ...,
|
use_12h_clock: builtins.bool = ...,
|
||||||
|
use_long_node_name: builtins.bool = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def ClearField(self, field_name: typing.Literal["auto_screen_carousel_secs", b"auto_screen_carousel_secs", "compass_north_top", b"compass_north_top", "compass_orientation", b"compass_orientation", "displaymode", b"displaymode", "flip_screen", b"flip_screen", "gps_format", b"gps_format", "heading_bold", b"heading_bold", "oled", b"oled", "screen_on_secs", b"screen_on_secs", "units", b"units", "use_12h_clock", b"use_12h_clock", "wake_on_tap_or_motion", b"wake_on_tap_or_motion"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["auto_screen_carousel_secs", b"auto_screen_carousel_secs", "compass_north_top", b"compass_north_top", "compass_orientation", b"compass_orientation", "displaymode", b"displaymode", "flip_screen", b"flip_screen", "gps_format", b"gps_format", "heading_bold", b"heading_bold", "oled", b"oled", "screen_on_secs", b"screen_on_secs", "units", b"units", "use_12h_clock", b"use_12h_clock", "use_long_node_name", b"use_long_node_name", "wake_on_tap_or_motion", b"wake_on_tap_or_motion"]) -> None: ...
|
||||||
|
|
||||||
@typing.final
|
@typing.final
|
||||||
class LoRaConfig(google.protobuf.message.Message):
|
class LoRaConfig(google.protobuf.message.Message):
|
||||||
|
|||||||
4
meshtastic/protobuf/connection_status_pb2.py
generated
4
meshtastic/protobuf/connection_status_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+meshtastic/protobuf/connection_status.proto\x12\x13meshtastic.protobuf\"\xd5\x02\n\x16\x44\x65viceConnectionStatus\x12<\n\x04wifi\x18\x01 \x01(\x0b\x32).meshtastic.protobuf.WifiConnectionStatusH\x00\x88\x01\x01\x12\x44\n\x08\x65thernet\x18\x02 \x01(\x0b\x32-.meshtastic.protobuf.EthernetConnectionStatusH\x01\x88\x01\x01\x12\x46\n\tbluetooth\x18\x03 \x01(\x0b\x32..meshtastic.protobuf.BluetoothConnectionStatusH\x02\x88\x01\x01\x12@\n\x06serial\x18\x04 \x01(\x0b\x32+.meshtastic.protobuf.SerialConnectionStatusH\x03\x88\x01\x01\x42\x07\n\x05_wifiB\x0b\n\t_ethernetB\x0c\n\n_bluetoothB\t\n\x07_serial\"p\n\x14WifiConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x0c\n\x04rssi\x18\x03 \x01(\x05\"X\n\x18\x45thernetConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\"{\n\x17NetworkConnectionStatus\x12\x12\n\nip_address\x18\x01 \x01(\x07\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x12\x19\n\x11is_mqtt_connected\x18\x03 \x01(\x08\x12\x1b\n\x13is_syslog_connected\x18\x04 \x01(\x08\"L\n\x19\x42luetoothConnectionStatus\x12\x0b\n\x03pin\x18\x01 \x01(\r\x12\x0c\n\x04rssi\x18\x02 \x01(\x05\x12\x14\n\x0cis_connected\x18\x03 \x01(\x08\"<\n\x16SerialConnectionStatus\x12\x0c\n\x04\x62\x61ud\x18\x01 \x01(\r\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x42\x65\n\x13\x63om.geeksville.meshB\x10\x43onnStatusProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+meshtastic/protobuf/connection_status.proto\x12\x13meshtastic.protobuf\"\xd5\x02\n\x16\x44\x65viceConnectionStatus\x12<\n\x04wifi\x18\x01 \x01(\x0b\x32).meshtastic.protobuf.WifiConnectionStatusH\x00\x88\x01\x01\x12\x44\n\x08\x65thernet\x18\x02 \x01(\x0b\x32-.meshtastic.protobuf.EthernetConnectionStatusH\x01\x88\x01\x01\x12\x46\n\tbluetooth\x18\x03 \x01(\x0b\x32..meshtastic.protobuf.BluetoothConnectionStatusH\x02\x88\x01\x01\x12@\n\x06serial\x18\x04 \x01(\x0b\x32+.meshtastic.protobuf.SerialConnectionStatusH\x03\x88\x01\x01\x42\x07\n\x05_wifiB\x0b\n\t_ethernetB\x0c\n\n_bluetoothB\t\n\x07_serial\"p\n\x14WifiConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\x12\x0c\n\x04ssid\x18\x02 \x01(\t\x12\x0c\n\x04rssi\x18\x03 \x01(\x05\"X\n\x18\x45thernetConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\"{\n\x17NetworkConnectionStatus\x12\x12\n\nip_address\x18\x01 \x01(\x07\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x12\x19\n\x11is_mqtt_connected\x18\x03 \x01(\x08\x12\x1b\n\x13is_syslog_connected\x18\x04 \x01(\x08\"L\n\x19\x42luetoothConnectionStatus\x12\x0b\n\x03pin\x18\x01 \x01(\r\x12\x0c\n\x04rssi\x18\x02 \x01(\x05\x12\x14\n\x0cis_connected\x18\x03 \x01(\x08\"<\n\x16SerialConnectionStatus\x12\x0c\n\x04\x62\x61ud\x18\x01 \x01(\r\x12\x14\n\x0cis_connected\x18\x02 \x01(\x08\x42\x66\n\x14org.meshtastic.protoB\x10\x43onnStatusProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.connection_status_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.connection_status_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\020ConnStatusProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\020ConnStatusProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_DEVICECONNECTIONSTATUS']._serialized_start=69
|
_globals['_DEVICECONNECTIONSTATUS']._serialized_start=69
|
||||||
_globals['_DEVICECONNECTIONSTATUS']._serialized_end=410
|
_globals['_DEVICECONNECTIONSTATUS']._serialized_end=410
|
||||||
_globals['_WIFICONNECTIONSTATUS']._serialized_start=412
|
_globals['_WIFICONNECTIONSTATUS']._serialized_start=412
|
||||||
|
|||||||
36
meshtastic/protobuf/device_ui_pb2.py
generated
36
meshtastic/protobuf/device_ui_pb2.py
generated
@@ -13,28 +13,30 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/device_ui.proto\x12\x13meshtastic.protobuf\"\xda\x04\n\x0e\x44\x65viceUIConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x19\n\x11screen_brightness\x18\x02 \x01(\r\x12\x16\n\x0escreen_timeout\x18\x03 \x01(\r\x12\x13\n\x0bscreen_lock\x18\x04 \x01(\x08\x12\x15\n\rsettings_lock\x18\x05 \x01(\x08\x12\x10\n\x08pin_code\x18\x06 \x01(\r\x12)\n\x05theme\x18\x07 \x01(\x0e\x32\x1a.meshtastic.protobuf.Theme\x12\x15\n\ralert_enabled\x18\x08 \x01(\x08\x12\x16\n\x0e\x62\x61nner_enabled\x18\t \x01(\x08\x12\x14\n\x0cring_tone_id\x18\n \x01(\r\x12/\n\x08language\x18\x0b \x01(\x0e\x32\x1d.meshtastic.protobuf.Language\x12\x34\n\x0bnode_filter\x18\x0c \x01(\x0b\x32\x1f.meshtastic.protobuf.NodeFilter\x12:\n\x0enode_highlight\x18\r \x01(\x0b\x32\".meshtastic.protobuf.NodeHighlight\x12\x18\n\x10\x63\x61libration_data\x18\x0e \x01(\x0c\x12*\n\x08map_data\x18\x0f \x01(\x0b\x32\x18.meshtastic.protobuf.Map\x12\x36\n\x0c\x63ompass_mode\x18\x10 \x01(\x0e\x32 .meshtastic.protobuf.CompassMode\x12\x18\n\x10screen_rgb_color\x18\x11 \x01(\r\x12\x1b\n\x13is_clockface_analog\x18\x12 \x01(\x08\"\xa7\x01\n\nNodeFilter\x12\x16\n\x0eunknown_switch\x18\x01 \x01(\x08\x12\x16\n\x0eoffline_switch\x18\x02 \x01(\x08\x12\x19\n\x11public_key_switch\x18\x03 \x01(\x08\x12\x11\n\thops_away\x18\x04 \x01(\x05\x12\x17\n\x0fposition_switch\x18\x05 \x01(\x08\x12\x11\n\tnode_name\x18\x06 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\x05\"~\n\rNodeHighlight\x12\x13\n\x0b\x63hat_switch\x18\x01 \x01(\x08\x12\x17\n\x0fposition_switch\x18\x02 \x01(\x08\x12\x18\n\x10telemetry_switch\x18\x03 \x01(\x08\x12\x12\n\niaq_switch\x18\x04 \x01(\x08\x12\x11\n\tnode_name\x18\x05 \x01(\t\"=\n\x08GeoPoint\x12\x0c\n\x04zoom\x18\x01 \x01(\x05\x12\x10\n\x08latitude\x18\x02 \x01(\x05\x12\x11\n\tlongitude\x18\x03 \x01(\x05\"U\n\x03Map\x12+\n\x04home\x18\x01 \x01(\x0b\x32\x1d.meshtastic.protobuf.GeoPoint\x12\r\n\x05style\x18\x02 \x01(\t\x12\x12\n\nfollow_gps\x18\x03 \x01(\x08*>\n\x0b\x43ompassMode\x12\x0b\n\x07\x44YNAMIC\x10\x00\x12\x0e\n\nFIXED_RING\x10\x01\x12\x12\n\x0e\x46REEZE_HEADING\x10\x02*%\n\x05Theme\x12\x08\n\x04\x44\x41RK\x10\x00\x12\t\n\x05LIGHT\x10\x01\x12\x07\n\x03RED\x10\x02*\xb4\x02\n\x08Language\x12\x0b\n\x07\x45NGLISH\x10\x00\x12\n\n\x06\x46RENCH\x10\x01\x12\n\n\x06GERMAN\x10\x02\x12\x0b\n\x07ITALIAN\x10\x03\x12\x0e\n\nPORTUGUESE\x10\x04\x12\x0b\n\x07SPANISH\x10\x05\x12\x0b\n\x07SWEDISH\x10\x06\x12\x0b\n\x07\x46INNISH\x10\x07\x12\n\n\x06POLISH\x10\x08\x12\x0b\n\x07TURKISH\x10\t\x12\x0b\n\x07SERBIAN\x10\n\x12\x0b\n\x07RUSSIAN\x10\x0b\x12\t\n\x05\x44UTCH\x10\x0c\x12\t\n\x05GREEK\x10\r\x12\r\n\tNORWEGIAN\x10\x0e\x12\r\n\tSLOVENIAN\x10\x0f\x12\r\n\tUKRAINIAN\x10\x10\x12\r\n\tBULGARIAN\x10\x11\x12\t\n\x05\x43ZECH\x10\x12\x12\x16\n\x12SIMPLIFIED_CHINESE\x10\x1e\x12\x17\n\x13TRADITIONAL_CHINESE\x10\x1f\x42\x63\n\x13\x63om.geeksville.meshB\x0e\x44\x65viceUIProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/device_ui.proto\x12\x13meshtastic.protobuf\"\xff\x05\n\x0e\x44\x65viceUIConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x19\n\x11screen_brightness\x18\x02 \x01(\r\x12\x16\n\x0escreen_timeout\x18\x03 \x01(\r\x12\x13\n\x0bscreen_lock\x18\x04 \x01(\x08\x12\x15\n\rsettings_lock\x18\x05 \x01(\x08\x12\x10\n\x08pin_code\x18\x06 \x01(\r\x12)\n\x05theme\x18\x07 \x01(\x0e\x32\x1a.meshtastic.protobuf.Theme\x12\x15\n\ralert_enabled\x18\x08 \x01(\x08\x12\x16\n\x0e\x62\x61nner_enabled\x18\t \x01(\x08\x12\x14\n\x0cring_tone_id\x18\n \x01(\r\x12/\n\x08language\x18\x0b \x01(\x0e\x32\x1d.meshtastic.protobuf.Language\x12\x34\n\x0bnode_filter\x18\x0c \x01(\x0b\x32\x1f.meshtastic.protobuf.NodeFilter\x12:\n\x0enode_highlight\x18\r \x01(\x0b\x32\".meshtastic.protobuf.NodeHighlight\x12\x18\n\x10\x63\x61libration_data\x18\x0e \x01(\x0c\x12*\n\x08map_data\x18\x0f \x01(\x0b\x32\x18.meshtastic.protobuf.Map\x12\x36\n\x0c\x63ompass_mode\x18\x10 \x01(\x0e\x32 .meshtastic.protobuf.CompassMode\x12\x18\n\x10screen_rgb_color\x18\x11 \x01(\r\x12\x1b\n\x13is_clockface_analog\x18\x12 \x01(\x08\x12K\n\ngps_format\x18\x13 \x01(\x0e\x32\x37.meshtastic.protobuf.DeviceUIConfig.GpsCoordinateFormat\"V\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\x12\x07\n\x03MLS\x10\x06\"\xa7\x01\n\nNodeFilter\x12\x16\n\x0eunknown_switch\x18\x01 \x01(\x08\x12\x16\n\x0eoffline_switch\x18\x02 \x01(\x08\x12\x19\n\x11public_key_switch\x18\x03 \x01(\x08\x12\x11\n\thops_away\x18\x04 \x01(\x05\x12\x17\n\x0fposition_switch\x18\x05 \x01(\x08\x12\x11\n\tnode_name\x18\x06 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\x05\"~\n\rNodeHighlight\x12\x13\n\x0b\x63hat_switch\x18\x01 \x01(\x08\x12\x17\n\x0fposition_switch\x18\x02 \x01(\x08\x12\x18\n\x10telemetry_switch\x18\x03 \x01(\x08\x12\x12\n\niaq_switch\x18\x04 \x01(\x08\x12\x11\n\tnode_name\x18\x05 \x01(\t\"=\n\x08GeoPoint\x12\x0c\n\x04zoom\x18\x01 \x01(\x05\x12\x10\n\x08latitude\x18\x02 \x01(\x05\x12\x11\n\tlongitude\x18\x03 \x01(\x05\"U\n\x03Map\x12+\n\x04home\x18\x01 \x01(\x0b\x32\x1d.meshtastic.protobuf.GeoPoint\x12\r\n\x05style\x18\x02 \x01(\t\x12\x12\n\nfollow_gps\x18\x03 \x01(\x08*>\n\x0b\x43ompassMode\x12\x0b\n\x07\x44YNAMIC\x10\x00\x12\x0e\n\nFIXED_RING\x10\x01\x12\x12\n\x0e\x46REEZE_HEADING\x10\x02*%\n\x05Theme\x12\x08\n\x04\x44\x41RK\x10\x00\x12\t\n\x05LIGHT\x10\x01\x12\x07\n\x03RED\x10\x02*\xc0\x02\n\x08Language\x12\x0b\n\x07\x45NGLISH\x10\x00\x12\n\n\x06\x46RENCH\x10\x01\x12\n\n\x06GERMAN\x10\x02\x12\x0b\n\x07ITALIAN\x10\x03\x12\x0e\n\nPORTUGUESE\x10\x04\x12\x0b\n\x07SPANISH\x10\x05\x12\x0b\n\x07SWEDISH\x10\x06\x12\x0b\n\x07\x46INNISH\x10\x07\x12\n\n\x06POLISH\x10\x08\x12\x0b\n\x07TURKISH\x10\t\x12\x0b\n\x07SERBIAN\x10\n\x12\x0b\n\x07RUSSIAN\x10\x0b\x12\t\n\x05\x44UTCH\x10\x0c\x12\t\n\x05GREEK\x10\r\x12\r\n\tNORWEGIAN\x10\x0e\x12\r\n\tSLOVENIAN\x10\x0f\x12\r\n\tUKRAINIAN\x10\x10\x12\r\n\tBULGARIAN\x10\x11\x12\t\n\x05\x43ZECH\x10\x12\x12\n\n\x06\x44\x41NISH\x10\x13\x12\x16\n\x12SIMPLIFIED_CHINESE\x10\x1e\x12\x17\n\x13TRADITIONAL_CHINESE\x10\x1f\x42\x64\n\x14org.meshtastic.protoB\x0e\x44\x65viceUIProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.device_ui_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.device_ui_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016DeviceUIProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\016DeviceUIProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_COMPASSMODE']._serialized_start=1113
|
_globals['_COMPASSMODE']._serialized_start=1278
|
||||||
_globals['_COMPASSMODE']._serialized_end=1175
|
_globals['_COMPASSMODE']._serialized_end=1340
|
||||||
_globals['_THEME']._serialized_start=1177
|
_globals['_THEME']._serialized_start=1342
|
||||||
_globals['_THEME']._serialized_end=1214
|
_globals['_THEME']._serialized_end=1379
|
||||||
_globals['_LANGUAGE']._serialized_start=1217
|
_globals['_LANGUAGE']._serialized_start=1382
|
||||||
_globals['_LANGUAGE']._serialized_end=1525
|
_globals['_LANGUAGE']._serialized_end=1702
|
||||||
_globals['_DEVICEUICONFIG']._serialized_start=61
|
_globals['_DEVICEUICONFIG']._serialized_start=61
|
||||||
_globals['_DEVICEUICONFIG']._serialized_end=663
|
_globals['_DEVICEUICONFIG']._serialized_end=828
|
||||||
_globals['_NODEFILTER']._serialized_start=666
|
_globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_start=742
|
||||||
_globals['_NODEFILTER']._serialized_end=833
|
_globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_end=828
|
||||||
_globals['_NODEHIGHLIGHT']._serialized_start=835
|
_globals['_NODEFILTER']._serialized_start=831
|
||||||
_globals['_NODEHIGHLIGHT']._serialized_end=961
|
_globals['_NODEFILTER']._serialized_end=998
|
||||||
_globals['_GEOPOINT']._serialized_start=963
|
_globals['_NODEHIGHLIGHT']._serialized_start=1000
|
||||||
_globals['_GEOPOINT']._serialized_end=1024
|
_globals['_NODEHIGHLIGHT']._serialized_end=1126
|
||||||
_globals['_MAP']._serialized_start=1026
|
_globals['_GEOPOINT']._serialized_start=1128
|
||||||
_globals['_MAP']._serialized_end=1111
|
_globals['_GEOPOINT']._serialized_end=1189
|
||||||
|
_globals['_MAP']._serialized_start=1191
|
||||||
|
_globals['_MAP']._serialized_end=1276
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
101
meshtastic/protobuf/device_ui_pb2.pyi
generated
101
meshtastic/protobuf/device_ui_pb2.pyi
generated
@@ -169,6 +169,10 @@ class _LanguageEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumT
|
|||||||
"""
|
"""
|
||||||
Czech
|
Czech
|
||||||
"""
|
"""
|
||||||
|
DANISH: _Language.ValueType # 19
|
||||||
|
"""
|
||||||
|
Danish
|
||||||
|
"""
|
||||||
SIMPLIFIED_CHINESE: _Language.ValueType # 30
|
SIMPLIFIED_CHINESE: _Language.ValueType # 30
|
||||||
"""
|
"""
|
||||||
Simplified Chinese (experimental)
|
Simplified Chinese (experimental)
|
||||||
@@ -259,6 +263,10 @@ CZECH: Language.ValueType # 18
|
|||||||
"""
|
"""
|
||||||
Czech
|
Czech
|
||||||
"""
|
"""
|
||||||
|
DANISH: Language.ValueType # 19
|
||||||
|
"""
|
||||||
|
Danish
|
||||||
|
"""
|
||||||
SIMPLIFIED_CHINESE: Language.ValueType # 30
|
SIMPLIFIED_CHINESE: Language.ValueType # 30
|
||||||
"""
|
"""
|
||||||
Simplified Chinese (experimental)
|
Simplified Chinese (experimental)
|
||||||
@@ -277,6 +285,91 @@ class DeviceUIConfig(google.protobuf.message.Message):
|
|||||||
|
|
||||||
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
||||||
|
|
||||||
|
class _GpsCoordinateFormat:
|
||||||
|
ValueType = typing.NewType("ValueType", builtins.int)
|
||||||
|
V: typing_extensions.TypeAlias = ValueType
|
||||||
|
|
||||||
|
class _GpsCoordinateFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DeviceUIConfig._GpsCoordinateFormat.ValueType], builtins.type):
|
||||||
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
||||||
|
DEC: DeviceUIConfig._GpsCoordinateFormat.ValueType # 0
|
||||||
|
"""
|
||||||
|
GPS coordinates are displayed in the normal decimal degrees format:
|
||||||
|
DD.DDDDDD DDD.DDDDDD
|
||||||
|
"""
|
||||||
|
DMS: DeviceUIConfig._GpsCoordinateFormat.ValueType # 1
|
||||||
|
"""
|
||||||
|
GPS coordinates are displayed in the degrees minutes seconds format:
|
||||||
|
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
||||||
|
"""
|
||||||
|
UTM: DeviceUIConfig._GpsCoordinateFormat.ValueType # 2
|
||||||
|
"""
|
||||||
|
Universal Transverse Mercator format:
|
||||||
|
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
||||||
|
"""
|
||||||
|
MGRS: DeviceUIConfig._GpsCoordinateFormat.ValueType # 3
|
||||||
|
"""
|
||||||
|
Military Grid Reference System format:
|
||||||
|
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
||||||
|
E is easting, N is northing
|
||||||
|
"""
|
||||||
|
OLC: DeviceUIConfig._GpsCoordinateFormat.ValueType # 4
|
||||||
|
"""
|
||||||
|
Open Location Code (aka Plus Codes).
|
||||||
|
"""
|
||||||
|
OSGR: DeviceUIConfig._GpsCoordinateFormat.ValueType # 5
|
||||||
|
"""
|
||||||
|
Ordnance Survey Grid Reference (the National Grid System of the UK).
|
||||||
|
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
||||||
|
E is the easting, N is the northing
|
||||||
|
"""
|
||||||
|
MLS: DeviceUIConfig._GpsCoordinateFormat.ValueType # 6
|
||||||
|
"""
|
||||||
|
Maidenhead Locator System
|
||||||
|
Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System
|
||||||
|
"""
|
||||||
|
|
||||||
|
class GpsCoordinateFormat(_GpsCoordinateFormat, metaclass=_GpsCoordinateFormatEnumTypeWrapper):
|
||||||
|
"""
|
||||||
|
How the GPS coordinates are displayed on the OLED screen.
|
||||||
|
"""
|
||||||
|
|
||||||
|
DEC: DeviceUIConfig.GpsCoordinateFormat.ValueType # 0
|
||||||
|
"""
|
||||||
|
GPS coordinates are displayed in the normal decimal degrees format:
|
||||||
|
DD.DDDDDD DDD.DDDDDD
|
||||||
|
"""
|
||||||
|
DMS: DeviceUIConfig.GpsCoordinateFormat.ValueType # 1
|
||||||
|
"""
|
||||||
|
GPS coordinates are displayed in the degrees minutes seconds format:
|
||||||
|
DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
|
||||||
|
"""
|
||||||
|
UTM: DeviceUIConfig.GpsCoordinateFormat.ValueType # 2
|
||||||
|
"""
|
||||||
|
Universal Transverse Mercator format:
|
||||||
|
ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
|
||||||
|
"""
|
||||||
|
MGRS: DeviceUIConfig.GpsCoordinateFormat.ValueType # 3
|
||||||
|
"""
|
||||||
|
Military Grid Reference System format:
|
||||||
|
ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
|
||||||
|
E is easting, N is northing
|
||||||
|
"""
|
||||||
|
OLC: DeviceUIConfig.GpsCoordinateFormat.ValueType # 4
|
||||||
|
"""
|
||||||
|
Open Location Code (aka Plus Codes).
|
||||||
|
"""
|
||||||
|
OSGR: DeviceUIConfig.GpsCoordinateFormat.ValueType # 5
|
||||||
|
"""
|
||||||
|
Ordnance Survey Grid Reference (the National Grid System of the UK).
|
||||||
|
Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
|
||||||
|
E is the easting, N is the northing
|
||||||
|
"""
|
||||||
|
MLS: DeviceUIConfig.GpsCoordinateFormat.ValueType # 6
|
||||||
|
"""
|
||||||
|
Maidenhead Locator System
|
||||||
|
Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System
|
||||||
|
"""
|
||||||
|
|
||||||
VERSION_FIELD_NUMBER: builtins.int
|
VERSION_FIELD_NUMBER: builtins.int
|
||||||
SCREEN_BRIGHTNESS_FIELD_NUMBER: builtins.int
|
SCREEN_BRIGHTNESS_FIELD_NUMBER: builtins.int
|
||||||
SCREEN_TIMEOUT_FIELD_NUMBER: builtins.int
|
SCREEN_TIMEOUT_FIELD_NUMBER: builtins.int
|
||||||
@@ -295,6 +388,7 @@ class DeviceUIConfig(google.protobuf.message.Message):
|
|||||||
COMPASS_MODE_FIELD_NUMBER: builtins.int
|
COMPASS_MODE_FIELD_NUMBER: builtins.int
|
||||||
SCREEN_RGB_COLOR_FIELD_NUMBER: builtins.int
|
SCREEN_RGB_COLOR_FIELD_NUMBER: builtins.int
|
||||||
IS_CLOCKFACE_ANALOG_FIELD_NUMBER: builtins.int
|
IS_CLOCKFACE_ANALOG_FIELD_NUMBER: builtins.int
|
||||||
|
GPS_FORMAT_FIELD_NUMBER: builtins.int
|
||||||
version: builtins.int
|
version: builtins.int
|
||||||
"""
|
"""
|
||||||
A version integer used to invalidate saved files when we make incompatible changes.
|
A version integer used to invalidate saved files when we make incompatible changes.
|
||||||
@@ -345,6 +439,10 @@ class DeviceUIConfig(google.protobuf.message.Message):
|
|||||||
Clockface analog style
|
Clockface analog style
|
||||||
true for analog clockface, false for digital clockface
|
true for analog clockface, false for digital clockface
|
||||||
"""
|
"""
|
||||||
|
gps_format: global___DeviceUIConfig.GpsCoordinateFormat.ValueType
|
||||||
|
"""
|
||||||
|
How the GPS coordinates are formatted on the OLED screen.
|
||||||
|
"""
|
||||||
@property
|
@property
|
||||||
def node_filter(self) -> global___NodeFilter:
|
def node_filter(self) -> global___NodeFilter:
|
||||||
"""
|
"""
|
||||||
@@ -384,9 +482,10 @@ class DeviceUIConfig(google.protobuf.message.Message):
|
|||||||
compass_mode: global___CompassMode.ValueType = ...,
|
compass_mode: global___CompassMode.ValueType = ...,
|
||||||
screen_rgb_color: builtins.int = ...,
|
screen_rgb_color: builtins.int = ...,
|
||||||
is_clockface_analog: builtins.bool = ...,
|
is_clockface_analog: builtins.bool = ...,
|
||||||
|
gps_format: global___DeviceUIConfig.GpsCoordinateFormat.ValueType = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def HasField(self, field_name: typing.Literal["map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight"]) -> builtins.bool: ...
|
def HasField(self, field_name: typing.Literal["map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight"]) -> builtins.bool: ...
|
||||||
def ClearField(self, field_name: typing.Literal["alert_enabled", b"alert_enabled", "banner_enabled", b"banner_enabled", "calibration_data", b"calibration_data", "compass_mode", b"compass_mode", "is_clockface_analog", b"is_clockface_analog", "language", b"language", "map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight", "pin_code", b"pin_code", "ring_tone_id", b"ring_tone_id", "screen_brightness", b"screen_brightness", "screen_lock", b"screen_lock", "screen_rgb_color", b"screen_rgb_color", "screen_timeout", b"screen_timeout", "settings_lock", b"settings_lock", "theme", b"theme", "version", b"version"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["alert_enabled", b"alert_enabled", "banner_enabled", b"banner_enabled", "calibration_data", b"calibration_data", "compass_mode", b"compass_mode", "gps_format", b"gps_format", "is_clockface_analog", b"is_clockface_analog", "language", b"language", "map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight", "pin_code", b"pin_code", "ring_tone_id", b"ring_tone_id", "screen_brightness", b"screen_brightness", "screen_lock", b"screen_lock", "screen_rgb_color", b"screen_rgb_color", "screen_timeout", b"screen_timeout", "settings_lock", b"settings_lock", "theme", b"theme", "version", b"version"]) -> None: ...
|
||||||
|
|
||||||
global___DeviceUIConfig = DeviceUIConfig
|
global___DeviceUIConfig = DeviceUIConfig
|
||||||
|
|
||||||
|
|||||||
4
meshtastic/protobuf/deviceonly_pb2.py
generated
4
meshtastic/protobuf/deviceonly_pb2.py
generated
@@ -19,14 +19,14 @@ from meshtastic.protobuf import telemetry_pb2 as meshtastic_dot_protobuf_dot_tel
|
|||||||
from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2
|
from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/deviceonly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/nanopb.proto\"\x99\x01\n\x0cPositionLite\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12@\n\x0flocation_source\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\"\x94\x02\n\x08UserLite\x12\x13\n\x07macaddr\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x34\n\x08hw_model\x18\x04 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x05 \x01(\x08\x12;\n\x04role\x18\x06 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x12\n\npublic_key\x18\x07 \x01(\x0c\x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"\xf0\x02\n\x0cNodeInfoLite\x12\x0b\n\x03num\x18\x01 \x01(\r\x12+\n\x04user\x18\x02 \x01(\x0b\x32\x1d.meshtastic.protobuf.UserLite\x12\x33\n\x08position\x18\x03 \x01(\x0b\x32!.meshtastic.protobuf.PositionLite\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x16\n\thops_away\x18\t \x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12\x10\n\x08next_hop\x18\x0c \x01(\r\x12\x10\n\x08\x62itfield\x18\r \x01(\rB\x0c\n\n_hops_away\"\xa1\x03\n\x0b\x44\x65viceState\x12\x30\n\x07my_node\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfo\x12(\n\x05owner\x18\x03 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x36\n\rreceive_queue\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x0f\n\x07version\x18\x08 \x01(\r\x12\x38\n\x0frx_text_message\x18\x07 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x13\n\x07no_save\x18\t \x01(\x08\x42\x02\x18\x01\x12\x19\n\rdid_gps_reset\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x34\n\x0brx_waypoint\x18\x0c \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12M\n\x19node_remote_hardware_pins\x18\r \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePin\"}\n\x0cNodeDatabase\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\\\n\x05nodes\x18\x02 \x03(\x0b\x32!.meshtastic.protobuf.NodeInfoLiteB*\x92?\'\x92\x01$std::vector<meshtastic_NodeInfoLite>\"N\n\x0b\x43hannelFile\x12.\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1c.meshtastic.protobuf.Channel\x12\x0f\n\x07version\x18\x02 \x01(\r\"\x86\x02\n\x11\x42\x61\x63kupPreferences\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x11\n\ttimestamp\x18\x02 \x01(\x07\x12\x30\n\x06\x63onfig\x18\x03 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfig\x12=\n\rmodule_config\x18\x04 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfig\x12\x32\n\x08\x63hannels\x18\x05 \x01(\x0b\x32 .meshtastic.protobuf.ChannelFile\x12(\n\x05owner\x18\x06 \x01(\x0b\x32\x19.meshtastic.protobuf.UserBm\n\x13\x63om.geeksville.meshB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x92?\x0b\xc2\x01\x08<vector>b\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/deviceonly.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a#meshtastic/protobuf/localonly.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/nanopb.proto\"\x99\x01\n\x0cPositionLite\x12\x12\n\nlatitude_i\x18\x01 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x02 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x05\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12@\n\x0flocation_source\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\"\x94\x02\n\x08UserLite\x12\x13\n\x07macaddr\x18\x01 \x01(\x0c\x42\x02\x18\x01\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x34\n\x08hw_model\x18\x04 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x05 \x01(\x08\x12;\n\x04role\x18\x06 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x12\n\npublic_key\x18\x07 \x01(\x0c\x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"\xf0\x02\n\x0cNodeInfoLite\x12\x0b\n\x03num\x18\x01 \x01(\r\x12+\n\x04user\x18\x02 \x01(\x0b\x32\x1d.meshtastic.protobuf.UserLite\x12\x33\n\x08position\x18\x03 \x01(\x0b\x32!.meshtastic.protobuf.PositionLite\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x16\n\thops_away\x18\t \x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12\x10\n\x08next_hop\x18\x0c \x01(\r\x12\x10\n\x08\x62itfield\x18\r \x01(\rB\x0c\n\n_hops_away\"\xa1\x03\n\x0b\x44\x65viceState\x12\x30\n\x07my_node\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfo\x12(\n\x05owner\x18\x03 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x36\n\rreceive_queue\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x0f\n\x07version\x18\x08 \x01(\r\x12\x38\n\x0frx_text_message\x18\x07 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x13\n\x07no_save\x18\t \x01(\x08\x42\x02\x18\x01\x12\x19\n\rdid_gps_reset\x18\x0b \x01(\x08\x42\x02\x18\x01\x12\x34\n\x0brx_waypoint\x18\x0c \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12M\n\x19node_remote_hardware_pins\x18\r \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePin\"}\n\x0cNodeDatabase\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\\\n\x05nodes\x18\x02 \x03(\x0b\x32!.meshtastic.protobuf.NodeInfoLiteB*\x92?\'\x92\x01$std::vector<meshtastic_NodeInfoLite>\"N\n\x0b\x43hannelFile\x12.\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1c.meshtastic.protobuf.Channel\x12\x0f\n\x07version\x18\x02 \x01(\r\"\x86\x02\n\x11\x42\x61\x63kupPreferences\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x11\n\ttimestamp\x18\x02 \x01(\x07\x12\x30\n\x06\x63onfig\x18\x03 \x01(\x0b\x32 .meshtastic.protobuf.LocalConfig\x12=\n\rmodule_config\x18\x04 \x01(\x0b\x32&.meshtastic.protobuf.LocalModuleConfig\x12\x32\n\x08\x63hannels\x18\x05 \x01(\x0b\x32 .meshtastic.protobuf.ChannelFile\x12(\n\x05owner\x18\x06 \x01(\x0b\x32\x19.meshtastic.protobuf.UserBn\n\x14org.meshtastic.protoB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x92?\x0b\xc2\x01\x08<vector>b\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.deviceonly_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.deviceonly_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000\222?\013\302\001\010<vector>'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\nDeviceOnlyZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000\222?\013\302\001\010<vector>'
|
||||||
_USERLITE.fields_by_name['macaddr']._options = None
|
_USERLITE.fields_by_name['macaddr']._options = None
|
||||||
_USERLITE.fields_by_name['macaddr']._serialized_options = b'\030\001'
|
_USERLITE.fields_by_name['macaddr']._serialized_options = b'\030\001'
|
||||||
_DEVICESTATE.fields_by_name['no_save']._options = None
|
_DEVICESTATE.fields_by_name['no_save']._options = None
|
||||||
|
|||||||
4
meshtastic/protobuf/interdevice_pb2.py
generated
4
meshtastic/protobuf/interdevice_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%meshtastic/protobuf/interdevice.proto\x12\x13meshtastic.protobuf\"s\n\nSensorData\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .meshtastic.protobuf.MessageType\x12\x15\n\x0b\x66loat_value\x18\x02 \x01(\x02H\x00\x12\x16\n\x0cuint32_value\x18\x03 \x01(\rH\x00\x42\x06\n\x04\x64\x61ta\"_\n\x12InterdeviceMessage\x12\x0e\n\x04nmea\x18\x01 \x01(\tH\x00\x12\x31\n\x06sensor\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.SensorDataH\x00\x42\x06\n\x04\x64\x61ta*\xd5\x01\n\x0bMessageType\x12\x07\n\x03\x41\x43K\x10\x00\x12\x15\n\x10\x43OLLECT_INTERVAL\x10\xa0\x01\x12\x0c\n\x07\x42\x45\x45P_ON\x10\xa1\x01\x12\r\n\x08\x42\x45\x45P_OFF\x10\xa2\x01\x12\r\n\x08SHUTDOWN\x10\xa3\x01\x12\r\n\x08POWER_ON\x10\xa4\x01\x12\x0f\n\nSCD41_TEMP\x10\xb0\x01\x12\x13\n\x0eSCD41_HUMIDITY\x10\xb1\x01\x12\x0e\n\tSCD41_CO2\x10\xb2\x01\x12\x0f\n\nAHT20_TEMP\x10\xb3\x01\x12\x13\n\x0e\x41HT20_HUMIDITY\x10\xb4\x01\x12\x0f\n\nTVOC_INDEX\x10\xb5\x01\x42\x66\n\x13\x63om.geeksville.meshB\x11InterdeviceProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%meshtastic/protobuf/interdevice.proto\x12\x13meshtastic.protobuf\"s\n\nSensorData\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .meshtastic.protobuf.MessageType\x12\x15\n\x0b\x66loat_value\x18\x02 \x01(\x02H\x00\x12\x16\n\x0cuint32_value\x18\x03 \x01(\rH\x00\x42\x06\n\x04\x64\x61ta\"_\n\x12InterdeviceMessage\x12\x0e\n\x04nmea\x18\x01 \x01(\tH\x00\x12\x31\n\x06sensor\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.SensorDataH\x00\x42\x06\n\x04\x64\x61ta*\xd5\x01\n\x0bMessageType\x12\x07\n\x03\x41\x43K\x10\x00\x12\x15\n\x10\x43OLLECT_INTERVAL\x10\xa0\x01\x12\x0c\n\x07\x42\x45\x45P_ON\x10\xa1\x01\x12\r\n\x08\x42\x45\x45P_OFF\x10\xa2\x01\x12\r\n\x08SHUTDOWN\x10\xa3\x01\x12\r\n\x08POWER_ON\x10\xa4\x01\x12\x0f\n\nSCD41_TEMP\x10\xb0\x01\x12\x13\n\x0eSCD41_HUMIDITY\x10\xb1\x01\x12\x0e\n\tSCD41_CO2\x10\xb2\x01\x12\x0f\n\nAHT20_TEMP\x10\xb3\x01\x12\x13\n\x0e\x41HT20_HUMIDITY\x10\xb4\x01\x12\x0f\n\nTVOC_INDEX\x10\xb5\x01\x42g\n\x14org.meshtastic.protoB\x11InterdeviceProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.interdevice_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.interdevice_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\021InterdeviceProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\021InterdeviceProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_MESSAGETYPE']._serialized_start=277
|
_globals['_MESSAGETYPE']._serialized_start=277
|
||||||
_globals['_MESSAGETYPE']._serialized_end=490
|
_globals['_MESSAGETYPE']._serialized_end=490
|
||||||
_globals['_SENSORDATA']._serialized_start=62
|
_globals['_SENSORDATA']._serialized_start=62
|
||||||
|
|||||||
4
meshtastic/protobuf/localonly_pb2.py
generated
4
meshtastic/protobuf/localonly_pb2.py
generated
@@ -15,14 +15,14 @@ from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config
|
|||||||
from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2
|
from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/localonly.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xfa\x03\n\x0bLocalConfig\x12\x38\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfig\x12<\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfig\x12\x36\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfig\x12:\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfig\x12:\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfig\x12\x34\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfig\x12>\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\x12<\n\x08security\x18\t \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfig\"\xf0\x07\n\x11LocalModuleConfig\x12:\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfig\x12>\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfig\x12[\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfig\x12K\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfig\x12\x45\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfig\x12\x44\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfig\x12M\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfig\x12<\n\x05\x61udio\x18\t \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfig\x12O\n\x0fremote_hardware\x18\n \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfig\x12K\n\rneighbor_info\x18\x0b \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfig\x12Q\n\x10\x61mbient_lighting\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfig\x12Q\n\x10\x64\x65tection_sensor\x18\r \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig\x12\x46\n\npaxcounter\x18\x0e \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfig\x12\x0f\n\x07version\x18\x08 \x01(\rBd\n\x13\x63om.geeksville.meshB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/localonly.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\'meshtastic/protobuf/module_config.proto\"\xfa\x03\n\x0bLocalConfig\x12\x38\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfig\x12<\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfig\x12\x36\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfig\x12:\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfig\x12:\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfig\x12\x34\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfig\x12>\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfig\x12\x0f\n\x07version\x18\x08 \x01(\r\x12<\n\x08security\x18\t \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfig\"\xf0\x07\n\x11LocalModuleConfig\x12:\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfig\x12>\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfig\x12[\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfig\x12K\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfig\x12\x45\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfig\x12\x44\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfig\x12M\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfig\x12<\n\x05\x61udio\x18\t \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfig\x12O\n\x0fremote_hardware\x18\n \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfig\x12K\n\rneighbor_info\x18\x0b \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfig\x12Q\n\x10\x61mbient_lighting\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfig\x12Q\n\x10\x64\x65tection_sensor\x18\r \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig\x12\x46\n\npaxcounter\x18\x0e \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfig\x12\x0f\n\x07version\x18\x08 \x01(\rBe\n\x14org.meshtastic.protoB\x0fLocalOnlyProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.localonly_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.localonly_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\017LocalOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\017LocalOnlyProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_LOCALCONFIG']._serialized_start=136
|
_globals['_LOCALCONFIG']._serialized_start=136
|
||||||
_globals['_LOCALCONFIG']._serialized_end=642
|
_globals['_LOCALCONFIG']._serialized_end=642
|
||||||
_globals['_LOCALMODULECONFIG']._serialized_start=645
|
_globals['_LOCALMODULECONFIG']._serialized_start=645
|
||||||
|
|||||||
22
meshtastic/protobuf/mesh_pb2.py
generated
22
meshtastic/protobuf/mesh_pb2.py
generated
File diff suppressed because one or more lines are too long
86
meshtastic/protobuf/mesh_pb2.pyi
generated
86
meshtastic/protobuf/mesh_pb2.pyi
generated
@@ -453,9 +453,9 @@ class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._
|
|||||||
"""
|
"""
|
||||||
Seeed Tracker L1 EINK driver
|
Seeed Tracker L1 EINK driver
|
||||||
"""
|
"""
|
||||||
QWANTZ_TINY_ARMS: _HardwareModel.ValueType # 101
|
MUZI_R1_NEO: _HardwareModel.ValueType # 101
|
||||||
"""
|
"""
|
||||||
Reserved ID for future and past use
|
Muzi Works R1 Neo
|
||||||
"""
|
"""
|
||||||
T_DECK_PRO: _HardwareModel.ValueType # 102
|
T_DECK_PRO: _HardwareModel.ValueType # 102
|
||||||
"""
|
"""
|
||||||
@@ -465,9 +465,10 @@ class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._
|
|||||||
"""
|
"""
|
||||||
Lilygo TLora Pager
|
Lilygo TLora Pager
|
||||||
"""
|
"""
|
||||||
GAT562_MESH_TRIAL_TRACKER: _HardwareModel.ValueType # 104
|
M5STACK_RESERVED: _HardwareModel.ValueType # 104
|
||||||
"""
|
"""
|
||||||
GAT562 Mesh Trial Tracker
|
M5Stack Reserved
|
||||||
|
0x68
|
||||||
"""
|
"""
|
||||||
WISMESH_TAG: _HardwareModel.ValueType # 105
|
WISMESH_TAG: _HardwareModel.ValueType # 105
|
||||||
"""
|
"""
|
||||||
@@ -494,6 +495,38 @@ class _HardwareModelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._
|
|||||||
"""
|
"""
|
||||||
New Heltec LoRA32 with ESP32-S3 CPU
|
New Heltec LoRA32 with ESP32-S3 CPU
|
||||||
"""
|
"""
|
||||||
|
M5STACK_C6L: _HardwareModel.ValueType # 111
|
||||||
|
"""
|
||||||
|
M5Stack C6L
|
||||||
|
"""
|
||||||
|
M5STACK_CARDPUTER_ADV: _HardwareModel.ValueType # 112
|
||||||
|
"""
|
||||||
|
M5Stack Cardputer Adv
|
||||||
|
"""
|
||||||
|
HELTEC_WIRELESS_TRACKER_V2: _HardwareModel.ValueType # 113
|
||||||
|
"""
|
||||||
|
ESP32S3 main controller with GPS and TFT screen.
|
||||||
|
"""
|
||||||
|
T_WATCH_ULTRA: _HardwareModel.ValueType # 114
|
||||||
|
"""
|
||||||
|
LilyGo T-Watch Ultra
|
||||||
|
"""
|
||||||
|
THINKNODE_M3: _HardwareModel.ValueType # 115
|
||||||
|
"""
|
||||||
|
Elecrow ThinkNode M3
|
||||||
|
"""
|
||||||
|
WISMESH_TAP_V2: _HardwareModel.ValueType # 116
|
||||||
|
"""
|
||||||
|
RAK WISMESH_TAP_V2 with ESP32-S3 CPU
|
||||||
|
"""
|
||||||
|
RAK3401: _HardwareModel.ValueType # 117
|
||||||
|
"""
|
||||||
|
RAK3401
|
||||||
|
"""
|
||||||
|
RAK6421: _HardwareModel.ValueType # 118
|
||||||
|
"""
|
||||||
|
RAK6421 Hat+
|
||||||
|
"""
|
||||||
PRIVATE_HW: _HardwareModel.ValueType # 255
|
PRIVATE_HW: _HardwareModel.ValueType # 255
|
||||||
"""
|
"""
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
@@ -930,9 +963,9 @@ SEEED_WIO_TRACKER_L1_EINK: HardwareModel.ValueType # 100
|
|||||||
"""
|
"""
|
||||||
Seeed Tracker L1 EINK driver
|
Seeed Tracker L1 EINK driver
|
||||||
"""
|
"""
|
||||||
QWANTZ_TINY_ARMS: HardwareModel.ValueType # 101
|
MUZI_R1_NEO: HardwareModel.ValueType # 101
|
||||||
"""
|
"""
|
||||||
Reserved ID for future and past use
|
Muzi Works R1 Neo
|
||||||
"""
|
"""
|
||||||
T_DECK_PRO: HardwareModel.ValueType # 102
|
T_DECK_PRO: HardwareModel.ValueType # 102
|
||||||
"""
|
"""
|
||||||
@@ -942,9 +975,10 @@ T_LORA_PAGER: HardwareModel.ValueType # 103
|
|||||||
"""
|
"""
|
||||||
Lilygo TLora Pager
|
Lilygo TLora Pager
|
||||||
"""
|
"""
|
||||||
GAT562_MESH_TRIAL_TRACKER: HardwareModel.ValueType # 104
|
M5STACK_RESERVED: HardwareModel.ValueType # 104
|
||||||
"""
|
"""
|
||||||
GAT562 Mesh Trial Tracker
|
M5Stack Reserved
|
||||||
|
0x68
|
||||||
"""
|
"""
|
||||||
WISMESH_TAG: HardwareModel.ValueType # 105
|
WISMESH_TAG: HardwareModel.ValueType # 105
|
||||||
"""
|
"""
|
||||||
@@ -971,6 +1005,38 @@ HELTEC_V4: HardwareModel.ValueType # 110
|
|||||||
"""
|
"""
|
||||||
New Heltec LoRA32 with ESP32-S3 CPU
|
New Heltec LoRA32 with ESP32-S3 CPU
|
||||||
"""
|
"""
|
||||||
|
M5STACK_C6L: HardwareModel.ValueType # 111
|
||||||
|
"""
|
||||||
|
M5Stack C6L
|
||||||
|
"""
|
||||||
|
M5STACK_CARDPUTER_ADV: HardwareModel.ValueType # 112
|
||||||
|
"""
|
||||||
|
M5Stack Cardputer Adv
|
||||||
|
"""
|
||||||
|
HELTEC_WIRELESS_TRACKER_V2: HardwareModel.ValueType # 113
|
||||||
|
"""
|
||||||
|
ESP32S3 main controller with GPS and TFT screen.
|
||||||
|
"""
|
||||||
|
T_WATCH_ULTRA: HardwareModel.ValueType # 114
|
||||||
|
"""
|
||||||
|
LilyGo T-Watch Ultra
|
||||||
|
"""
|
||||||
|
THINKNODE_M3: HardwareModel.ValueType # 115
|
||||||
|
"""
|
||||||
|
Elecrow ThinkNode M3
|
||||||
|
"""
|
||||||
|
WISMESH_TAP_V2: HardwareModel.ValueType # 116
|
||||||
|
"""
|
||||||
|
RAK WISMESH_TAP_V2 with ESP32-S3 CPU
|
||||||
|
"""
|
||||||
|
RAK3401: HardwareModel.ValueType # 117
|
||||||
|
"""
|
||||||
|
RAK3401
|
||||||
|
"""
|
||||||
|
RAK6421: HardwareModel.ValueType # 118
|
||||||
|
"""
|
||||||
|
RAK6421 Hat+
|
||||||
|
"""
|
||||||
PRIVATE_HW: HardwareModel.ValueType # 255
|
PRIVATE_HW: HardwareModel.ValueType # 255
|
||||||
"""
|
"""
|
||||||
------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
@@ -2499,6 +2565,10 @@ class MeshPacket(google.protobuf.message.Message):
|
|||||||
to: builtins.int
|
to: builtins.int
|
||||||
"""
|
"""
|
||||||
The (immediate) destination for this packet
|
The (immediate) destination for this packet
|
||||||
|
If the value is 4,294,967,295 (maximum value of an unsigned 32bit integer), this indicates that the packet was
|
||||||
|
not destined for a specific node, but for a channel as indicated by the value of `channel` below.
|
||||||
|
If the value is another, this indicates that the packet was destined for a specific
|
||||||
|
node (i.e. a kind of "Direct Message" to this node) and not broadcast on a channel.
|
||||||
"""
|
"""
|
||||||
channel: builtins.int
|
channel: builtins.int
|
||||||
"""
|
"""
|
||||||
|
|||||||
28
meshtastic/protobuf/module_config_pb2.py
generated
28
meshtastic/protobuf/module_config_pb2.py
generated
File diff suppressed because one or more lines are too long
9
meshtastic/protobuf/module_config_pb2.pyi
generated
9
meshtastic/protobuf/module_config_pb2.pyi
generated
@@ -874,6 +874,7 @@ class ModuleConfig(google.protobuf.message.Message):
|
|||||||
HEALTH_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int
|
HEALTH_MEASUREMENT_ENABLED_FIELD_NUMBER: builtins.int
|
||||||
HEALTH_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int
|
HEALTH_UPDATE_INTERVAL_FIELD_NUMBER: builtins.int
|
||||||
HEALTH_SCREEN_ENABLED_FIELD_NUMBER: builtins.int
|
HEALTH_SCREEN_ENABLED_FIELD_NUMBER: builtins.int
|
||||||
|
DEVICE_TELEMETRY_ENABLED_FIELD_NUMBER: builtins.int
|
||||||
device_update_interval: builtins.int
|
device_update_interval: builtins.int
|
||||||
"""
|
"""
|
||||||
Interval in seconds of how often we should try to send our
|
Interval in seconds of how often we should try to send our
|
||||||
@@ -934,6 +935,11 @@ class ModuleConfig(google.protobuf.message.Message):
|
|||||||
"""
|
"""
|
||||||
Enable/Disable the health telemetry module on-device display
|
Enable/Disable the health telemetry module on-device display
|
||||||
"""
|
"""
|
||||||
|
device_telemetry_enabled: builtins.bool
|
||||||
|
"""
|
||||||
|
Enable/Disable the device telemetry module to send metrics to the mesh
|
||||||
|
Note: We will still send telemtry to the connected phone / client every minute over the API
|
||||||
|
"""
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
@@ -950,8 +956,9 @@ class ModuleConfig(google.protobuf.message.Message):
|
|||||||
health_measurement_enabled: builtins.bool = ...,
|
health_measurement_enabled: builtins.bool = ...,
|
||||||
health_update_interval: builtins.int = ...,
|
health_update_interval: builtins.int = ...,
|
||||||
health_screen_enabled: builtins.bool = ...,
|
health_screen_enabled: builtins.bool = ...,
|
||||||
|
device_telemetry_enabled: builtins.bool = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def ClearField(self, field_name: typing.Literal["air_quality_enabled", b"air_quality_enabled", "air_quality_interval", b"air_quality_interval", "device_update_interval", b"device_update_interval", "environment_display_fahrenheit", b"environment_display_fahrenheit", "environment_measurement_enabled", b"environment_measurement_enabled", "environment_screen_enabled", b"environment_screen_enabled", "environment_update_interval", b"environment_update_interval", "health_measurement_enabled", b"health_measurement_enabled", "health_screen_enabled", b"health_screen_enabled", "health_update_interval", b"health_update_interval", "power_measurement_enabled", b"power_measurement_enabled", "power_screen_enabled", b"power_screen_enabled", "power_update_interval", b"power_update_interval"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["air_quality_enabled", b"air_quality_enabled", "air_quality_interval", b"air_quality_interval", "device_telemetry_enabled", b"device_telemetry_enabled", "device_update_interval", b"device_update_interval", "environment_display_fahrenheit", b"environment_display_fahrenheit", "environment_measurement_enabled", b"environment_measurement_enabled", "environment_screen_enabled", b"environment_screen_enabled", "environment_update_interval", b"environment_update_interval", "health_measurement_enabled", b"health_measurement_enabled", "health_screen_enabled", b"health_screen_enabled", "health_update_interval", b"health_update_interval", "power_measurement_enabled", b"power_measurement_enabled", "power_screen_enabled", b"power_screen_enabled", "power_update_interval", b"power_update_interval"]) -> None: ...
|
||||||
|
|
||||||
@typing.final
|
@typing.final
|
||||||
class CannedMessageConfig(google.protobuf.message.Message):
|
class CannedMessageConfig(google.protobuf.message.Message):
|
||||||
|
|||||||
4
meshtastic/protobuf/mqtt_pb2.py
generated
4
meshtastic/protobuf/mqtt_pb2.py
generated
@@ -15,14 +15,14 @@ from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config
|
|||||||
from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2
|
from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mqtt.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\x1emeshtastic/protobuf/mesh.proto\"j\n\x0fServiceEnvelope\x12/\n\x06packet\x18\x01 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x12\n\nchannel_id\x18\x02 \x01(\t\x12\x12\n\ngateway_id\x18\x03 \x01(\t\"\x83\x04\n\tMapReport\x12\x11\n\tlong_name\x18\x01 \x01(\t\x12\x12\n\nshort_name\x18\x02 \x01(\t\x12;\n\x04role\x18\x03 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x34\n\x08hw_model\x18\x04 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x18\n\x10\x66irmware_version\x18\x05 \x01(\t\x12\x41\n\x06region\x18\x06 \x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12H\n\x0cmodem_preset\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x1b\n\x13has_default_channel\x18\x08 \x01(\x08\x12\x12\n\nlatitude_i\x18\t \x01(\x0f\x12\x13\n\x0blongitude_i\x18\n \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x0b \x01(\x05\x12\x1a\n\x12position_precision\x18\x0c \x01(\r\x12\x1e\n\x16num_online_local_nodes\x18\r \x01(\r\x12!\n\x19has_opted_report_location\x18\x0e \x01(\x08\x42_\n\x13\x63om.geeksville.meshB\nMQTTProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mqtt.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/config.proto\x1a\x1emeshtastic/protobuf/mesh.proto\"j\n\x0fServiceEnvelope\x12/\n\x06packet\x18\x01 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacket\x12\x12\n\nchannel_id\x18\x02 \x01(\t\x12\x12\n\ngateway_id\x18\x03 \x01(\t\"\x83\x04\n\tMapReport\x12\x11\n\tlong_name\x18\x01 \x01(\t\x12\x12\n\nshort_name\x18\x02 \x01(\t\x12;\n\x04role\x18\x03 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x34\n\x08hw_model\x18\x04 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x18\n\x10\x66irmware_version\x18\x05 \x01(\t\x12\x41\n\x06region\x18\x06 \x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12H\n\x0cmodem_preset\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x1b\n\x13has_default_channel\x18\x08 \x01(\x08\x12\x12\n\nlatitude_i\x18\t \x01(\x0f\x12\x13\n\x0blongitude_i\x18\n \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x0b \x01(\x05\x12\x1a\n\x12position_precision\x18\x0c \x01(\r\x12\x1e\n\x16num_online_local_nodes\x18\r \x01(\r\x12!\n\x19has_opted_report_location\x18\x0e \x01(\x08\x42`\n\x14org.meshtastic.protoB\nMQTTProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.mqtt_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.mqtt_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\nMQTTProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\nMQTTProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_SERVICEENVELOPE']._serialized_start=121
|
_globals['_SERVICEENVELOPE']._serialized_start=121
|
||||||
_globals['_SERVICEENVELOPE']._serialized_end=227
|
_globals['_SERVICEENVELOPE']._serialized_end=227
|
||||||
_globals['_MAPREPORT']._serialized_start=230
|
_globals['_MAPREPORT']._serialized_start=230
|
||||||
|
|||||||
4
meshtastic/protobuf/paxcount_pb2.py
generated
4
meshtastic/protobuf/paxcount_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/paxcount.proto\x12\x13meshtastic.protobuf\"5\n\x08Paxcount\x12\x0c\n\x04wifi\x18\x01 \x01(\r\x12\x0b\n\x03\x62le\x18\x02 \x01(\r\x12\x0e\n\x06uptime\x18\x03 \x01(\rBc\n\x13\x63om.geeksville.meshB\x0ePaxcountProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/paxcount.proto\x12\x13meshtastic.protobuf\"5\n\x08Paxcount\x12\x0c\n\x04wifi\x18\x01 \x01(\r\x12\x0b\n\x03\x62le\x18\x02 \x01(\r\x12\x0e\n\x06uptime\x18\x03 \x01(\rBd\n\x14org.meshtastic.protoB\x0ePaxcountProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.paxcount_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.paxcount_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016PaxcountProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\016PaxcountProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_PAXCOUNT']._serialized_start=59
|
_globals['_PAXCOUNT']._serialized_start=59
|
||||||
_globals['_PAXCOUNT']._serialized_end=112
|
_globals['_PAXCOUNT']._serialized_end=112
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
4
meshtastic/protobuf/portnums_pb2.py
generated
4
meshtastic/protobuf/portnums_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xf6\x04\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\x1f\n\x1bTEXT_MESSAGE_COMPRESSED_APP\x10\x07\x12\x10\n\x0cWAYPOINT_APP\x10\x08\x12\r\n\tAUDIO_APP\x10\t\x12\x18\n\x14\x44\x45TECTION_SENSOR_APP\x10\n\x12\r\n\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42]\n\x13\x63om.geeksville.meshB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/portnums.proto\x12\x13meshtastic.protobuf*\xf6\x04\n\x07PortNum\x12\x0f\n\x0bUNKNOWN_APP\x10\x00\x12\x14\n\x10TEXT_MESSAGE_APP\x10\x01\x12\x17\n\x13REMOTE_HARDWARE_APP\x10\x02\x12\x10\n\x0cPOSITION_APP\x10\x03\x12\x10\n\x0cNODEINFO_APP\x10\x04\x12\x0f\n\x0bROUTING_APP\x10\x05\x12\r\n\tADMIN_APP\x10\x06\x12\x1f\n\x1bTEXT_MESSAGE_COMPRESSED_APP\x10\x07\x12\x10\n\x0cWAYPOINT_APP\x10\x08\x12\r\n\tAUDIO_APP\x10\t\x12\x18\n\x14\x44\x45TECTION_SENSOR_APP\x10\n\x12\r\n\tALERT_APP\x10\x0b\x12\x18\n\x14KEY_VERIFICATION_APP\x10\x0c\x12\r\n\tREPLY_APP\x10 \x12\x11\n\rIP_TUNNEL_APP\x10!\x12\x12\n\x0ePAXCOUNTER_APP\x10\"\x12\x0e\n\nSERIAL_APP\x10@\x12\x15\n\x11STORE_FORWARD_APP\x10\x41\x12\x12\n\x0eRANGE_TEST_APP\x10\x42\x12\x11\n\rTELEMETRY_APP\x10\x43\x12\x0b\n\x07ZPS_APP\x10\x44\x12\x11\n\rSIMULATOR_APP\x10\x45\x12\x12\n\x0eTRACEROUTE_APP\x10\x46\x12\x14\n\x10NEIGHBORINFO_APP\x10G\x12\x0f\n\x0b\x41TAK_PLUGIN\x10H\x12\x12\n\x0eMAP_REPORT_APP\x10I\x12\x13\n\x0fPOWERSTRESS_APP\x10J\x12\x18\n\x14RETICULUM_TUNNEL_APP\x10L\x12\x0f\n\x0b\x43\x41YENNE_APP\x10M\x12\x10\n\x0bPRIVATE_APP\x10\x80\x02\x12\x13\n\x0e\x41TAK_FORWARDER\x10\x81\x02\x12\x08\n\x03MAX\x10\xff\x03\x42^\n\x14org.meshtastic.protoB\x08PortnumsZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.portnums_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.portnums_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\010PortnumsZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_PORTNUM']._serialized_start=60
|
_globals['_PORTNUM']._serialized_start=60
|
||||||
_globals['_PORTNUM']._serialized_end=690
|
_globals['_PORTNUM']._serialized_end=690
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
4
meshtastic/protobuf/powermon_pb2.py
generated
4
meshtastic/protobuf/powermon_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/powermon.proto\x12\x13meshtastic.protobuf\"\xe0\x01\n\x08PowerMon\"\xd3\x01\n\x05State\x12\x08\n\x04None\x10\x00\x12\x11\n\rCPU_DeepSleep\x10\x01\x12\x12\n\x0e\x43PU_LightSleep\x10\x02\x12\x0c\n\x08Vext1_On\x10\x04\x12\r\n\tLora_RXOn\x10\x08\x12\r\n\tLora_TXOn\x10\x10\x12\x11\n\rLora_RXActive\x10 \x12\t\n\x05\x42T_On\x10@\x12\x0b\n\x06LED_On\x10\x80\x01\x12\x0e\n\tScreen_On\x10\x80\x02\x12\x13\n\x0eScreen_Drawing\x10\x80\x04\x12\x0c\n\x07Wifi_On\x10\x80\x08\x12\x0f\n\nGPS_Active\x10\x80\x10\"\x88\x03\n\x12PowerStressMessage\x12;\n\x03\x63md\x18\x01 \x01(\x0e\x32..meshtastic.protobuf.PowerStressMessage.Opcode\x12\x13\n\x0bnum_seconds\x18\x02 \x01(\x02\"\x9f\x02\n\x06Opcode\x12\t\n\x05UNSET\x10\x00\x12\x0e\n\nPRINT_INFO\x10\x01\x12\x0f\n\x0b\x46ORCE_QUIET\x10\x02\x12\r\n\tEND_QUIET\x10\x03\x12\r\n\tSCREEN_ON\x10\x10\x12\x0e\n\nSCREEN_OFF\x10\x11\x12\x0c\n\x08\x43PU_IDLE\x10 \x12\x11\n\rCPU_DEEPSLEEP\x10!\x12\x0e\n\nCPU_FULLON\x10\"\x12\n\n\x06LED_ON\x10\x30\x12\x0b\n\x07LED_OFF\x10\x31\x12\x0c\n\x08LORA_OFF\x10@\x12\x0b\n\x07LORA_TX\x10\x41\x12\x0b\n\x07LORA_RX\x10\x42\x12\n\n\x06\x42T_OFF\x10P\x12\t\n\x05\x42T_ON\x10Q\x12\x0c\n\x08WIFI_OFF\x10`\x12\x0b\n\x07WIFI_ON\x10\x61\x12\x0b\n\x07GPS_OFF\x10p\x12\n\n\x06GPS_ON\x10qBc\n\x13\x63om.geeksville.meshB\x0ePowerMonProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"meshtastic/protobuf/powermon.proto\x12\x13meshtastic.protobuf\"\xe0\x01\n\x08PowerMon\"\xd3\x01\n\x05State\x12\x08\n\x04None\x10\x00\x12\x11\n\rCPU_DeepSleep\x10\x01\x12\x12\n\x0e\x43PU_LightSleep\x10\x02\x12\x0c\n\x08Vext1_On\x10\x04\x12\r\n\tLora_RXOn\x10\x08\x12\r\n\tLora_TXOn\x10\x10\x12\x11\n\rLora_RXActive\x10 \x12\t\n\x05\x42T_On\x10@\x12\x0b\n\x06LED_On\x10\x80\x01\x12\x0e\n\tScreen_On\x10\x80\x02\x12\x13\n\x0eScreen_Drawing\x10\x80\x04\x12\x0c\n\x07Wifi_On\x10\x80\x08\x12\x0f\n\nGPS_Active\x10\x80\x10\"\x88\x03\n\x12PowerStressMessage\x12;\n\x03\x63md\x18\x01 \x01(\x0e\x32..meshtastic.protobuf.PowerStressMessage.Opcode\x12\x13\n\x0bnum_seconds\x18\x02 \x01(\x02\"\x9f\x02\n\x06Opcode\x12\t\n\x05UNSET\x10\x00\x12\x0e\n\nPRINT_INFO\x10\x01\x12\x0f\n\x0b\x46ORCE_QUIET\x10\x02\x12\r\n\tEND_QUIET\x10\x03\x12\r\n\tSCREEN_ON\x10\x10\x12\x0e\n\nSCREEN_OFF\x10\x11\x12\x0c\n\x08\x43PU_IDLE\x10 \x12\x11\n\rCPU_DEEPSLEEP\x10!\x12\x0e\n\nCPU_FULLON\x10\"\x12\n\n\x06LED_ON\x10\x30\x12\x0b\n\x07LED_OFF\x10\x31\x12\x0c\n\x08LORA_OFF\x10@\x12\x0b\n\x07LORA_TX\x10\x41\x12\x0b\n\x07LORA_RX\x10\x42\x12\n\n\x06\x42T_OFF\x10P\x12\t\n\x05\x42T_ON\x10Q\x12\x0c\n\x08WIFI_OFF\x10`\x12\x0b\n\x07WIFI_ON\x10\x61\x12\x0b\n\x07GPS_OFF\x10p\x12\n\n\x06GPS_ON\x10qBd\n\x14org.meshtastic.protoB\x0ePowerMonProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.powermon_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.powermon_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016PowerMonProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\016PowerMonProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_POWERMON']._serialized_start=60
|
_globals['_POWERMON']._serialized_start=60
|
||||||
_globals['_POWERMON']._serialized_end=284
|
_globals['_POWERMON']._serialized_end=284
|
||||||
_globals['_POWERMON_STATE']._serialized_start=73
|
_globals['_POWERMON_STATE']._serialized_start=73
|
||||||
|
|||||||
4
meshtastic/protobuf/remote_hardware_pb2.py
generated
4
meshtastic/protobuf/remote_hardware_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)meshtastic/protobuf/remote_hardware.proto\x12\x13meshtastic.protobuf\"\xdf\x01\n\x0fHardwareMessage\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.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\x42\x63\n\x13\x63om.geeksville.meshB\x0eRemoteHardwareZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)meshtastic/protobuf/remote_hardware.proto\x12\x13meshtastic.protobuf\"\xdf\x01\n\x0fHardwareMessage\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.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\x42\x64\n\x14org.meshtastic.protoB\x0eRemoteHardwareZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.remote_hardware_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.remote_hardware_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\016RemoteHardwareZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\016RemoteHardwareZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_HARDWAREMESSAGE']._serialized_start=67
|
_globals['_HARDWAREMESSAGE']._serialized_start=67
|
||||||
_globals['_HARDWAREMESSAGE']._serialized_end=290
|
_globals['_HARDWAREMESSAGE']._serialized_end=290
|
||||||
_globals['_HARDWAREMESSAGE_TYPE']._serialized_start=182
|
_globals['_HARDWAREMESSAGE_TYPE']._serialized_start=182
|
||||||
|
|||||||
4
meshtastic/protobuf/rtttl_pb2.py
generated
4
meshtastic/protobuf/rtttl_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/rtttl.proto\x12\x13meshtastic.protobuf\"\x1f\n\x0bRTTTLConfig\x12\x10\n\x08ringtone\x18\x01 \x01(\tBf\n\x13\x63om.geeksville.meshB\x11RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/rtttl.proto\x12\x13meshtastic.protobuf\"\x1f\n\x0bRTTTLConfig\x12\x10\n\x08ringtone\x18\x01 \x01(\tBg\n\x14org.meshtastic.protoB\x11RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.rtttl_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.rtttl_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\021RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\021RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_RTTTLCONFIG']._serialized_start=56
|
_globals['_RTTTLCONFIG']._serialized_start=56
|
||||||
_globals['_RTTTLCONFIG']._serialized_end=87
|
_globals['_RTTTLCONFIG']._serialized_end=87
|
||||||
# @@protoc_insertion_point(module_scope)
|
# @@protoc_insertion_point(module_scope)
|
||||||
|
|||||||
4
meshtastic/protobuf/storeforward_pb2.py
generated
4
meshtastic/protobuf/storeforward_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&meshtastic/protobuf/storeforward.proto\x12\x13meshtastic.protobuf\"\xc0\x07\n\x0fStoreAndForward\x12@\n\x02rr\x18\x01 \x01(\x0e\x32\x34.meshtastic.protobuf.StoreAndForward.RequestResponse\x12@\n\x05stats\x18\x02 \x01(\x0b\x32/.meshtastic.protobuf.StoreAndForward.StatisticsH\x00\x12?\n\x07history\x18\x03 \x01(\x0b\x32,.meshtastic.protobuf.StoreAndForward.HistoryH\x00\x12\x43\n\theartbeat\x18\x04 \x01(\x0b\x32..meshtastic.protobuf.StoreAndForward.HeartbeatH\x00\x12\x0e\n\x04text\x18\x05 \x01(\x0cH\x00\x1a\xcd\x01\n\nStatistics\x12\x16\n\x0emessages_total\x18\x01 \x01(\r\x12\x16\n\x0emessages_saved\x18\x02 \x01(\r\x12\x14\n\x0cmessages_max\x18\x03 \x01(\r\x12\x0f\n\x07up_time\x18\x04 \x01(\r\x12\x10\n\x08requests\x18\x05 \x01(\r\x12\x18\n\x10requests_history\x18\x06 \x01(\r\x12\x11\n\theartbeat\x18\x07 \x01(\x08\x12\x12\n\nreturn_max\x18\x08 \x01(\r\x12\x15\n\rreturn_window\x18\t \x01(\r\x1aI\n\x07History\x12\x18\n\x10history_messages\x18\x01 \x01(\r\x12\x0e\n\x06window\x18\x02 \x01(\r\x12\x14\n\x0clast_request\x18\x03 \x01(\r\x1a.\n\tHeartbeat\x12\x0e\n\x06period\x18\x01 \x01(\r\x12\x11\n\tsecondary\x18\x02 \x01(\r\"\xbc\x02\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\x12\n\x0eROUTER_HISTORY\x10\x06\x12\x10\n\x0cROUTER_STATS\x10\x07\x12\x16\n\x12ROUTER_TEXT_DIRECT\x10\x08\x12\x19\n\x15ROUTER_TEXT_BROADCAST\x10\t\x12\x10\n\x0c\x43LIENT_ERROR\x10@\x12\x12\n\x0e\x43LIENT_HISTORY\x10\x41\x12\x10\n\x0c\x43LIENT_STATS\x10\x42\x12\x0f\n\x0b\x43LIENT_PING\x10\x43\x12\x0f\n\x0b\x43LIENT_PONG\x10\x44\x12\x10\n\x0c\x43LIENT_ABORT\x10jB\t\n\x07variantBj\n\x13\x63om.geeksville.meshB\x15StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&meshtastic/protobuf/storeforward.proto\x12\x13meshtastic.protobuf\"\xc0\x07\n\x0fStoreAndForward\x12@\n\x02rr\x18\x01 \x01(\x0e\x32\x34.meshtastic.protobuf.StoreAndForward.RequestResponse\x12@\n\x05stats\x18\x02 \x01(\x0b\x32/.meshtastic.protobuf.StoreAndForward.StatisticsH\x00\x12?\n\x07history\x18\x03 \x01(\x0b\x32,.meshtastic.protobuf.StoreAndForward.HistoryH\x00\x12\x43\n\theartbeat\x18\x04 \x01(\x0b\x32..meshtastic.protobuf.StoreAndForward.HeartbeatH\x00\x12\x0e\n\x04text\x18\x05 \x01(\x0cH\x00\x1a\xcd\x01\n\nStatistics\x12\x16\n\x0emessages_total\x18\x01 \x01(\r\x12\x16\n\x0emessages_saved\x18\x02 \x01(\r\x12\x14\n\x0cmessages_max\x18\x03 \x01(\r\x12\x0f\n\x07up_time\x18\x04 \x01(\r\x12\x10\n\x08requests\x18\x05 \x01(\r\x12\x18\n\x10requests_history\x18\x06 \x01(\r\x12\x11\n\theartbeat\x18\x07 \x01(\x08\x12\x12\n\nreturn_max\x18\x08 \x01(\r\x12\x15\n\rreturn_window\x18\t \x01(\r\x1aI\n\x07History\x12\x18\n\x10history_messages\x18\x01 \x01(\r\x12\x0e\n\x06window\x18\x02 \x01(\r\x12\x14\n\x0clast_request\x18\x03 \x01(\r\x1a.\n\tHeartbeat\x12\x0e\n\x06period\x18\x01 \x01(\r\x12\x11\n\tsecondary\x18\x02 \x01(\r\"\xbc\x02\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\x12\n\x0eROUTER_HISTORY\x10\x06\x12\x10\n\x0cROUTER_STATS\x10\x07\x12\x16\n\x12ROUTER_TEXT_DIRECT\x10\x08\x12\x19\n\x15ROUTER_TEXT_BROADCAST\x10\t\x12\x10\n\x0c\x43LIENT_ERROR\x10@\x12\x12\n\x0e\x43LIENT_HISTORY\x10\x41\x12\x10\n\x0c\x43LIENT_STATS\x10\x42\x12\x0f\n\x0b\x43LIENT_PING\x10\x43\x12\x0f\n\x0b\x43LIENT_PONG\x10\x44\x12\x10\n\x0c\x43LIENT_ABORT\x10jB\t\n\x07variantBk\n\x14org.meshtastic.protoB\x15StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.storeforward_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.storeforward_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\025StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\025StoreAndForwardProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_STOREANDFORWARD']._serialized_start=64
|
_globals['_STOREANDFORWARD']._serialized_start=64
|
||||||
_globals['_STOREANDFORWARD']._serialized_end=1024
|
_globals['_STOREANDFORWARD']._serialized_end=1024
|
||||||
_globals['_STOREANDFORWARD_STATISTICS']._serialized_start=366
|
_globals['_STOREANDFORWARD_STATISTICS']._serialized_start=366
|
||||||
|
|||||||
26
meshtastic/protobuf/telemetry_pb2.py
generated
26
meshtastic/protobuf/telemetry_pb2.py
generated
File diff suppressed because one or more lines are too long
16
meshtastic/protobuf/telemetry_pb2.pyi
generated
16
meshtastic/protobuf/telemetry_pb2.pyi
generated
@@ -203,6 +203,10 @@ class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wra
|
|||||||
"""
|
"""
|
||||||
TSL2561 light sensor
|
TSL2561 light sensor
|
||||||
"""
|
"""
|
||||||
|
BH1750: _TelemetrySensorType.ValueType # 45
|
||||||
|
"""
|
||||||
|
BH1750 light sensor
|
||||||
|
"""
|
||||||
|
|
||||||
class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper):
|
class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper):
|
||||||
"""
|
"""
|
||||||
@@ -389,6 +393,10 @@ TSL2561: TelemetrySensorType.ValueType # 44
|
|||||||
"""
|
"""
|
||||||
TSL2561 light sensor
|
TSL2561 light sensor
|
||||||
"""
|
"""
|
||||||
|
BH1750: TelemetrySensorType.ValueType # 45
|
||||||
|
"""
|
||||||
|
BH1750 light sensor
|
||||||
|
"""
|
||||||
global___TelemetrySensorType = TelemetrySensorType
|
global___TelemetrySensorType = TelemetrySensorType
|
||||||
|
|
||||||
@typing.final
|
@typing.final
|
||||||
@@ -1026,6 +1034,7 @@ class LocalStats(google.protobuf.message.Message):
|
|||||||
NUM_TX_RELAY_CANCELED_FIELD_NUMBER: builtins.int
|
NUM_TX_RELAY_CANCELED_FIELD_NUMBER: builtins.int
|
||||||
HEAP_TOTAL_BYTES_FIELD_NUMBER: builtins.int
|
HEAP_TOTAL_BYTES_FIELD_NUMBER: builtins.int
|
||||||
HEAP_FREE_BYTES_FIELD_NUMBER: builtins.int
|
HEAP_FREE_BYTES_FIELD_NUMBER: builtins.int
|
||||||
|
NUM_TX_DROPPED_FIELD_NUMBER: builtins.int
|
||||||
uptime_seconds: builtins.int
|
uptime_seconds: builtins.int
|
||||||
"""
|
"""
|
||||||
How long the device has been running since the last reboot (in seconds)
|
How long the device has been running since the last reboot (in seconds)
|
||||||
@@ -1080,6 +1089,10 @@ class LocalStats(google.protobuf.message.Message):
|
|||||||
"""
|
"""
|
||||||
Number of bytes free in the heap
|
Number of bytes free in the heap
|
||||||
"""
|
"""
|
||||||
|
num_tx_dropped: builtins.int
|
||||||
|
"""
|
||||||
|
Number of packets that were dropped because the transmit queue was full.
|
||||||
|
"""
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
@@ -1096,8 +1109,9 @@ class LocalStats(google.protobuf.message.Message):
|
|||||||
num_tx_relay_canceled: builtins.int = ...,
|
num_tx_relay_canceled: builtins.int = ...,
|
||||||
heap_total_bytes: builtins.int = ...,
|
heap_total_bytes: builtins.int = ...,
|
||||||
heap_free_bytes: builtins.int = ...,
|
heap_free_bytes: builtins.int = ...,
|
||||||
|
num_tx_dropped: builtins.int = ...,
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
def ClearField(self, field_name: typing.Literal["air_util_tx", b"air_util_tx", "channel_utilization", b"channel_utilization", "heap_free_bytes", b"heap_free_bytes", "heap_total_bytes", b"heap_total_bytes", "num_online_nodes", b"num_online_nodes", "num_packets_rx", b"num_packets_rx", "num_packets_rx_bad", b"num_packets_rx_bad", "num_packets_tx", b"num_packets_tx", "num_rx_dupe", b"num_rx_dupe", "num_total_nodes", b"num_total_nodes", "num_tx_relay", b"num_tx_relay", "num_tx_relay_canceled", b"num_tx_relay_canceled", "uptime_seconds", b"uptime_seconds"]) -> None: ...
|
def ClearField(self, field_name: typing.Literal["air_util_tx", b"air_util_tx", "channel_utilization", b"channel_utilization", "heap_free_bytes", b"heap_free_bytes", "heap_total_bytes", b"heap_total_bytes", "num_online_nodes", b"num_online_nodes", "num_packets_rx", b"num_packets_rx", "num_packets_rx_bad", b"num_packets_rx_bad", "num_packets_tx", b"num_packets_tx", "num_rx_dupe", b"num_rx_dupe", "num_total_nodes", b"num_total_nodes", "num_tx_dropped", b"num_tx_dropped", "num_tx_relay", b"num_tx_relay", "num_tx_relay_canceled", b"num_tx_relay_canceled", "uptime_seconds", b"uptime_seconds"]) -> None: ...
|
||||||
|
|
||||||
global___LocalStats = LocalStats
|
global___LocalStats = LocalStats
|
||||||
|
|
||||||
|
|||||||
4
meshtastic/protobuf/xmodem_pb2.py
generated
4
meshtastic/protobuf/xmodem_pb2.py
generated
@@ -13,14 +13,14 @@ _sym_db = _symbol_database.Default()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/xmodem.proto\x12\x13meshtastic.protobuf\"\xbf\x01\n\x06XModem\x12\x34\n\x07\x63ontrol\x18\x01 \x01(\x0e\x32#.meshtastic.protobuf.XModem.Control\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\r\n\x05\x63rc16\x18\x03 \x01(\r\x12\x0e\n\x06\x62uffer\x18\x04 \x01(\x0c\"S\n\x07\x43ontrol\x12\x07\n\x03NUL\x10\x00\x12\x07\n\x03SOH\x10\x01\x12\x07\n\x03STX\x10\x02\x12\x07\n\x03\x45OT\x10\x04\x12\x07\n\x03\x41\x43K\x10\x06\x12\x07\n\x03NAK\x10\x15\x12\x07\n\x03\x43\x41N\x10\x18\x12\t\n\x05\x43TRLZ\x10\x1a\x42\x61\n\x13\x63om.geeksville.meshB\x0cXmodemProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/xmodem.proto\x12\x13meshtastic.protobuf\"\xbf\x01\n\x06XModem\x12\x34\n\x07\x63ontrol\x18\x01 \x01(\x0e\x32#.meshtastic.protobuf.XModem.Control\x12\x0b\n\x03seq\x18\x02 \x01(\r\x12\r\n\x05\x63rc16\x18\x03 \x01(\r\x12\x0e\n\x06\x62uffer\x18\x04 \x01(\x0c\"S\n\x07\x43ontrol\x12\x07\n\x03NUL\x10\x00\x12\x07\n\x03SOH\x10\x01\x12\x07\n\x03STX\x10\x02\x12\x07\n\x03\x45OT\x10\x04\x12\x07\n\x03\x41\x43K\x10\x06\x12\x07\n\x03NAK\x10\x15\x12\x07\n\x03\x43\x41N\x10\x18\x12\t\n\x05\x43TRLZ\x10\x1a\x42\x62\n\x14org.meshtastic.protoB\x0cXmodemProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3')
|
||||||
|
|
||||||
_globals = globals()
|
_globals = globals()
|
||||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.xmodem_pb2', _globals)
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.xmodem_pb2', _globals)
|
||||||
if _descriptor._USE_C_DESCRIPTORS == False:
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
||||||
DESCRIPTOR._options = None
|
DESCRIPTOR._options = None
|
||||||
DESCRIPTOR._serialized_options = b'\n\023com.geeksville.meshB\014XmodemProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\014XmodemProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000'
|
||||||
_globals['_XMODEM']._serialized_start=58
|
_globals['_XMODEM']._serialized_start=58
|
||||||
_globals['_XMODEM']._serialized_end=249
|
_globals['_XMODEM']._serialized_end=249
|
||||||
_globals['_XMODEM_CONTROL']._serialized_start=166
|
_globals['_XMODEM_CONTROL']._serialized_start=166
|
||||||
|
|||||||
@@ -18,13 +18,22 @@ logger = logging.getLogger(__name__)
|
|||||||
class SerialInterface(StreamInterface):
|
class SerialInterface(StreamInterface):
|
||||||
"""Interface class for meshtastic devices over a serial link"""
|
"""Interface class for meshtastic devices over a serial link"""
|
||||||
|
|
||||||
def __init__(self, devPath: Optional[str]=None, debugOut=None, noProto: bool=False, connectNow: bool=True, noNodes: bool=False) -> None:
|
def __init__(
|
||||||
|
self,
|
||||||
|
devPath: Optional[str] = None,
|
||||||
|
debugOut=None,
|
||||||
|
noProto: bool = False,
|
||||||
|
connectNow: bool = True,
|
||||||
|
noNodes: bool = False,
|
||||||
|
timeout: int = 300
|
||||||
|
) -> None:
|
||||||
"""Constructor, opens a connection to a specified serial port, or if unspecified try to
|
"""Constructor, opens a connection to a specified serial port, or if unspecified try to
|
||||||
find one Meshtastic device by probing
|
find one Meshtastic device by probing
|
||||||
|
|
||||||
Keyword Arguments:
|
Keyword Arguments:
|
||||||
devPath {string} -- A filepath to a device, i.e. /dev/ttyUSB0 (default: {None})
|
devPath {string} -- A filepath to a device, i.e. /dev/ttyUSB0 (default: {None})
|
||||||
debugOut {stream} -- If a stream is provided, any debug serial output from the device will be emitted to that stream. (default: {None})
|
debugOut {stream} -- If a stream is provided, any debug serial output from the device will be emitted to that stream. (default: {None})
|
||||||
|
timeout -- How long to wait for replies (default: 300 seconds)
|
||||||
"""
|
"""
|
||||||
self.noProto = noProto
|
self.noProto = noProto
|
||||||
|
|
||||||
@@ -57,7 +66,7 @@ class SerialInterface(StreamInterface):
|
|||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
StreamInterface.__init__(
|
StreamInterface.__init__(
|
||||||
self, debugOut=debugOut, noProto=noProto, connectNow=connectNow, noNodes=noNodes
|
self, debugOut=debugOut, noProto=noProto, connectNow=connectNow, noNodes=noNodes, timeout=timeout
|
||||||
)
|
)
|
||||||
|
|
||||||
def _set_hupcl_with_termios(self, f: TextIOWrapper):
|
def _set_hupcl_with_termios(self, f: TextIOWrapper):
|
||||||
|
|||||||
@@ -23,12 +23,20 @@ logger = logging.getLogger(__name__)
|
|||||||
class StreamInterface(MeshInterface):
|
class StreamInterface(MeshInterface):
|
||||||
"""Interface class for meshtastic devices over a stream link (serial, TCP, etc)"""
|
"""Interface class for meshtastic devices over a stream link (serial, TCP, etc)"""
|
||||||
|
|
||||||
def __init__(self, debugOut: Optional[io.TextIOWrapper]=None, noProto: bool=False, connectNow: bool=True, noNodes: bool=False) -> None:
|
def __init__( # pylint: disable=R0917
|
||||||
|
self,
|
||||||
|
debugOut: Optional[io.TextIOWrapper] = None,
|
||||||
|
noProto: bool = False,
|
||||||
|
connectNow: bool = True,
|
||||||
|
noNodes: bool = False,
|
||||||
|
timeout: int = 300
|
||||||
|
) -> None:
|
||||||
"""Constructor, opens a connection to self.stream
|
"""Constructor, opens a connection to self.stream
|
||||||
|
|
||||||
Keyword Arguments:
|
Keyword Arguments:
|
||||||
debugOut {stream} -- If a stream is provided, any debug serial output from the
|
debugOut {stream} -- If a stream is provided, any debug serial output from the
|
||||||
device will be emitted to that stream. (default: {None})
|
device will be emitted to that stream. (default: {None})
|
||||||
|
timeout -- How long to wait for replies (default: 300 seconds)
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
Exception: [description]
|
Exception: [description]
|
||||||
@@ -49,7 +57,7 @@ class StreamInterface(MeshInterface):
|
|||||||
# FIXME, figure out why daemon=True causes reader thread to exit too early
|
# FIXME, figure out why daemon=True causes reader thread to exit too early
|
||||||
self._rxThread = threading.Thread(target=self.__reader, args=(), daemon=True, name="stream reader")
|
self._rxThread = threading.Thread(target=self.__reader, args=(), daemon=True, name="stream reader")
|
||||||
|
|
||||||
MeshInterface.__init__(self, debugOut=debugOut, noProto=noProto, noNodes=noNodes)
|
MeshInterface.__init__(self, debugOut=debugOut, noProto=noProto, noNodes=noNodes, timeout=timeout)
|
||||||
|
|
||||||
# Start the reader thread after superclass constructor completes init
|
# Start the reader thread after superclass constructor completes init
|
||||||
if connectNow:
|
if connectNow:
|
||||||
|
|||||||
@@ -217,6 +217,18 @@ seeed_xiao_s3 = SupportedDevice(
|
|||||||
usb_product_id_in_hex="0059",
|
usb_product_id_in_hex="0059",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
tdeck = SupportedDevice(
|
||||||
|
name="T-Deck",
|
||||||
|
version="",
|
||||||
|
for_firmware="t-deck", # Confirmed firmware identifier
|
||||||
|
device_class="esp32",
|
||||||
|
baseport_on_linux="ttyACM",
|
||||||
|
baseport_on_mac="cu.usbmodem",
|
||||||
|
baseport_on_windows="COM",
|
||||||
|
usb_vendor_id_in_hex="303a", # Espressif Systems (VERIFIED)
|
||||||
|
usb_product_id_in_hex="1001", # VERIFIED from actual device
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
supported_devices = [
|
supported_devices = [
|
||||||
@@ -239,4 +251,5 @@ supported_devices = [
|
|||||||
rak11200,
|
rak11200,
|
||||||
nano_g1,
|
nano_g1,
|
||||||
seeed_xiao_s3,
|
seeed_xiao_s3,
|
||||||
|
tdeck, # T-Deck support added
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -23,11 +23,13 @@ class TCPInterface(StreamInterface):
|
|||||||
connectNow: bool=True,
|
connectNow: bool=True,
|
||||||
portNumber: int=DEFAULT_TCP_PORT,
|
portNumber: int=DEFAULT_TCP_PORT,
|
||||||
noNodes:bool=False,
|
noNodes:bool=False,
|
||||||
|
timeout: int = 300,
|
||||||
):
|
):
|
||||||
"""Constructor, opens a connection to a specified IP address/hostname
|
"""Constructor, opens a connection to a specified IP address/hostname
|
||||||
|
|
||||||
Keyword Arguments:
|
Keyword Arguments:
|
||||||
hostname {string} -- Hostname/IP address of the device to connect to
|
hostname {string} -- Hostname/IP address of the device to connect to
|
||||||
|
timeout -- How long to wait for replies (default: 300 seconds)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.stream = None
|
self.stream = None
|
||||||
@@ -42,7 +44,7 @@ class TCPInterface(StreamInterface):
|
|||||||
else:
|
else:
|
||||||
self.socket = None
|
self.socket = None
|
||||||
|
|
||||||
super().__init__(debugOut=debugOut, noProto=noProto, connectNow=connectNow, noNodes=noNodes)
|
super().__init__(debugOut=debugOut, noProto=noProto, connectNow=connectNow, noNodes=noNodes, timeout=timeout)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
rep = f"TCPInterface({self.hostname!r}"
|
rep = f"TCPInterface({self.hostname!r}"
|
||||||
|
|||||||
@@ -11,16 +11,19 @@ from hypothesis import given, strategies as st
|
|||||||
from meshtastic.supported_device import SupportedDevice
|
from meshtastic.supported_device import SupportedDevice
|
||||||
from meshtastic.protobuf import mesh_pb2
|
from meshtastic.protobuf import mesh_pb2
|
||||||
from meshtastic.util import (
|
from meshtastic.util import (
|
||||||
|
DEFAULT_KEY,
|
||||||
Timeout,
|
Timeout,
|
||||||
active_ports_on_supported_devices,
|
active_ports_on_supported_devices,
|
||||||
camel_to_snake,
|
camel_to_snake,
|
||||||
catchAndIgnore,
|
catchAndIgnore,
|
||||||
|
channel_hash,
|
||||||
convert_mac_addr,
|
convert_mac_addr,
|
||||||
eliminate_duplicate_port,
|
eliminate_duplicate_port,
|
||||||
findPorts,
|
findPorts,
|
||||||
fixme,
|
fixme,
|
||||||
fromPSK,
|
fromPSK,
|
||||||
fromStr,
|
fromStr,
|
||||||
|
generate_channel_hash,
|
||||||
genPSK256,
|
genPSK256,
|
||||||
hexstr,
|
hexstr,
|
||||||
ipstr,
|
ipstr,
|
||||||
@@ -670,3 +673,45 @@ def test_shorthex():
|
|||||||
assert result == b'\x05'
|
assert result == b'\x05'
|
||||||
result = fromStr('0xffff')
|
result = fromStr('0xffff')
|
||||||
assert result == b'\xff\xff'
|
assert result == b'\xff\xff'
|
||||||
|
|
||||||
|
def test_channel_hash_basics():
|
||||||
|
"Test the default key and LongFast with channel_hash"
|
||||||
|
assert channel_hash(DEFAULT_KEY) == 2
|
||||||
|
assert channel_hash("LongFast".encode("utf-8")) == 10
|
||||||
|
|
||||||
|
@given(st.text(min_size=1, max_size=12))
|
||||||
|
def test_channel_hash_fuzz(channel_name):
|
||||||
|
"Test channel_hash with fuzzed channel names, ensuring it produces single-byte values"
|
||||||
|
hashed = channel_hash(channel_name.encode("utf-8"))
|
||||||
|
assert 0 <= hashed <= 0xFF
|
||||||
|
|
||||||
|
def test_generate_channel_hash_basics():
|
||||||
|
"Test the default key and LongFast/MediumFast with generate_channel_hash"
|
||||||
|
assert generate_channel_hash("LongFast", "AQ==") == 8
|
||||||
|
assert generate_channel_hash("LongFast", bytes([1])) == 8
|
||||||
|
assert generate_channel_hash("LongFast", DEFAULT_KEY) == 8
|
||||||
|
assert generate_channel_hash("MediumFast", DEFAULT_KEY) == 31
|
||||||
|
|
||||||
|
@given(st.text(min_size=1, max_size=12))
|
||||||
|
def test_generate_channel_hash_fuzz_default_key(channel_name):
|
||||||
|
"Test generate_channel_hash with fuzzed channel names and the default key, ensuring it produces single-byte values"
|
||||||
|
hashed = generate_channel_hash(channel_name, DEFAULT_KEY)
|
||||||
|
assert 0 <= hashed <= 0xFF
|
||||||
|
|
||||||
|
@given(st.text(min_size=1, max_size=12), st.binary(min_size=1, max_size=1))
|
||||||
|
def test_generate_channel_hash_fuzz_simple(channel_name, key_bytes):
|
||||||
|
"Test generate_channel_hash with fuzzed channel names and one-byte keys, ensuring it produces single-byte values"
|
||||||
|
hashed = generate_channel_hash(channel_name, key_bytes)
|
||||||
|
assert 0 <= hashed <= 0xFF
|
||||||
|
|
||||||
|
@given(st.text(min_size=1, max_size=12), st.binary(min_size=16, max_size=16))
|
||||||
|
def test_generate_channel_hash_fuzz_aes128(channel_name, key_bytes):
|
||||||
|
"Test generate_channel_hash with fuzzed channel names and 128-bit keys, ensuring it produces single-byte values"
|
||||||
|
hashed = generate_channel_hash(channel_name, key_bytes)
|
||||||
|
assert 0 <= hashed <= 0xFF
|
||||||
|
|
||||||
|
@given(st.text(min_size=1, max_size=12), st.binary(min_size=32, max_size=32))
|
||||||
|
def test_generate_channel_hash_fuzz_aes256(channel_name, key_bytes):
|
||||||
|
"Test generate_channel_hash with fuzzed channel names and 256-bit keys, ensuring it produces single-byte values"
|
||||||
|
hashed = generate_channel_hash(channel_name, key_bytes)
|
||||||
|
assert 0 <= hashed <= 0xFF
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ whitelistVids = dict.fromkeys([0x239a, 0x303a])
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
DEFAULT_KEY = base64.b64decode("1PG7OiApB1nwvP+rz05pAQ==".encode("utf-8"))
|
||||||
|
|
||||||
def quoteBooleans(a_string: str) -> str:
|
def quoteBooleans(a_string: str) -> str:
|
||||||
"""Quote booleans
|
"""Quote booleans
|
||||||
given a string that contains ": true", replace with ": 'true'" (or false)
|
given a string that contains ": true", replace with ": 'true'" (or false)
|
||||||
@@ -365,6 +367,30 @@ def remove_keys_from_dict(keys: Union[Tuple, List, Set], adict: Dict) -> Dict:
|
|||||||
remove_keys_from_dict(keys, val)
|
remove_keys_from_dict(keys, val)
|
||||||
return adict
|
return adict
|
||||||
|
|
||||||
|
def channel_hash(data: bytes) -> int:
|
||||||
|
"""Compute an XOR hash from bytes for channel evaluation."""
|
||||||
|
result = 0
|
||||||
|
for char in data:
|
||||||
|
result ^= char
|
||||||
|
return result
|
||||||
|
|
||||||
|
def generate_channel_hash(name: Union[str, bytes], key: Union[str, bytes]) -> int:
|
||||||
|
"""generate the channel number by hashing the channel name and psk (accepts str or bytes for both)"""
|
||||||
|
# Handle key as str or bytes
|
||||||
|
if isinstance(key, str):
|
||||||
|
key = base64.b64decode(key.replace("-", "+").replace("_", "/").encode("utf-8"))
|
||||||
|
|
||||||
|
if len(key) == 1:
|
||||||
|
key = DEFAULT_KEY[:-1] + key
|
||||||
|
|
||||||
|
# Handle name as str or bytes
|
||||||
|
if isinstance(name, str):
|
||||||
|
name = name.encode("utf-8")
|
||||||
|
|
||||||
|
h_name = channel_hash(name)
|
||||||
|
h_key = channel_hash(key)
|
||||||
|
result: int = h_name ^ h_key
|
||||||
|
return result
|
||||||
|
|
||||||
def hexstr(barray: bytes) -> str:
|
def hexstr(barray: bytes) -> str:
|
||||||
"""Print a string of hex digits"""
|
"""Print a string of hex digits"""
|
||||||
@@ -692,3 +718,33 @@ def message_to_json(message: Message, multiline: bool=False) -> str:
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
json = MessageToJson(message, including_default_value_fields=True) # type: ignore[call-arg] # pylint: disable=E1123
|
json = MessageToJson(message, including_default_value_fields=True) # type: ignore[call-arg] # pylint: disable=E1123
|
||||||
return stripnl(json) if not multiline else json
|
return stripnl(json) if not multiline else json
|
||||||
|
|
||||||
|
|
||||||
|
def to_node_num(node_id: Union[int, str]) -> int:
|
||||||
|
"""
|
||||||
|
Normalize a node id from int | '!hex' | '0xhex' | 'decimal' to int.
|
||||||
|
"""
|
||||||
|
if isinstance(node_id, int):
|
||||||
|
return node_id
|
||||||
|
s = str(node_id).strip()
|
||||||
|
if s.startswith("!"):
|
||||||
|
s = s[1:]
|
||||||
|
if s.lower().startswith("0x"):
|
||||||
|
return int(s, 16)
|
||||||
|
try:
|
||||||
|
return int(s, 10)
|
||||||
|
except ValueError:
|
||||||
|
return int(s, 16)
|
||||||
|
|
||||||
|
def flags_to_list(flag_type, flags: int) -> List[str]:
|
||||||
|
"""Given a flag_type that's a protobuf EnumTypeWrapper, and a flag int, give a list of flags enabled."""
|
||||||
|
ret = []
|
||||||
|
for key in flag_type.keys():
|
||||||
|
if key == "EXCLUDED_NONE":
|
||||||
|
continue
|
||||||
|
if flags & flag_type.Value(key):
|
||||||
|
ret.append(key)
|
||||||
|
flags = flags - flag_type.Value(key)
|
||||||
|
if flags > 0:
|
||||||
|
ret.append(f"UNKNOWN_ADDITIONAL_FLAGS({flags})")
|
||||||
|
return ret
|
||||||
|
|||||||
4989
poetry.lock
generated
4989
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
Submodule protobufs updated: 8caf423964...7eb3258fa0
@@ -1,20 +1,20 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "meshtastic"
|
name = "meshtastic"
|
||||||
version = "2.7.3"
|
version = "2.7.5"
|
||||||
description = "Python API & client shell for talking to Meshtastic devices"
|
description = "Python API & client shell for talking to Meshtastic devices"
|
||||||
authors = ["Meshtastic Developers <contact@meshtastic.org>"]
|
authors = ["Meshtastic Developers <contact@meshtastic.org>"]
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.9,<3.14" # 3.9 is needed for pandas, bleak requires <3.14
|
python = "^3.9,<3.15" # 3.9 is needed for pandas
|
||||||
pyserial = "^3.5"
|
pyserial = "^3.5"
|
||||||
protobuf = ">=4.21.12"
|
protobuf = ">=4.21.12"
|
||||||
tabulate = "^0.9.0"
|
tabulate = "^0.9.0"
|
||||||
requests = "^2.31.0"
|
requests = "^2.31.0"
|
||||||
pyyaml = "^6.0.1"
|
pyyaml = "^6.0.1"
|
||||||
pypubsub = "^4.0.3"
|
pypubsub = "^4.0.3"
|
||||||
bleak = "^0.22.3"
|
bleak = ">=0.22.3"
|
||||||
packaging = "^24.0"
|
packaging = "^24.0"
|
||||||
argcomplete = { version = "^3.5.2", optional = true }
|
argcomplete = { version = "^3.5.2", optional = true }
|
||||||
pyqrcode = { version = "^1.2.1", optional = true }
|
pyqrcode = { version = "^1.2.1", optional = true }
|
||||||
@@ -34,7 +34,7 @@ pytest-cov = "^5.0.0"
|
|||||||
pdoc3 = "^0.10.0"
|
pdoc3 = "^0.10.0"
|
||||||
autopep8 = "^2.1.0"
|
autopep8 = "^2.1.0"
|
||||||
pylint = "^3.2.3"
|
pylint = "^3.2.3"
|
||||||
pyinstaller = "^6.8.0"
|
pyinstaller = "^6.10.0"
|
||||||
mypy = "^1.10.0"
|
mypy = "^1.10.0"
|
||||||
mypy-protobuf = "^3.3.0"
|
mypy-protobuf = "^3.3.0"
|
||||||
types-protobuf = "^5.26.0.20240422"
|
types-protobuf = "^5.26.0.20240422"
|
||||||
|
|||||||
Reference in New Issue
Block a user