From 89d81c9c7aac825c687f588c08a6e225659b7ad3 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Sun, 31 May 2026 09:42:55 -0700 Subject: [PATCH 1/4] Inject options in nanopb .options files into the protobuf files used for code generation --- bin/inject_nanopb_options.py | 331 +++++++++++++++++++ bin/regen-protobufs.sh | 13 + meshtastic/protobuf/admin_pb2.py | 105 +++--- meshtastic/protobuf/apponly_pb2.py | 9 +- meshtastic/protobuf/atak_pb2.py | 311 ++++++++++++----- meshtastic/protobuf/atak_pb2.pyi | 1 - meshtastic/protobuf/cannedmessages_pb2.py | 9 +- meshtastic/protobuf/channel_pb2.py | 25 +- meshtastic/protobuf/clientonly_pb2.py | 15 +- meshtastic/protobuf/config_pb2.py | 141 +++++--- meshtastic/protobuf/connection_status_pb2.py | 29 +- meshtastic/protobuf/device_ui_pb2.py | 63 ++-- meshtastic/protobuf/deviceonly_pb2.py | 44 ++- meshtastic/protobuf/interdevice_pb2.py | 17 +- meshtastic/protobuf/mesh_pb2.py | 319 ++++++++++++------ meshtastic/protobuf/module_config_pb2.py | 151 ++++++--- meshtastic/protobuf/mqtt_pb2.py | 19 +- meshtastic/protobuf/rtttl_pb2.py | 9 +- meshtastic/protobuf/serial_hal_pb2.py | 25 +- meshtastic/protobuf/storeforward_pb2.py | 25 +- meshtastic/protobuf/telemetry_pb2.py | 77 +++-- meshtastic/protobuf/xmodem_pb2.py | 17 +- 22 files changed, 1297 insertions(+), 458 deletions(-) create mode 100644 bin/inject_nanopb_options.py diff --git a/bin/inject_nanopb_options.py b/bin/inject_nanopb_options.py new file mode 100644 index 0000000..bfd1b19 --- /dev/null +++ b/bin/inject_nanopb_options.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python3 +"""Inject nanopb .options constraints as inline field options into a .proto file. + +The nanopb .options file format is specific to the nanopb C generator and is +ignored by standard protoc (including --python_out). By injecting the options +directly into the proto file's field declarations, protoc will embed them in +the serialized descriptor, making them accessible in Python via: + + from meshtastic.protobuf import mesh_pb2, nanopb_pb2 + field = mesh_pb2.DESCRIPTOR.message_types_by_name['User'].fields_by_name['long_name'] + opts = field.GetOptions().Extensions[nanopb_pb2.nanopb] + print(opts.max_size) # 40 + +Usage: + inject_nanopb_options.py + +The proto_file is modified in-place. Intended to operate on temporary copies +generated by regen-protobufs.sh, not the source .proto files. +""" + +import re +import sys +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + +# IntSize enum values from nanopb.proto +INT_SIZE_ENUM = {8: "IS_8", 16: "IS_16", 32: "IS_32", 64: "IS_64"} + +# Options that are valid proto FieldOptions and useful outside of C code generation. +# We skip C-only options (anonymous_oneof, no_unions, skip_message, packed_struct, +# packed_enum, mangle_names, callback_datatype, callback_function, descriptorsize, +# type_override) since they either don't apply to proto fields or are C-specific. +FIELD_OPTIONS = frozenset( + { + "max_size", + "max_length", + "max_count", + "int_size", + "fixed_length", + "fixed_count", + "long_names", + "proto3", + "default_has", + "sort_by_tag", + "msgid", + } +) + + +def parse_value(s: str) -> Any: + """Convert an option value string to an appropriate Python type.""" + if s.lstrip("-").isdigit(): + return int(s) + if s.lower() == "true": + return True + if s.lower() == "false": + return False + return s + + +def parse_options_file( + path: Path, +) -> Tuple[Dict[Tuple[str, ...], Dict[str, Any]], Dict[str, Dict[str, Any]]]: + """Parse a nanopb .options file. + + Returns: + specific: maps (message_path..., field_name) -> {option: value} + e.g. ('User', 'long_name') or ('Route', 'Link', 'uid') + wildcard: maps field_name -> {option: value} + applies to any field with this name in the same proto file + """ + specific: Dict[Tuple[str, ...], Dict[str, Any]] = {} + wildcard: Dict[str, Dict[str, Any]] = {} + + with open(path) as f: + for line in f: + # Strip inline comments + comment_pos = line.find("#") + if comment_pos >= 0: + line = line[:comment_pos] + line = line.strip().lstrip("*").strip() + if not line: + continue + + tokens = line.split() + if len(tokens) < 2: + continue + + pattern = tokens[0] + opts: Dict[str, Any] = {} + for tok in tokens[1:]: + if ":" in tok: + k, v = tok.split(":", 1) + if k in FIELD_OPTIONS: + opts[k] = parse_value(v) + + if not opts: + continue + + if "." in pattern: + # e.g. "User.long_name" -> key=('User', 'long_name') + # or "Route.Link.uid" -> key=('Route', 'Link', 'uid') + parts = tuple(pattern.split(".")) + if parts in specific: + specific[parts].update(opts) + else: + specific[parts] = opts + else: + # wildcard: applies to any field with this name + if pattern in wildcard: + wildcard[pattern].update(opts) + else: + wildcard[pattern] = opts + + return specific, wildcard + + +def format_nanopb_opts(opts: Dict[str, Any]) -> str: + """Format a dict of nanopb options as a proto field options annotation string.""" + parts = [] + for k, v in opts.items(): + if k == "int_size": + enum_val = INT_SIZE_ENUM.get(v, f"IS_{v}") + parts.append(f"(nanopb).int_size = {enum_val}") + elif isinstance(v, bool): + parts.append(f"(nanopb).{k} = {'true' if v else 'false'}") + else: + parts.append(f"(nanopb).{k} = {v}") + return ", ".join(parts) + + +def message_path_matches( + context_stack: List[Tuple[str, str]], msg_path: Tuple[str, ...] +) -> bool: + """Check if the current message context ends with msg_path. + + context_stack entries are ('message'|'oneof'|'enum', name). + msg_path is the tuple of message names from the options pattern, + e.g. ('User',) or ('Route', 'Link'). + """ + msg_names = [name for kind, name in context_stack if kind == "message"] + n = len(msg_path) + return len(msg_names) >= n and tuple(msg_names[-n:]) == msg_path + + +def inject_into_proto( + content: str, + specific: Dict[Tuple[str, ...], Dict[str, Any]], + wildcard: Dict[str, Dict[str, Any]], + nanopb_import_path: str, +) -> str: + """Inject nanopb field options into a proto file's text content. + + Adds an import for nanopb.proto if not already present. + Returns the modified content. + """ + if not specific and not wildcard: + return content + + lines = content.split("\n") + + # Check if nanopb is already imported (after sed fixup, it will be + # 'meshtastic/protobuf/nanopb.proto') + nanopb_already_imported = any( + "nanopb.proto" in line + for line in lines + if line.strip().startswith("import") + ) + + # Track the index of the last import line so we can insert after it + last_import_idx = max( + ( + i + for i, line in enumerate(lines) + if line.strip().startswith("import ") and line.strip().endswith(";") + ), + default=-1, + ) + + # State + context_stack: List[Tuple[str, str]] = [] # ('message'|'oneof'|'enum', name) + result: List[str] = [] + import_added = nanopb_already_imported + + # Patterns for proto structural elements + message_re = re.compile(r"^(\s*)message\s+(\w+)\s*\{") + oneof_re = re.compile(r"^(\s*)oneof\s+(\w+)\s*\{") + enum_re = re.compile(r"^(\s*)enum\s+(\w+)\s*\{") + close_re = re.compile(r"^\s*\}") + + # Pattern for field declarations: + # indent [optional|repeated] type name = number [options] ; + # We exclude map<> fields (different syntax, nanopb handles them differently) + # and enum value lines (no type keyword before the name). + field_re = re.compile( + r"^(\s*)" # (1) indent + r"(optional\s+|repeated\s+)?" # (2) optional qualifier + r"([\w.]+)\s+" # (3) field type (possibly qualified like google.protobuf.Any) + r"(\w+)\s*" # (4) field name + r"=\s*(\d+)" # (5) field number + r"(?:\s*\[([^\]]*)\])?" # (6) existing options, without brackets + r"\s*;" # trailing semicolon + ) + + for i, line in enumerate(lines): + # Insert nanopb import right after the last existing import line. + # Only do this when there IS an existing import (last_import_idx >= 0); + # if there are no imports we fall through to the syntax-line fallback below. + if not import_added and last_import_idx >= 0 and i == last_import_idx + 1: + result.append(f'import "{nanopb_import_path}";') + import_added = True + + # --- Track message/oneof/enum nesting --- + m = message_re.match(line) + if m: + context_stack.append(("message", m.group(2))) + result.append(line) + continue + + m = oneof_re.match(line) + if m: + context_stack.append(("oneof", m.group(2))) + result.append(line) + continue + + m = enum_re.match(line) + if m: + context_stack.append(("enum", m.group(2))) + result.append(line) + continue + + if close_re.match(line) and context_stack: + context_stack.pop() + result.append(line) + continue + + # Skip field injection inside enum bodies (enum values look like fields + # but should not have nanopb options added) + in_enum = bool(context_stack) and context_stack[-1][0] == "enum" + + # --- Try to match and modify a field declaration --- + m = field_re.match(line) + if m and not in_enum: + indent = m.group(1) + qualifier = m.group(2) or "" + ftype = m.group(3) + fname = m.group(4) + fnum = m.group(5) + existing_opts = m.group(6) or "" + + # Collect applicable nanopb options (wildcard < specific) + extra: Dict[str, Any] = {} + + # 1. Wildcard: any field with this name in this proto file + if fname in wildcard: + extra.update(wildcard[fname]) + + # 2. Specific: check all keys whose last element is fname and whose + # preceding path matches the current message context + for key, opts in specific.items(): + if key[-1] == fname: + msg_path = key[:-1] + if message_path_matches(context_stack, msg_path): + extra.update(opts) + break + + if extra: + nanopb_str = format_nanopb_opts(extra) + if existing_opts.strip(): + opts_block = f"[{existing_opts}, {nanopb_str}]" + else: + opts_block = f"[{nanopb_str}]" + qual = qualifier.rstrip() + sep = " " if qual else "" + line = f"{indent}{qual}{sep}{ftype} {fname} = {fnum} {opts_block};" + + result.append(line) + + # Edge case: if there were no import lines, add nanopb import after syntax line + if not import_added: + for i, line in enumerate(result): + if line.strip().startswith("syntax") and line.strip().endswith(";"): + result.insert(i + 1, f'import "{nanopb_import_path}";') + break + + return "\n".join(result) + + +def main() -> int: + if len(sys.argv) != 3: + print( + f"Usage: {sys.argv[0]} ", + file=sys.stderr, + ) + return 1 + + opts_path = Path(sys.argv[1]) + proto_path = Path(sys.argv[2]) + + if not opts_path.exists(): + print(f"Options file not found: {opts_path}", file=sys.stderr) + return 1 + + if not proto_path.exists(): + print(f"Proto file not found: {proto_path}", file=sys.stderr) + return 1 + + specific, wildcard = parse_options_file(opts_path) + total = len(specific) + len(wildcard) + + if total == 0: + print(f" [{opts_path.name}] No injectable options found, skipping.") + return 0 + + content = proto_path.read_text() + + # After regen-protobufs.sh's sed fixup, the nanopb import path is: + nanopb_import_path = "meshtastic/protobuf/nanopb.proto" + + modified = inject_into_proto(content, specific, wildcard, nanopb_import_path) + proto_path.write_text(modified) + + print( + f" [{opts_path.name}] Injected {len(specific)} specific + " + f"{len(wildcard)} wildcard option(s) into {proto_path.name}" + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/bin/regen-protobufs.sh b/bin/regen-protobufs.sh index 981b990..70df9e2 100755 --- a/bin/regen-protobufs.sh +++ b/bin/regen-protobufs.sh @@ -46,6 +46,19 @@ $SEDCMD 's/^import "meshtastic\//import "meshtastic\/protobuf\//' "${INDIR}/"*.p $SEDCMD 's/^import "nanopb.proto"/import "meshtastic\/protobuf\/nanopb.proto"/' "${INDIR}/"*.proto +# Inject nanopb .options constraints as inline proto field options so that +# protoc --python_out embeds them in the generated descriptors. Python code +# can then read them via: +# field.GetOptions().Extensions[nanopb_pb2.nanopb].max_size +echo "Injecting nanopb options into proto files..." +for OPTS_FILE in "${INDIR}"/*.options; do + BASENAME=$(basename "${OPTS_FILE}" .options) + PROTO_FILE="${INDIR}/${BASENAME}.proto" + if [ -f "${PROTO_FILE}" ]; then + python3 ./bin/inject_nanopb_options.py "${OPTS_FILE}" "${PROTO_FILE}" + fi +done + # Generate the python files ./nanopb-0.4.8/generator-bin/protoc -I=$TMPDIR/in --python_out "${OUTDIR}" "--mypy_out=${PYIDIR}" $INDIR/*.proto diff --git a/meshtastic/protobuf/admin_pb2.py b/meshtastic/protobuf/admin_pb2.py index d10620d..7f82d0d 100644 --- a/meshtastic/protobuf/admin_pb2.py +++ b/meshtastic/protobuf/admin_pb2.py @@ -17,9 +17,10 @@ from meshtastic.protobuf import connection_status_pb2 as meshtastic_dot_protobuf from meshtastic.protobuf import device_ui_pb2 as meshtastic_dot_protobuf_dot_device__ui__pb2 from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2 from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot_module__config__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/admin.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a+meshtastic/protobuf/connection_status.proto\x1a#meshtastic/protobuf/device_ui.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a\'meshtastic/protobuf/module_config.proto\"\x9e\x1d\n\x0c\x41\x64minMessage\x12\x17\n\x0fsession_passkey\x18\x65 \x01(\x0c\x12\x1d\n\x13get_channel_request\x18\x01 \x01(\rH\x00\x12<\n\x14get_channel_response\x18\x02 \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x1b\n\x11get_owner_request\x18\x03 \x01(\x08H\x00\x12\x37\n\x12get_owner_response\x18\x04 \x01(\x0b\x32\x19.meshtastic.protobuf.UserH\x00\x12J\n\x12get_config_request\x18\x05 \x01(\x0e\x32,.meshtastic.protobuf.AdminMessage.ConfigTypeH\x00\x12:\n\x13get_config_response\x18\x06 \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12W\n\x19get_module_config_request\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.AdminMessage.ModuleConfigTypeH\x00\x12G\n\x1aget_module_config_response\x18\x08 \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12\x34\n*get_canned_message_module_messages_request\x18\n \x01(\x08H\x00\x12\x35\n+get_canned_message_module_messages_response\x18\x0b \x01(\tH\x00\x12%\n\x1bget_device_metadata_request\x18\x0c \x01(\x08H\x00\x12K\n\x1cget_device_metadata_response\x18\r \x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12\x1e\n\x14get_ringtone_request\x18\x0e \x01(\x08H\x00\x12\x1f\n\x15get_ringtone_response\x18\x0f \x01(\tH\x00\x12.\n$get_device_connection_status_request\x18\x10 \x01(\x08H\x00\x12\\\n%get_device_connection_status_response\x18\x11 \x01(\x0b\x32+.meshtastic.protobuf.DeviceConnectionStatusH\x00\x12:\n\x0cset_ham_mode\x18\x12 \x01(\x0b\x32\".meshtastic.protobuf.HamParametersH\x00\x12/\n%get_node_remote_hardware_pins_request\x18\x13 \x01(\x08H\x00\x12\x65\n&get_node_remote_hardware_pins_response\x18\x14 \x01(\x0b\x32\x33.meshtastic.protobuf.NodeRemoteHardwarePinsResponseH\x00\x12 \n\x16\x65nter_dfu_mode_request\x18\x15 \x01(\x08H\x00\x12\x1d\n\x13\x64\x65lete_file_request\x18\x16 \x01(\tH\x00\x12\x13\n\tset_scale\x18\x17 \x01(\rH\x00\x12N\n\x12\x62\x61\x63kup_preferences\x18\x18 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12O\n\x13restore_preferences\x18\x19 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12U\n\x19remove_backup_preferences\x18\x1a \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12H\n\x10send_input_event\x18\x1b \x01(\x0b\x32,.meshtastic.protobuf.AdminMessage.InputEventH\x00\x12.\n\tset_owner\x18 \x01(\x0b\x32\x19.meshtastic.protobuf.UserH\x00\x12\x33\n\x0bset_channel\x18! \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x31\n\nset_config\x18\" \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12>\n\x11set_module_config\x18# \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12,\n\"set_canned_message_module_messages\x18$ \x01(\tH\x00\x12\x1e\n\x14set_ringtone_message\x18% \x01(\tH\x00\x12\x1b\n\x11remove_by_nodenum\x18& \x01(\rH\x00\x12\x1b\n\x11set_favorite_node\x18\' \x01(\rH\x00\x12\x1e\n\x14remove_favorite_node\x18( \x01(\rH\x00\x12;\n\x12set_fixed_position\x18) \x01(\x0b\x32\x1d.meshtastic.protobuf.PositionH\x00\x12\x1f\n\x15remove_fixed_position\x18* \x01(\x08H\x00\x12\x17\n\rset_time_only\x18+ \x01(\x07H\x00\x12\x1f\n\x15get_ui_config_request\x18, \x01(\x08H\x00\x12\x45\n\x16get_ui_config_response\x18- \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0fstore_ui_config\x18. \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12\x1a\n\x10set_ignored_node\x18/ \x01(\rH\x00\x12\x1d\n\x13remove_ignored_node\x18\x30 \x01(\rH\x00\x12\x1b\n\x11toggle_muted_node\x18\x31 \x01(\rH\x00\x12\x1d\n\x13\x62\x65gin_edit_settings\x18@ \x01(\x08H\x00\x12\x1e\n\x14\x63ommit_edit_settings\x18\x41 \x01(\x08H\x00\x12\x39\n\x0b\x61\x64\x64_contact\x18\x42 \x01(\x0b\x32\".meshtastic.protobuf.SharedContactH\x00\x12\x45\n\x10key_verification\x18\x43 \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationAdminH\x00\x12\x1e\n\x14\x66\x61\x63tory_reset_device\x18^ \x01(\x05H\x00\x12 \n\x12reboot_ota_seconds\x18_ \x01(\x05\x42\x02\x18\x01H\x00\x12\x18\n\x0e\x65xit_simulator\x18` \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18\x61 \x01(\x05H\x00\x12\x1a\n\x10shutdown_seconds\x18\x62 \x01(\x05H\x00\x12\x1e\n\x14\x66\x61\x63tory_reset_config\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x08H\x00\x12\x41\n\x0bota_request\x18\x66 \x01(\x0b\x32*.meshtastic.protobuf.AdminMessage.OTAEventH\x00\x12:\n\rsensor_config\x18g \x01(\x0b\x32!.meshtastic.protobuf.SensorConfigH\x00\x12:\n\rlockdown_auth\x18h \x01(\x0b\x32!.meshtastic.protobuf.LockdownAuthH\x00\x1aS\n\nInputEvent\x12\x12\n\nevent_code\x18\x01 \x01(\r\x12\x0f\n\x07kb_char\x18\x02 \x01(\r\x12\x0f\n\x07touch_x\x18\x03 \x01(\r\x12\x0f\n\x07touch_y\x18\x04 \x01(\r\x1aS\n\x08OTAEvent\x12\x35\n\x0freboot_ota_mode\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.OTAMode\x12\x10\n\x08ota_hash\x18\x02 \x01(\x0c\"\xd6\x01\n\nConfigType\x12\x11\n\rDEVICE_CONFIG\x10\x00\x12\x13\n\x0fPOSITION_CONFIG\x10\x01\x12\x10\n\x0cPOWER_CONFIG\x10\x02\x12\x12\n\x0eNETWORK_CONFIG\x10\x03\x12\x12\n\x0e\x44ISPLAY_CONFIG\x10\x04\x12\x0f\n\x0bLORA_CONFIG\x10\x05\x12\x14\n\x10\x42LUETOOTH_CONFIG\x10\x06\x12\x13\n\x0fSECURITY_CONFIG\x10\x07\x12\x15\n\x11SESSIONKEY_CONFIG\x10\x08\x12\x13\n\x0f\x44\x45VICEUI_CONFIG\x10\t\"\x83\x03\n\x10ModuleConfigType\x12\x0f\n\x0bMQTT_CONFIG\x10\x00\x12\x11\n\rSERIAL_CONFIG\x10\x01\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x02\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x03\x12\x14\n\x10RANGETEST_CONFIG\x10\x04\x12\x14\n\x10TELEMETRY_CONFIG\x10\x05\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10\x06\x12\x10\n\x0c\x41UDIO_CONFIG\x10\x07\x12\x19\n\x15REMOTEHARDWARE_CONFIG\x10\x08\x12\x17\n\x13NEIGHBORINFO_CONFIG\x10\t\x12\x1a\n\x16\x41MBIENTLIGHTING_CONFIG\x10\n\x12\x1a\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x0b\x12\x15\n\x11PAXCOUNTER_CONFIG\x10\x0c\x12\x18\n\x14STATUSMESSAGE_CONFIG\x10\r\x12\x1c\n\x18TRAFFICMANAGEMENT_CONFIG\x10\x0e\x12\x0e\n\nTAK_CONFIG\x10\x0f\"#\n\x0e\x42\x61\x63kupLocation\x12\t\n\x05\x46LASH\x10\x00\x12\x06\n\x02SD\x10\x01\x42\x11\n\x0fpayload_variant\"h\n\x0cLockdownAuth\x12\x12\n\npassphrase\x18\x01 \x01(\x0c\x12\x17\n\x0f\x62oots_remaining\x18\x02 \x01(\r\x12\x19\n\x11valid_until_epoch\x18\x03 \x01(\r\x12\x10\n\x08lock_now\x18\x04 \x01(\x08\"[\n\rHamParameters\x12\x11\n\tcall_sign\x18\x01 \x01(\t\x12\x10\n\x08tx_power\x18\x02 \x01(\x05\x12\x11\n\tfrequency\x18\x03 \x01(\x02\x12\x12\n\nshort_name\x18\x04 \x01(\t\"o\n\x1eNodeRemoteHardwarePinsResponse\x12M\n\x19node_remote_hardware_pins\x18\x01 \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePin\"|\n\rSharedContact\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x15\n\rshould_ignore\x18\x03 \x01(\x08\x12\x19\n\x11manually_verified\x18\x04 \x01(\x08\"\xa5\x02\n\x14KeyVerificationAdmin\x12K\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x35.meshtastic.protobuf.KeyVerificationAdmin.MessageType\x12\x16\n\x0eremote_nodenum\x18\x02 \x01(\r\x12\r\n\x05nonce\x18\x03 \x01(\x04\x12\x1c\n\x0fsecurity_number\x18\x04 \x01(\rH\x00\x88\x01\x01\"g\n\x0bMessageType\x12\x19\n\x15INITIATE_VERIFICATION\x10\x00\x12\x1b\n\x17PROVIDE_SECURITY_NUMBER\x10\x01\x12\r\n\tDO_VERIFY\x10\x02\x12\x11\n\rDO_NOT_VERIFY\x10\x03\x42\x12\n\x10_security_number\"\xf2\x01\n\x0cSensorConfig\x12\x37\n\x0cscd4x_config\x18\x01 \x01(\x0b\x32!.meshtastic.protobuf.SCD4X_config\x12\x37\n\x0csen5x_config\x18\x02 \x01(\x0b\x32!.meshtastic.protobuf.SEN5X_config\x12\x37\n\x0cscd30_config\x18\x03 \x01(\x0b\x32!.meshtastic.protobuf.SCD30_config\x12\x37\n\x0cshtxx_config\x18\x04 \x01(\x0b\x32!.meshtastic.protobuf.SHTXX_config\"\xe2\x02\n\x0cSCD4X_config\x12\x14\n\x07set_asc\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13set_target_co2_conc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fset_temperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cset_altitude\x18\x04 \x01(\rH\x03\x88\x01\x01\x12!\n\x14set_ambient_pressure\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rfactory_reset\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1b\n\x0eset_power_mode\x18\x07 \x01(\x08H\x06\x88\x01\x01\x42\n\n\x08_set_ascB\x16\n\x14_set_target_co2_concB\x12\n\x10_set_temperatureB\x0f\n\r_set_altitudeB\x17\n\x15_set_ambient_pressureB\x10\n\x0e_factory_resetB\x11\n\x0f_set_power_mode\"v\n\x0cSEN5X_config\x12\x1c\n\x0fset_temperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11set_one_shot_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_set_temperatureB\x14\n\x12_set_one_shot_mode\"\xb4\x02\n\x0cSCD30_config\x12\x14\n\x07set_asc\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13set_target_co2_conc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fset_temperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cset_altitude\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18set_measurement_interval\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x17\n\nsoft_reset\x18\x06 \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_set_ascB\x16\n\x14_set_target_co2_concB\x12\n\x10_set_temperatureB\x0f\n\r_set_altitudeB\x1b\n\x19_set_measurement_intervalB\r\n\x0b_soft_reset\":\n\x0cSHTXX_config\x12\x19\n\x0cset_accuracy\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x0f\n\r_set_accuracy*7\n\x07OTAMode\x12\x11\n\rNO_REBOOT_OTA\x10\x00\x12\x0b\n\x07OTA_BLE\x10\x01\x12\x0c\n\x08OTA_WIFI\x10\x02\x42\x61\n\x14org.meshtastic.protoB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/admin.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a+meshtastic/protobuf/connection_status.proto\x1a#meshtastic/protobuf/device_ui.proto\x1a\x1emeshtastic/protobuf/mesh.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a meshtastic/protobuf/nanopb.proto\"\xf0\x1d\n\x0c\x41\x64minMessage\x12\x1e\n\x0fsession_passkey\x18\x65 \x01(\x0c\x42\x05\x92?\x02\x08\x08\x12\x1d\n\x13get_channel_request\x18\x01 \x01(\rH\x00\x12<\n\x14get_channel_response\x18\x02 \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x1b\n\x11get_owner_request\x18\x03 \x01(\x08H\x00\x12\x37\n\x12get_owner_response\x18\x04 \x01(\x0b\x32\x19.meshtastic.protobuf.UserH\x00\x12J\n\x12get_config_request\x18\x05 \x01(\x0e\x32,.meshtastic.protobuf.AdminMessage.ConfigTypeH\x00\x12:\n\x13get_config_response\x18\x06 \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12W\n\x19get_module_config_request\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.AdminMessage.ModuleConfigTypeH\x00\x12G\n\x1aget_module_config_response\x18\x08 \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12\x34\n*get_canned_message_module_messages_request\x18\n \x01(\x08H\x00\x12=\n+get_canned_message_module_messages_response\x18\x0b \x01(\tB\x06\x92?\x03\x08\xc9\x01H\x00\x12%\n\x1bget_device_metadata_request\x18\x0c \x01(\x08H\x00\x12K\n\x1cget_device_metadata_response\x18\r \x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12\x1e\n\x14get_ringtone_request\x18\x0e \x01(\x08H\x00\x12\'\n\x15get_ringtone_response\x18\x0f \x01(\tB\x06\x92?\x03\x08\xe7\x01H\x00\x12.\n$get_device_connection_status_request\x18\x10 \x01(\x08H\x00\x12\\\n%get_device_connection_status_response\x18\x11 \x01(\x0b\x32+.meshtastic.protobuf.DeviceConnectionStatusH\x00\x12:\n\x0cset_ham_mode\x18\x12 \x01(\x0b\x32\".meshtastic.protobuf.HamParametersH\x00\x12/\n%get_node_remote_hardware_pins_request\x18\x13 \x01(\x08H\x00\x12\x65\n&get_node_remote_hardware_pins_response\x18\x14 \x01(\x0b\x32\x33.meshtastic.protobuf.NodeRemoteHardwarePinsResponseH\x00\x12 \n\x16\x65nter_dfu_mode_request\x18\x15 \x01(\x08H\x00\x12%\n\x13\x64\x65lete_file_request\x18\x16 \x01(\tB\x06\x92?\x03\x08\xc9\x01H\x00\x12\x13\n\tset_scale\x18\x17 \x01(\rH\x00\x12N\n\x12\x62\x61\x63kup_preferences\x18\x18 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12O\n\x13restore_preferences\x18\x19 \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12U\n\x19remove_backup_preferences\x18\x1a \x01(\x0e\x32\x30.meshtastic.protobuf.AdminMessage.BackupLocationH\x00\x12H\n\x10send_input_event\x18\x1b \x01(\x0b\x32,.meshtastic.protobuf.AdminMessage.InputEventH\x00\x12.\n\tset_owner\x18 \x01(\x0b\x32\x19.meshtastic.protobuf.UserH\x00\x12\x33\n\x0bset_channel\x18! \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x31\n\nset_config\x18\" \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12>\n\x11set_module_config\x18# \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12\x34\n\"set_canned_message_module_messages\x18$ \x01(\tB\x06\x92?\x03\x08\xc9\x01H\x00\x12&\n\x14set_ringtone_message\x18% \x01(\tB\x06\x92?\x03\x08\xe7\x01H\x00\x12\x1b\n\x11remove_by_nodenum\x18& \x01(\rH\x00\x12\x1b\n\x11set_favorite_node\x18\' \x01(\rH\x00\x12\x1e\n\x14remove_favorite_node\x18( \x01(\rH\x00\x12;\n\x12set_fixed_position\x18) \x01(\x0b\x32\x1d.meshtastic.protobuf.PositionH\x00\x12\x1f\n\x15remove_fixed_position\x18* \x01(\x08H\x00\x12\x17\n\rset_time_only\x18+ \x01(\x07H\x00\x12\x1f\n\x15get_ui_config_request\x18, \x01(\x08H\x00\x12\x45\n\x16get_ui_config_response\x18- \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0fstore_ui_config\x18. \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12\x1a\n\x10set_ignored_node\x18/ \x01(\rH\x00\x12\x1d\n\x13remove_ignored_node\x18\x30 \x01(\rH\x00\x12\x1b\n\x11toggle_muted_node\x18\x31 \x01(\rH\x00\x12\x1d\n\x13\x62\x65gin_edit_settings\x18@ \x01(\x08H\x00\x12\x1e\n\x14\x63ommit_edit_settings\x18\x41 \x01(\x08H\x00\x12\x39\n\x0b\x61\x64\x64_contact\x18\x42 \x01(\x0b\x32\".meshtastic.protobuf.SharedContactH\x00\x12\x45\n\x10key_verification\x18\x43 \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationAdminH\x00\x12\x1e\n\x14\x66\x61\x63tory_reset_device\x18^ \x01(\x05H\x00\x12 \n\x12reboot_ota_seconds\x18_ \x01(\x05\x42\x02\x18\x01H\x00\x12\x18\n\x0e\x65xit_simulator\x18` \x01(\x08H\x00\x12\x18\n\x0ereboot_seconds\x18\x61 \x01(\x05H\x00\x12\x1a\n\x10shutdown_seconds\x18\x62 \x01(\x05H\x00\x12\x1e\n\x14\x66\x61\x63tory_reset_config\x18\x63 \x01(\x05H\x00\x12\x16\n\x0cnodedb_reset\x18\x64 \x01(\x08H\x00\x12\x41\n\x0bota_request\x18\x66 \x01(\x0b\x32*.meshtastic.protobuf.AdminMessage.OTAEventH\x00\x12:\n\rsensor_config\x18g \x01(\x0b\x32!.meshtastic.protobuf.SensorConfigH\x00\x12:\n\rlockdown_auth\x18h \x01(\x0b\x32!.meshtastic.protobuf.LockdownAuthH\x00\x1ao\n\nInputEvent\x12\x19\n\nevent_code\x18\x01 \x01(\rB\x05\x92?\x02\x38\x08\x12\x16\n\x07kb_char\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08\x12\x16\n\x07touch_x\x18\x03 \x01(\rB\x05\x92?\x02\x38\x10\x12\x16\n\x07touch_y\x18\x04 \x01(\rB\x05\x92?\x02\x38\x10\x1aZ\n\x08OTAEvent\x12\x35\n\x0freboot_ota_mode\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.OTAMode\x12\x17\n\x08ota_hash\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08 \"\xd6\x01\n\nConfigType\x12\x11\n\rDEVICE_CONFIG\x10\x00\x12\x13\n\x0fPOSITION_CONFIG\x10\x01\x12\x10\n\x0cPOWER_CONFIG\x10\x02\x12\x12\n\x0eNETWORK_CONFIG\x10\x03\x12\x12\n\x0e\x44ISPLAY_CONFIG\x10\x04\x12\x0f\n\x0bLORA_CONFIG\x10\x05\x12\x14\n\x10\x42LUETOOTH_CONFIG\x10\x06\x12\x13\n\x0fSECURITY_CONFIG\x10\x07\x12\x15\n\x11SESSIONKEY_CONFIG\x10\x08\x12\x13\n\x0f\x44\x45VICEUI_CONFIG\x10\t\"\x83\x03\n\x10ModuleConfigType\x12\x0f\n\x0bMQTT_CONFIG\x10\x00\x12\x11\n\rSERIAL_CONFIG\x10\x01\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x02\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x03\x12\x14\n\x10RANGETEST_CONFIG\x10\x04\x12\x14\n\x10TELEMETRY_CONFIG\x10\x05\x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10\x06\x12\x10\n\x0c\x41UDIO_CONFIG\x10\x07\x12\x19\n\x15REMOTEHARDWARE_CONFIG\x10\x08\x12\x17\n\x13NEIGHBORINFO_CONFIG\x10\t\x12\x1a\n\x16\x41MBIENTLIGHTING_CONFIG\x10\n\x12\x1a\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x0b\x12\x15\n\x11PAXCOUNTER_CONFIG\x10\x0c\x12\x18\n\x14STATUSMESSAGE_CONFIG\x10\r\x12\x1c\n\x18TRAFFICMANAGEMENT_CONFIG\x10\x0e\x12\x0e\n\nTAK_CONFIG\x10\x0f\"#\n\x0e\x42\x61\x63kupLocation\x12\t\n\x05\x46LASH\x10\x00\x12\x06\n\x02SD\x10\x01\x42\x11\n\x0fpayload_variant\"o\n\x0cLockdownAuth\x12\x19\n\npassphrase\x18\x01 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x17\n\x0f\x62oots_remaining\x18\x02 \x01(\r\x12\x19\n\x11valid_until_epoch\x18\x03 \x01(\r\x12\x10\n\x08lock_now\x18\x04 \x01(\x08\"i\n\rHamParameters\x12\x18\n\tcall_sign\x18\x01 \x01(\tB\x05\x92?\x02\x08\x08\x12\x10\n\x08tx_power\x18\x02 \x01(\x05\x12\x11\n\tfrequency\x18\x03 \x01(\x02\x12\x19\n\nshort_name\x18\x04 \x01(\tB\x05\x92?\x02\x08\x05\"v\n\x1eNodeRemoteHardwarePinsResponse\x12T\n\x19node_remote_hardware_pins\x18\x01 \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePinB\x05\x92?\x02\x10\x10\"|\n\rSharedContact\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12\x15\n\rshould_ignore\x18\x03 \x01(\x08\x12\x19\n\x11manually_verified\x18\x04 \x01(\x08\"\xa5\x02\n\x14KeyVerificationAdmin\x12K\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x35.meshtastic.protobuf.KeyVerificationAdmin.MessageType\x12\x16\n\x0eremote_nodenum\x18\x02 \x01(\r\x12\r\n\x05nonce\x18\x03 \x01(\x04\x12\x1c\n\x0fsecurity_number\x18\x04 \x01(\rH\x00\x88\x01\x01\"g\n\x0bMessageType\x12\x19\n\x15INITIATE_VERIFICATION\x10\x00\x12\x1b\n\x17PROVIDE_SECURITY_NUMBER\x10\x01\x12\r\n\tDO_VERIFY\x10\x02\x12\x11\n\rDO_NOT_VERIFY\x10\x03\x42\x12\n\x10_security_number\"\xf2\x01\n\x0cSensorConfig\x12\x37\n\x0cscd4x_config\x18\x01 \x01(\x0b\x32!.meshtastic.protobuf.SCD4X_config\x12\x37\n\x0csen5x_config\x18\x02 \x01(\x0b\x32!.meshtastic.protobuf.SEN5X_config\x12\x37\n\x0cscd30_config\x18\x03 \x01(\x0b\x32!.meshtastic.protobuf.SCD30_config\x12\x37\n\x0cshtxx_config\x18\x04 \x01(\x0b\x32!.meshtastic.protobuf.SHTXX_config\"\xe2\x02\n\x0cSCD4X_config\x12\x14\n\x07set_asc\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13set_target_co2_conc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fset_temperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cset_altitude\x18\x04 \x01(\rH\x03\x88\x01\x01\x12!\n\x14set_ambient_pressure\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x1a\n\rfactory_reset\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x1b\n\x0eset_power_mode\x18\x07 \x01(\x08H\x06\x88\x01\x01\x42\n\n\x08_set_ascB\x16\n\x14_set_target_co2_concB\x12\n\x10_set_temperatureB\x0f\n\r_set_altitudeB\x17\n\x15_set_ambient_pressureB\x10\n\x0e_factory_resetB\x11\n\x0f_set_power_mode\"v\n\x0cSEN5X_config\x12\x1c\n\x0fset_temperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11set_one_shot_mode\x18\x02 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_set_temperatureB\x14\n\x12_set_one_shot_mode\"\xb4\x02\n\x0cSCD30_config\x12\x14\n\x07set_asc\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12 \n\x13set_target_co2_conc\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1c\n\x0fset_temperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x19\n\x0cset_altitude\x18\x04 \x01(\rH\x03\x88\x01\x01\x12%\n\x18set_measurement_interval\x18\x05 \x01(\rH\x04\x88\x01\x01\x12\x17\n\nsoft_reset\x18\x06 \x01(\x08H\x05\x88\x01\x01\x42\n\n\x08_set_ascB\x16\n\x14_set_target_co2_concB\x12\n\x10_set_temperatureB\x0f\n\r_set_altitudeB\x1b\n\x19_set_measurement_intervalB\r\n\x0b_soft_reset\":\n\x0cSHTXX_config\x12\x19\n\x0cset_accuracy\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x0f\n\r_set_accuracy*7\n\x07OTAMode\x12\x11\n\rNO_REBOOT_OTA\x10\x00\x12\x0b\n\x07OTA_BLE\x10\x01\x12\x0c\n\x08OTA_WIFI\x10\x02\x42\x61\n\x14org.meshtastic.protoB\x0b\x41\x64minProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -27,42 +28,72 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.admin_p if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\013AdminProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _ADMINMESSAGE_INPUTEVENT.fields_by_name['event_code']._options = None + _ADMINMESSAGE_INPUTEVENT.fields_by_name['event_code']._serialized_options = b'\222?\0028\010' + _ADMINMESSAGE_INPUTEVENT.fields_by_name['kb_char']._options = None + _ADMINMESSAGE_INPUTEVENT.fields_by_name['kb_char']._serialized_options = b'\222?\0028\010' + _ADMINMESSAGE_INPUTEVENT.fields_by_name['touch_x']._options = None + _ADMINMESSAGE_INPUTEVENT.fields_by_name['touch_x']._serialized_options = b'\222?\0028\020' + _ADMINMESSAGE_INPUTEVENT.fields_by_name['touch_y']._options = None + _ADMINMESSAGE_INPUTEVENT.fields_by_name['touch_y']._serialized_options = b'\222?\0028\020' + _ADMINMESSAGE_OTAEVENT.fields_by_name['ota_hash']._options = None + _ADMINMESSAGE_OTAEVENT.fields_by_name['ota_hash']._serialized_options = b'\222?\002\010 ' + _ADMINMESSAGE.fields_by_name['session_passkey']._options = None + _ADMINMESSAGE.fields_by_name['session_passkey']._serialized_options = b'\222?\002\010\010' + _ADMINMESSAGE.fields_by_name['get_canned_message_module_messages_response']._options = None + _ADMINMESSAGE.fields_by_name['get_canned_message_module_messages_response']._serialized_options = b'\222?\003\010\311\001' + _ADMINMESSAGE.fields_by_name['get_ringtone_response']._options = None + _ADMINMESSAGE.fields_by_name['get_ringtone_response']._serialized_options = b'\222?\003\010\347\001' + _ADMINMESSAGE.fields_by_name['delete_file_request']._options = None + _ADMINMESSAGE.fields_by_name['delete_file_request']._serialized_options = b'\222?\003\010\311\001' + _ADMINMESSAGE.fields_by_name['set_canned_message_module_messages']._options = None + _ADMINMESSAGE.fields_by_name['set_canned_message_module_messages']._serialized_options = b'\222?\003\010\311\001' + _ADMINMESSAGE.fields_by_name['set_ringtone_message']._options = None + _ADMINMESSAGE.fields_by_name['set_ringtone_message']._serialized_options = b'\222?\003\010\347\001' _ADMINMESSAGE.fields_by_name['reboot_ota_seconds']._options = None _ADMINMESSAGE.fields_by_name['reboot_ota_seconds']._serialized_options = b'\030\001' - _globals['_OTAMODE']._serialized_start=5852 - _globals['_OTAMODE']._serialized_end=5907 - _globals['_ADMINMESSAGE']._serialized_start=281 - _globals['_ADMINMESSAGE']._serialized_end=4023 - _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_start=3192 - _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_end=3275 - _globals['_ADMINMESSAGE_OTAEVENT']._serialized_start=3277 - _globals['_ADMINMESSAGE_OTAEVENT']._serialized_end=3360 - _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_start=3363 - _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_end=3577 - _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_start=3580 - _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_end=3967 - _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_start=3969 - _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_end=4004 - _globals['_LOCKDOWNAUTH']._serialized_start=4025 - _globals['_LOCKDOWNAUTH']._serialized_end=4129 - _globals['_HAMPARAMETERS']._serialized_start=4131 - _globals['_HAMPARAMETERS']._serialized_end=4222 - _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_start=4224 - _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_end=4335 - _globals['_SHAREDCONTACT']._serialized_start=4337 - _globals['_SHAREDCONTACT']._serialized_end=4461 - _globals['_KEYVERIFICATIONADMIN']._serialized_start=4464 - _globals['_KEYVERIFICATIONADMIN']._serialized_end=4757 - _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_start=4634 - _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_end=4737 - _globals['_SENSORCONFIG']._serialized_start=4760 - _globals['_SENSORCONFIG']._serialized_end=5002 - _globals['_SCD4X_CONFIG']._serialized_start=5005 - _globals['_SCD4X_CONFIG']._serialized_end=5359 - _globals['_SEN5X_CONFIG']._serialized_start=5361 - _globals['_SEN5X_CONFIG']._serialized_end=5479 - _globals['_SCD30_CONFIG']._serialized_start=5482 - _globals['_SCD30_CONFIG']._serialized_end=5790 - _globals['_SHTXX_CONFIG']._serialized_start=5792 - _globals['_SHTXX_CONFIG']._serialized_end=5850 + _LOCKDOWNAUTH.fields_by_name['passphrase']._options = None + _LOCKDOWNAUTH.fields_by_name['passphrase']._serialized_options = b'\222?\002\010 ' + _HAMPARAMETERS.fields_by_name['call_sign']._options = None + _HAMPARAMETERS.fields_by_name['call_sign']._serialized_options = b'\222?\002\010\010' + _HAMPARAMETERS.fields_by_name['short_name']._options = None + _HAMPARAMETERS.fields_by_name['short_name']._serialized_options = b'\222?\002\010\005' + _NODEREMOTEHARDWAREPINSRESPONSE.fields_by_name['node_remote_hardware_pins']._options = None + _NODEREMOTEHARDWAREPINSRESPONSE.fields_by_name['node_remote_hardware_pins']._serialized_options = b'\222?\002\020\020' + _globals['_OTAMODE']._serialized_start=5996 + _globals['_OTAMODE']._serialized_end=6051 + _globals['_ADMINMESSAGE']._serialized_start=315 + _globals['_ADMINMESSAGE']._serialized_end=4139 + _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_start=3273 + _globals['_ADMINMESSAGE_INPUTEVENT']._serialized_end=3384 + _globals['_ADMINMESSAGE_OTAEVENT']._serialized_start=3386 + _globals['_ADMINMESSAGE_OTAEVENT']._serialized_end=3476 + _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_start=3479 + _globals['_ADMINMESSAGE_CONFIGTYPE']._serialized_end=3693 + _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_start=3696 + _globals['_ADMINMESSAGE_MODULECONFIGTYPE']._serialized_end=4083 + _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_start=4085 + _globals['_ADMINMESSAGE_BACKUPLOCATION']._serialized_end=4120 + _globals['_LOCKDOWNAUTH']._serialized_start=4141 + _globals['_LOCKDOWNAUTH']._serialized_end=4252 + _globals['_HAMPARAMETERS']._serialized_start=4254 + _globals['_HAMPARAMETERS']._serialized_end=4359 + _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_start=4361 + _globals['_NODEREMOTEHARDWAREPINSRESPONSE']._serialized_end=4479 + _globals['_SHAREDCONTACT']._serialized_start=4481 + _globals['_SHAREDCONTACT']._serialized_end=4605 + _globals['_KEYVERIFICATIONADMIN']._serialized_start=4608 + _globals['_KEYVERIFICATIONADMIN']._serialized_end=4901 + _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_start=4778 + _globals['_KEYVERIFICATIONADMIN_MESSAGETYPE']._serialized_end=4881 + _globals['_SENSORCONFIG']._serialized_start=4904 + _globals['_SENSORCONFIG']._serialized_end=5146 + _globals['_SCD4X_CONFIG']._serialized_start=5149 + _globals['_SCD4X_CONFIG']._serialized_end=5503 + _globals['_SEN5X_CONFIG']._serialized_start=5505 + _globals['_SEN5X_CONFIG']._serialized_end=5623 + _globals['_SCD30_CONFIG']._serialized_start=5626 + _globals['_SCD30_CONFIG']._serialized_end=5934 + _globals['_SHTXX_CONFIG']._serialized_start=5936 + _globals['_SHTXX_CONFIG']._serialized_end=5994 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/apponly_pb2.py b/meshtastic/protobuf/apponly_pb2.py index 70e04e8..9f5d99f 100644 --- a/meshtastic/protobuf/apponly_pb2.py +++ b/meshtastic/protobuf/apponly_pb2.py @@ -13,9 +13,10 @@ _sym_db = _symbol_database.Default() from meshtastic.protobuf import channel_pb2 as meshtastic_dot_protobuf_dot_channel__pb2 from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__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.LoRaConfigBc\n\x14org.meshtastic.protoB\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\x1a meshtastic/protobuf/nanopb.proto\"\x88\x01\n\nChannelSet\x12=\n\x08settings\x18\x01 \x03(\x0b\x32$.meshtastic.protobuf.ChannelSettingsB\x05\x92?\x02\x10\x08\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,6 +24,8 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.apponly if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=257 + _CHANNELSET.fields_by_name['settings']._options = None + _CHANNELSET.fields_by_name['settings']._serialized_options = b'\222?\002\020\010' + _globals['_CHANNELSET']._serialized_start=162 + _globals['_CHANNELSET']._serialized_end=298 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/atak_pb2.py b/meshtastic/protobuf/atak_pb2.py index 11728dc..7f6edb5 100644 --- a/meshtastic/protobuf/atak_pb2.py +++ b/meshtastic/protobuf/atak_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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\"\xfd\x02\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\x12\x17\n\x0freceipt_for_uid\x18\x04 \x01(\t\x12>\n\x0creceipt_type\x18\x05 \x01(\x0e\x32(.meshtastic.protobuf.GeoChat.ReceiptType\x12\x11\n\x04lang\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07room_id\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x1d\n\x10voice_profile_id\x18\x08 \x01(\tH\x04\x88\x01\x01\"T\n\x0bReceiptType\x12\x14\n\x10ReceiptType_None\x10\x00\x12\x19\n\x15ReceiptType_Delivered\x10\x01\x12\x14\n\x10ReceiptType_Read\x10\x02\x42\x05\n\x03_toB\x0e\n\x0c_to_callsignB\x07\n\x05_langB\n\n\x08_room_idB\x13\n\x11_voice_profile_id\"_\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\"\xb0\x01\n\rAircraftTrack\x12\x0c\n\x04icao\x18\x01 \x01(\t\x12\x14\n\x0cregistration\x18\x02 \x01(\t\x12\x0e\n\x06\x66light\x18\x03 \x01(\t\x12\x15\n\raircraft_type\x18\x04 \x01(\t\x12\x0e\n\x06squawk\x18\x05 \x01(\r\x12\x10\n\x08\x63\x61tegory\x18\x06 \x01(\t\x12\x10\n\x08rssi_x10\x18\x07 \x01(\x11\x12\x0b\n\x03gps\x18\x08 \x01(\x08\x12\x13\n\x0b\x63ot_host_id\x18\t \x01(\t\"7\n\x0b\x43otGeoPoint\x12\x13\n\x0blat_delta_i\x18\x01 \x01(\x11\x12\x13\n\x0blon_delta_i\x18\x02 \x01(\x11\"\x80\x07\n\nDrawnShape\x12\x32\n\x04kind\x18\x01 \x01(\x0e\x32$.meshtastic.protobuf.DrawnShape.Kind\x12\x38\n\x05style\x18\x02 \x01(\x0e\x32).meshtastic.protobuf.DrawnShape.StyleMode\x12\x10\n\x08major_cm\x18\x03 \x01(\r\x12\x10\n\x08minor_cm\x18\x04 \x01(\r\x12\x11\n\tangle_deg\x18\x05 \x01(\r\x12/\n\x0cstroke_color\x18\x06 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x13\n\x0bstroke_argb\x18\x07 \x01(\x07\x12\x19\n\x11stroke_weight_x10\x18\x08 \x01(\r\x12-\n\nfill_color\x18\t \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x11\n\tfill_argb\x18\n \x01(\x07\x12\x11\n\tlabels_on\x18\x0b \x01(\x08\x12\x19\n\x11vertex_lat_deltas\x18\x12 \x03(\x11\x12\x19\n\x11vertex_lon_deltas\x18\x13 \x03(\x11\x12\x11\n\ttruncated\x18\r \x01(\x08\x12\x1c\n\x14\x62ullseye_distance_dm\x18\x0e \x01(\r\x12\x1c\n\x14\x62ullseye_bearing_ref\x18\x0f \x01(\r\x12\x16\n\x0e\x62ullseye_flags\x18\x10 \x01(\r\x12\x18\n\x10\x62ullseye_uid_ref\x18\x11 \x01(\t\"\xe2\x01\n\x04Kind\x12\x14\n\x10Kind_Unspecified\x10\x00\x12\x0f\n\x0bKind_Circle\x10\x01\x12\x12\n\x0eKind_Rectangle\x10\x02\x12\x11\n\rKind_Freeform\x10\x03\x12\x15\n\x11Kind_Telestration\x10\x04\x12\x10\n\x0cKind_Polygon\x10\x05\x12\x16\n\x12Kind_RangingCircle\x10\x06\x12\x11\n\rKind_Bullseye\x10\x07\x12\x10\n\x0cKind_Ellipse\x10\x08\x12\x12\n\x0eKind_Vehicle2D\x10\t\x12\x12\n\x0eKind_Vehicle3D\x10\n\"u\n\tStyleMode\x12\x19\n\x15StyleMode_Unspecified\x10\x00\x12\x18\n\x14StyleMode_StrokeOnly\x10\x01\x12\x16\n\x12StyleMode_FillOnly\x10\x02\x12\x1b\n\x17StyleMode_StrokeAndFill\x10\x03J\x04\x08\x0c\x10\r\"\xf7\x03\n\x06Marker\x12.\n\x04kind\x18\x01 \x01(\x0e\x32 .meshtastic.protobuf.Marker.Kind\x12(\n\x05\x63olor\x18\x02 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x12\n\ncolor_argb\x18\x03 \x01(\x07\x12\x11\n\treadiness\x18\x04 \x01(\x08\x12\x12\n\nparent_uid\x18\x05 \x01(\t\x12\x13\n\x0bparent_type\x18\x06 \x01(\t\x12\x17\n\x0fparent_callsign\x18\x07 \x01(\t\x12\x0f\n\x07iconset\x18\x08 \x01(\t\"\x98\x02\n\x04Kind\x12\x14\n\x10Kind_Unspecified\x10\x00\x12\r\n\tKind_Spot\x10\x01\x12\x11\n\rKind_Waypoint\x10\x02\x12\x13\n\x0fKind_Checkpoint\x10\x03\x12\x15\n\x11Kind_SelfPosition\x10\x04\x12\x13\n\x0fKind_Symbol2525\x10\x05\x12\x10\n\x0cKind_SpotMap\x10\x06\x12\x13\n\x0fKind_CustomIcon\x10\x07\x12\x12\n\x0eKind_GoToPoint\x10\x08\x12\x15\n\x11Kind_InitialPoint\x10\t\x12\x15\n\x11Kind_ContactPoint\x10\n\x12\x18\n\x14Kind_ObservationPost\x10\x0b\x12\x14\n\x10Kind_ImageMarker\x10\x0c\"\xe0\x01\n\x0fRangeAndBearing\x12\x30\n\x06\x61nchor\x18\x01 \x01(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x12\n\nanchor_uid\x18\x02 \x01(\t\x12\x10\n\x08range_cm\x18\x03 \x01(\r\x12\x14\n\x0c\x62\x65\x61ring_cdeg\x18\x04 \x01(\r\x12/\n\x0cstroke_color\x18\x05 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x13\n\x0bstroke_argb\x18\x06 \x01(\x07\x12\x19\n\x11stroke_weight_x10\x18\x07 \x01(\r\"\xa8\x04\n\x05Route\x12\x31\n\x06method\x18\x01 \x01(\x0e\x32!.meshtastic.protobuf.Route.Method\x12\x37\n\tdirection\x18\x02 \x01(\x0e\x32$.meshtastic.protobuf.Route.Direction\x12\x0e\n\x06prefix\x18\x03 \x01(\t\x12\x19\n\x11stroke_weight_x10\x18\x04 \x01(\r\x12.\n\x05links\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.Route.Link\x12\x11\n\ttruncated\x18\x06 \x01(\x08\x1ai\n\x04Link\x12/\n\x05point\x18\x01 \x01(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x0b\n\x03uid\x18\x02 \x01(\t\x12\x10\n\x08\x63\x61llsign\x18\x03 \x01(\t\x12\x11\n\tlink_type\x18\x04 \x01(\r\"\x87\x01\n\x06Method\x12\x16\n\x12Method_Unspecified\x10\x00\x12\x12\n\x0eMethod_Driving\x10\x01\x12\x12\n\x0eMethod_Walking\x10\x02\x12\x11\n\rMethod_Flying\x10\x03\x12\x13\n\x0fMethod_Swimming\x10\x04\x12\x15\n\x11Method_Watercraft\x10\x05\"P\n\tDirection\x12\x19\n\x15\x44irection_Unspecified\x10\x00\x12\x13\n\x0f\x44irection_Infil\x10\x01\x12\x13\n\x0f\x44irection_Exfil\x10\x02\"\xfa\n\n\rCasevacReport\x12\x41\n\nprecedence\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.CasevacReport.Precedence\x12\x17\n\x0f\x65quipment_flags\x18\x02 \x01(\r\x12\x17\n\x0flitter_patients\x18\x03 \x01(\r\x12\x1b\n\x13\x61mbulatory_patients\x18\x04 \x01(\r\x12=\n\x08security\x18\x05 \x01(\x0e\x32+.meshtastic.protobuf.CasevacReport.Security\x12\x42\n\x0bhlz_marking\x18\x06 \x01(\x0e\x32-.meshtastic.protobuf.CasevacReport.HlzMarking\x12\x13\n\x0bzone_marker\x18\x07 \x01(\t\x12\x13\n\x0bus_military\x18\x08 \x01(\r\x12\x13\n\x0bus_civilian\x18\t \x01(\r\x12\x17\n\x0fnon_us_military\x18\n \x01(\r\x12\x17\n\x0fnon_us_civilian\x18\x0b \x01(\r\x12\x0b\n\x03\x65pw\x18\x0c \x01(\r\x12\r\n\x05\x63hild\x18\r \x01(\r\x12\x15\n\rterrain_flags\x18\x0e \x01(\r\x12\x11\n\tfrequency\x18\x0f \x01(\t\x12\r\n\x05title\x18\x10 \x01(\t\x12\x17\n\x0fmedline_remarks\x18\x11 \x01(\t\x12\x14\n\x0curgent_count\x18\x12 \x01(\r\x12\x1d\n\x15urgent_surgical_count\x18\x13 \x01(\r\x12\x16\n\x0epriority_count\x18\x14 \x01(\r\x12\x15\n\rroutine_count\x18\x15 \x01(\r\x12\x19\n\x11\x63onvenience_count\x18\x16 \x01(\r\x12\x18\n\x10\x65quipment_detail\x18\x17 \x01(\t\x12\x1c\n\x14zone_protected_coord\x18\x18 \x01(\t\x12\x19\n\x11terrain_slope_dir\x18\x19 \x01(\t\x12\x1c\n\x14terrain_other_detail\x18\x1a \x01(\t\x12\x11\n\tmarked_by\x18\x1b \x01(\t\x12\x11\n\tobstacles\x18\x1c \x01(\t\x12\x16\n\x0ewinds_are_from\x18\x1d \x01(\t\x12\x12\n\nfriendlies\x18\x1e \x01(\t\x12\r\n\x05\x65nemy\x18\x1f \x01(\t\x12\x13\n\x0bhlz_remarks\x18 \x01(\t\x12.\n\x05zmist\x18! \x03(\x0b\x32\x1f.meshtastic.protobuf.ZMistEntry\"\xab\x01\n\nPrecedence\x12\x1a\n\x16Precedence_Unspecified\x10\x00\x12\x15\n\x11Precedence_Urgent\x10\x01\x12\x1d\n\x19Precedence_UrgentSurgical\x10\x02\x12\x17\n\x13Precedence_Priority\x10\x03\x12\x16\n\x12Precedence_Routine\x10\x04\x12\x1a\n\x16Precedence_Convenience\x10\x05\"\x9b\x01\n\nHlzMarking\x12\x1a\n\x16HlzMarking_Unspecified\x10\x00\x12\x15\n\x11HlzMarking_Panels\x10\x01\x12\x19\n\x15HlzMarking_PyroSignal\x10\x02\x12\x14\n\x10HlzMarking_Smoke\x10\x03\x12\x13\n\x0fHlzMarking_None\x10\x04\x12\x14\n\x10HlzMarking_Other\x10\x05\"\x92\x01\n\x08Security\x12\x18\n\x14Security_Unspecified\x10\x00\x12\x14\n\x10Security_NoEnemy\x10\x01\x12\x1a\n\x16Security_PossibleEnemy\x10\x02\x12\x18\n\x14Security_EnemyInArea\x10\x03\x12 \n\x1cSecurity_EnemyInArmedContact\x10\x04\"R\n\nZMistEntry\x12\r\n\x05title\x18\x01 \x01(\t\x12\t\n\x01z\x18\x02 \x01(\t\x12\t\n\x01m\x18\x03 \x01(\t\x12\t\n\x01i\x18\x04 \x01(\t\x12\t\n\x01s\x18\x05 \x01(\t\x12\t\n\x01t\x18\x06 \x01(\t\"\x96\x02\n\x0e\x45mergencyAlert\x12\x36\n\x04type\x18\x01 \x01(\x0e\x32(.meshtastic.protobuf.EmergencyAlert.Type\x12\x15\n\rauthoring_uid\x18\x02 \x01(\t\x12\x1c\n\x14\x63\x61ncel_reference_uid\x18\x03 \x01(\t\"\x96\x01\n\x04Type\x12\x14\n\x10Type_Unspecified\x10\x00\x12\x11\n\rType_Alert911\x10\x01\x12\x14\n\x10Type_RingTheBell\x10\x02\x12\x12\n\x0eType_InContact\x10\x03\x12\x19\n\x15Type_GeoFenceBreached\x10\x04\x12\x0f\n\x0bType_Custom\x10\x05\x12\x0f\n\x0bType_Cancel\x10\x06\"\xd8\x03\n\x0bTaskRequest\x12\x11\n\ttask_type\x18\x01 \x01(\t\x12\x12\n\ntarget_uid\x18\x02 \x01(\t\x12\x14\n\x0c\x61ssignee_uid\x18\x03 \x01(\t\x12;\n\x08priority\x18\x04 \x01(\x0e\x32).meshtastic.protobuf.TaskRequest.Priority\x12\x37\n\x06status\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.TaskRequest.Status\x12\x0c\n\x04note\x18\x06 \x01(\t\"u\n\x08Priority\x12\x18\n\x14Priority_Unspecified\x10\x00\x12\x10\n\x0cPriority_Low\x10\x01\x12\x13\n\x0fPriority_Normal\x10\x02\x12\x11\n\rPriority_High\x10\x03\x12\x15\n\x11Priority_Critical\x10\x04\"\x90\x01\n\x06Status\x12\x16\n\x12Status_Unspecified\x10\x00\x12\x12\n\x0eStatus_Pending\x10\x01\x12\x17\n\x13Status_Acknowledged\x10\x02\x12\x15\n\x11Status_InProgress\x10\x03\x12\x14\n\x10Status_Completed\x10\x04\x12\x14\n\x10Status_Cancelled\x10\x05\"`\n\x0eTAKEnvironment\x12\x19\n\x11temperature_c_x10\x18\x01 \x01(\x11\x12\x1a\n\x12wind_direction_deg\x18\x02 \x01(\r\x12\x17\n\x0fwind_speed_cm_s\x18\x03 \x01(\r\"\x96\x03\n\tSensorFov\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.SensorFov.SensorType\x12\x13\n\x0b\x61zimuth_deg\x18\x02 \x01(\r\x12\x14\n\x07range_m\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\x12\x66ov_horizontal_deg\x18\x04 \x01(\r\x12\x18\n\x10\x66ov_vertical_deg\x18\x05 \x01(\r\x12\x15\n\relevation_deg\x18\x06 \x01(\x11\x12\x10\n\x08roll_deg\x18\x07 \x01(\x11\x12\r\n\x05model\x18\x08 \x01(\t\"\xaa\x01\n\nSensorType\x12\x1a\n\x16SensorType_Unspecified\x10\x00\x12\x15\n\x11SensorType_Camera\x10\x01\x12\x16\n\x12SensorType_Thermal\x10\x02\x12\x14\n\x10SensorType_Laser\x10\x03\x12\x12\n\x0eSensorType_Nvg\x10\x04\x12\x11\n\rSensorType_Rf\x10\x05\x12\x14\n\x10SensorType_Other\x10\x06\x42\n\n\x08_range_m\"U\n\x0eTakTalkMessage\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x13\n\x0b\x63hatroom_id\x18\x02 \x01(\t\x12\x0c\n\x04lang\x18\x03 \x01(\t\x12\x12\n\nfrom_voice\x18\x04 \x01(\x08\"h\n\x0fTakTalkRoomData\x12\x1b\n\x0fsender_callsign\x18\x01 \x01(\tB\x02\x18\x01\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x14\n\x0cparticipants\x18\x04 \x03(\t\"\x1e\n\x05Marti\x12\x15\n\rdest_callsign\x18\x01 \x03(\t\"\xcd\x0b\n\x0bTAKPacketV2\x12\x31\n\x0b\x63ot_type_id\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.CotType\x12(\n\x03how\x18\x02 \x01(\x0e\x32\x1b.meshtastic.protobuf.CotHow\x12\x10\n\x08\x63\x61llsign\x18\x03 \x01(\t\x12\'\n\x04team\x18\x04 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12-\n\x04role\x18\x05 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRole\x12\x12\n\nlatitude_i\x18\x06 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x07 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x08 \x01(\x11\x12\r\n\x05speed\x18\t \x01(\r\x12\x0e\n\x06\x63ourse\x18\n \x01(\r\x12\x0f\n\x07\x62\x61ttery\x18\x0b \x01(\r\x12\x34\n\x07geo_src\x18\x0c \x01(\x0e\x32#.meshtastic.protobuf.GeoPointSource\x12\x34\n\x07\x61lt_src\x18\r \x01(\x0e\x32#.meshtastic.protobuf.GeoPointSource\x12\x0b\n\x03uid\x18\x0e \x01(\t\x12\x17\n\x0f\x64\x65vice_callsign\x18\x0f \x01(\t\x12\x15\n\rstale_seconds\x18\x10 \x01(\r\x12\x13\n\x0btak_version\x18\x11 \x01(\t\x12\x12\n\ntak_device\x18\x12 \x01(\t\x12\x14\n\x0ctak_platform\x18\x13 \x01(\t\x12\x0e\n\x06tak_os\x18\x14 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x15 \x01(\t\x12\r\n\x05phone\x18\x16 \x01(\t\x12\x14\n\x0c\x63ot_type_str\x18\x17 \x01(\t\x12\x0f\n\x07remarks\x18\x18 \x01(\t\x12=\n\x0b\x65nvironment\x18\x19 \x01(\x0b\x32#.meshtastic.protobuf.TAKEnvironmentH\x01\x88\x01\x01\x12\x37\n\nsensor_fov\x18\x1a \x01(\x0b\x32\x1e.meshtastic.protobuf.SensorFovH\x02\x88\x01\x01\x12.\n\x05marti\x18\x1d \x01(\x0b\x32\x1a.meshtastic.protobuf.MartiH\x03\x88\x01\x01\x12,\n\x04\x63hat\x18\x1f \x01(\x0b\x32\x1c.meshtastic.protobuf.GeoChatH\x00\x12\x36\n\x08\x61ircraft\x18 \x01(\x0b\x32\".meshtastic.protobuf.AircraftTrackH\x00\x12\x14\n\nraw_detail\x18! \x01(\x0cH\x00\x12\x30\n\x05shape\x18\" \x01(\x0b\x32\x1f.meshtastic.protobuf.DrawnShapeH\x00\x12-\n\x06marker\x18# \x01(\x0b\x32\x1b.meshtastic.protobuf.MarkerH\x00\x12\x33\n\x03rab\x18$ \x01(\x0b\x32$.meshtastic.protobuf.RangeAndBearingH\x00\x12+\n\x05route\x18% \x01(\x0b\x32\x1a.meshtastic.protobuf.RouteH\x00\x12\x35\n\x07\x63\x61sevac\x18& \x01(\x0b\x32\".meshtastic.protobuf.CasevacReportH\x00\x12\x38\n\temergency\x18\' \x01(\x0b\x32#.meshtastic.protobuf.EmergencyAlertH\x00\x12\x30\n\x04task\x18( \x01(\x0b\x32 .meshtastic.protobuf.TaskRequestH\x00\x12\x36\n\x07taktalk\x18) \x01(\x0b\x32#.meshtastic.protobuf.TakTalkMessageH\x00\x12<\n\x0ctaktalk_room\x18* \x01(\x0b\x32$.meshtastic.protobuf.TakTalkRoomDataH\x00\x42\x11\n\x0fpayload_variantB\x0e\n\x0c_environmentB\r\n\x0b_sensor_fovB\x08\n\x06_martiJ\x04\x08\x1b\x10\x1cJ\x04\x08\x1c\x10\x1dJ\x04\x08\x1e\x10\x1f*\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*\x96\x01\n\x06\x43otHow\x12\x16\n\x12\x43otHow_Unspecified\x10\x00\x12\x0e\n\nCotHow_h_e\x10\x01\x12\x0e\n\nCotHow_m_g\x10\x02\x12\x14\n\x10\x43otHow_h_g_i_g_o\x10\x03\x12\x0e\n\nCotHow_m_r\x10\x04\x12\x0e\n\nCotHow_m_f\x10\x05\x12\x0e\n\nCotHow_m_p\x10\x06\x12\x0e\n\nCotHow_m_s\x10\x07*\x83\x17\n\x07\x43otType\x12\x11\n\rCotType_Other\x10\x00\x12\x15\n\x11\x43otType_a_f_G_U_C\x10\x01\x12\x17\n\x13\x43otType_a_f_G_U_C_I\x10\x02\x12\x15\n\x11\x43otType_a_n_A_C_F\x10\x03\x12\x15\n\x11\x43otType_a_n_A_C_H\x10\x04\x12\x13\n\x0f\x43otType_a_n_A_C\x10\x05\x12\x15\n\x11\x43otType_a_f_A_M_H\x10\x06\x12\x13\n\x0f\x43otType_a_f_A_M\x10\x07\x12\x17\n\x13\x43otType_a_f_A_M_F_F\x10\x08\x12\x17\n\x13\x43otType_a_f_A_M_H_A\x10\t\x12\x19\n\x15\x43otType_a_f_A_M_H_U_M\x10\n\x12\x17\n\x13\x43otType_a_h_A_M_F_F\x10\x0b\x12\x17\n\x13\x43otType_a_h_A_M_H_A\x10\x0c\x12\x13\n\x0f\x43otType_a_u_A_C\x10\r\x12\x13\n\x0f\x43otType_t_x_d_d\x10\x0e\x12\x17\n\x13\x43otType_a_f_G_E_S_E\x10\x0f\x12\x17\n\x13\x43otType_a_f_G_E_V_C\x10\x10\x12\x11\n\rCotType_a_f_S\x10\x11\x12\x15\n\x11\x43otType_a_f_A_M_F\x10\x12\x12\x19\n\x15\x43otType_a_f_A_M_F_C_H\x10\x13\x12\x19\n\x15\x43otType_a_f_A_M_F_U_L\x10\x14\x12\x17\n\x13\x43otType_a_f_A_M_F_L\x10\x15\x12\x17\n\x13\x43otType_a_f_A_M_F_P\x10\x16\x12\x15\n\x11\x43otType_a_f_A_C_H\x10\x17\x12\x17\n\x13\x43otType_a_n_A_M_F_Q\x10\x18\x12\x11\n\rCotType_b_t_f\x10\x19\x12\x15\n\x11\x43otType_b_r_f_h_c\x10\x1a\x12\x15\n\x11\x43otType_b_a_o_pan\x10\x1b\x12\x15\n\x11\x43otType_b_a_o_opn\x10\x1c\x12\x15\n\x11\x43otType_b_a_o_can\x10\x1d\x12\x15\n\x11\x43otType_b_a_o_tbl\x10\x1e\x12\x11\n\rCotType_b_a_g\x10\x1f\x12\x11\n\rCotType_a_f_G\x10 \x12\x13\n\x0f\x43otType_a_f_G_U\x10!\x12\x11\n\rCotType_a_h_G\x10\"\x12\x11\n\rCotType_a_u_G\x10#\x12\x11\n\rCotType_a_n_G\x10$\x12\x11\n\rCotType_b_m_r\x10%\x12\x13\n\x0f\x43otType_b_m_p_w\x10&\x12\x17\n\x13\x43otType_b_m_p_s_p_i\x10\'\x12\x11\n\rCotType_u_d_f\x10(\x12\x11\n\rCotType_u_d_r\x10)\x12\x13\n\x0f\x43otType_u_d_c_c\x10*\x12\x12\n\x0e\x43otType_u_rb_a\x10+\x12\x11\n\rCotType_a_h_A\x10,\x12\x11\n\rCotType_a_u_A\x10-\x12\x17\n\x13\x43otType_a_f_A_M_H_Q\x10.\x12\x15\n\x11\x43otType_a_f_A_C_F\x10/\x12\x13\n\x0f\x43otType_a_f_A_C\x10\x30\x12\x15\n\x11\x43otType_a_f_A_C_L\x10\x31\x12\x11\n\rCotType_a_f_A\x10\x32\x12\x17\n\x13\x43otType_a_f_A_M_H_C\x10\x33\x12\x17\n\x13\x43otType_a_n_A_M_F_F\x10\x34\x12\x15\n\x11\x43otType_a_u_A_C_F\x10\x35\x12\x1b\n\x17\x43otType_a_f_G_U_C_F_T_A\x10\x36\x12\x19\n\x15\x43otType_a_f_G_U_C_V_S\x10\x37\x12\x19\n\x15\x43otType_a_f_G_U_C_R_X\x10\x38\x12\x19\n\x15\x43otType_a_f_G_U_C_I_Z\x10\x39\x12\x1b\n\x17\x43otType_a_f_G_U_C_E_C_W\x10:\x12\x19\n\x15\x43otType_a_f_G_U_C_I_L\x10;\x12\x19\n\x15\x43otType_a_f_G_U_C_R_O\x10<\x12\x19\n\x15\x43otType_a_f_G_U_C_R_V\x10=\x12\x15\n\x11\x43otType_a_f_G_U_H\x10>\x12\x1b\n\x17\x43otType_a_f_G_U_U_M_S_E\x10?\x12\x19\n\x15\x43otType_a_f_G_U_S_M_C\x10@\x12\x15\n\x11\x43otType_a_f_G_E_S\x10\x41\x12\x13\n\x0f\x43otType_a_f_G_E\x10\x42\x12\x19\n\x15\x43otType_a_f_G_E_V_C_U\x10\x43\x12\x1a\n\x16\x43otType_a_f_G_E_V_C_ps\x10\x44\x12\x15\n\x11\x43otType_a_u_G_E_V\x10\x45\x12\x17\n\x13\x43otType_a_f_S_N_N_R\x10\x46\x12\x13\n\x0f\x43otType_a_f_F_B\x10G\x12\x19\n\x15\x43otType_b_m_p_s_p_loc\x10H\x12\x11\n\rCotType_b_i_v\x10I\x12\x13\n\x0f\x43otType_b_f_t_r\x10J\x12\x13\n\x0f\x43otType_b_f_t_a\x10K\x12\x13\n\x0f\x43otType_u_d_f_m\x10L\x12\x11\n\rCotType_u_d_p\x10M\x12\x15\n\x11\x43otType_b_m_p_s_m\x10N\x12\x13\n\x0f\x43otType_b_m_p_c\x10O\x12\x15\n\x11\x43otType_u_r_b_c_c\x10P\x12\x1a\n\x16\x43otType_u_r_b_bullseye\x10Q\x12\x17\n\x13\x43otType_a_f_G_E_V_A\x10R\x12\x11\n\rCotType_a_n_A\x10S\x12\x17\n\x13\x43otType_a_u_G_U_C_F\x10T\x12\x17\n\x13\x43otType_a_n_G_U_C_F\x10U\x12\x17\n\x13\x43otType_a_h_G_U_C_F\x10V\x12\x17\n\x13\x43otType_a_f_G_U_C_F\x10W\x12\x13\n\x0f\x43otType_a_u_G_I\x10X\x12\x13\n\x0f\x43otType_a_n_G_I\x10Y\x12\x13\n\x0f\x43otType_a_h_G_I\x10Z\x12\x13\n\x0f\x43otType_a_f_G_I\x10[\x12\x17\n\x13\x43otType_a_u_G_E_X_M\x10\\\x12\x17\n\x13\x43otType_a_n_G_E_X_M\x10]\x12\x17\n\x13\x43otType_a_h_G_E_X_M\x10^\x12\x17\n\x13\x43otType_a_f_G_E_X_M\x10_\x12\x11\n\rCotType_a_u_S\x10`\x12\x11\n\rCotType_a_n_S\x10\x61\x12\x11\n\rCotType_a_h_S\x10\x62\x12\x19\n\x15\x43otType_a_u_G_U_C_I_d\x10\x63\x12\x19\n\x15\x43otType_a_n_G_U_C_I_d\x10\x64\x12\x19\n\x15\x43otType_a_h_G_U_C_I_d\x10\x65\x12\x19\n\x15\x43otType_a_f_G_U_C_I_d\x10\x66\x12\x19\n\x15\x43otType_a_u_G_E_V_A_T\x10g\x12\x19\n\x15\x43otType_a_n_G_E_V_A_T\x10h\x12\x19\n\x15\x43otType_a_h_G_E_V_A_T\x10i\x12\x19\n\x15\x43otType_a_f_G_E_V_A_T\x10j\x12\x17\n\x13\x43otType_a_u_G_U_C_I\x10k\x12\x17\n\x13\x43otType_a_n_G_U_C_I\x10l\x12\x17\n\x13\x43otType_a_h_G_U_C_I\x10m\x12\x15\n\x11\x43otType_a_n_G_E_V\x10n\x12\x15\n\x11\x43otType_a_h_G_E_V\x10o\x12\x15\n\x11\x43otType_a_f_G_E_V\x10p\x12\x18\n\x14\x43otType_b_m_p_w_GOTO\x10q\x12\x16\n\x12\x43otType_b_m_p_c_ip\x10r\x12\x16\n\x12\x43otType_b_m_p_c_cp\x10s\x12\x18\n\x14\x43otType_b_m_p_s_p_op\x10t\x12\x11\n\rCotType_u_d_v\x10u\x12\x13\n\x0f\x43otType_u_d_v_m\x10v\x12\x13\n\x0f\x43otType_u_d_c_e\x10w\x12\x13\n\x0f\x43otType_b_i_x_i\x10x\x12\x13\n\x0f\x43otType_b_t_f_d\x10y\x12\x13\n\x0f\x43otType_b_t_f_r\x10z\x12\x13\n\x0f\x43otType_b_a_o_c\x10{\x12\x0f\n\x0b\x43otType_t_s\x10|\x12\x11\n\rCotType_m_t_t\x10}\x12\r\n\tCotType_y\x10~*}\n\x0eGeoPointSource\x12\x1e\n\x1aGeoPointSource_Unspecified\x10\x00\x12\x16\n\x12GeoPointSource_GPS\x10\x01\x12\x17\n\x13GeoPointSource_USER\x10\x02\x12\x1a\n\x16GeoPointSource_NETWORK\x10\x03\x42`\n\x14org.meshtastic.protoB\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\x1a meshtastic/protobuf/nanopb.proto\"\xad\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\x18\n\x06\x64\x65tail\x18\x07 \x01(\x0c\x42\x06\x92?\x03\x08\xdc\x01H\x00\x42\x11\n\x0fpayload_variant\"\x9a\x03\n\x07GeoChat\x12\x17\n\x07message\x18\x01 \x01(\tB\x06\x92?\x03\x08\xc8\x01\x12\x16\n\x02to\x18\x02 \x01(\tB\x05\x92?\x02\x08xH\x00\x88\x01\x01\x12\x1f\n\x0bto_callsign\x18\x03 \x01(\tB\x05\x92?\x02\x08xH\x01\x88\x01\x01\x12\x1e\n\x0freceipt_for_uid\x18\x04 \x01(\tB\x05\x92?\x02\x08\x30\x12>\n\x0creceipt_type\x18\x05 \x01(\x0e\x32(.meshtastic.protobuf.GeoChat.ReceiptType\x12\x11\n\x04lang\x18\x06 \x01(\tH\x02\x88\x01\x01\x12\x14\n\x07room_id\x18\x07 \x01(\tH\x03\x88\x01\x01\x12\x1d\n\x10voice_profile_id\x18\x08 \x01(\tH\x04\x88\x01\x01\"T\n\x0bReceiptType\x12\x14\n\x10ReceiptType_None\x10\x00\x12\x19\n\x15ReceiptType_Delivered\x10\x01\x12\x14\n\x10ReceiptType_Read\x10\x02\x42\x05\n\x03_toB\x0e\n\x0c_to_callsignB\x07\n\x05_langB\n\n\x08_room_idB\x13\n\x11_voice_profile_id\"_\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\" \n\x06Status\x12\x16\n\x07\x62\x61ttery\x18\x01 \x01(\rB\x05\x92?\x02\x38\x08\"B\n\x07\x43ontact\x12\x17\n\x08\x63\x61llsign\x18\x01 \x01(\tB\x05\x92?\x02\x08x\x12\x1e\n\x0f\x64\x65vice_callsign\x18\x02 \x01(\tB\x05\x92?\x02\x08x\"f\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\x15\n\x06\x63ourse\x18\x05 \x01(\rB\x05\x92?\x02\x38\x10\"\xe1\x01\n\rAircraftTrack\x12\x13\n\x04icao\x18\x01 \x01(\tB\x05\x92?\x02\x08\x08\x12\x1b\n\x0cregistration\x18\x02 \x01(\tB\x05\x92?\x02\x08\x10\x12\x15\n\x06\x66light\x18\x03 \x01(\tB\x05\x92?\x02\x08\x10\x12\x1c\n\raircraft_type\x18\x04 \x01(\tB\x05\x92?\x02\x08\x08\x12\x15\n\x06squawk\x18\x05 \x01(\rB\x05\x92?\x02\x38\x10\x12\x17\n\x08\x63\x61tegory\x18\x06 \x01(\tB\x05\x92?\x02\x08\x04\x12\x10\n\x08rssi_x10\x18\x07 \x01(\x11\x12\x0b\n\x03gps\x18\x08 \x01(\x08\x12\x1a\n\x0b\x63ot_host_id\x18\t \x01(\tB\x05\x92?\x02\x08@\"E\n\x0b\x43otGeoPoint\x12\x1a\n\x0blat_delta_i\x18\x01 \x01(\x11\x42\x05\x92?\x02\x38 \x12\x1a\n\x0blon_delta_i\x18\x02 \x01(\x11\x42\x05\x92?\x02\x38 \"\xb8\x07\n\nDrawnShape\x12\x32\n\x04kind\x18\x01 \x01(\x0e\x32$.meshtastic.protobuf.DrawnShape.Kind\x12\x38\n\x05style\x18\x02 \x01(\x0e\x32).meshtastic.protobuf.DrawnShape.StyleMode\x12\x17\n\x08major_cm\x18\x03 \x01(\rB\x05\x92?\x02\x38 \x12\x17\n\x08minor_cm\x18\x04 \x01(\rB\x05\x92?\x02\x38 \x12\x18\n\tangle_deg\x18\x05 \x01(\rB\x05\x92?\x02\x38\x10\x12/\n\x0cstroke_color\x18\x06 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x13\n\x0bstroke_argb\x18\x07 \x01(\x07\x12 \n\x11stroke_weight_x10\x18\x08 \x01(\rB\x05\x92?\x02\x38\x10\x12-\n\nfill_color\x18\t \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x11\n\tfill_argb\x18\n \x01(\x07\x12\x11\n\tlabels_on\x18\x0b \x01(\x08\x12\x19\n\x11vertex_lat_deltas\x18\x12 \x03(\x11\x12\x19\n\x11vertex_lon_deltas\x18\x13 \x03(\x11\x12\x11\n\ttruncated\x18\r \x01(\x08\x12#\n\x14\x62ullseye_distance_dm\x18\x0e \x01(\rB\x05\x92?\x02\x38 \x12#\n\x14\x62ullseye_bearing_ref\x18\x0f \x01(\rB\x05\x92?\x02\x38\x08\x12\x1d\n\x0e\x62ullseye_flags\x18\x10 \x01(\rB\x05\x92?\x02\x38\x08\x12\x1f\n\x10\x62ullseye_uid_ref\x18\x11 \x01(\tB\x05\x92?\x02\x08\x30\"\xe2\x01\n\x04Kind\x12\x14\n\x10Kind_Unspecified\x10\x00\x12\x0f\n\x0bKind_Circle\x10\x01\x12\x12\n\x0eKind_Rectangle\x10\x02\x12\x11\n\rKind_Freeform\x10\x03\x12\x15\n\x11Kind_Telestration\x10\x04\x12\x10\n\x0cKind_Polygon\x10\x05\x12\x16\n\x12Kind_RangingCircle\x10\x06\x12\x11\n\rKind_Bullseye\x10\x07\x12\x10\n\x0cKind_Ellipse\x10\x08\x12\x12\n\x0eKind_Vehicle2D\x10\t\x12\x12\n\x0eKind_Vehicle3D\x10\n\"u\n\tStyleMode\x12\x19\n\x15StyleMode_Unspecified\x10\x00\x12\x18\n\x14StyleMode_StrokeOnly\x10\x01\x12\x16\n\x12StyleMode_FillOnly\x10\x02\x12\x1b\n\x17StyleMode_StrokeAndFill\x10\x03J\x04\x08\x0c\x10\r\"\x93\x04\n\x06Marker\x12.\n\x04kind\x18\x01 \x01(\x0e\x32 .meshtastic.protobuf.Marker.Kind\x12(\n\x05\x63olor\x18\x02 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x12\n\ncolor_argb\x18\x03 \x01(\x07\x12\x11\n\treadiness\x18\x04 \x01(\x08\x12\x19\n\nparent_uid\x18\x05 \x01(\tB\x05\x92?\x02\x08\x30\x12\x1a\n\x0bparent_type\x18\x06 \x01(\tB\x05\x92?\x02\x08\x18\x12\x1e\n\x0fparent_callsign\x18\x07 \x01(\tB\x05\x92?\x02\x08\x18\x12\x16\n\x07iconset\x18\x08 \x01(\tB\x05\x92?\x02\x08P\"\x98\x02\n\x04Kind\x12\x14\n\x10Kind_Unspecified\x10\x00\x12\r\n\tKind_Spot\x10\x01\x12\x11\n\rKind_Waypoint\x10\x02\x12\x13\n\x0fKind_Checkpoint\x10\x03\x12\x15\n\x11Kind_SelfPosition\x10\x04\x12\x13\n\x0fKind_Symbol2525\x10\x05\x12\x10\n\x0cKind_SpotMap\x10\x06\x12\x13\n\x0fKind_CustomIcon\x10\x07\x12\x12\n\x0eKind_GoToPoint\x10\x08\x12\x15\n\x11Kind_InitialPoint\x10\t\x12\x15\n\x11Kind_ContactPoint\x10\n\x12\x18\n\x14Kind_ObservationPost\x10\x0b\x12\x14\n\x10Kind_ImageMarker\x10\x0c\"\xfc\x01\n\x0fRangeAndBearing\x12\x30\n\x06\x61nchor\x18\x01 \x01(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x19\n\nanchor_uid\x18\x02 \x01(\tB\x05\x92?\x02\x08\x30\x12\x17\n\x08range_cm\x18\x03 \x01(\rB\x05\x92?\x02\x38 \x12\x1b\n\x0c\x62\x65\x61ring_cdeg\x18\x04 \x01(\rB\x05\x92?\x02\x38\x10\x12/\n\x0cstroke_color\x18\x05 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12\x13\n\x0bstroke_argb\x18\x06 \x01(\x07\x12 \n\x11stroke_weight_x10\x18\x07 \x01(\rB\x05\x92?\x02\x38\x10\"\xd2\x04\n\x05Route\x12\x31\n\x06method\x18\x01 \x01(\x0e\x32!.meshtastic.protobuf.Route.Method\x12\x37\n\tdirection\x18\x02 \x01(\x0e\x32$.meshtastic.protobuf.Route.Direction\x12\x15\n\x06prefix\x18\x03 \x01(\tB\x05\x92?\x02\x08\x08\x12 \n\x11stroke_weight_x10\x18\x04 \x01(\rB\x05\x92?\x02\x38\x10\x12\x35\n\x05links\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.Route.LinkB\x05\x92?\x02\x10\x10\x12\x11\n\ttruncated\x18\x06 \x01(\x08\x1a~\n\x04Link\x12/\n\x05point\x18\x01 \x01(\x0b\x32 .meshtastic.protobuf.CotGeoPoint\x12\x12\n\x03uid\x18\x02 \x01(\tB\x05\x92?\x02\x08\x30\x12\x17\n\x08\x63\x61llsign\x18\x03 \x01(\tB\x05\x92?\x02\x08\x10\x12\x18\n\tlink_type\x18\x04 \x01(\rB\x05\x92?\x02\x38\x08\"\x87\x01\n\x06Method\x12\x16\n\x12Method_Unspecified\x10\x00\x12\x12\n\x0eMethod_Driving\x10\x01\x12\x12\n\x0eMethod_Walking\x10\x02\x12\x11\n\rMethod_Flying\x10\x03\x12\x13\n\x0fMethod_Swimming\x10\x04\x12\x15\n\x11Method_Watercraft\x10\x05\"P\n\tDirection\x12\x19\n\x15\x44irection_Unspecified\x10\x00\x12\x13\n\x0f\x44irection_Infil\x10\x01\x12\x13\n\x0f\x44irection_Exfil\x10\x02\"\xce\x0b\n\rCasevacReport\x12\x41\n\nprecedence\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.CasevacReport.Precedence\x12\x1e\n\x0f\x65quipment_flags\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08\x12\x1e\n\x0flitter_patients\x18\x03 \x01(\rB\x05\x92?\x02\x38\x08\x12\"\n\x13\x61mbulatory_patients\x18\x04 \x01(\rB\x05\x92?\x02\x38\x08\x12=\n\x08security\x18\x05 \x01(\x0e\x32+.meshtastic.protobuf.CasevacReport.Security\x12\x42\n\x0bhlz_marking\x18\x06 \x01(\x0e\x32-.meshtastic.protobuf.CasevacReport.HlzMarking\x12\x1a\n\x0bzone_marker\x18\x07 \x01(\tB\x05\x92?\x02\x08\x10\x12\x1a\n\x0bus_military\x18\x08 \x01(\rB\x05\x92?\x02\x38\x08\x12\x1a\n\x0bus_civilian\x18\t \x01(\rB\x05\x92?\x02\x38\x08\x12\x1e\n\x0fnon_us_military\x18\n \x01(\rB\x05\x92?\x02\x38\x08\x12\x1e\n\x0fnon_us_civilian\x18\x0b \x01(\rB\x05\x92?\x02\x38\x08\x12\x12\n\x03\x65pw\x18\x0c \x01(\rB\x05\x92?\x02\x38\x08\x12\x14\n\x05\x63hild\x18\r \x01(\rB\x05\x92?\x02\x38\x08\x12\x1c\n\rterrain_flags\x18\x0e \x01(\rB\x05\x92?\x02\x38\x08\x12\x18\n\tfrequency\x18\x0f \x01(\tB\x05\x92?\x02\x08\x10\x12\r\n\x05title\x18\x10 \x01(\t\x12\x17\n\x0fmedline_remarks\x18\x11 \x01(\t\x12\x14\n\x0curgent_count\x18\x12 \x01(\r\x12\x1d\n\x15urgent_surgical_count\x18\x13 \x01(\r\x12\x16\n\x0epriority_count\x18\x14 \x01(\r\x12\x15\n\rroutine_count\x18\x15 \x01(\r\x12\x19\n\x11\x63onvenience_count\x18\x16 \x01(\r\x12\x18\n\x10\x65quipment_detail\x18\x17 \x01(\t\x12\x1c\n\x14zone_protected_coord\x18\x18 \x01(\t\x12\x19\n\x11terrain_slope_dir\x18\x19 \x01(\t\x12\x1c\n\x14terrain_other_detail\x18\x1a \x01(\t\x12\x11\n\tmarked_by\x18\x1b \x01(\t\x12\x11\n\tobstacles\x18\x1c \x01(\t\x12\x16\n\x0ewinds_are_from\x18\x1d \x01(\t\x12\x12\n\nfriendlies\x18\x1e \x01(\t\x12\r\n\x05\x65nemy\x18\x1f \x01(\t\x12\x13\n\x0bhlz_remarks\x18 \x01(\t\x12.\n\x05zmist\x18! \x03(\x0b\x32\x1f.meshtastic.protobuf.ZMistEntry\"\xab\x01\n\nPrecedence\x12\x1a\n\x16Precedence_Unspecified\x10\x00\x12\x15\n\x11Precedence_Urgent\x10\x01\x12\x1d\n\x19Precedence_UrgentSurgical\x10\x02\x12\x17\n\x13Precedence_Priority\x10\x03\x12\x16\n\x12Precedence_Routine\x10\x04\x12\x1a\n\x16Precedence_Convenience\x10\x05\"\x9b\x01\n\nHlzMarking\x12\x1a\n\x16HlzMarking_Unspecified\x10\x00\x12\x15\n\x11HlzMarking_Panels\x10\x01\x12\x19\n\x15HlzMarking_PyroSignal\x10\x02\x12\x14\n\x10HlzMarking_Smoke\x10\x03\x12\x13\n\x0fHlzMarking_None\x10\x04\x12\x14\n\x10HlzMarking_Other\x10\x05\"\x92\x01\n\x08Security\x12\x18\n\x14Security_Unspecified\x10\x00\x12\x14\n\x10Security_NoEnemy\x10\x01\x12\x1a\n\x16Security_PossibleEnemy\x10\x02\x12\x18\n\x14Security_EnemyInArea\x10\x03\x12 \n\x1cSecurity_EnemyInArmedContact\x10\x04\"R\n\nZMistEntry\x12\r\n\x05title\x18\x01 \x01(\t\x12\t\n\x01z\x18\x02 \x01(\t\x12\t\n\x01m\x18\x03 \x01(\t\x12\t\n\x01i\x18\x04 \x01(\t\x12\t\n\x01s\x18\x05 \x01(\t\x12\t\n\x01t\x18\x06 \x01(\t\"\xa4\x02\n\x0e\x45mergencyAlert\x12\x36\n\x04type\x18\x01 \x01(\x0e\x32(.meshtastic.protobuf.EmergencyAlert.Type\x12\x1c\n\rauthoring_uid\x18\x02 \x01(\tB\x05\x92?\x02\x08\x30\x12#\n\x14\x63\x61ncel_reference_uid\x18\x03 \x01(\tB\x05\x92?\x02\x08\x30\"\x96\x01\n\x04Type\x12\x14\n\x10Type_Unspecified\x10\x00\x12\x11\n\rType_Alert911\x10\x01\x12\x14\n\x10Type_RingTheBell\x10\x02\x12\x12\n\x0eType_InContact\x10\x03\x12\x19\n\x15Type_GeoFenceBreached\x10\x04\x12\x0f\n\x0bType_Custom\x10\x05\x12\x0f\n\x0bType_Cancel\x10\x06\"\xf4\x03\n\x0bTaskRequest\x12\x18\n\ttask_type\x18\x01 \x01(\tB\x05\x92?\x02\x08\x0c\x12\x19\n\ntarget_uid\x18\x02 \x01(\tB\x05\x92?\x02\x08 \x12\x1b\n\x0c\x61ssignee_uid\x18\x03 \x01(\tB\x05\x92?\x02\x08 \x12;\n\x08priority\x18\x04 \x01(\x0e\x32).meshtastic.protobuf.TaskRequest.Priority\x12\x37\n\x06status\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.TaskRequest.Status\x12\x13\n\x04note\x18\x06 \x01(\tB\x05\x92?\x02\x08\x30\"u\n\x08Priority\x12\x18\n\x14Priority_Unspecified\x10\x00\x12\x10\n\x0cPriority_Low\x10\x01\x12\x13\n\x0fPriority_Normal\x10\x02\x12\x11\n\rPriority_High\x10\x03\x12\x15\n\x11Priority_Critical\x10\x04\"\x90\x01\n\x06Status\x12\x16\n\x12Status_Unspecified\x10\x00\x12\x12\n\x0eStatus_Pending\x10\x01\x12\x17\n\x13Status_Acknowledged\x10\x02\x12\x15\n\x11Status_InProgress\x10\x03\x12\x14\n\x10Status_Completed\x10\x04\x12\x14\n\x10Status_Cancelled\x10\x05\"`\n\x0eTAKEnvironment\x12\x19\n\x11temperature_c_x10\x18\x01 \x01(\x11\x12\x1a\n\x12wind_direction_deg\x18\x02 \x01(\r\x12\x17\n\x0fwind_speed_cm_s\x18\x03 \x01(\r\"\x96\x03\n\tSensorFov\x12\x37\n\x04type\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.SensorFov.SensorType\x12\x13\n\x0b\x61zimuth_deg\x18\x02 \x01(\r\x12\x14\n\x07range_m\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\x12\x66ov_horizontal_deg\x18\x04 \x01(\r\x12\x18\n\x10\x66ov_vertical_deg\x18\x05 \x01(\r\x12\x15\n\relevation_deg\x18\x06 \x01(\x11\x12\x10\n\x08roll_deg\x18\x07 \x01(\x11\x12\r\n\x05model\x18\x08 \x01(\t\"\xaa\x01\n\nSensorType\x12\x1a\n\x16SensorType_Unspecified\x10\x00\x12\x15\n\x11SensorType_Camera\x10\x01\x12\x16\n\x12SensorType_Thermal\x10\x02\x12\x14\n\x10SensorType_Laser\x10\x03\x12\x12\n\x0eSensorType_Nvg\x10\x04\x12\x11\n\rSensorType_Rf\x10\x05\x12\x14\n\x10SensorType_Other\x10\x06\x42\n\n\x08_range_m\"U\n\x0eTakTalkMessage\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x13\n\x0b\x63hatroom_id\x18\x02 \x01(\t\x12\x0c\n\x04lang\x18\x03 \x01(\t\x12\x12\n\nfrom_voice\x18\x04 \x01(\x08\"h\n\x0fTakTalkRoomData\x12\x1b\n\x0fsender_callsign\x18\x01 \x01(\tB\x02\x18\x01\x12\x0f\n\x07room_id\x18\x02 \x01(\t\x12\x11\n\troom_name\x18\x03 \x01(\t\x12\x14\n\x0cparticipants\x18\x04 \x03(\t\"\x1e\n\x05Marti\x12\x15\n\rdest_callsign\x18\x01 \x03(\t\"\xb0\x0c\n\x0bTAKPacketV2\x12\x31\n\x0b\x63ot_type_id\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.CotType\x12(\n\x03how\x18\x02 \x01(\x0e\x32\x1b.meshtastic.protobuf.CotHow\x12\x17\n\x08\x63\x61llsign\x18\x03 \x01(\tB\x05\x92?\x02\x08x\x12\'\n\x04team\x18\x04 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12-\n\x04role\x18\x05 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRole\x12\x12\n\nlatitude_i\x18\x06 \x01(\x0f\x12\x13\n\x0blongitude_i\x18\x07 \x01(\x0f\x12\x10\n\x08\x61ltitude\x18\x08 \x01(\x11\x12\r\n\x05speed\x18\t \x01(\r\x12\x15\n\x06\x63ourse\x18\n \x01(\rB\x05\x92?\x02\x38\x10\x12\x16\n\x07\x62\x61ttery\x18\x0b \x01(\rB\x05\x92?\x02\x38\x08\x12\x34\n\x07geo_src\x18\x0c \x01(\x0e\x32#.meshtastic.protobuf.GeoPointSource\x12\x34\n\x07\x61lt_src\x18\r \x01(\x0e\x32#.meshtastic.protobuf.GeoPointSource\x12\x12\n\x03uid\x18\x0e \x01(\tB\x05\x92?\x02\x08\x30\x12\x1e\n\x0f\x64\x65vice_callsign\x18\x0f \x01(\tB\x05\x92?\x02\x08x\x12\x1c\n\rstale_seconds\x18\x10 \x01(\rB\x05\x92?\x02\x38\x10\x12\x1a\n\x0btak_version\x18\x11 \x01(\tB\x05\x92?\x02\x08@\x12\x19\n\ntak_device\x18\x12 \x01(\tB\x05\x92?\x02\x08 \x12\x1b\n\x0ctak_platform\x18\x13 \x01(\tB\x05\x92?\x02\x08 \x12\x15\n\x06tak_os\x18\x14 \x01(\tB\x05\x92?\x02\x08\x10\x12\x17\n\x08\x65ndpoint\x18\x15 \x01(\tB\x05\x92?\x02\x08 \x12\x14\n\x05phone\x18\x16 \x01(\tB\x05\x92?\x02\x08\x14\x12\x1b\n\x0c\x63ot_type_str\x18\x17 \x01(\tB\x05\x92?\x02\x08 \x12\x0f\n\x07remarks\x18\x18 \x01(\t\x12=\n\x0b\x65nvironment\x18\x19 \x01(\x0b\x32#.meshtastic.protobuf.TAKEnvironmentH\x01\x88\x01\x01\x12\x37\n\nsensor_fov\x18\x1a \x01(\x0b\x32\x1e.meshtastic.protobuf.SensorFovH\x02\x88\x01\x01\x12.\n\x05marti\x18\x1d \x01(\x0b\x32\x1a.meshtastic.protobuf.MartiH\x03\x88\x01\x01\x12,\n\x04\x63hat\x18\x1f \x01(\x0b\x32\x1c.meshtastic.protobuf.GeoChatH\x00\x12\x36\n\x08\x61ircraft\x18 \x01(\x0b\x32\".meshtastic.protobuf.AircraftTrackH\x00\x12\x1c\n\nraw_detail\x18! \x01(\x0c\x42\x06\x92?\x03\x08\xdc\x01H\x00\x12\x30\n\x05shape\x18\" \x01(\x0b\x32\x1f.meshtastic.protobuf.DrawnShapeH\x00\x12-\n\x06marker\x18# \x01(\x0b\x32\x1b.meshtastic.protobuf.MarkerH\x00\x12\x33\n\x03rab\x18$ \x01(\x0b\x32$.meshtastic.protobuf.RangeAndBearingH\x00\x12+\n\x05route\x18% \x01(\x0b\x32\x1a.meshtastic.protobuf.RouteH\x00\x12\x35\n\x07\x63\x61sevac\x18& \x01(\x0b\x32\".meshtastic.protobuf.CasevacReportH\x00\x12\x38\n\temergency\x18\' \x01(\x0b\x32#.meshtastic.protobuf.EmergencyAlertH\x00\x12\x30\n\x04task\x18( \x01(\x0b\x32 .meshtastic.protobuf.TaskRequestH\x00\x12\x36\n\x07taktalk\x18) \x01(\x0b\x32#.meshtastic.protobuf.TakTalkMessageH\x00\x12<\n\x0ctaktalk_room\x18* \x01(\x0b\x32$.meshtastic.protobuf.TakTalkRoomDataH\x00\x42\x11\n\x0fpayload_variantB\x0e\n\x0c_environmentB\r\n\x0b_sensor_fovB\x08\n\x06_martiJ\x04\x08\x1b\x10\x1cJ\x04\x08\x1c\x10\x1dJ\x04\x08\x1e\x10\x1f*\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*\x96\x01\n\x06\x43otHow\x12\x16\n\x12\x43otHow_Unspecified\x10\x00\x12\x0e\n\nCotHow_h_e\x10\x01\x12\x0e\n\nCotHow_m_g\x10\x02\x12\x14\n\x10\x43otHow_h_g_i_g_o\x10\x03\x12\x0e\n\nCotHow_m_r\x10\x04\x12\x0e\n\nCotHow_m_f\x10\x05\x12\x0e\n\nCotHow_m_p\x10\x06\x12\x0e\n\nCotHow_m_s\x10\x07*\x83\x17\n\x07\x43otType\x12\x11\n\rCotType_Other\x10\x00\x12\x15\n\x11\x43otType_a_f_G_U_C\x10\x01\x12\x17\n\x13\x43otType_a_f_G_U_C_I\x10\x02\x12\x15\n\x11\x43otType_a_n_A_C_F\x10\x03\x12\x15\n\x11\x43otType_a_n_A_C_H\x10\x04\x12\x13\n\x0f\x43otType_a_n_A_C\x10\x05\x12\x15\n\x11\x43otType_a_f_A_M_H\x10\x06\x12\x13\n\x0f\x43otType_a_f_A_M\x10\x07\x12\x17\n\x13\x43otType_a_f_A_M_F_F\x10\x08\x12\x17\n\x13\x43otType_a_f_A_M_H_A\x10\t\x12\x19\n\x15\x43otType_a_f_A_M_H_U_M\x10\n\x12\x17\n\x13\x43otType_a_h_A_M_F_F\x10\x0b\x12\x17\n\x13\x43otType_a_h_A_M_H_A\x10\x0c\x12\x13\n\x0f\x43otType_a_u_A_C\x10\r\x12\x13\n\x0f\x43otType_t_x_d_d\x10\x0e\x12\x17\n\x13\x43otType_a_f_G_E_S_E\x10\x0f\x12\x17\n\x13\x43otType_a_f_G_E_V_C\x10\x10\x12\x11\n\rCotType_a_f_S\x10\x11\x12\x15\n\x11\x43otType_a_f_A_M_F\x10\x12\x12\x19\n\x15\x43otType_a_f_A_M_F_C_H\x10\x13\x12\x19\n\x15\x43otType_a_f_A_M_F_U_L\x10\x14\x12\x17\n\x13\x43otType_a_f_A_M_F_L\x10\x15\x12\x17\n\x13\x43otType_a_f_A_M_F_P\x10\x16\x12\x15\n\x11\x43otType_a_f_A_C_H\x10\x17\x12\x17\n\x13\x43otType_a_n_A_M_F_Q\x10\x18\x12\x11\n\rCotType_b_t_f\x10\x19\x12\x15\n\x11\x43otType_b_r_f_h_c\x10\x1a\x12\x15\n\x11\x43otType_b_a_o_pan\x10\x1b\x12\x15\n\x11\x43otType_b_a_o_opn\x10\x1c\x12\x15\n\x11\x43otType_b_a_o_can\x10\x1d\x12\x15\n\x11\x43otType_b_a_o_tbl\x10\x1e\x12\x11\n\rCotType_b_a_g\x10\x1f\x12\x11\n\rCotType_a_f_G\x10 \x12\x13\n\x0f\x43otType_a_f_G_U\x10!\x12\x11\n\rCotType_a_h_G\x10\"\x12\x11\n\rCotType_a_u_G\x10#\x12\x11\n\rCotType_a_n_G\x10$\x12\x11\n\rCotType_b_m_r\x10%\x12\x13\n\x0f\x43otType_b_m_p_w\x10&\x12\x17\n\x13\x43otType_b_m_p_s_p_i\x10\'\x12\x11\n\rCotType_u_d_f\x10(\x12\x11\n\rCotType_u_d_r\x10)\x12\x13\n\x0f\x43otType_u_d_c_c\x10*\x12\x12\n\x0e\x43otType_u_rb_a\x10+\x12\x11\n\rCotType_a_h_A\x10,\x12\x11\n\rCotType_a_u_A\x10-\x12\x17\n\x13\x43otType_a_f_A_M_H_Q\x10.\x12\x15\n\x11\x43otType_a_f_A_C_F\x10/\x12\x13\n\x0f\x43otType_a_f_A_C\x10\x30\x12\x15\n\x11\x43otType_a_f_A_C_L\x10\x31\x12\x11\n\rCotType_a_f_A\x10\x32\x12\x17\n\x13\x43otType_a_f_A_M_H_C\x10\x33\x12\x17\n\x13\x43otType_a_n_A_M_F_F\x10\x34\x12\x15\n\x11\x43otType_a_u_A_C_F\x10\x35\x12\x1b\n\x17\x43otType_a_f_G_U_C_F_T_A\x10\x36\x12\x19\n\x15\x43otType_a_f_G_U_C_V_S\x10\x37\x12\x19\n\x15\x43otType_a_f_G_U_C_R_X\x10\x38\x12\x19\n\x15\x43otType_a_f_G_U_C_I_Z\x10\x39\x12\x1b\n\x17\x43otType_a_f_G_U_C_E_C_W\x10:\x12\x19\n\x15\x43otType_a_f_G_U_C_I_L\x10;\x12\x19\n\x15\x43otType_a_f_G_U_C_R_O\x10<\x12\x19\n\x15\x43otType_a_f_G_U_C_R_V\x10=\x12\x15\n\x11\x43otType_a_f_G_U_H\x10>\x12\x1b\n\x17\x43otType_a_f_G_U_U_M_S_E\x10?\x12\x19\n\x15\x43otType_a_f_G_U_S_M_C\x10@\x12\x15\n\x11\x43otType_a_f_G_E_S\x10\x41\x12\x13\n\x0f\x43otType_a_f_G_E\x10\x42\x12\x19\n\x15\x43otType_a_f_G_E_V_C_U\x10\x43\x12\x1a\n\x16\x43otType_a_f_G_E_V_C_ps\x10\x44\x12\x15\n\x11\x43otType_a_u_G_E_V\x10\x45\x12\x17\n\x13\x43otType_a_f_S_N_N_R\x10\x46\x12\x13\n\x0f\x43otType_a_f_F_B\x10G\x12\x19\n\x15\x43otType_b_m_p_s_p_loc\x10H\x12\x11\n\rCotType_b_i_v\x10I\x12\x13\n\x0f\x43otType_b_f_t_r\x10J\x12\x13\n\x0f\x43otType_b_f_t_a\x10K\x12\x13\n\x0f\x43otType_u_d_f_m\x10L\x12\x11\n\rCotType_u_d_p\x10M\x12\x15\n\x11\x43otType_b_m_p_s_m\x10N\x12\x13\n\x0f\x43otType_b_m_p_c\x10O\x12\x15\n\x11\x43otType_u_r_b_c_c\x10P\x12\x1a\n\x16\x43otType_u_r_b_bullseye\x10Q\x12\x17\n\x13\x43otType_a_f_G_E_V_A\x10R\x12\x11\n\rCotType_a_n_A\x10S\x12\x17\n\x13\x43otType_a_u_G_U_C_F\x10T\x12\x17\n\x13\x43otType_a_n_G_U_C_F\x10U\x12\x17\n\x13\x43otType_a_h_G_U_C_F\x10V\x12\x17\n\x13\x43otType_a_f_G_U_C_F\x10W\x12\x13\n\x0f\x43otType_a_u_G_I\x10X\x12\x13\n\x0f\x43otType_a_n_G_I\x10Y\x12\x13\n\x0f\x43otType_a_h_G_I\x10Z\x12\x13\n\x0f\x43otType_a_f_G_I\x10[\x12\x17\n\x13\x43otType_a_u_G_E_X_M\x10\\\x12\x17\n\x13\x43otType_a_n_G_E_X_M\x10]\x12\x17\n\x13\x43otType_a_h_G_E_X_M\x10^\x12\x17\n\x13\x43otType_a_f_G_E_X_M\x10_\x12\x11\n\rCotType_a_u_S\x10`\x12\x11\n\rCotType_a_n_S\x10\x61\x12\x11\n\rCotType_a_h_S\x10\x62\x12\x19\n\x15\x43otType_a_u_G_U_C_I_d\x10\x63\x12\x19\n\x15\x43otType_a_n_G_U_C_I_d\x10\x64\x12\x19\n\x15\x43otType_a_h_G_U_C_I_d\x10\x65\x12\x19\n\x15\x43otType_a_f_G_U_C_I_d\x10\x66\x12\x19\n\x15\x43otType_a_u_G_E_V_A_T\x10g\x12\x19\n\x15\x43otType_a_n_G_E_V_A_T\x10h\x12\x19\n\x15\x43otType_a_h_G_E_V_A_T\x10i\x12\x19\n\x15\x43otType_a_f_G_E_V_A_T\x10j\x12\x17\n\x13\x43otType_a_u_G_U_C_I\x10k\x12\x17\n\x13\x43otType_a_n_G_U_C_I\x10l\x12\x17\n\x13\x43otType_a_h_G_U_C_I\x10m\x12\x15\n\x11\x43otType_a_n_G_E_V\x10n\x12\x15\n\x11\x43otType_a_h_G_E_V\x10o\x12\x15\n\x11\x43otType_a_f_G_E_V\x10p\x12\x18\n\x14\x43otType_b_m_p_w_GOTO\x10q\x12\x16\n\x12\x43otType_b_m_p_c_ip\x10r\x12\x16\n\x12\x43otType_b_m_p_c_cp\x10s\x12\x18\n\x14\x43otType_b_m_p_s_p_op\x10t\x12\x11\n\rCotType_u_d_v\x10u\x12\x13\n\x0f\x43otType_u_d_v_m\x10v\x12\x13\n\x0f\x43otType_u_d_c_e\x10w\x12\x13\n\x0f\x43otType_b_i_x_i\x10x\x12\x13\n\x0f\x43otType_b_t_f_d\x10y\x12\x13\n\x0f\x43otType_b_t_f_r\x10z\x12\x13\n\x0f\x43otType_b_a_o_c\x10{\x12\x0f\n\x0b\x43otType_t_s\x10|\x12\x11\n\rCotType_m_t_t\x10}\x12\r\n\tCotType_y\x10~*}\n\x0eGeoPointSource\x12\x1e\n\x1aGeoPointSource_Unspecified\x10\x00\x12\x16\n\x12GeoPointSource_GPS\x10\x01\x12\x17\n\x13GeoPointSource_USER\x10\x02\x12\x1a\n\x16GeoPointSource_NETWORK\x10\x03\x42`\n\x14org.meshtastic.protoB\nATAKProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,88 +22,232 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.atak_pb if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\nATAKProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _TAKPACKET.fields_by_name['detail']._options = None + _TAKPACKET.fields_by_name['detail']._serialized_options = b'\222?\003\010\334\001' + _GEOCHAT.fields_by_name['message']._options = None + _GEOCHAT.fields_by_name['message']._serialized_options = b'\222?\003\010\310\001' + _GEOCHAT.fields_by_name['to']._options = None + _GEOCHAT.fields_by_name['to']._serialized_options = b'\222?\002\010x' + _GEOCHAT.fields_by_name['to_callsign']._options = None + _GEOCHAT.fields_by_name['to_callsign']._serialized_options = b'\222?\002\010x' + _GEOCHAT.fields_by_name['receipt_for_uid']._options = None + _GEOCHAT.fields_by_name['receipt_for_uid']._serialized_options = b'\222?\002\0100' + _STATUS.fields_by_name['battery']._options = None + _STATUS.fields_by_name['battery']._serialized_options = b'\222?\0028\010' + _CONTACT.fields_by_name['callsign']._options = None + _CONTACT.fields_by_name['callsign']._serialized_options = b'\222?\002\010x' + _CONTACT.fields_by_name['device_callsign']._options = None + _CONTACT.fields_by_name['device_callsign']._serialized_options = b'\222?\002\010x' + _PLI.fields_by_name['course']._options = None + _PLI.fields_by_name['course']._serialized_options = b'\222?\0028\020' + _AIRCRAFTTRACK.fields_by_name['icao']._options = None + _AIRCRAFTTRACK.fields_by_name['icao']._serialized_options = b'\222?\002\010\010' + _AIRCRAFTTRACK.fields_by_name['registration']._options = None + _AIRCRAFTTRACK.fields_by_name['registration']._serialized_options = b'\222?\002\010\020' + _AIRCRAFTTRACK.fields_by_name['flight']._options = None + _AIRCRAFTTRACK.fields_by_name['flight']._serialized_options = b'\222?\002\010\020' + _AIRCRAFTTRACK.fields_by_name['aircraft_type']._options = None + _AIRCRAFTTRACK.fields_by_name['aircraft_type']._serialized_options = b'\222?\002\010\010' + _AIRCRAFTTRACK.fields_by_name['squawk']._options = None + _AIRCRAFTTRACK.fields_by_name['squawk']._serialized_options = b'\222?\0028\020' + _AIRCRAFTTRACK.fields_by_name['category']._options = None + _AIRCRAFTTRACK.fields_by_name['category']._serialized_options = b'\222?\002\010\004' + _AIRCRAFTTRACK.fields_by_name['cot_host_id']._options = None + _AIRCRAFTTRACK.fields_by_name['cot_host_id']._serialized_options = b'\222?\002\010@' + _COTGEOPOINT.fields_by_name['lat_delta_i']._options = None + _COTGEOPOINT.fields_by_name['lat_delta_i']._serialized_options = b'\222?\0028 ' + _COTGEOPOINT.fields_by_name['lon_delta_i']._options = None + _COTGEOPOINT.fields_by_name['lon_delta_i']._serialized_options = b'\222?\0028 ' + _DRAWNSHAPE.fields_by_name['major_cm']._options = None + _DRAWNSHAPE.fields_by_name['major_cm']._serialized_options = b'\222?\0028 ' + _DRAWNSHAPE.fields_by_name['minor_cm']._options = None + _DRAWNSHAPE.fields_by_name['minor_cm']._serialized_options = b'\222?\0028 ' + _DRAWNSHAPE.fields_by_name['angle_deg']._options = None + _DRAWNSHAPE.fields_by_name['angle_deg']._serialized_options = b'\222?\0028\020' + _DRAWNSHAPE.fields_by_name['stroke_weight_x10']._options = None + _DRAWNSHAPE.fields_by_name['stroke_weight_x10']._serialized_options = b'\222?\0028\020' + _DRAWNSHAPE.fields_by_name['bullseye_distance_dm']._options = None + _DRAWNSHAPE.fields_by_name['bullseye_distance_dm']._serialized_options = b'\222?\0028 ' + _DRAWNSHAPE.fields_by_name['bullseye_bearing_ref']._options = None + _DRAWNSHAPE.fields_by_name['bullseye_bearing_ref']._serialized_options = b'\222?\0028\010' + _DRAWNSHAPE.fields_by_name['bullseye_flags']._options = None + _DRAWNSHAPE.fields_by_name['bullseye_flags']._serialized_options = b'\222?\0028\010' + _DRAWNSHAPE.fields_by_name['bullseye_uid_ref']._options = None + _DRAWNSHAPE.fields_by_name['bullseye_uid_ref']._serialized_options = b'\222?\002\0100' + _MARKER.fields_by_name['parent_uid']._options = None + _MARKER.fields_by_name['parent_uid']._serialized_options = b'\222?\002\0100' + _MARKER.fields_by_name['parent_type']._options = None + _MARKER.fields_by_name['parent_type']._serialized_options = b'\222?\002\010\030' + _MARKER.fields_by_name['parent_callsign']._options = None + _MARKER.fields_by_name['parent_callsign']._serialized_options = b'\222?\002\010\030' + _MARKER.fields_by_name['iconset']._options = None + _MARKER.fields_by_name['iconset']._serialized_options = b'\222?\002\010P' + _RANGEANDBEARING.fields_by_name['anchor_uid']._options = None + _RANGEANDBEARING.fields_by_name['anchor_uid']._serialized_options = b'\222?\002\0100' + _RANGEANDBEARING.fields_by_name['range_cm']._options = None + _RANGEANDBEARING.fields_by_name['range_cm']._serialized_options = b'\222?\0028 ' + _RANGEANDBEARING.fields_by_name['bearing_cdeg']._options = None + _RANGEANDBEARING.fields_by_name['bearing_cdeg']._serialized_options = b'\222?\0028\020' + _RANGEANDBEARING.fields_by_name['stroke_weight_x10']._options = None + _RANGEANDBEARING.fields_by_name['stroke_weight_x10']._serialized_options = b'\222?\0028\020' + _ROUTE_LINK.fields_by_name['uid']._options = None + _ROUTE_LINK.fields_by_name['uid']._serialized_options = b'\222?\002\0100' + _ROUTE_LINK.fields_by_name['callsign']._options = None + _ROUTE_LINK.fields_by_name['callsign']._serialized_options = b'\222?\002\010\020' + _ROUTE_LINK.fields_by_name['link_type']._options = None + _ROUTE_LINK.fields_by_name['link_type']._serialized_options = b'\222?\0028\010' + _ROUTE.fields_by_name['prefix']._options = None + _ROUTE.fields_by_name['prefix']._serialized_options = b'\222?\002\010\010' + _ROUTE.fields_by_name['stroke_weight_x10']._options = None + _ROUTE.fields_by_name['stroke_weight_x10']._serialized_options = b'\222?\0028\020' + _ROUTE.fields_by_name['links']._options = None + _ROUTE.fields_by_name['links']._serialized_options = b'\222?\002\020\020' + _CASEVACREPORT.fields_by_name['equipment_flags']._options = None + _CASEVACREPORT.fields_by_name['equipment_flags']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['litter_patients']._options = None + _CASEVACREPORT.fields_by_name['litter_patients']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['ambulatory_patients']._options = None + _CASEVACREPORT.fields_by_name['ambulatory_patients']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['zone_marker']._options = None + _CASEVACREPORT.fields_by_name['zone_marker']._serialized_options = b'\222?\002\010\020' + _CASEVACREPORT.fields_by_name['us_military']._options = None + _CASEVACREPORT.fields_by_name['us_military']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['us_civilian']._options = None + _CASEVACREPORT.fields_by_name['us_civilian']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['non_us_military']._options = None + _CASEVACREPORT.fields_by_name['non_us_military']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['non_us_civilian']._options = None + _CASEVACREPORT.fields_by_name['non_us_civilian']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['epw']._options = None + _CASEVACREPORT.fields_by_name['epw']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['child']._options = None + _CASEVACREPORT.fields_by_name['child']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['terrain_flags']._options = None + _CASEVACREPORT.fields_by_name['terrain_flags']._serialized_options = b'\222?\0028\010' + _CASEVACREPORT.fields_by_name['frequency']._options = None + _CASEVACREPORT.fields_by_name['frequency']._serialized_options = b'\222?\002\010\020' + _EMERGENCYALERT.fields_by_name['authoring_uid']._options = None + _EMERGENCYALERT.fields_by_name['authoring_uid']._serialized_options = b'\222?\002\0100' + _EMERGENCYALERT.fields_by_name['cancel_reference_uid']._options = None + _EMERGENCYALERT.fields_by_name['cancel_reference_uid']._serialized_options = b'\222?\002\0100' + _TASKREQUEST.fields_by_name['task_type']._options = None + _TASKREQUEST.fields_by_name['task_type']._serialized_options = b'\222?\002\010\014' + _TASKREQUEST.fields_by_name['target_uid']._options = None + _TASKREQUEST.fields_by_name['target_uid']._serialized_options = b'\222?\002\010 ' + _TASKREQUEST.fields_by_name['assignee_uid']._options = None + _TASKREQUEST.fields_by_name['assignee_uid']._serialized_options = b'\222?\002\010 ' + _TASKREQUEST.fields_by_name['note']._options = None + _TASKREQUEST.fields_by_name['note']._serialized_options = b'\222?\002\0100' _TAKTALKROOMDATA.fields_by_name['sender_callsign']._options = None _TAKTALKROOMDATA.fields_by_name['sender_callsign']._serialized_options = b'\030\001' - _globals['_TEAM']._serialized_start=7899 - _globals['_TEAM']._serialized_end=8091 - _globals['_MEMBERROLE']._serialized_start=8093 - _globals['_MEMBERROLE']._serialized_end=8220 - _globals['_COTHOW']._serialized_start=8223 - _globals['_COTHOW']._serialized_end=8373 - _globals['_COTTYPE']._serialized_start=8376 - _globals['_COTTYPE']._serialized_end=11323 - _globals['_GEOPOINTSOURCE']._serialized_start=11325 - _globals['_GEOPOINTSOURCE']._serialized_end=11450 - _globals['_TAKPACKET']._serialized_start=56 - _globals['_TAKPACKET']._serialized_end=349 - _globals['_GEOCHAT']._serialized_start=352 - _globals['_GEOCHAT']._serialized_end=733 - _globals['_GEOCHAT_RECEIPTTYPE']._serialized_start=584 - _globals['_GEOCHAT_RECEIPTTYPE']._serialized_end=668 - _globals['_GROUP']._serialized_start=735 - _globals['_GROUP']._serialized_end=830 - _globals['_STATUS']._serialized_start=832 - _globals['_STATUS']._serialized_end=857 - _globals['_CONTACT']._serialized_start=859 - _globals['_CONTACT']._serialized_end=911 - _globals['_PLI']._serialized_start=913 - _globals['_PLI']._serialized_end=1008 - _globals['_AIRCRAFTTRACK']._serialized_start=1011 - _globals['_AIRCRAFTTRACK']._serialized_end=1187 - _globals['_COTGEOPOINT']._serialized_start=1189 - _globals['_COTGEOPOINT']._serialized_end=1244 - _globals['_DRAWNSHAPE']._serialized_start=1247 - _globals['_DRAWNSHAPE']._serialized_end=2143 - _globals['_DRAWNSHAPE_KIND']._serialized_start=1792 - _globals['_DRAWNSHAPE_KIND']._serialized_end=2018 - _globals['_DRAWNSHAPE_STYLEMODE']._serialized_start=2020 - _globals['_DRAWNSHAPE_STYLEMODE']._serialized_end=2137 - _globals['_MARKER']._serialized_start=2146 - _globals['_MARKER']._serialized_end=2649 - _globals['_MARKER_KIND']._serialized_start=2369 - _globals['_MARKER_KIND']._serialized_end=2649 - _globals['_RANGEANDBEARING']._serialized_start=2652 - _globals['_RANGEANDBEARING']._serialized_end=2876 - _globals['_ROUTE']._serialized_start=2879 - _globals['_ROUTE']._serialized_end=3431 - _globals['_ROUTE_LINK']._serialized_start=3106 - _globals['_ROUTE_LINK']._serialized_end=3211 - _globals['_ROUTE_METHOD']._serialized_start=3214 - _globals['_ROUTE_METHOD']._serialized_end=3349 - _globals['_ROUTE_DIRECTION']._serialized_start=3351 - _globals['_ROUTE_DIRECTION']._serialized_end=3431 - _globals['_CASEVACREPORT']._serialized_start=3434 - _globals['_CASEVACREPORT']._serialized_end=4836 - _globals['_CASEVACREPORT_PRECEDENCE']._serialized_start=4358 - _globals['_CASEVACREPORT_PRECEDENCE']._serialized_end=4529 - _globals['_CASEVACREPORT_HLZMARKING']._serialized_start=4532 - _globals['_CASEVACREPORT_HLZMARKING']._serialized_end=4687 - _globals['_CASEVACREPORT_SECURITY']._serialized_start=4690 - _globals['_CASEVACREPORT_SECURITY']._serialized_end=4836 - _globals['_ZMISTENTRY']._serialized_start=4838 - _globals['_ZMISTENTRY']._serialized_end=4920 - _globals['_EMERGENCYALERT']._serialized_start=4923 - _globals['_EMERGENCYALERT']._serialized_end=5201 - _globals['_EMERGENCYALERT_TYPE']._serialized_start=5051 - _globals['_EMERGENCYALERT_TYPE']._serialized_end=5201 - _globals['_TASKREQUEST']._serialized_start=5204 - _globals['_TASKREQUEST']._serialized_end=5676 - _globals['_TASKREQUEST_PRIORITY']._serialized_start=5412 - _globals['_TASKREQUEST_PRIORITY']._serialized_end=5529 - _globals['_TASKREQUEST_STATUS']._serialized_start=5532 - _globals['_TASKREQUEST_STATUS']._serialized_end=5676 - _globals['_TAKENVIRONMENT']._serialized_start=5678 - _globals['_TAKENVIRONMENT']._serialized_end=5774 - _globals['_SENSORFOV']._serialized_start=5777 - _globals['_SENSORFOV']._serialized_end=6183 - _globals['_SENSORFOV_SENSORTYPE']._serialized_start=6001 - _globals['_SENSORFOV_SENSORTYPE']._serialized_end=6171 - _globals['_TAKTALKMESSAGE']._serialized_start=6185 - _globals['_TAKTALKMESSAGE']._serialized_end=6270 - _globals['_TAKTALKROOMDATA']._serialized_start=6272 - _globals['_TAKTALKROOMDATA']._serialized_end=6376 - _globals['_MARTI']._serialized_start=6378 - _globals['_MARTI']._serialized_end=6408 - _globals['_TAKPACKETV2']._serialized_start=6411 - _globals['_TAKPACKETV2']._serialized_end=7896 + _TAKPACKETV2.fields_by_name['callsign']._options = None + _TAKPACKETV2.fields_by_name['callsign']._serialized_options = b'\222?\002\010x' + _TAKPACKETV2.fields_by_name['course']._options = None + _TAKPACKETV2.fields_by_name['course']._serialized_options = b'\222?\0028\020' + _TAKPACKETV2.fields_by_name['battery']._options = None + _TAKPACKETV2.fields_by_name['battery']._serialized_options = b'\222?\0028\010' + _TAKPACKETV2.fields_by_name['uid']._options = None + _TAKPACKETV2.fields_by_name['uid']._serialized_options = b'\222?\002\0100' + _TAKPACKETV2.fields_by_name['device_callsign']._options = None + _TAKPACKETV2.fields_by_name['device_callsign']._serialized_options = b'\222?\002\010x' + _TAKPACKETV2.fields_by_name['stale_seconds']._options = None + _TAKPACKETV2.fields_by_name['stale_seconds']._serialized_options = b'\222?\0028\020' + _TAKPACKETV2.fields_by_name['tak_version']._options = None + _TAKPACKETV2.fields_by_name['tak_version']._serialized_options = b'\222?\002\010@' + _TAKPACKETV2.fields_by_name['tak_device']._options = None + _TAKPACKETV2.fields_by_name['tak_device']._serialized_options = b'\222?\002\010 ' + _TAKPACKETV2.fields_by_name['tak_platform']._options = None + _TAKPACKETV2.fields_by_name['tak_platform']._serialized_options = b'\222?\002\010 ' + _TAKPACKETV2.fields_by_name['tak_os']._options = None + _TAKPACKETV2.fields_by_name['tak_os']._serialized_options = b'\222?\002\010\020' + _TAKPACKETV2.fields_by_name['endpoint']._options = None + _TAKPACKETV2.fields_by_name['endpoint']._serialized_options = b'\222?\002\010 ' + _TAKPACKETV2.fields_by_name['phone']._options = None + _TAKPACKETV2.fields_by_name['phone']._serialized_options = b'\222?\002\010\024' + _TAKPACKETV2.fields_by_name['cot_type_str']._options = None + _TAKPACKETV2.fields_by_name['cot_type_str']._serialized_options = b'\222?\002\010 ' + _TAKPACKETV2.fields_by_name['raw_detail']._options = None + _TAKPACKETV2.fields_by_name['raw_detail']._serialized_options = b'\222?\003\010\334\001' + _globals['_TEAM']._serialized_start=8440 + _globals['_TEAM']._serialized_end=8632 + _globals['_MEMBERROLE']._serialized_start=8634 + _globals['_MEMBERROLE']._serialized_end=8761 + _globals['_COTHOW']._serialized_start=8764 + _globals['_COTHOW']._serialized_end=8914 + _globals['_COTTYPE']._serialized_start=8917 + _globals['_COTTYPE']._serialized_end=11864 + _globals['_GEOPOINTSOURCE']._serialized_start=11866 + _globals['_GEOPOINTSOURCE']._serialized_end=11991 + _globals['_TAKPACKET']._serialized_start=90 + _globals['_TAKPACKET']._serialized_end=391 + _globals['_GEOCHAT']._serialized_start=394 + _globals['_GEOCHAT']._serialized_end=804 + _globals['_GEOCHAT_RECEIPTTYPE']._serialized_start=655 + _globals['_GEOCHAT_RECEIPTTYPE']._serialized_end=739 + _globals['_GROUP']._serialized_start=806 + _globals['_GROUP']._serialized_end=901 + _globals['_STATUS']._serialized_start=903 + _globals['_STATUS']._serialized_end=935 + _globals['_CONTACT']._serialized_start=937 + _globals['_CONTACT']._serialized_end=1003 + _globals['_PLI']._serialized_start=1005 + _globals['_PLI']._serialized_end=1107 + _globals['_AIRCRAFTTRACK']._serialized_start=1110 + _globals['_AIRCRAFTTRACK']._serialized_end=1335 + _globals['_COTGEOPOINT']._serialized_start=1337 + _globals['_COTGEOPOINT']._serialized_end=1406 + _globals['_DRAWNSHAPE']._serialized_start=1409 + _globals['_DRAWNSHAPE']._serialized_end=2361 + _globals['_DRAWNSHAPE_KIND']._serialized_start=2010 + _globals['_DRAWNSHAPE_KIND']._serialized_end=2236 + _globals['_DRAWNSHAPE_STYLEMODE']._serialized_start=2238 + _globals['_DRAWNSHAPE_STYLEMODE']._serialized_end=2355 + _globals['_MARKER']._serialized_start=2364 + _globals['_MARKER']._serialized_end=2895 + _globals['_MARKER_KIND']._serialized_start=2615 + _globals['_MARKER_KIND']._serialized_end=2895 + _globals['_RANGEANDBEARING']._serialized_start=2898 + _globals['_RANGEANDBEARING']._serialized_end=3150 + _globals['_ROUTE']._serialized_start=3153 + _globals['_ROUTE']._serialized_end=3747 + _globals['_ROUTE_LINK']._serialized_start=3401 + _globals['_ROUTE_LINK']._serialized_end=3527 + _globals['_ROUTE_METHOD']._serialized_start=3530 + _globals['_ROUTE_METHOD']._serialized_end=3665 + _globals['_ROUTE_DIRECTION']._serialized_start=3667 + _globals['_ROUTE_DIRECTION']._serialized_end=3747 + _globals['_CASEVACREPORT']._serialized_start=3750 + _globals['_CASEVACREPORT']._serialized_end=5236 + _globals['_CASEVACREPORT_PRECEDENCE']._serialized_start=4758 + _globals['_CASEVACREPORT_PRECEDENCE']._serialized_end=4929 + _globals['_CASEVACREPORT_HLZMARKING']._serialized_start=4932 + _globals['_CASEVACREPORT_HLZMARKING']._serialized_end=5087 + _globals['_CASEVACREPORT_SECURITY']._serialized_start=5090 + _globals['_CASEVACREPORT_SECURITY']._serialized_end=5236 + _globals['_ZMISTENTRY']._serialized_start=5238 + _globals['_ZMISTENTRY']._serialized_end=5320 + _globals['_EMERGENCYALERT']._serialized_start=5323 + _globals['_EMERGENCYALERT']._serialized_end=5615 + _globals['_EMERGENCYALERT_TYPE']._serialized_start=5465 + _globals['_EMERGENCYALERT_TYPE']._serialized_end=5615 + _globals['_TASKREQUEST']._serialized_start=5618 + _globals['_TASKREQUEST']._serialized_end=6118 + _globals['_TASKREQUEST_PRIORITY']._serialized_start=5854 + _globals['_TASKREQUEST_PRIORITY']._serialized_end=5971 + _globals['_TASKREQUEST_STATUS']._serialized_start=5974 + _globals['_TASKREQUEST_STATUS']._serialized_end=6118 + _globals['_TAKENVIRONMENT']._serialized_start=6120 + _globals['_TAKENVIRONMENT']._serialized_end=6216 + _globals['_SENSORFOV']._serialized_start=6219 + _globals['_SENSORFOV']._serialized_end=6625 + _globals['_SENSORFOV_SENSORTYPE']._serialized_start=6443 + _globals['_SENSORFOV_SENSORTYPE']._serialized_end=6613 + _globals['_TAKTALKMESSAGE']._serialized_start=6627 + _globals['_TAKTALKMESSAGE']._serialized_end=6712 + _globals['_TAKTALKROOMDATA']._serialized_start=6714 + _globals['_TAKTALKROOMDATA']._serialized_end=6818 + _globals['_MARTI']._serialized_start=6820 + _globals['_MARTI']._serialized_end=6850 + _globals['_TAKPACKETV2']._serialized_start=6853 + _globals['_TAKPACKETV2']._serialized_end=8437 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/atak_pb2.pyi b/meshtastic/protobuf/atak_pb2.pyi index b6821c1..6fab863 100644 --- a/meshtastic/protobuf/atak_pb2.pyi +++ b/meshtastic/protobuf/atak_pb2.pyi @@ -2795,7 +2795,6 @@ class CasevacReport(google.protobuf.message.Message): non_us_military: builtins.int non_us_civilian: builtins.int epw: builtins.int - """enemy prisoner of war""" child: builtins.int terrain_flags: builtins.int """ diff --git a/meshtastic/protobuf/cannedmessages_pb2.py b/meshtastic/protobuf/cannedmessages_pb2.py index 569fe14..d3e5a69 100644 --- a/meshtastic/protobuf/cannedmessages_pb2.py +++ b/meshtastic/protobuf/cannedmessages_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(meshtastic/protobuf/cannedmessages.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"5\n\x19\x43\x61nnedMessageModuleConfig\x12\x18\n\x08messages\x18\x01 \x01(\tB\x06\x92?\x03\x08\xc9\x01\x42o\n\x14org.meshtastic.protoB\x19\x43\x61nnedMessageConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,6 +22,8 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.cannedm if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=110 + _CANNEDMESSAGEMODULECONFIG.fields_by_name['messages']._options = None + _CANNEDMESSAGEMODULECONFIG.fields_by_name['messages']._serialized_options = b'\222?\003\010\311\001' + _globals['_CANNEDMESSAGEMODULECONFIG']._serialized_start=99 + _globals['_CANNEDMESSAGEMODULECONFIG']._serialized_end=152 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/channel_pb2.py b/meshtastic/protobuf/channel_pb2.py index 94a5f00..a2bc315 100644 --- a/meshtastic/protobuf/channel_pb2.py +++ b/meshtastic/protobuf/channel_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!meshtastic/protobuf/channel.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\xcf\x01\n\x0f\x43hannelSettings\x12\x17\n\x0b\x63hannel_num\x18\x01 \x01(\rB\x02\x18\x01\x12\x12\n\x03psk\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x13\n\x04name\x18\x03 \x01(\tB\x05\x92?\x02\x08\x0c\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\"\xba\x01\n\x07\x43hannel\x12\x14\n\x05index\x18\x01 \x01(\x05\x42\x05\x92?\x02\x38\x08\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,12 +24,18 @@ if _descriptor._USE_C_DESCRIPTORS == False: 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']._serialized_options = b'\030\001' - _globals['_CHANNELSETTINGS']._serialized_start=59 - _globals['_CHANNELSETTINGS']._serialized_end=252 - _globals['_MODULESETTINGS']._serialized_start=254 - _globals['_MODULESETTINGS']._serialized_end=316 - _globals['_CHANNEL']._serialized_start=319 - _globals['_CHANNEL']._serialized_end=498 - _globals['_CHANNEL_ROLE']._serialized_start=450 - _globals['_CHANNEL_ROLE']._serialized_end=498 + _CHANNELSETTINGS.fields_by_name['psk']._options = None + _CHANNELSETTINGS.fields_by_name['psk']._serialized_options = b'\222?\002\010 ' + _CHANNELSETTINGS.fields_by_name['name']._options = None + _CHANNELSETTINGS.fields_by_name['name']._serialized_options = b'\222?\002\010\014' + _CHANNEL.fields_by_name['index']._options = None + _CHANNEL.fields_by_name['index']._serialized_options = b'\222?\0028\010' + _globals['_CHANNELSETTINGS']._serialized_start=93 + _globals['_CHANNELSETTINGS']._serialized_end=300 + _globals['_MODULESETTINGS']._serialized_start=302 + _globals['_MODULESETTINGS']._serialized_end=364 + _globals['_CHANNEL']._serialized_start=367 + _globals['_CHANNEL']._serialized_end=553 + _globals['_CHANNEL_ROLE']._serialized_start=505 + _globals['_CHANNEL_ROLE']._serialized_end=553 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/clientonly_pb2.py b/meshtastic/protobuf/clientonly_pb2.py index 7245538..cc68e42 100644 --- a/meshtastic/protobuf/clientonly_pb2.py +++ b/meshtastic/protobuf/clientonly_pb2.py @@ -13,9 +13,10 @@ _sym_db = _symbol_database.Default() from meshtastic.protobuf import localonly_pb2 as meshtastic_dot_protobuf_dot_localonly__pb2 from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__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_messagesBf\n\x14org.meshtastic.protoB\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\x1a meshtastic/protobuf/nanopb.proto\"\xe2\x03\n\rDeviceProfile\x12\x1d\n\tlong_name\x18\x01 \x01(\tB\x05\x92?\x02\x08(H\x00\x88\x01\x01\x12\x1e\n\nshort_name\x18\x02 \x01(\tB\x05\x92?\x02\x08\x05H\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\x1d\n\x08ringtone\x18\x07 \x01(\tB\x06\x92?\x03\x08\xe7\x01H\x06\x88\x01\x01\x12$\n\x0f\x63\x61nned_messages\x18\x08 \x01(\tB\x06\x92?\x03\x08\xc9\x01H\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,6 +24,14 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.cliento if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=583 + _DEVICEPROFILE.fields_by_name['long_name']._options = None + _DEVICEPROFILE.fields_by_name['long_name']._serialized_options = b'\222?\002\010(' + _DEVICEPROFILE.fields_by_name['short_name']._options = None + _DEVICEPROFILE.fields_by_name['short_name']._serialized_options = b'\222?\002\010\005' + _DEVICEPROFILE.fields_by_name['ringtone']._options = None + _DEVICEPROFILE.fields_by_name['ringtone']._serialized_options = b'\222?\003\010\347\001' + _DEVICEPROFILE.fields_by_name['canned_messages']._options = None + _DEVICEPROFILE.fields_by_name['canned_messages']._serialized_options = b'\222?\003\010\311\001' + _globals['_DEVICEPROFILE']._serialized_start=165 + _globals['_DEVICEPROFILE']._serialized_end=647 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/config_pb2.py b/meshtastic/protobuf/config_pb2.py index 623f376..b483c57 100644 --- a/meshtastic/protobuf/config_pb2.py +++ b/meshtastic/protobuf/config_pb2.py @@ -12,9 +12,10 @@ _sym_db = _symbol_database.Default() from meshtastic.protobuf import device_ui_pb2 as meshtastic_dot_protobuf_dot_device__ui__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/device_ui.proto\"\xeb-\n\x06\x43onfig\x12:\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfigH\x00\x12>\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfigH\x00\x12\x38\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfigH\x00\x12<\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfigH\x00\x12<\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfigH\x00\x12\x36\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigH\x00\x12@\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfigH\x00\x12>\n\x08security\x18\x08 \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfigH\x00\x12\x42\n\nsessionkey\x18\t \x01(\x0b\x32,.meshtastic.protobuf.Config.SessionkeyConfigH\x00\x12\x38\n\tdevice_ui\x18\n \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x1a\x91\x07\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x1a\n\x0eserial_enabled\x18\x02 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x62utton_gpio\x18\x04 \x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 \x01(\r\x12R\n\x10rebroadcast_mode\x18\x06 \x01(\x0e\x32\x38.meshtastic.protobuf.Config.DeviceConfig.RebroadcastMode\x12 \n\x18node_info_broadcast_secs\x18\x07 \x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 \x01(\x08\x12\x16\n\nis_managed\x18\t \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x14\x64isable_triple_click\x18\n \x01(\x08\x12\r\n\x05tzdef\x18\x0b \x01(\t\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c \x01(\x08\x12H\n\x0b\x62uzzer_mode\x18\r \x01(\x0e\x32\x33.meshtastic.protobuf.Config.DeviceConfig.BuzzerMode\"\xd4\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x15\n\rROUTER_CLIENT\x10\x03\x1a\x02\x08\x01\x12\x10\n\x08REPEATER\x10\x04\x1a\x02\x08\x01\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x12\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\x12\x0f\n\x0bROUTER_LATE\x10\x0b\x12\x0f\n\x0b\x43LIENT_BASE\x10\x0c\"s\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x12\x08\n\x04NONE\x10\x04\x12\x16\n\x12\x43ORE_PORTNUMS_ONLY\x10\x05\"i\n\nBuzzerMode\x12\x0f\n\x0b\x41LL_ENABLED\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x16\n\x12NOTIFICATIONS_ONLY\x10\x02\x12\x0f\n\x0bSYSTEM_ONLY\x10\x03\x12\x13\n\x0f\x44IRECT_MSG_ONLY\x10\x04\x1a\x9a\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 \x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 \x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 \x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 \x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t \x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n \x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b \x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x0c \x01(\r\x12\x44\n\x08gps_mode\x18\r \x01(\x0e\x32\x32.meshtastic.protobuf.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10 \x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\x84\x02\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 \x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 \x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 \x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 \x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 \x01(\r\x12\"\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\r\x12\x18\n\x10powermon_enables\x18 \x01(\x04\x1a\xf7\x03\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 \x01(\x08\x12\x11\n\twifi_ssid\x18\x03 \x01(\t\x12\x10\n\x08wifi_psk\x18\x04 \x01(\t\x12\x12\n\nntp_server\x18\x05 \x01(\t\x12\x13\n\x0b\x65th_enabled\x18\x06 \x01(\x08\x12K\n\x0c\x61\x64\x64ress_mode\x18\x07 \x01(\x0e\x32\x35.meshtastic.protobuf.Config.NetworkConfig.AddressMode\x12I\n\x0bipv4_config\x18\x08 \x01(\x0b\x32\x34.meshtastic.protobuf.Config.NetworkConfig.IpV4Config\x12\x16\n\x0ersyslog_server\x18\t \x01(\t\x12\x19\n\x11\x65nabled_protocols\x18\n \x01(\r\x12\x14\n\x0cipv6_enabled\x18\x0b \x01(\x08\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 \x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 \x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 \x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\"4\n\rProtocolFlags\x12\x10\n\x0cNO_BROADCAST\x10\x00\x12\x11\n\rUDP_BROADCAST\x10\x01\x1a\xef\x08\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12_\n\ngps_format\x18\x02 \x01(\x0e\x32G.meshtastic.protobuf.Config.DisplayConfig.DeprecatedGpsCoordinateFormatB\x02\x18\x01\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x1d\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x66lip_screen\x18\x05 \x01(\x08\x12\x45\n\x05units\x18\x06 \x01(\x0e\x32\x36.meshtastic.protobuf.Config.DisplayConfig.DisplayUnits\x12@\n\x04oled\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.DisplayConfig.OledType\x12J\n\x0b\x64isplaymode\x18\x08 \x01(\x0e\x32\x35.meshtastic.protobuf.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n \x01(\x08\x12Y\n\x13\x63ompass_orientation\x18\x0b \x01(\x0e\x32<.meshtastic.protobuf.Config.DisplayConfig.CompassOrientation\x12\x15\n\ruse_12h_clock\x18\x0c \x01(\x08\x12\x1a\n\x12use_long_node_name\x18\r \x01(\x08\x12\x1e\n\x16\x65nable_message_bubbles\x18\x0e \x01(\x08\"+\n\x1d\x44\x65precatedGpsCoordinateFormat\x12\n\n\x06UNUSED\x10\x00\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"\x7f\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\x12\x17\n\x13OLED_SH1107_128_128\x10\x04\x12\x17\n\x13OLED_SH1107_ROTATED\x10\x05\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\"\xba\x01\n\x12\x43ompassOrientation\x12\r\n\tDEGREES_0\x10\x00\x12\x0e\n\nDEGREES_90\x10\x01\x12\x0f\n\x0b\x44\x45GREES_180\x10\x02\x12\x0f\n\x0b\x44\x45GREES_270\x10\x03\x12\x16\n\x12\x44\x45GREES_0_INVERTED\x10\x04\x12\x17\n\x13\x44\x45GREES_90_INVERTED\x10\x05\x12\x18\n\x14\x44\x45GREES_180_INVERTED\x10\x06\x12\x18\n\x14\x44\x45GREES_270_INVERTED\x10\x07\x1a\xb9\n\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01 \x01(\x08\x12H\n\x0cmodem_preset\x18\x02 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x11\n\tbandwidth\x18\x03 \x01(\r\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x13\n\x0b\x63oding_rate\x18\x05 \x01(\r\x12\x18\n\x10\x66requency_offset\x18\x06 \x01(\x02\x12\x41\n\x06region\x18\x07 \x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x10\n\x08tx_power\x18\n \x01(\x05\x12\x13\n\x0b\x63hannel_num\x18\x0b \x01(\r\x12\x1b\n\x13override_duty_cycle\x18\x0c \x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r \x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e \x01(\x02\x12\x17\n\x0fpa_fan_disabled\x18\x0f \x01(\x08\x12\x17\n\x0fignore_incoming\x18g \x03(\r\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\x12\x19\n\x11\x63onfig_ok_to_mqtt\x18i \x01(\x08\x12I\n\x0c\x66\x65m_lna_mode\x18j \x01(\x0e\x32\x33.meshtastic.protobuf.Config.LoRaConfig.FEM_LNA_Mode\x12\x17\n\x0fserial_hal_only\x18k \x01(\x08\"\x87\x03\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\x12\n\n\x06PH_433\x10\x13\x12\n\n\x06PH_868\x10\x14\x12\n\n\x06PH_915\x10\x15\x12\x0b\n\x07\x41NZ_433\x10\x16\x12\n\n\x06KZ_433\x10\x17\x12\n\n\x06KZ_863\x10\x18\x12\n\n\x06NP_865\x10\x19\x12\n\n\x06\x42R_902\x10\x1a\x12\x0b\n\x07ITU1_2M\x10\x1b\x12\x0b\n\x07ITU2_2M\x10\x1c\x12\n\n\x06\x45U_866\x10\x1d\x12\n\n\x06\x45U_874\x10\x1e\x12\n\n\x06\x45U_917\x10\x1f\x12\x0c\n\x08\x45U_N_868\x10 \x12\x0b\n\x07ITU3_2M\x10!\"\xfd\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\x11\n\tLONG_SLOW\x10\x01\x1a\x02\x08\x01\x12\x16\n\x0eVERY_LONG_SLOW\x10\x02\x1a\x02\x08\x01\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x12\x0f\n\x0bSHORT_TURBO\x10\x08\x12\x0e\n\nLONG_TURBO\x10\t\x12\r\n\tLITE_FAST\x10\n\x12\r\n\tLITE_SLOW\x10\x0b\x12\x0f\n\x0bNARROW_FAST\x10\x0c\x12\x0f\n\x0bNARROW_SLOW\x10\r\":\n\x0c\x46\x45M_LNA_Mode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\xb6\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x45\n\x04mode\x18\x02 \x01(\x0e\x32\x37.meshtastic.protobuf.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03 \x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x1a\xb6\x01\n\x0eSecurityConfig\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x13\n\x0bprivate_key\x18\x02 \x01(\x0c\x12\x11\n\tadmin_key\x18\x03 \x03(\x0c\x12\x12\n\nis_managed\x18\x04 \x01(\x08\x12\x16\n\x0eserial_enabled\x18\x05 \x01(\x08\x12\x1d\n\x15\x64\x65\x62ug_log_api_enabled\x18\x06 \x01(\x08\x12\x1d\n\x15\x61\x64min_channel_enabled\x18\x08 \x01(\x08\x1a\x12\n\x10SessionkeyConfigB\x11\n\x0fpayload_variantBb\n\x14org.meshtastic.protoB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/config.proto\x12\x13meshtastic.protobuf\x1a#meshtastic/protobuf/device_ui.proto\x1a meshtastic/protobuf/nanopb.proto\"\xd6.\n\x06\x43onfig\x12:\n\x06\x64\x65vice\x18\x01 \x01(\x0b\x32(.meshtastic.protobuf.Config.DeviceConfigH\x00\x12>\n\x08position\x18\x02 \x01(\x0b\x32*.meshtastic.protobuf.Config.PositionConfigH\x00\x12\x38\n\x05power\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.Config.PowerConfigH\x00\x12<\n\x07network\x18\x04 \x01(\x0b\x32).meshtastic.protobuf.Config.NetworkConfigH\x00\x12<\n\x07\x64isplay\x18\x05 \x01(\x0b\x32).meshtastic.protobuf.Config.DisplayConfigH\x00\x12\x36\n\x04lora\x18\x06 \x01(\x0b\x32&.meshtastic.protobuf.Config.LoRaConfigH\x00\x12@\n\tbluetooth\x18\x07 \x01(\x0b\x32+.meshtastic.protobuf.Config.BluetoothConfigH\x00\x12>\n\x08security\x18\x08 \x01(\x0b\x32*.meshtastic.protobuf.Config.SecurityConfigH\x00\x12\x42\n\nsessionkey\x18\t \x01(\x0b\x32,.meshtastic.protobuf.Config.SessionkeyConfigH\x00\x12\x38\n\tdevice_ui\x18\n \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x1a\x9f\x07\n\x0c\x44\x65viceConfig\x12;\n\x04role\x18\x01 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x1a\n\x0eserial_enabled\x18\x02 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x62utton_gpio\x18\x04 \x01(\r\x12\x13\n\x0b\x62uzzer_gpio\x18\x05 \x01(\r\x12R\n\x10rebroadcast_mode\x18\x06 \x01(\x0e\x32\x38.meshtastic.protobuf.Config.DeviceConfig.RebroadcastMode\x12 \n\x18node_info_broadcast_secs\x18\x07 \x01(\r\x12\"\n\x1a\x64ouble_tap_as_button_press\x18\x08 \x01(\x08\x12\x16\n\nis_managed\x18\t \x01(\x08\x42\x02\x18\x01\x12\x1c\n\x14\x64isable_triple_click\x18\n \x01(\x08\x12\x14\n\x05tzdef\x18\x0b \x01(\tB\x05\x92?\x02\x08\x41\x12\x1e\n\x16led_heartbeat_disabled\x18\x0c \x01(\x08\x12O\n\x0b\x62uzzer_mode\x18\r \x01(\x0e\x32\x33.meshtastic.protobuf.Config.DeviceConfig.BuzzerModeB\x05\x92?\x02\x38\x08\"\xd4\x01\n\x04Role\x12\n\n\x06\x43LIENT\x10\x00\x12\x0f\n\x0b\x43LIENT_MUTE\x10\x01\x12\n\n\x06ROUTER\x10\x02\x12\x15\n\rROUTER_CLIENT\x10\x03\x1a\x02\x08\x01\x12\x10\n\x08REPEATER\x10\x04\x1a\x02\x08\x01\x12\x0b\n\x07TRACKER\x10\x05\x12\n\n\x06SENSOR\x10\x06\x12\x07\n\x03TAK\x10\x07\x12\x11\n\rCLIENT_HIDDEN\x10\x08\x12\x12\n\x0eLOST_AND_FOUND\x10\t\x12\x0f\n\x0bTAK_TRACKER\x10\n\x12\x0f\n\x0bROUTER_LATE\x10\x0b\x12\x0f\n\x0b\x43LIENT_BASE\x10\x0c\"s\n\x0fRebroadcastMode\x12\x07\n\x03\x41LL\x10\x00\x12\x15\n\x11\x41LL_SKIP_DECODING\x10\x01\x12\x0e\n\nLOCAL_ONLY\x10\x02\x12\x0e\n\nKNOWN_ONLY\x10\x03\x12\x08\n\x04NONE\x10\x04\x12\x16\n\x12\x43ORE_PORTNUMS_ONLY\x10\x05\"i\n\nBuzzerMode\x12\x0f\n\x0b\x41LL_ENABLED\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x16\n\x12NOTIFICATIONS_ONLY\x10\x02\x12\x0f\n\x0bSYSTEM_ONLY\x10\x03\x12\x13\n\x0f\x44IRECT_MSG_ONLY\x10\x04\x1a\x9a\x05\n\x0ePositionConfig\x12\x1f\n\x17position_broadcast_secs\x18\x01 \x01(\r\x12(\n position_broadcast_smart_enabled\x18\x02 \x01(\x08\x12\x16\n\x0e\x66ixed_position\x18\x03 \x01(\x08\x12\x17\n\x0bgps_enabled\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x1b\n\x13gps_update_interval\x18\x05 \x01(\r\x12\x1c\n\x10gps_attempt_time\x18\x06 \x01(\rB\x02\x18\x01\x12\x16\n\x0eposition_flags\x18\x07 \x01(\r\x12\x0f\n\x07rx_gpio\x18\x08 \x01(\r\x12\x0f\n\x07tx_gpio\x18\t \x01(\r\x12(\n broadcast_smart_minimum_distance\x18\n \x01(\r\x12-\n%broadcast_smart_minimum_interval_secs\x18\x0b \x01(\r\x12\x13\n\x0bgps_en_gpio\x18\x0c \x01(\r\x12\x44\n\x08gps_mode\x18\r \x01(\x0e\x32\x32.meshtastic.protobuf.Config.PositionConfig.GpsMode\"\xab\x01\n\rPositionFlags\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x41LTITUDE\x10\x01\x12\x10\n\x0c\x41LTITUDE_MSL\x10\x02\x12\x16\n\x12GEOIDAL_SEPARATION\x10\x04\x12\x07\n\x03\x44OP\x10\x08\x12\t\n\x05HVDOP\x10\x10\x12\r\n\tSATINVIEW\x10 \x12\n\n\x06SEQ_NO\x10@\x12\x0e\n\tTIMESTAMP\x10\x80\x01\x12\x0c\n\x07HEADING\x10\x80\x02\x12\n\n\x05SPEED\x10\x80\x04\"5\n\x07GpsMode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\x8b\x02\n\x0bPowerConfig\x12\x17\n\x0fis_power_saving\x18\x01 \x01(\x08\x12&\n\x1eon_battery_shutdown_after_secs\x18\x02 \x01(\r\x12\x1f\n\x17\x61\x64\x63_multiplier_override\x18\x03 \x01(\x02\x12\x1b\n\x13wait_bluetooth_secs\x18\x04 \x01(\r\x12\x10\n\x08sds_secs\x18\x06 \x01(\r\x12\x0f\n\x07ls_secs\x18\x07 \x01(\r\x12\x15\n\rmin_wake_secs\x18\x08 \x01(\r\x12)\n\x1a\x64\x65vice_battery_ina_address\x18\t \x01(\rB\x05\x92?\x02\x38\x08\x12\x18\n\x10powermon_enables\x18 \x01(\x04\x1a\x93\x04\n\rNetworkConfig\x12\x14\n\x0cwifi_enabled\x18\x01 \x01(\x08\x12\x18\n\twifi_ssid\x18\x03 \x01(\tB\x05\x92?\x02\x08!\x12\x17\n\x08wifi_psk\x18\x04 \x01(\tB\x05\x92?\x02\x08\x41\x12\x19\n\nntp_server\x18\x05 \x01(\tB\x05\x92?\x02\x08!\x12\x13\n\x0b\x65th_enabled\x18\x06 \x01(\x08\x12K\n\x0c\x61\x64\x64ress_mode\x18\x07 \x01(\x0e\x32\x35.meshtastic.protobuf.Config.NetworkConfig.AddressMode\x12I\n\x0bipv4_config\x18\x08 \x01(\x0b\x32\x34.meshtastic.protobuf.Config.NetworkConfig.IpV4Config\x12\x1d\n\x0ersyslog_server\x18\t \x01(\tB\x05\x92?\x02\x08!\x12\x19\n\x11\x65nabled_protocols\x18\n \x01(\r\x12\x14\n\x0cipv6_enabled\x18\x0b \x01(\x08\x1a\x46\n\nIpV4Config\x12\n\n\x02ip\x18\x01 \x01(\x07\x12\x0f\n\x07gateway\x18\x02 \x01(\x07\x12\x0e\n\x06subnet\x18\x03 \x01(\x07\x12\x0b\n\x03\x64ns\x18\x04 \x01(\x07\"#\n\x0b\x41\x64\x64ressMode\x12\x08\n\x04\x44HCP\x10\x00\x12\n\n\x06STATIC\x10\x01\"4\n\rProtocolFlags\x12\x10\n\x0cNO_BROADCAST\x10\x00\x12\x11\n\rUDP_BROADCAST\x10\x01\x1a\xef\x08\n\rDisplayConfig\x12\x16\n\x0escreen_on_secs\x18\x01 \x01(\r\x12_\n\ngps_format\x18\x02 \x01(\x0e\x32G.meshtastic.protobuf.Config.DisplayConfig.DeprecatedGpsCoordinateFormatB\x02\x18\x01\x12!\n\x19\x61uto_screen_carousel_secs\x18\x03 \x01(\r\x12\x1d\n\x11\x63ompass_north_top\x18\x04 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0b\x66lip_screen\x18\x05 \x01(\x08\x12\x45\n\x05units\x18\x06 \x01(\x0e\x32\x36.meshtastic.protobuf.Config.DisplayConfig.DisplayUnits\x12@\n\x04oled\x18\x07 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.DisplayConfig.OledType\x12J\n\x0b\x64isplaymode\x18\x08 \x01(\x0e\x32\x35.meshtastic.protobuf.Config.DisplayConfig.DisplayMode\x12\x14\n\x0cheading_bold\x18\t \x01(\x08\x12\x1d\n\x15wake_on_tap_or_motion\x18\n \x01(\x08\x12Y\n\x13\x63ompass_orientation\x18\x0b \x01(\x0e\x32<.meshtastic.protobuf.Config.DisplayConfig.CompassOrientation\x12\x15\n\ruse_12h_clock\x18\x0c \x01(\x08\x12\x1a\n\x12use_long_node_name\x18\r \x01(\x08\x12\x1e\n\x16\x65nable_message_bubbles\x18\x0e \x01(\x08\"+\n\x1d\x44\x65precatedGpsCoordinateFormat\x12\n\n\x06UNUSED\x10\x00\"(\n\x0c\x44isplayUnits\x12\n\n\x06METRIC\x10\x00\x12\x0c\n\x08IMPERIAL\x10\x01\"\x7f\n\x08OledType\x12\r\n\tOLED_AUTO\x10\x00\x12\x10\n\x0cOLED_SSD1306\x10\x01\x12\x0f\n\x0bOLED_SH1106\x10\x02\x12\x0f\n\x0bOLED_SH1107\x10\x03\x12\x17\n\x13OLED_SH1107_128_128\x10\x04\x12\x17\n\x13OLED_SH1107_ROTATED\x10\x05\"A\n\x0b\x44isplayMode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x0c\n\x08TWOCOLOR\x10\x01\x12\x0c\n\x08INVERTED\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\"\xba\x01\n\x12\x43ompassOrientation\x12\r\n\tDEGREES_0\x10\x00\x12\x0e\n\nDEGREES_90\x10\x01\x12\x0f\n\x0b\x44\x45GREES_180\x10\x02\x12\x0f\n\x0b\x44\x45GREES_270\x10\x03\x12\x16\n\x12\x44\x45GREES_0_INVERTED\x10\x04\x12\x17\n\x13\x44\x45GREES_90_INVERTED\x10\x05\x12\x18\n\x14\x44\x45GREES_180_INVERTED\x10\x06\x12\x18\n\x14\x44\x45GREES_270_INVERTED\x10\x07\x1a\xdc\n\n\nLoRaConfig\x12\x12\n\nuse_preset\x18\x01 \x01(\x08\x12H\n\x0cmodem_preset\x18\x02 \x01(\x0e\x32\x32.meshtastic.protobuf.Config.LoRaConfig.ModemPreset\x12\x18\n\tbandwidth\x18\x03 \x01(\rB\x05\x92?\x02\x38\x10\x12\x15\n\rspread_factor\x18\x04 \x01(\r\x12\x1a\n\x0b\x63oding_rate\x18\x05 \x01(\rB\x05\x92?\x02\x38\x08\x12\x18\n\x10\x66requency_offset\x18\x06 \x01(\x02\x12\x41\n\x06region\x18\x07 \x01(\x0e\x32\x31.meshtastic.protobuf.Config.LoRaConfig.RegionCode\x12\x11\n\thop_limit\x18\x08 \x01(\r\x12\x12\n\ntx_enabled\x18\t \x01(\x08\x12\x17\n\x08tx_power\x18\n \x01(\x05\x42\x05\x92?\x02\x38\x08\x12\x1a\n\x0b\x63hannel_num\x18\x0b \x01(\rB\x05\x92?\x02\x38\x10\x12\x1b\n\x13override_duty_cycle\x18\x0c \x01(\x08\x12\x1e\n\x16sx126x_rx_boosted_gain\x18\r \x01(\x08\x12\x1a\n\x12override_frequency\x18\x0e \x01(\x02\x12\x17\n\x0fpa_fan_disabled\x18\x0f \x01(\x08\x12\x1e\n\x0fignore_incoming\x18g \x03(\rB\x05\x92?\x02\x10\x03\x12\x13\n\x0bignore_mqtt\x18h \x01(\x08\x12\x19\n\x11\x63onfig_ok_to_mqtt\x18i \x01(\x08\x12I\n\x0c\x66\x65m_lna_mode\x18j \x01(\x0e\x32\x33.meshtastic.protobuf.Config.LoRaConfig.FEM_LNA_Mode\x12\x17\n\x0fserial_hal_only\x18k \x01(\x08\"\x87\x03\n\nRegionCode\x12\t\n\x05UNSET\x10\x00\x12\x06\n\x02US\x10\x01\x12\n\n\x06\x45U_433\x10\x02\x12\n\n\x06\x45U_868\x10\x03\x12\x06\n\x02\x43N\x10\x04\x12\x06\n\x02JP\x10\x05\x12\x07\n\x03\x41NZ\x10\x06\x12\x06\n\x02KR\x10\x07\x12\x06\n\x02TW\x10\x08\x12\x06\n\x02RU\x10\t\x12\x06\n\x02IN\x10\n\x12\n\n\x06NZ_865\x10\x0b\x12\x06\n\x02TH\x10\x0c\x12\x0b\n\x07LORA_24\x10\r\x12\n\n\x06UA_433\x10\x0e\x12\n\n\x06UA_868\x10\x0f\x12\n\n\x06MY_433\x10\x10\x12\n\n\x06MY_919\x10\x11\x12\n\n\x06SG_923\x10\x12\x12\n\n\x06PH_433\x10\x13\x12\n\n\x06PH_868\x10\x14\x12\n\n\x06PH_915\x10\x15\x12\x0b\n\x07\x41NZ_433\x10\x16\x12\n\n\x06KZ_433\x10\x17\x12\n\n\x06KZ_863\x10\x18\x12\n\n\x06NP_865\x10\x19\x12\n\n\x06\x42R_902\x10\x1a\x12\x0b\n\x07ITU1_2M\x10\x1b\x12\x0b\n\x07ITU2_2M\x10\x1c\x12\n\n\x06\x45U_866\x10\x1d\x12\n\n\x06\x45U_874\x10\x1e\x12\n\n\x06\x45U_917\x10\x1f\x12\x0c\n\x08\x45U_N_868\x10 \x12\x0b\n\x07ITU3_2M\x10!\"\xfd\x01\n\x0bModemPreset\x12\r\n\tLONG_FAST\x10\x00\x12\x11\n\tLONG_SLOW\x10\x01\x1a\x02\x08\x01\x12\x16\n\x0eVERY_LONG_SLOW\x10\x02\x1a\x02\x08\x01\x12\x0f\n\x0bMEDIUM_SLOW\x10\x03\x12\x0f\n\x0bMEDIUM_FAST\x10\x04\x12\x0e\n\nSHORT_SLOW\x10\x05\x12\x0e\n\nSHORT_FAST\x10\x06\x12\x11\n\rLONG_MODERATE\x10\x07\x12\x0f\n\x0bSHORT_TURBO\x10\x08\x12\x0e\n\nLONG_TURBO\x10\t\x12\r\n\tLITE_FAST\x10\n\x12\r\n\tLITE_SLOW\x10\x0b\x12\x0f\n\x0bNARROW_FAST\x10\x0c\x12\x0f\n\x0bNARROW_SLOW\x10\r\":\n\x0c\x46\x45M_LNA_Mode\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\x1a\xb6\x01\n\x0f\x42luetoothConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x45\n\x04mode\x18\x02 \x01(\x0e\x32\x37.meshtastic.protobuf.Config.BluetoothConfig.PairingMode\x12\x11\n\tfixed_pin\x18\x03 \x01(\r\"8\n\x0bPairingMode\x12\x0e\n\nRANDOM_PIN\x10\x00\x12\r\n\tFIXED_PIN\x10\x01\x12\n\n\x06NO_PIN\x10\x02\x1a\xcd\x01\n\x0eSecurityConfig\x12\x19\n\npublic_key\x18\x01 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x1a\n\x0bprivate_key\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x1a\n\tadmin_key\x18\x03 \x03(\x0c\x42\x07\x92?\x04\x08 \x10\x03\x12\x12\n\nis_managed\x18\x04 \x01(\x08\x12\x16\n\x0eserial_enabled\x18\x05 \x01(\x08\x12\x1d\n\x15\x64\x65\x62ug_log_api_enabled\x18\x06 \x01(\x08\x12\x1d\n\x15\x61\x64min_channel_enabled\x18\x08 \x01(\x08\x1a\x12\n\x10SessionkeyConfigB\x11\n\x0fpayload_variantBb\n\x14org.meshtastic.protoB\x0c\x43onfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -30,10 +31,24 @@ if _descriptor._USE_C_DESCRIPTORS == False: _CONFIG_DEVICECONFIG.fields_by_name['serial_enabled']._serialized_options = b'\030\001' _CONFIG_DEVICECONFIG.fields_by_name['is_managed']._options = None _CONFIG_DEVICECONFIG.fields_by_name['is_managed']._serialized_options = b'\030\001' + _CONFIG_DEVICECONFIG.fields_by_name['tzdef']._options = None + _CONFIG_DEVICECONFIG.fields_by_name['tzdef']._serialized_options = b'\222?\002\010A' + _CONFIG_DEVICECONFIG.fields_by_name['buzzer_mode']._options = None + _CONFIG_DEVICECONFIG.fields_by_name['buzzer_mode']._serialized_options = b'\222?\0028\010' _CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._options = None _CONFIG_POSITIONCONFIG.fields_by_name['gps_enabled']._serialized_options = b'\030\001' _CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._options = None _CONFIG_POSITIONCONFIG.fields_by_name['gps_attempt_time']._serialized_options = b'\030\001' + _CONFIG_POWERCONFIG.fields_by_name['device_battery_ina_address']._options = None + _CONFIG_POWERCONFIG.fields_by_name['device_battery_ina_address']._serialized_options = b'\222?\0028\010' + _CONFIG_NETWORKCONFIG.fields_by_name['wifi_ssid']._options = None + _CONFIG_NETWORKCONFIG.fields_by_name['wifi_ssid']._serialized_options = b'\222?\002\010!' + _CONFIG_NETWORKCONFIG.fields_by_name['wifi_psk']._options = None + _CONFIG_NETWORKCONFIG.fields_by_name['wifi_psk']._serialized_options = b'\222?\002\010A' + _CONFIG_NETWORKCONFIG.fields_by_name['ntp_server']._options = None + _CONFIG_NETWORKCONFIG.fields_by_name['ntp_server']._serialized_options = b'\222?\002\010!' + _CONFIG_NETWORKCONFIG.fields_by_name['rsyslog_server']._options = None + _CONFIG_NETWORKCONFIG.fields_by_name['rsyslog_server']._serialized_options = b'\222?\002\010!' _CONFIG_DISPLAYCONFIG.fields_by_name['gps_format']._options = None _CONFIG_DISPLAYCONFIG.fields_by_name['gps_format']._serialized_options = b'\030\001' _CONFIG_DISPLAYCONFIG.fields_by_name['compass_north_top']._options = None @@ -42,58 +57,74 @@ if _descriptor._USE_C_DESCRIPTORS == False: _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["LONG_SLOW"]._serialized_options = b'\010\001' _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["VERY_LONG_SLOW"]._options = None _CONFIG_LORACONFIG_MODEMPRESET.values_by_name["VERY_LONG_SLOW"]._serialized_options = b'\010\001' - _globals['_CONFIG']._serialized_start=95 - _globals['_CONFIG']._serialized_end=5962 - _globals['_CONFIG_DEVICECONFIG']._serialized_start=724 - _globals['_CONFIG_DEVICECONFIG']._serialized_end=1637 - _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_start=1201 - _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_end=1413 - _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_start=1415 - _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_end=1530 - _globals['_CONFIG_DEVICECONFIG_BUZZERMODE']._serialized_start=1532 - _globals['_CONFIG_DEVICECONFIG_BUZZERMODE']._serialized_end=1637 - _globals['_CONFIG_POSITIONCONFIG']._serialized_start=1640 - _globals['_CONFIG_POSITIONCONFIG']._serialized_end=2306 - _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_start=2080 - _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_end=2251 - _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_start=2253 - _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_end=2306 - _globals['_CONFIG_POWERCONFIG']._serialized_start=2309 - _globals['_CONFIG_POWERCONFIG']._serialized_end=2569 - _globals['_CONFIG_NETWORKCONFIG']._serialized_start=2572 - _globals['_CONFIG_NETWORKCONFIG']._serialized_end=3075 - _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_start=2914 - _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_end=2984 - _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_start=2986 - _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_end=3021 - _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_start=3023 - _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_end=3075 - _globals['_CONFIG_DISPLAYCONFIG']._serialized_start=3078 - _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=4213 - _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_start=3743 - _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_end=3786 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_start=3788 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_end=3828 - _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_start=3830 - _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=3957 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=3959 - _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=4024 - _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=4027 - _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=4213 - _globals['_CONFIG_LORACONFIG']._serialized_start=4216 - _globals['_CONFIG_LORACONFIG']._serialized_end=5553 - _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4846 - _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=5237 - _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=5240 - _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=5493 - _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_start=5495 - _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_end=5553 - _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=5556 - _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5738 - _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=5682 - _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5738 - _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5741 - _globals['_CONFIG_SECURITYCONFIG']._serialized_end=5923 - _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=5925 - _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_end=5943 + _CONFIG_LORACONFIG.fields_by_name['bandwidth']._options = None + _CONFIG_LORACONFIG.fields_by_name['bandwidth']._serialized_options = b'\222?\0028\020' + _CONFIG_LORACONFIG.fields_by_name['coding_rate']._options = None + _CONFIG_LORACONFIG.fields_by_name['coding_rate']._serialized_options = b'\222?\0028\010' + _CONFIG_LORACONFIG.fields_by_name['tx_power']._options = None + _CONFIG_LORACONFIG.fields_by_name['tx_power']._serialized_options = b'\222?\0028\010' + _CONFIG_LORACONFIG.fields_by_name['channel_num']._options = None + _CONFIG_LORACONFIG.fields_by_name['channel_num']._serialized_options = b'\222?\0028\020' + _CONFIG_LORACONFIG.fields_by_name['ignore_incoming']._options = None + _CONFIG_LORACONFIG.fields_by_name['ignore_incoming']._serialized_options = b'\222?\002\020\003' + _CONFIG_SECURITYCONFIG.fields_by_name['public_key']._options = None + _CONFIG_SECURITYCONFIG.fields_by_name['public_key']._serialized_options = b'\222?\002\010 ' + _CONFIG_SECURITYCONFIG.fields_by_name['private_key']._options = None + _CONFIG_SECURITYCONFIG.fields_by_name['private_key']._serialized_options = b'\222?\002\010 ' + _CONFIG_SECURITYCONFIG.fields_by_name['admin_key']._options = None + _CONFIG_SECURITYCONFIG.fields_by_name['admin_key']._serialized_options = b'\222?\004\010 \020\003' + _globals['_CONFIG']._serialized_start=129 + _globals['_CONFIG']._serialized_end=6103 + _globals['_CONFIG_DEVICECONFIG']._serialized_start=758 + _globals['_CONFIG_DEVICECONFIG']._serialized_end=1685 + _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_start=1249 + _globals['_CONFIG_DEVICECONFIG_ROLE']._serialized_end=1461 + _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_start=1463 + _globals['_CONFIG_DEVICECONFIG_REBROADCASTMODE']._serialized_end=1578 + _globals['_CONFIG_DEVICECONFIG_BUZZERMODE']._serialized_start=1580 + _globals['_CONFIG_DEVICECONFIG_BUZZERMODE']._serialized_end=1685 + _globals['_CONFIG_POSITIONCONFIG']._serialized_start=1688 + _globals['_CONFIG_POSITIONCONFIG']._serialized_end=2354 + _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_start=2128 + _globals['_CONFIG_POSITIONCONFIG_POSITIONFLAGS']._serialized_end=2299 + _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_start=2301 + _globals['_CONFIG_POSITIONCONFIG_GPSMODE']._serialized_end=2354 + _globals['_CONFIG_POWERCONFIG']._serialized_start=2357 + _globals['_CONFIG_POWERCONFIG']._serialized_end=2624 + _globals['_CONFIG_NETWORKCONFIG']._serialized_start=2627 + _globals['_CONFIG_NETWORKCONFIG']._serialized_end=3158 + _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_start=2997 + _globals['_CONFIG_NETWORKCONFIG_IPV4CONFIG']._serialized_end=3067 + _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_start=3069 + _globals['_CONFIG_NETWORKCONFIG_ADDRESSMODE']._serialized_end=3104 + _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_start=3106 + _globals['_CONFIG_NETWORKCONFIG_PROTOCOLFLAGS']._serialized_end=3158 + _globals['_CONFIG_DISPLAYCONFIG']._serialized_start=3161 + _globals['_CONFIG_DISPLAYCONFIG']._serialized_end=4296 + _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_start=3826 + _globals['_CONFIG_DISPLAYCONFIG_DEPRECATEDGPSCOORDINATEFORMAT']._serialized_end=3869 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_start=3871 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYUNITS']._serialized_end=3911 + _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_start=3913 + _globals['_CONFIG_DISPLAYCONFIG_OLEDTYPE']._serialized_end=4040 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_start=4042 + _globals['_CONFIG_DISPLAYCONFIG_DISPLAYMODE']._serialized_end=4107 + _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_start=4110 + _globals['_CONFIG_DISPLAYCONFIG_COMPASSORIENTATION']._serialized_end=4296 + _globals['_CONFIG_LORACONFIG']._serialized_start=4299 + _globals['_CONFIG_LORACONFIG']._serialized_end=5671 + _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_start=4964 + _globals['_CONFIG_LORACONFIG_REGIONCODE']._serialized_end=5355 + _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_start=5358 + _globals['_CONFIG_LORACONFIG_MODEMPRESET']._serialized_end=5611 + _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_start=5613 + _globals['_CONFIG_LORACONFIG_FEM_LNA_MODE']._serialized_end=5671 + _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_start=5674 + _globals['_CONFIG_BLUETOOTHCONFIG']._serialized_end=5856 + _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_start=5800 + _globals['_CONFIG_BLUETOOTHCONFIG_PAIRINGMODE']._serialized_end=5856 + _globals['_CONFIG_SECURITYCONFIG']._serialized_start=5859 + _globals['_CONFIG_SECURITYCONFIG']._serialized_end=6064 + _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_start=6066 + _globals['_CONFIG_SESSIONKEYCONFIG']._serialized_end=6084 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/connection_status_pb2.py b/meshtastic/protobuf/connection_status_pb2.py index 050e330..9c9156a 100644 --- a/meshtastic/protobuf/connection_status_pb2.py +++ b/meshtastic/protobuf/connection_status_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+meshtastic/protobuf/connection_status.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\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\"w\n\x14WifiConnectionStatus\x12<\n\x06status\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.NetworkConnectionStatus\x12\x13\n\x04ssid\x18\x02 \x01(\tB\x05\x92?\x02\x08!\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,16 +22,18 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.connect if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=410 - _globals['_WIFICONNECTIONSTATUS']._serialized_start=412 - _globals['_WIFICONNECTIONSTATUS']._serialized_end=524 - _globals['_ETHERNETCONNECTIONSTATUS']._serialized_start=526 - _globals['_ETHERNETCONNECTIONSTATUS']._serialized_end=614 - _globals['_NETWORKCONNECTIONSTATUS']._serialized_start=616 - _globals['_NETWORKCONNECTIONSTATUS']._serialized_end=739 - _globals['_BLUETOOTHCONNECTIONSTATUS']._serialized_start=741 - _globals['_BLUETOOTHCONNECTIONSTATUS']._serialized_end=817 - _globals['_SERIALCONNECTIONSTATUS']._serialized_start=819 - _globals['_SERIALCONNECTIONSTATUS']._serialized_end=879 + _WIFICONNECTIONSTATUS.fields_by_name['ssid']._options = None + _WIFICONNECTIONSTATUS.fields_by_name['ssid']._serialized_options = b'\222?\002\010!' + _globals['_DEVICECONNECTIONSTATUS']._serialized_start=103 + _globals['_DEVICECONNECTIONSTATUS']._serialized_end=444 + _globals['_WIFICONNECTIONSTATUS']._serialized_start=446 + _globals['_WIFICONNECTIONSTATUS']._serialized_end=565 + _globals['_ETHERNETCONNECTIONSTATUS']._serialized_start=567 + _globals['_ETHERNETCONNECTIONSTATUS']._serialized_end=655 + _globals['_NETWORKCONNECTIONSTATUS']._serialized_start=657 + _globals['_NETWORKCONNECTIONSTATUS']._serialized_end=780 + _globals['_BLUETOOTHCONNECTIONSTATUS']._serialized_start=782 + _globals['_BLUETOOTHCONNECTIONSTATUS']._serialized_end=858 + _globals['_SERIALCONNECTIONSTATUS']._serialized_start=860 + _globals['_SERIALCONNECTIONSTATUS']._serialized_end=920 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/device_ui_pb2.py b/meshtastic/protobuf/device_ui_pb2.py index 28eb04e..54a8f6c 100644 --- a/meshtastic/protobuf/device_ui_pb2.py +++ b/meshtastic/protobuf/device_ui_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/device_ui.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\xa9\x06\n\x0e\x44\x65viceUIConfig\x12\x0f\n\x07version\x18\x01 \x01(\r\x12 \n\x11screen_brightness\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08\x12\x1d\n\x0escreen_timeout\x18\x03 \x01(\rB\x05\x92?\x02\x38\x10\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\x1b\n\x0cring_tone_id\x18\n \x01(\rB\x05\x92?\x02\x38\x08\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\x1f\n\x10\x63\x61libration_data\x18\x0e \x01(\x0c\x42\x05\x92?\x02\x08\x10\x12*\n\x08map_data\x18\x0f \x01(\x0b\x32\x18.meshtastic.protobuf.Map\x12=\n\x0c\x63ompass_mode\x18\x10 \x01(\x0e\x32 .meshtastic.protobuf.CompassModeB\x05\x92?\x02\x38\x08\x12\x18\n\x10screen_rgb_color\x18\x11 \x01(\r\x12\x1b\n\x13is_clockface_analog\x18\x12 \x01(\x08\x12R\n\ngps_format\x18\x13 \x01(\x0e\x32\x37.meshtastic.protobuf.DeviceUIConfig.GpsCoordinateFormatB\x05\x92?\x02\x38\x08\"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\"\xbc\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\x18\n\thops_away\x18\x04 \x01(\x05\x42\x05\x92?\x02\x38\x08\x12\x17\n\x0fposition_switch\x18\x05 \x01(\x08\x12\x18\n\tnode_name\x18\x06 \x01(\tB\x05\x92?\x02\x08\x10\x12\x16\n\x07\x63hannel\x18\x07 \x01(\x05\x42\x05\x92?\x02\x38\x08\"\x85\x01\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\x18\n\tnode_name\x18\x05 \x01(\tB\x05\x92?\x02\x08\x10\"D\n\x08GeoPoint\x12\x13\n\x04zoom\x18\x01 \x01(\x05\x42\x05\x92?\x02\x38\x08\x12\x10\n\x08latitude\x18\x02 \x01(\x05\x12\x11\n\tlongitude\x18\x03 \x01(\x05\"\\\n\x03Map\x12+\n\x04home\x18\x01 \x01(\x0b\x32\x1d.meshtastic.protobuf.GeoPoint\x12\x14\n\x05style\x18\x02 \x01(\tB\x05\x92?\x02\x08\x14\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,22 +22,46 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.device_ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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=1278 - _globals['_COMPASSMODE']._serialized_end=1340 - _globals['_THEME']._serialized_start=1342 - _globals['_THEME']._serialized_end=1379 - _globals['_LANGUAGE']._serialized_start=1382 - _globals['_LANGUAGE']._serialized_end=1702 - _globals['_DEVICEUICONFIG']._serialized_start=61 - _globals['_DEVICEUICONFIG']._serialized_end=828 - _globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_start=742 - _globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_end=828 - _globals['_NODEFILTER']._serialized_start=831 - _globals['_NODEFILTER']._serialized_end=998 - _globals['_NODEHIGHLIGHT']._serialized_start=1000 - _globals['_NODEHIGHLIGHT']._serialized_end=1126 - _globals['_GEOPOINT']._serialized_start=1128 - _globals['_GEOPOINT']._serialized_end=1189 - _globals['_MAP']._serialized_start=1191 - _globals['_MAP']._serialized_end=1276 + _DEVICEUICONFIG.fields_by_name['screen_brightness']._options = None + _DEVICEUICONFIG.fields_by_name['screen_brightness']._serialized_options = b'\222?\0028\010' + _DEVICEUICONFIG.fields_by_name['screen_timeout']._options = None + _DEVICEUICONFIG.fields_by_name['screen_timeout']._serialized_options = b'\222?\0028\020' + _DEVICEUICONFIG.fields_by_name['ring_tone_id']._options = None + _DEVICEUICONFIG.fields_by_name['ring_tone_id']._serialized_options = b'\222?\0028\010' + _DEVICEUICONFIG.fields_by_name['calibration_data']._options = None + _DEVICEUICONFIG.fields_by_name['calibration_data']._serialized_options = b'\222?\002\010\020' + _DEVICEUICONFIG.fields_by_name['compass_mode']._options = None + _DEVICEUICONFIG.fields_by_name['compass_mode']._serialized_options = b'\222?\0028\010' + _DEVICEUICONFIG.fields_by_name['gps_format']._options = None + _DEVICEUICONFIG.fields_by_name['gps_format']._serialized_options = b'\222?\0028\010' + _NODEFILTER.fields_by_name['hops_away']._options = None + _NODEFILTER.fields_by_name['hops_away']._serialized_options = b'\222?\0028\010' + _NODEFILTER.fields_by_name['node_name']._options = None + _NODEFILTER.fields_by_name['node_name']._serialized_options = b'\222?\002\010\020' + _NODEFILTER.fields_by_name['channel']._options = None + _NODEFILTER.fields_by_name['channel']._serialized_options = b'\222?\0028\010' + _NODEHIGHLIGHT.fields_by_name['node_name']._options = None + _NODEHIGHLIGHT.fields_by_name['node_name']._serialized_options = b'\222?\002\010\020' + _GEOPOINT.fields_by_name['zoom']._options = None + _GEOPOINT.fields_by_name['zoom']._serialized_options = b'\222?\0028\010' + _MAP.fields_by_name['style']._options = None + _MAP.fields_by_name['style']._serialized_options = b'\222?\002\010\024' + _globals['_COMPASSMODE']._serialized_start=1397 + _globals['_COMPASSMODE']._serialized_end=1459 + _globals['_THEME']._serialized_start=1461 + _globals['_THEME']._serialized_end=1498 + _globals['_LANGUAGE']._serialized_start=1501 + _globals['_LANGUAGE']._serialized_end=1821 + _globals['_DEVICEUICONFIG']._serialized_start=95 + _globals['_DEVICEUICONFIG']._serialized_end=904 + _globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_start=818 + _globals['_DEVICEUICONFIG_GPSCOORDINATEFORMAT']._serialized_end=904 + _globals['_NODEFILTER']._serialized_start=907 + _globals['_NODEFILTER']._serialized_end=1095 + _globals['_NODEHIGHLIGHT']._serialized_start=1098 + _globals['_NODEHIGHLIGHT']._serialized_end=1231 + _globals['_GEOPOINT']._serialized_start=1233 + _globals['_GEOPOINT']._serialized_end=1301 + _globals['_MAP']._serialized_start=1303 + _globals['_MAP']._serialized_end=1395 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/deviceonly_pb2.py b/meshtastic/protobuf/deviceonly_pb2.py index 06af5bc..59ded56 100644 --- a/meshtastic/protobuf/deviceonly_pb2.py +++ b/meshtastic/protobuf/deviceonly_pb2.py @@ -19,7 +19,7 @@ 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 -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\"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\x08b\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\"\xb0\x02\n\x08UserLite\x12\x1a\n\x07macaddr\x18\x01 \x01(\x0c\x42\t\x18\x01\x92?\x04\x08\x06x\x01\x12\x18\n\tlong_name\x18\x02 \x01(\tB\x05\x92?\x02\x08(\x12\x19\n\nshort_name\x18\x03 \x01(\tB\x05\x92?\x02\x08\x05\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\x19\n\npublic_key\x18\x07 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"\x85\x03\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\x16\n\x07\x63hannel\x18\x07 \x01(\rB\x05\x92?\x02\x38\x08\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x1d\n\thops_away\x18\t \x01(\rB\x05\x92?\x02\x38\x08H\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12\x17\n\x08next_hop\x18\x0c \x01(\rB\x05\x92?\x02\x38\x08\x12\x10\n\x08\x62itfield\x18\r \x01(\rB\x0c\n\n_hops_away\"\xaf\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=\n\rreceive_queue\x18\x05 \x03(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketB\x05\x92?\x02\x10\x01\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\x12T\n\x19node_remote_hardware_pins\x18\r \x03(\x0b\x32*.meshtastic.protobuf.NodeRemoteHardwarePinB\x05\x92?\x02\x10\x0c\"}\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\"U\n\x0b\x43hannelFile\x12\x35\n\x08\x63hannels\x18\x01 \x03(\x0b\x32\x1c.meshtastic.protobuf.ChannelB\x05\x92?\x02\x10\x08\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\x08b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,25 +28,43 @@ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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' _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\222?\004\010\006x\001' + _USERLITE.fields_by_name['long_name']._options = None + _USERLITE.fields_by_name['long_name']._serialized_options = b'\222?\002\010(' + _USERLITE.fields_by_name['short_name']._options = None + _USERLITE.fields_by_name['short_name']._serialized_options = b'\222?\002\010\005' + _USERLITE.fields_by_name['public_key']._options = None + _USERLITE.fields_by_name['public_key']._serialized_options = b'\222?\002\010 ' + _NODEINFOLITE.fields_by_name['channel']._options = None + _NODEINFOLITE.fields_by_name['channel']._serialized_options = b'\222?\0028\010' + _NODEINFOLITE.fields_by_name['hops_away']._options = None + _NODEINFOLITE.fields_by_name['hops_away']._serialized_options = b'\222?\0028\010' + _NODEINFOLITE.fields_by_name['next_hop']._options = None + _NODEINFOLITE.fields_by_name['next_hop']._serialized_options = b'\222?\0028\010' + _DEVICESTATE.fields_by_name['receive_queue']._options = None + _DEVICESTATE.fields_by_name['receive_queue']._serialized_options = b'\222?\002\020\001' _DEVICESTATE.fields_by_name['no_save']._options = None _DEVICESTATE.fields_by_name['no_save']._serialized_options = b'\030\001' _DEVICESTATE.fields_by_name['did_gps_reset']._options = None _DEVICESTATE.fields_by_name['did_gps_reset']._serialized_options = b'\030\001' + _DEVICESTATE.fields_by_name['node_remote_hardware_pins']._options = None + _DEVICESTATE.fields_by_name['node_remote_hardware_pins']._serialized_options = b'\222?\002\020\014' _NODEDATABASE.fields_by_name['nodes']._options = None _NODEDATABASE.fields_by_name['nodes']._serialized_options = b'\222?\'\222\001$std::vector' + _CHANNELFILE.fields_by_name['channels']._options = None + _CHANNELFILE.fields_by_name['channels']._serialized_options = b'\222?\002\020\010' _globals['_POSITIONLITE']._serialized_start=271 _globals['_POSITIONLITE']._serialized_end=424 _globals['_USERLITE']._serialized_start=427 - _globals['_USERLITE']._serialized_end=703 - _globals['_NODEINFOLITE']._serialized_start=706 - _globals['_NODEINFOLITE']._serialized_end=1074 - _globals['_DEVICESTATE']._serialized_start=1077 - _globals['_DEVICESTATE']._serialized_end=1494 - _globals['_NODEDATABASE']._serialized_start=1496 - _globals['_NODEDATABASE']._serialized_end=1621 - _globals['_CHANNELFILE']._serialized_start=1623 - _globals['_CHANNELFILE']._serialized_end=1701 - _globals['_BACKUPPREFERENCES']._serialized_start=1704 - _globals['_BACKUPPREFERENCES']._serialized_end=1966 + _globals['_USERLITE']._serialized_end=731 + _globals['_NODEINFOLITE']._serialized_start=734 + _globals['_NODEINFOLITE']._serialized_end=1123 + _globals['_DEVICESTATE']._serialized_start=1126 + _globals['_DEVICESTATE']._serialized_end=1557 + _globals['_NODEDATABASE']._serialized_start=1559 + _globals['_NODEDATABASE']._serialized_end=1684 + _globals['_CHANNELFILE']._serialized_start=1686 + _globals['_CHANNELFILE']._serialized_end=1771 + _globals['_BACKUPPREFERENCES']._serialized_start=1774 + _globals['_BACKUPPREFERENCES']._serialized_end=2036 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/interdevice_pb2.py b/meshtastic/protobuf/interdevice_pb2.py index dda2ad6..07b05e2 100644 --- a/meshtastic/protobuf/interdevice_pb2.py +++ b/meshtastic/protobuf/interdevice_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%meshtastic/protobuf/interdevice.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"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\"g\n\x12InterdeviceMessage\x12\x16\n\x04nmea\x18\x01 \x01(\tB\x06\x92?\x03\x08\x80\x08H\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,10 +22,12 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.interde if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=490 - _globals['_SENSORDATA']._serialized_start=62 - _globals['_SENSORDATA']._serialized_end=177 - _globals['_INTERDEVICEMESSAGE']._serialized_start=179 - _globals['_INTERDEVICEMESSAGE']._serialized_end=274 + _INTERDEVICEMESSAGE.fields_by_name['nmea']._options = None + _INTERDEVICEMESSAGE.fields_by_name['nmea']._serialized_options = b'\222?\003\010\200\010' + _globals['_MESSAGETYPE']._serialized_start=319 + _globals['_MESSAGETYPE']._serialized_end=532 + _globals['_SENSORDATA']._serialized_start=96 + _globals['_SENSORDATA']._serialized_end=211 + _globals['_INTERDEVICEMESSAGE']._serialized_start=213 + _globals['_INTERDEVICEMESSAGE']._serialized_end=316 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mesh_pb2.py b/meshtastic/protobuf/mesh_pb2.py index 4db1f3d..ef13bd9 100644 --- a/meshtastic/protobuf/mesh_pb2.py +++ b/meshtastic/protobuf/mesh_pb2.py @@ -18,9 +18,10 @@ from meshtastic.protobuf import module_config_pb2 as meshtastic_dot_protobuf_dot from meshtastic.protobuf import portnums_pb2 as meshtastic_dot_protobuf_dot_portnums__pb2 from meshtastic.protobuf import telemetry_pb2 as meshtastic_dot_protobuf_dot_telemetry__pb2 from meshtastic.protobuf import xmodem_pb2 as meshtastic_dot_protobuf_dot_xmodem__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mesh.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a#meshtastic/protobuf/device_ui.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/xmodem.proto\"\x99\x07\n\x08Position\x12\x17\n\nlatitude_i\x18\x01 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x02 \x01(\x0fH\x01\x88\x01\x01\x12\x15\n\x08\x61ltitude\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12@\n\x0flocation_source\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\x12@\n\x0f\x61ltitude_source\x18\x06 \x01(\x0e\x32\'.meshtastic.protobuf.Position.AltSource\x12\x11\n\ttimestamp\x18\x07 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 \x01(\x05\x12\x19\n\x0c\x61ltitude_hae\x18\t \x01(\x11H\x03\x88\x01\x01\x12(\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11H\x04\x88\x01\x01\x12\x0c\n\x04PDOP\x18\x0b \x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e \x01(\r\x12\x19\n\x0cground_speed\x18\x0f \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cground_track\x18\x10 \x01(\rH\x06\x88\x01\x01\x12\x13\n\x0b\x66ix_quality\x18\x11 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 \x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 \x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 \x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 \x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_iB\x0b\n\t_altitudeB\x0f\n\r_altitude_haeB\x1e\n\x1c_altitude_geoidal_separationB\x0f\n\r_ground_speedB\x0f\n\r_ground_track\"\x9c\x02\n\x04User\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tlong_name\x18\x02 \x01(\t\x12\x12\n\nshort_name\x18\x03 \x01(\t\x12\x13\n\x07macaddr\x18\x04 \x01(\x0c\x42\x02\x18\x01\x12\x34\n\x08hw_model\x18\x05 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x12\n\npublic_key\x18\x08 \x01(\x0c\x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"Z\n\x0eRouteDiscovery\x12\r\n\x05route\x18\x01 \x03(\x07\x12\x13\n\x0bsnr_towards\x18\x02 \x03(\x05\x12\x12\n\nroute_back\x18\x03 \x03(\x07\x12\x10\n\x08snr_back\x18\x04 \x03(\x05\"\xb4\x04\n\x07Routing\x12<\n\rroute_request\x18\x01 \x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0broute_reply\x18\x02 \x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\".meshtastic.protobuf.Routing.ErrorH\x00\"\xe7\x02\n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!\x12\x0e\n\nPKI_FAILED\x10\"\x12\x16\n\x12PKI_UNKNOWN_PUBKEY\x10#\x12\x19\n\x15\x41\x44MIN_BAD_SESSION_KEY\x10$\x12!\n\x1d\x41\x44MIN_PUBLIC_KEY_UNAUTHORIZED\x10%\x12\x17\n\x13RATE_LIMIT_EXCEEDED\x10&\x12\x1c\n\x18PKI_SEND_FAIL_PUBLIC_KEY\x10\'B\t\n\x07variant\"\xd4\x01\n\x04\x44\x61ta\x12-\n\x07portnum\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\x12\x15\n\rwant_response\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 \x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 \x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\x12\x15\n\x08\x62itfield\x18\t \x01(\rH\x00\x88\x01\x01\x42\x0b\n\t_bitfield\">\n\x0fKeyVerification\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\r\n\x05hash1\x18\x02 \x01(\x0c\x12\r\n\x05hash2\x18\x03 \x01(\x0c\"\xd4\x03\n\x14StoreForwardPlusPlus\x12V\n\x11sfpp_message_type\x18\x01 \x01(\x0e\x32;.meshtastic.protobuf.StoreForwardPlusPlus.SFPP_message_type\x12\x14\n\x0cmessage_hash\x18\x02 \x01(\x0c\x12\x13\n\x0b\x63ommit_hash\x18\x03 \x01(\x0c\x12\x11\n\troot_hash\x18\x04 \x01(\x0c\x12\x0f\n\x07message\x18\x05 \x01(\x0c\x12\x17\n\x0f\x65ncapsulated_id\x18\x06 \x01(\r\x12\x17\n\x0f\x65ncapsulated_to\x18\x07 \x01(\r\x12\x19\n\x11\x65ncapsulated_from\x18\x08 \x01(\r\x12\x1b\n\x13\x65ncapsulated_rxtime\x18\t \x01(\r\x12\x13\n\x0b\x63hain_count\x18\n \x01(\r\"\x95\x01\n\x11SFPP_message_type\x12\x12\n\x0e\x43\x41NON_ANNOUNCE\x10\x00\x12\x0f\n\x0b\x43HAIN_QUERY\x10\x01\x12\x10\n\x0cLINK_REQUEST\x10\x03\x12\x10\n\x0cLINK_PROVIDE\x10\x04\x12\x1a\n\x16LINK_PROVIDE_FIRSTHALF\x10\x05\x12\x1b\n\x17LINK_PROVIDE_SECONDHALF\x10\x06\"\xec\x02\n\x0bRemoteShell\x12\x33\n\x02op\x18\x01 \x01(\x0e\x32\'.meshtastic.protobuf.RemoteShell.OpCode\x12\x12\n\nsession_id\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x0f\n\x07\x61\x63k_seq\x18\x04 \x01(\r\x12\x0f\n\x07payload\x18\x05 \x01(\x0c\x12\x0c\n\x04\x63ols\x18\x06 \x01(\r\x12\x0c\n\x04rows\x18\x07 \x01(\r\x12\r\n\x05\x66lags\x18\x08 \x01(\r\x12\x13\n\x0blast_tx_seq\x18\t \x01(\r\x12\x13\n\x0blast_rx_seq\x18\n \x01(\r\"\x8f\x01\n\x06OpCode\x12\x0c\n\x08OP_UNSET\x10\x00\x12\x08\n\x04OPEN\x10\x01\x12\t\n\x05INPUT\x10\x02\x12\n\n\x06RESIZE\x10\x03\x12\t\n\x05\x43LOSE\x10\x04\x12\x08\n\x04PING\x10\x05\x12\x07\n\x03\x41\x43K\x10\x06\x12\x0b\n\x07OPEN_OK\x10@\x12\n\n\x06OUTPUT\x10\x41\x12\n\n\x06\x43LOSED\x10\x42\x12\t\n\x05\x45RROR\x10\x43\x12\x08\n\x04PONG\x10\x44\"\xbc\x01\n\x08Waypoint\x12\n\n\x02id\x18\x01 \x01(\r\x12\x17\n\nlatitude_i\x18\x02 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x03 \x01(\x0fH\x01\x88\x01\x01\x12\x0e\n\x06\x65xpire\x18\x04 \x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\x07\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_i\"\x1f\n\rStatusMessage\x12\x0e\n\x06status\x18\x01 \x01(\t\"l\n\x16MqttClientProxyMessage\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x0e\n\x04text\x18\x03 \x01(\tH\x00\x12\x10\n\x08retained\x18\x04 \x01(\x08\x42\x11\n\x0fpayload_variant\"\xd9\x07\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\r\x12,\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x19.meshtastic.protobuf.DataH\x00\x12\x13\n\tencrypted\x18\x05 \x01(\x0cH\x00\x12\n\n\x02id\x18\x06 \x01(\x07\x12\x0f\n\x07rx_time\x18\x07 \x01(\x07\x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x11\n\thop_limit\x18\t \x01(\r\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12:\n\x08priority\x18\x0b \x01(\x0e\x32(.meshtastic.protobuf.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c \x01(\x05\x12<\n\x07\x64\x65layed\x18\r \x01(\x0e\x32\'.meshtastic.protobuf.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e \x01(\x08\x12\x11\n\thop_start\x18\x0f \x01(\r\x12\x12\n\npublic_key\x18\x10 \x01(\x0c\x12\x15\n\rpki_encrypted\x18\x11 \x01(\x08\x12\x10\n\x08next_hop\x18\x12 \x01(\r\x12\x12\n\nrelay_node\x18\x13 \x01(\r\x12\x10\n\x08tx_after\x18\x14 \x01(\r\x12O\n\x13transport_mechanism\x18\x15 \x01(\x0e\x32\x32.meshtastic.protobuf.MeshPacket.TransportMechanism\"~\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x0c\n\x08RESPONSE\x10P\x12\x08\n\x04HIGH\x10\x64\x12\t\n\x05\x41LERT\x10n\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x12\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\"\xcf\x01\n\x12TransportMechanism\x12\x16\n\x12TRANSPORT_INTERNAL\x10\x00\x12\x12\n\x0eTRANSPORT_LORA\x10\x01\x12\x17\n\x13TRANSPORT_LORA_ALT1\x10\x02\x12\x17\n\x13TRANSPORT_LORA_ALT2\x10\x03\x12\x17\n\x13TRANSPORT_LORA_ALT3\x10\x04\x12\x12\n\x0eTRANSPORT_MQTT\x10\x05\x12\x1b\n\x17TRANSPORT_MULTICAST_UDP\x10\x06\x12\x11\n\rTRANSPORT_API\x10\x07\x42\x11\n\x0fpayload_variant\"\xf4\x02\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12/\n\x08position\x18\x03 \x01(\x0b\x32\x1d.meshtastic.protobuf.Position\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x0f\n\x07\x63hannel\x18\x07 \x01(\r\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x16\n\thops_away\x18\t \x01(\rH\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12 \n\x18is_key_manually_verified\x18\x0c \x01(\x08\x12\x10\n\x08is_muted\x18\r \x01(\x08\x42\x0c\n\n_hops_away\"\xca\x01\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b \x01(\r\x12\x11\n\tdevice_id\x18\x0c \x01(\x0c\x12\x0f\n\x07pio_env\x18\r \x01(\t\x12>\n\x10\x66irmware_edition\x18\x0e \x01(\x0e\x32$.meshtastic.protobuf.FirmwareEdition\x12\x14\n\x0cnodedb_count\x18\x0f \x01(\r\"\xc9\x01\n\tLogRecord\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x33\n\x05level\x18\x04 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"P\n\x0bQueueStatus\x12\x0b\n\x03res\x18\x01 \x01(\x05\x12\x0c\n\x04\x66ree\x18\x02 \x01(\r\x12\x0e\n\x06maxlen\x18\x03 \x01(\r\x12\x16\n\x0emesh_packet_id\x18\x04 \x01(\r\"\xb7\x07\n\tFromRadio\x12\n\n\x02id\x18\x01 \x01(\r\x12\x31\n\x06packet\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x32\n\x07my_info\x18\x03 \x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfoH\x00\x12\x32\n\tnode_info\x18\x04 \x01(\x0b\x32\x1d.meshtastic.protobuf.NodeInfoH\x00\x12-\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12\x34\n\nlog_record\x18\x06 \x01(\x0b\x32\x1e.meshtastic.protobuf.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x39\n\x0cmoduleConfig\x18\t \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12/\n\x07\x63hannel\x18\n \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x37\n\x0bqueueStatus\x18\x0b \x01(\x0b\x32 .meshtastic.protobuf.QueueStatusH\x00\x12\x33\n\x0cxmodemPacket\x18\x0c \x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12\x37\n\x08metadata\x18\r \x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12M\n\x16mqttClientProxyMessage\x18\x0e \x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x31\n\x08\x66ileInfo\x18\x0f \x01(\x0b\x32\x1d.meshtastic.protobuf.FileInfoH\x00\x12\x45\n\x12\x63lientNotification\x18\x10 \x01(\x0b\x32\'.meshtastic.protobuf.ClientNotificationH\x00\x12=\n\x0e\x64\x65viceuiConfig\x18\x11 \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0flockdown_status\x18\x12 \x01(\x0b\x32#.meshtastic.protobuf.LockdownStatusH\x00\x42\x11\n\x0fpayload_variant\"\x8e\x02\n\x0eLockdownStatus\x12\x38\n\x05state\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.LockdownStatus.State\x12\x13\n\x0block_reason\x18\x02 \x01(\t\x12\x17\n\x0f\x62oots_remaining\x18\x03 \x01(\r\x12\x19\n\x11valid_until_epoch\x18\x04 \x01(\r\x12\x17\n\x0f\x62\x61\x63koff_seconds\x18\x05 \x01(\r\"`\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x13\n\x0fNEEDS_PROVISION\x10\x01\x12\n\n\x06LOCKED\x10\x02\x12\x0c\n\x08UNLOCKED\x10\x03\x12\x11\n\rUNLOCK_FAILED\x10\x04\"\xb0\x04\n\x12\x43lientNotification\x12\x15\n\x08reply_id\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x33\n\x05level\x18\x03 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\x12\x0f\n\x07message\x18\x04 \x01(\t\x12Z\n\x1ekey_verification_number_inform\x18\x0b \x01(\x0b\x32\x30.meshtastic.protobuf.KeyVerificationNumberInformH\x00\x12\\\n\x1fkey_verification_number_request\x18\x0c \x01(\x0b\x32\x31.meshtastic.protobuf.KeyVerificationNumberRequestH\x00\x12K\n\x16key_verification_final\x18\r \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationFinalH\x00\x12I\n\x15\x64uplicated_public_key\x18\x0e \x01(\x0b\x32(.meshtastic.protobuf.DuplicatedPublicKeyH\x00\x12=\n\x0flow_entropy_key\x18\x0f \x01(\x0b\x32\".meshtastic.protobuf.LowEntropyKeyH\x00\x42\x11\n\x0fpayload_variantB\x0b\n\t_reply_id\"^\n\x1bKeyVerificationNumberInform\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\x12\x17\n\x0fsecurity_number\x18\x03 \x01(\r\"F\n\x1cKeyVerificationNumberRequest\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\"q\n\x14KeyVerificationFinal\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x17\n\x0fremote_longname\x18\x02 \x01(\t\x12\x10\n\x08isSender\x18\x03 \x01(\x08\x12\x1f\n\x17verification_characters\x18\x04 \x01(\t\"\x15\n\x13\x44uplicatedPublicKey\"\x0f\n\rLowEntropyKey\"1\n\x08\x46ileInfo\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\r\"\xb8\x02\n\x07ToRadio\x12\x31\n\x06packet\x18\x01 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 \x01(\x08H\x00\x12\x33\n\x0cxmodemPacket\x18\x05 \x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12M\n\x16mqttClientProxyMessage\x18\x06 \x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x33\n\theartbeat\x18\x07 \x01(\x0b\x32\x1e.meshtastic.protobuf.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"I\n\nCompressed\x12-\n\x07portnum\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x90\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_interval_secs\x18\x03 \x01(\r\x12\x30\n\tneighbors\x18\x04 \x03(\x0b\x32\x1d.meshtastic.protobuf.Neighbor\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 \x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 \x01(\r\"\xe9\x02\n\x0e\x44\x65viceMetadata\x12\x18\n\x10\x66irmware_version\x18\x01 \x01(\t\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 \x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 \x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 \x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 \x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08 \x01(\r\x12\x34\n\x08hw_model\x18\t \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n \x01(\x08\x12\x0e\n\x06hasPKC\x18\x0b \x01(\x08\x12\x18\n\x10\x65xcluded_modules\x18\x0c \x01(\r\"\x1a\n\tHeartbeat\x12\r\n\x05nonce\x18\x01 \x01(\r\"^\n\x15NodeRemoteHardwarePin\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\x33\n\x03pin\x18\x02 \x01(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\"e\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x13\n\x0b\x63hunk_count\x18\x02 \x01(\r\x12\x13\n\x0b\x63hunk_index\x18\x03 \x01(\r\x12\x15\n\rpayload_chunk\x18\x04 \x01(\x0c\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 \x03(\r\"\xb3\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x1a\n\x10request_transfer\x18\x02 \x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 \x01(\x08H\x00\x12;\n\rresend_chunks\x18\x04 \x01(\x0b\x32\".meshtastic.protobuf.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xce\x14\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK4631\x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nWIO_WM1110\x10\x15\x12\x0b\n\x07RAK2560\x10\x16\x12\x13\n\x0fHELTEC_HRU_3601\x10\x17\x12\x1a\n\x16HELTEC_WIRELESS_BRIDGE\x10\x18\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10 \x12\x0f\n\x0bT_ECHO_PLUS\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12 \n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x1d\n\x19HELTEC_VISION_MASTER_T190\x10\x42\x12\x1d\n\x19HELTEC_VISION_MASTER_E213\x10\x43\x12\x1d\n\x19HELTEC_VISION_MASTER_E290\x10\x44\x12\x19\n\x15HELTEC_MESH_NODE_T114\x10\x45\x12\x16\n\x12SENSECAP_INDICATOR\x10\x46\x12\x13\n\x0fTRACKER_T1000_E\x10G\x12\x0b\n\x07RAK3172\x10H\x12\n\n\x06WIO_E5\x10I\x12\x1a\n\x16RADIOMASTER_900_BANDIT\x10J\x12\x13\n\x0fME25LS01_4Y10TD\x10K\x12\x18\n\x14RP2040_FEATHER_RFM95\x10L\x12\x15\n\x11M5STACK_COREBASIC\x10M\x12\x11\n\rM5STACK_CORE2\x10N\x12\r\n\tRPI_PICO2\x10O\x12\x12\n\x0eM5STACK_CORES3\x10P\x12\x11\n\rSEEED_XIAO_S3\x10Q\x12\x0b\n\x07MS24SF1\x10R\x12\x0c\n\x08TLORA_C6\x10S\x12\x0f\n\x0bWISMESH_TAP\x10T\x12\r\n\tROUTASTIC\x10U\x12\x0c\n\x08MESH_TAB\x10V\x12\x0c\n\x08MESHLINK\x10W\x12\x12\n\x0eXIAO_NRF52_KIT\x10X\x12\x10\n\x0cTHINKNODE_M1\x10Y\x12\x10\n\x0cTHINKNODE_M2\x10Z\x12\x0f\n\x0bT_ETH_ELITE\x10[\x12\x15\n\x11HELTEC_SENSOR_HUB\x10\\\x12\r\n\tMUZI_BASE\x10]\x12\x16\n\x12HELTEC_MESH_POCKET\x10^\x12\x14\n\x10SEEED_SOLAR_NODE\x10_\x12\x18\n\x14NOMADSTAR_METEOR_PRO\x10`\x12\r\n\tCROWPANEL\x10\x61\x12\x0b\n\x07LINK_32\x10\x62\x12\x18\n\x14SEEED_WIO_TRACKER_L1\x10\x63\x12\x1d\n\x19SEEED_WIO_TRACKER_L1_EINK\x10\x64\x12\x0f\n\x0bMUZI_R1_NEO\x10\x65\x12\x0e\n\nT_DECK_PRO\x10\x66\x12\x10\n\x0cT_LORA_PAGER\x10g\x12\x14\n\x10M5STACK_RESERVED\x10h\x12\x0f\n\x0bWISMESH_TAG\x10i\x12\x0b\n\x07RAK3312\x10j\x12\x10\n\x0cTHINKNODE_M5\x10k\x12\x15\n\x11HELTEC_MESH_SOLAR\x10l\x12\x0f\n\x0bT_ECHO_LITE\x10m\x12\r\n\tHELTEC_V4\x10n\x12\x0f\n\x0bM5STACK_C6L\x10o\x12\x19\n\x15M5STACK_CARDPUTER_ADV\x10p\x12\x1e\n\x1aHELTEC_WIRELESS_TRACKER_V2\x10q\x12\x11\n\rT_WATCH_ULTRA\x10r\x12\x10\n\x0cTHINKNODE_M3\x10s\x12\x12\n\x0eWISMESH_TAP_V2\x10t\x12\x0b\n\x07RAK3401\x10u\x12\x0b\n\x07RAK6421\x10v\x12\x10\n\x0cTHINKNODE_M4\x10w\x12\x10\n\x0cTHINKNODE_M6\x10x\x12\x12\n\x0eMESHSTICK_1262\x10y\x12\x10\n\x0cTBEAM_1_WATT\x10z\x12\x14\n\x10T5_S3_EPAPER_PRO\x10{\x12\r\n\tTBEAM_BPF\x10|\x12\x12\n\x0eMINI_EPAPER_S3\x10}\x12\x13\n\x0fTDISPLAY_S3_PRO\x10~\x12\x19\n\x15HELTEC_MESH_NODE_T096\x10\x7f\x12\x18\n\x13TRACKER_T1000_E_PRO\x10\x80\x01\x12\x11\n\x0cTHINKNODE_M7\x10\x81\x01\x12\x11\n\x0cTHINKNODE_M8\x10\x82\x01\x12\x11\n\x0cTHINKNODE_M9\x10\x83\x01\x12\x11\n\x0cHELTEC_V4_R8\x10\x84\x01\x12\x18\n\x13HELTEC_MESH_NODE_T1\x10\x85\x01\x12\x0f\n\nSTATION_G3\x10\x86\x01\x12\x13\n\x0eT_IMPULSE_PLUS\x10\x87\x01\x12\x10\n\x0bT_ECHO_CARD\x10\x88\x01\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xe9\x01*\xb4\x02\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x12 \n\x1c\x46LASH_CORRUPTION_RECOVERABLE\x10\x0c\x12\"\n\x1e\x46LASH_CORRUPTION_UNRECOVERABLE\x10\r*\x7f\n\x0f\x46irmwareEdition\x12\x0b\n\x07VANILLA\x10\x00\x12\x11\n\rSMART_CITIZEN\x10\x01\x12\x0e\n\nOPEN_SAUCE\x10\x10\x12\n\n\x06\x44\x45\x46\x43ON\x10\x11\x12\x0f\n\x0b\x42URNING_MAN\x10\x12\x12\x0e\n\nHAMVENTION\x10\x13\x12\x0f\n\x0b\x44IY_EDITION\x10\x7f*\x80\x03\n\x0f\x45xcludedModules\x12\x11\n\rEXCLUDED_NONE\x10\x00\x12\x0f\n\x0bMQTT_CONFIG\x10\x01\x12\x11\n\rSERIAL_CONFIG\x10\x02\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x04\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x08\x12\x14\n\x10RANGETEST_CONFIG\x10\x10\x12\x14\n\x10TELEMETRY_CONFIG\x10 \x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10@\x12\x11\n\x0c\x41UDIO_CONFIG\x10\x80\x01\x12\x1a\n\x15REMOTEHARDWARE_CONFIG\x10\x80\x02\x12\x18\n\x13NEIGHBORINFO_CONFIG\x10\x80\x04\x12\x1b\n\x16\x41MBIENTLIGHTING_CONFIG\x10\x80\x08\x12\x1b\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x80\x10\x12\x16\n\x11PAXCOUNTER_CONFIG\x10\x80 \x12\x15\n\x10\x42LUETOOTH_CONFIG\x10\x80@\x12\x14\n\x0eNETWORK_CONFIG\x10\x80\x80\x01\x42`\n\x14org.meshtastic.protoB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emeshtastic/protobuf/mesh.proto\x12\x13meshtastic.protobuf\x1a!meshtastic/protobuf/channel.proto\x1a meshtastic/protobuf/config.proto\x1a#meshtastic/protobuf/device_ui.proto\x1a\'meshtastic/protobuf/module_config.proto\x1a\"meshtastic/protobuf/portnums.proto\x1a#meshtastic/protobuf/telemetry.proto\x1a meshtastic/protobuf/xmodem.proto\x1a meshtastic/protobuf/nanopb.proto\"\x99\x07\n\x08Position\x12\x17\n\nlatitude_i\x18\x01 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x02 \x01(\x0fH\x01\x88\x01\x01\x12\x15\n\x08\x61ltitude\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12\x0c\n\x04time\x18\x04 \x01(\x07\x12@\n\x0flocation_source\x18\x05 \x01(\x0e\x32\'.meshtastic.protobuf.Position.LocSource\x12@\n\x0f\x61ltitude_source\x18\x06 \x01(\x0e\x32\'.meshtastic.protobuf.Position.AltSource\x12\x11\n\ttimestamp\x18\x07 \x01(\x07\x12\x1f\n\x17timestamp_millis_adjust\x18\x08 \x01(\x05\x12\x19\n\x0c\x61ltitude_hae\x18\t \x01(\x11H\x03\x88\x01\x01\x12(\n\x1b\x61ltitude_geoidal_separation\x18\n \x01(\x11H\x04\x88\x01\x01\x12\x0c\n\x04PDOP\x18\x0b \x01(\r\x12\x0c\n\x04HDOP\x18\x0c \x01(\r\x12\x0c\n\x04VDOP\x18\r \x01(\r\x12\x14\n\x0cgps_accuracy\x18\x0e \x01(\r\x12\x19\n\x0cground_speed\x18\x0f \x01(\rH\x05\x88\x01\x01\x12\x19\n\x0cground_track\x18\x10 \x01(\rH\x06\x88\x01\x01\x12\x13\n\x0b\x66ix_quality\x18\x11 \x01(\r\x12\x10\n\x08\x66ix_type\x18\x12 \x01(\r\x12\x14\n\x0csats_in_view\x18\x13 \x01(\r\x12\x11\n\tsensor_id\x18\x14 \x01(\r\x12\x13\n\x0bnext_update\x18\x15 \x01(\r\x12\x12\n\nseq_number\x18\x16 \x01(\r\x12\x16\n\x0eprecision_bits\x18\x17 \x01(\r\"N\n\tLocSource\x12\r\n\tLOC_UNSET\x10\x00\x12\x0e\n\nLOC_MANUAL\x10\x01\x12\x10\n\x0cLOC_INTERNAL\x10\x02\x12\x10\n\x0cLOC_EXTERNAL\x10\x03\"b\n\tAltSource\x12\r\n\tALT_UNSET\x10\x00\x12\x0e\n\nALT_MANUAL\x10\x01\x12\x10\n\x0c\x41LT_INTERNAL\x10\x02\x12\x10\n\x0c\x41LT_EXTERNAL\x10\x03\x12\x12\n\x0e\x41LT_BAROMETRIC\x10\x04\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_iB\x0b\n\t_altitudeB\x0f\n\r_altitude_haeB\x1e\n\x1c_altitude_geoidal_separationB\x0f\n\r_ground_speedB\x0f\n\r_ground_track\"\xbf\x02\n\x04User\x12\x11\n\x02id\x18\x01 \x01(\tB\x05\x92?\x02\x08\x10\x12\x18\n\tlong_name\x18\x02 \x01(\tB\x05\x92?\x02\x08(\x12\x19\n\nshort_name\x18\x03 \x01(\tB\x05\x92?\x02\x08\x05\x12\x1a\n\x07macaddr\x18\x04 \x01(\x0c\x42\t\x18\x01\x92?\x04\x08\x06x\x01\x12\x34\n\x08hw_model\x18\x05 \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x13\n\x0bis_licensed\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x19\n\npublic_key\x18\x08 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x1c\n\x0fis_unmessagable\x18\t \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_is_unmessagable\"z\n\x0eRouteDiscovery\x12\x14\n\x05route\x18\x01 \x03(\x07\x42\x05\x92?\x02\x10\x08\x12\x1c\n\x0bsnr_towards\x18\x02 \x03(\x05\x42\x07\x92?\x04\x10\x08\x38\x08\x12\x19\n\nroute_back\x18\x03 \x03(\x07\x42\x05\x92?\x02\x10\x08\x12\x19\n\x08snr_back\x18\x04 \x03(\x05\x42\x07\x92?\x04\x10\x08\x38\x08\"\xb4\x04\n\x07Routing\x12<\n\rroute_request\x18\x01 \x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0broute_reply\x18\x02 \x01(\x0b\x32#.meshtastic.protobuf.RouteDiscoveryH\x00\x12:\n\x0c\x65rror_reason\x18\x03 \x01(\x0e\x32\".meshtastic.protobuf.Routing.ErrorH\x00\"\xe7\x02\n\x05\x45rror\x12\x08\n\x04NONE\x10\x00\x12\x0c\n\x08NO_ROUTE\x10\x01\x12\x0b\n\x07GOT_NAK\x10\x02\x12\x0b\n\x07TIMEOUT\x10\x03\x12\x10\n\x0cNO_INTERFACE\x10\x04\x12\x12\n\x0eMAX_RETRANSMIT\x10\x05\x12\x0e\n\nNO_CHANNEL\x10\x06\x12\r\n\tTOO_LARGE\x10\x07\x12\x0f\n\x0bNO_RESPONSE\x10\x08\x12\x14\n\x10\x44UTY_CYCLE_LIMIT\x10\t\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10 \x12\x12\n\x0eNOT_AUTHORIZED\x10!\x12\x0e\n\nPKI_FAILED\x10\"\x12\x16\n\x12PKI_UNKNOWN_PUBKEY\x10#\x12\x19\n\x15\x41\x44MIN_BAD_SESSION_KEY\x10$\x12!\n\x1d\x41\x44MIN_PUBLIC_KEY_UNAUTHORIZED\x10%\x12\x17\n\x13RATE_LIMIT_EXCEEDED\x10&\x12\x1c\n\x18PKI_SEND_FAIL_PUBLIC_KEY\x10\'B\t\n\x07variant\"\xe3\x01\n\x04\x44\x61ta\x12-\n\x07portnum\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x17\n\x07payload\x18\x02 \x01(\x0c\x42\x06\x92?\x03\x08\xe9\x01\x12\x15\n\rwant_response\x18\x03 \x01(\x08\x12\x0c\n\x04\x64\x65st\x18\x04 \x01(\x07\x12\x0e\n\x06source\x18\x05 \x01(\x07\x12\x12\n\nrequest_id\x18\x06 \x01(\x07\x12\x10\n\x08reply_id\x18\x07 \x01(\x07\x12\r\n\x05\x65moji\x18\x08 \x01(\x07\x12\x1c\n\x08\x62itfield\x18\t \x01(\rB\x05\x92?\x02\x38\x08H\x00\x88\x01\x01\x42\x0b\n\t_bitfield\"L\n\x0fKeyVerification\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x14\n\x05hash1\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x14\n\x05hash2\x18\x03 \x01(\x0c\x42\x05\x92?\x02\x08 \"\xf1\x03\n\x14StoreForwardPlusPlus\x12V\n\x11sfpp_message_type\x18\x01 \x01(\x0e\x32;.meshtastic.protobuf.StoreForwardPlusPlus.SFPP_message_type\x12\x1b\n\x0cmessage_hash\x18\x02 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x1a\n\x0b\x63ommit_hash\x18\x03 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x18\n\troot_hash\x18\x04 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x17\n\x07message\x18\x05 \x01(\x0c\x42\x06\x92?\x03\x08\xf0\x01\x12\x17\n\x0f\x65ncapsulated_id\x18\x06 \x01(\r\x12\x17\n\x0f\x65ncapsulated_to\x18\x07 \x01(\r\x12\x19\n\x11\x65ncapsulated_from\x18\x08 \x01(\r\x12\x1b\n\x13\x65ncapsulated_rxtime\x18\t \x01(\r\x12\x13\n\x0b\x63hain_count\x18\n \x01(\r\"\x95\x01\n\x11SFPP_message_type\x12\x12\n\x0e\x43\x41NON_ANNOUNCE\x10\x00\x12\x0f\n\x0b\x43HAIN_QUERY\x10\x01\x12\x10\n\x0cLINK_REQUEST\x10\x03\x12\x10\n\x0cLINK_PROVIDE\x10\x04\x12\x1a\n\x16LINK_PROVIDE_FIRSTHALF\x10\x05\x12\x1b\n\x17LINK_PROVIDE_SECONDHALF\x10\x06\"\xf4\x02\n\x0bRemoteShell\x12\x33\n\x02op\x18\x01 \x01(\x0e\x32\'.meshtastic.protobuf.RemoteShell.OpCode\x12\x12\n\nsession_id\x18\x02 \x01(\r\x12\x0b\n\x03seq\x18\x03 \x01(\r\x12\x0f\n\x07\x61\x63k_seq\x18\x04 \x01(\r\x12\x17\n\x07payload\x18\x05 \x01(\x0c\x42\x06\x92?\x03\x08\xc8\x01\x12\x0c\n\x04\x63ols\x18\x06 \x01(\r\x12\x0c\n\x04rows\x18\x07 \x01(\r\x12\r\n\x05\x66lags\x18\x08 \x01(\r\x12\x13\n\x0blast_tx_seq\x18\t \x01(\r\x12\x13\n\x0blast_rx_seq\x18\n \x01(\r\"\x8f\x01\n\x06OpCode\x12\x0c\n\x08OP_UNSET\x10\x00\x12\x08\n\x04OPEN\x10\x01\x12\t\n\x05INPUT\x10\x02\x12\n\n\x06RESIZE\x10\x03\x12\t\n\x05\x43LOSE\x10\x04\x12\x08\n\x04PING\x10\x05\x12\x07\n\x03\x41\x43K\x10\x06\x12\x0b\n\x07OPEN_OK\x10@\x12\n\n\x06OUTPUT\x10\x41\x12\n\n\x06\x43LOSED\x10\x42\x12\t\n\x05\x45RROR\x10\x43\x12\x08\n\x04PONG\x10\x44\"\xd1\x01\n\x08Waypoint\x12\x11\n\x02id\x18\x01 \x01(\rB\x05\x92?\x02\x08\x10\x12\x17\n\nlatitude_i\x18\x02 \x01(\x0fH\x00\x88\x01\x01\x12\x18\n\x0blongitude_i\x18\x03 \x01(\x0fH\x01\x88\x01\x01\x12\x0e\n\x06\x65xpire\x18\x04 \x01(\r\x12\x11\n\tlocked_to\x18\x05 \x01(\r\x12\x13\n\x04name\x18\x06 \x01(\tB\x05\x92?\x02\x08\x1e\x12\x1a\n\x0b\x64\x65scription\x18\x07 \x01(\tB\x05\x92?\x02\x08\x64\x12\x0c\n\x04icon\x18\x08 \x01(\x07\x42\r\n\x0b_latitude_iB\x0e\n\x0c_longitude_i\"&\n\rStatusMessage\x12\x15\n\x06status\x18\x01 \x01(\tB\x05\x92?\x02\x08P\"\x83\x01\n\x16MqttClientProxyMessage\x12\x14\n\x05topic\x18\x01 \x01(\tB\x05\x92?\x02\x08<\x12\x16\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x06\x92?\x03\x08\xb3\x03H\x00\x12\x16\n\x04text\x18\x03 \x01(\tB\x06\x92?\x03\x08\xb3\x03H\x00\x12\x10\n\x08retained\x18\x04 \x01(\x08\x42\x11\n\x0fpayload_variant\"\x92\x08\n\nMeshPacket\x12\x0c\n\x04\x66rom\x18\x01 \x01(\x07\x12\n\n\x02to\x18\x02 \x01(\x07\x12\x16\n\x07\x63hannel\x18\x03 \x01(\rB\x05\x92?\x02\x38\x08\x12,\n\x07\x64\x65\x63oded\x18\x04 \x01(\x0b\x32\x19.meshtastic.protobuf.DataH\x00\x12\x1b\n\tencrypted\x18\x05 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x02H\x00\x12\x11\n\x02id\x18\x06 \x01(\x07\x42\x05\x92?\x02\x08\x10\x12\x0f\n\x07rx_time\x18\x07 \x01(\x07\x12\x0e\n\x06rx_snr\x18\x08 \x01(\x02\x12\x18\n\thop_limit\x18\t \x01(\rB\x05\x92?\x02\x38\x08\x12\x10\n\x08want_ack\x18\n \x01(\x08\x12:\n\x08priority\x18\x0b \x01(\x0e\x32(.meshtastic.protobuf.MeshPacket.Priority\x12\x0f\n\x07rx_rssi\x18\x0c \x01(\x05\x12<\n\x07\x64\x65layed\x18\r \x01(\x0e\x32\'.meshtastic.protobuf.MeshPacket.DelayedB\x02\x18\x01\x12\x10\n\x08via_mqtt\x18\x0e \x01(\x08\x12\x18\n\thop_start\x18\x0f \x01(\rB\x05\x92?\x02\x38\x08\x12\x19\n\npublic_key\x18\x10 \x01(\x0c\x42\x05\x92?\x02\x08 \x12\x15\n\rpki_encrypted\x18\x11 \x01(\x08\x12\x17\n\x08next_hop\x18\x12 \x01(\rB\x05\x92?\x02\x38\x08\x12\x19\n\nrelay_node\x18\x13 \x01(\rB\x05\x92?\x02\x38\x08\x12\x10\n\x08tx_after\x18\x14 \x01(\r\x12O\n\x13transport_mechanism\x18\x15 \x01(\x0e\x32\x32.meshtastic.protobuf.MeshPacket.TransportMechanism\"~\n\x08Priority\x12\t\n\x05UNSET\x10\x00\x12\x07\n\x03MIN\x10\x01\x12\x0e\n\nBACKGROUND\x10\n\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10@\x12\x0c\n\x08RELIABLE\x10\x46\x12\x0c\n\x08RESPONSE\x10P\x12\x08\n\x04HIGH\x10\x64\x12\t\n\x05\x41LERT\x10n\x12\x07\n\x03\x41\x43K\x10x\x12\x07\n\x03MAX\x10\x7f\"B\n\x07\x44\x65layed\x12\x0c\n\x08NO_DELAY\x10\x00\x12\x15\n\x11\x44\x45LAYED_BROADCAST\x10\x01\x12\x12\n\x0e\x44\x45LAYED_DIRECT\x10\x02\"\xcf\x01\n\x12TransportMechanism\x12\x16\n\x12TRANSPORT_INTERNAL\x10\x00\x12\x12\n\x0eTRANSPORT_LORA\x10\x01\x12\x17\n\x13TRANSPORT_LORA_ALT1\x10\x02\x12\x17\n\x13TRANSPORT_LORA_ALT2\x10\x03\x12\x17\n\x13TRANSPORT_LORA_ALT3\x10\x04\x12\x12\n\x0eTRANSPORT_MQTT\x10\x05\x12\x1b\n\x17TRANSPORT_MULTICAST_UDP\x10\x06\x12\x11\n\rTRANSPORT_API\x10\x07\x42\x11\n\x0fpayload_variant\"\x82\x03\n\x08NodeInfo\x12\x0b\n\x03num\x18\x01 \x01(\r\x12\'\n\x04user\x18\x02 \x01(\x0b\x32\x19.meshtastic.protobuf.User\x12/\n\x08position\x18\x03 \x01(\x0b\x32\x1d.meshtastic.protobuf.Position\x12\x0b\n\x03snr\x18\x04 \x01(\x02\x12\x12\n\nlast_heard\x18\x05 \x01(\x07\x12:\n\x0e\x64\x65vice_metrics\x18\x06 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetrics\x12\x16\n\x07\x63hannel\x18\x07 \x01(\rB\x05\x92?\x02\x38\x08\x12\x10\n\x08via_mqtt\x18\x08 \x01(\x08\x12\x1d\n\thops_away\x18\t \x01(\rB\x05\x92?\x02\x38\x08H\x00\x88\x01\x01\x12\x13\n\x0bis_favorite\x18\n \x01(\x08\x12\x12\n\nis_ignored\x18\x0b \x01(\x08\x12 \n\x18is_key_manually_verified\x18\x0c \x01(\x08\x12\x10\n\x08is_muted\x18\r \x01(\x08\x42\x0c\n\n_hops_away\"\xe6\x01\n\nMyNodeInfo\x12\x13\n\x0bmy_node_num\x18\x01 \x01(\r\x12\x14\n\x0creboot_count\x18\x08 \x01(\r\x12\x17\n\x0fmin_app_version\x18\x0b \x01(\r\x12\x18\n\tdevice_id\x18\x0c \x01(\x0c\x42\x05\x92?\x02\x08\x10\x12\x16\n\x07pio_env\x18\r \x01(\tB\x05\x92?\x02\x08(\x12\x45\n\x10\x66irmware_edition\x18\x0e \x01(\x0e\x32$.meshtastic.protobuf.FirmwareEditionB\x05\x92?\x02\x38\x08\x12\x1b\n\x0cnodedb_count\x18\x0f \x01(\rB\x05\x92?\x02\x38\x10\"\xd8\x01\n\tLogRecord\x12\x17\n\x07message\x18\x01 \x01(\tB\x06\x92?\x03\x08\x80\x03\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x15\n\x06source\x18\x03 \x01(\tB\x05\x92?\x02\x08 \x12\x33\n\x05level\x18\x04 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\"X\n\x05Level\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x32\x12\t\n\x05\x45RROR\x10(\x12\x0b\n\x07WARNING\x10\x1e\x12\x08\n\x04INFO\x10\x14\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\t\n\x05TRACE\x10\x05\"e\n\x0bQueueStatus\x12\x12\n\x03res\x18\x01 \x01(\x05\x42\x05\x92?\x02\x38\x08\x12\x13\n\x04\x66ree\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08\x12\x15\n\x06maxlen\x18\x03 \x01(\rB\x05\x92?\x02\x38\x08\x12\x16\n\x0emesh_packet_id\x18\x04 \x01(\r\"\xbe\x07\n\tFromRadio\x12\x11\n\x02id\x18\x01 \x01(\rB\x05\x92?\x02\x08\x10\x12\x31\n\x06packet\x18\x02 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x32\n\x07my_info\x18\x03 \x01(\x0b\x32\x1f.meshtastic.protobuf.MyNodeInfoH\x00\x12\x32\n\tnode_info\x18\x04 \x01(\x0b\x32\x1d.meshtastic.protobuf.NodeInfoH\x00\x12-\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1b.meshtastic.protobuf.ConfigH\x00\x12\x34\n\nlog_record\x18\x06 \x01(\x0b\x32\x1e.meshtastic.protobuf.LogRecordH\x00\x12\x1c\n\x12\x63onfig_complete_id\x18\x07 \x01(\rH\x00\x12\x12\n\x08rebooted\x18\x08 \x01(\x08H\x00\x12\x39\n\x0cmoduleConfig\x18\t \x01(\x0b\x32!.meshtastic.protobuf.ModuleConfigH\x00\x12/\n\x07\x63hannel\x18\n \x01(\x0b\x32\x1c.meshtastic.protobuf.ChannelH\x00\x12\x37\n\x0bqueueStatus\x18\x0b \x01(\x0b\x32 .meshtastic.protobuf.QueueStatusH\x00\x12\x33\n\x0cxmodemPacket\x18\x0c \x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12\x37\n\x08metadata\x18\r \x01(\x0b\x32#.meshtastic.protobuf.DeviceMetadataH\x00\x12M\n\x16mqttClientProxyMessage\x18\x0e \x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x31\n\x08\x66ileInfo\x18\x0f \x01(\x0b\x32\x1d.meshtastic.protobuf.FileInfoH\x00\x12\x45\n\x12\x63lientNotification\x18\x10 \x01(\x0b\x32\'.meshtastic.protobuf.ClientNotificationH\x00\x12=\n\x0e\x64\x65viceuiConfig\x18\x11 \x01(\x0b\x32#.meshtastic.protobuf.DeviceUIConfigH\x00\x12>\n\x0flockdown_status\x18\x12 \x01(\x0b\x32#.meshtastic.protobuf.LockdownStatusH\x00\x42\x11\n\x0fpayload_variant\"\x95\x02\n\x0eLockdownStatus\x12\x38\n\x05state\x18\x01 \x01(\x0e\x32).meshtastic.protobuf.LockdownStatus.State\x12\x1a\n\x0block_reason\x18\x02 \x01(\tB\x05\x92?\x02\x08 \x12\x17\n\x0f\x62oots_remaining\x18\x03 \x01(\r\x12\x19\n\x11valid_until_epoch\x18\x04 \x01(\r\x12\x17\n\x0f\x62\x61\x63koff_seconds\x18\x05 \x01(\r\"`\n\x05State\x12\x15\n\x11STATE_UNSPECIFIED\x10\x00\x12\x13\n\x0fNEEDS_PROVISION\x10\x01\x12\n\n\x06LOCKED\x10\x02\x12\x0c\n\x08UNLOCKED\x10\x03\x12\x11\n\rUNLOCK_FAILED\x10\x04\"\xb8\x04\n\x12\x43lientNotification\x12\x15\n\x08reply_id\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x0c\n\x04time\x18\x02 \x01(\x07\x12\x33\n\x05level\x18\x03 \x01(\x0e\x32$.meshtastic.protobuf.LogRecord.Level\x12\x17\n\x07message\x18\x04 \x01(\tB\x06\x92?\x03\x08\x90\x03\x12Z\n\x1ekey_verification_number_inform\x18\x0b \x01(\x0b\x32\x30.meshtastic.protobuf.KeyVerificationNumberInformH\x00\x12\\\n\x1fkey_verification_number_request\x18\x0c \x01(\x0b\x32\x31.meshtastic.protobuf.KeyVerificationNumberRequestH\x00\x12K\n\x16key_verification_final\x18\r \x01(\x0b\x32).meshtastic.protobuf.KeyVerificationFinalH\x00\x12I\n\x15\x64uplicated_public_key\x18\x0e \x01(\x0b\x32(.meshtastic.protobuf.DuplicatedPublicKeyH\x00\x12=\n\x0flow_entropy_key\x18\x0f \x01(\x0b\x32\".meshtastic.protobuf.LowEntropyKeyH\x00\x42\x11\n\x0fpayload_variantB\x0b\n\t_reply_id\"e\n\x1bKeyVerificationNumberInform\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x1e\n\x0fremote_longname\x18\x02 \x01(\tB\x05\x92?\x02\x08(\x12\x17\n\x0fsecurity_number\x18\x03 \x01(\r\"M\n\x1cKeyVerificationNumberRequest\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x1e\n\x0fremote_longname\x18\x02 \x01(\tB\x05\x92?\x02\x08(\"\x7f\n\x14KeyVerificationFinal\x12\r\n\x05nonce\x18\x01 \x01(\x04\x12\x1e\n\x0fremote_longname\x18\x02 \x01(\tB\x05\x92?\x02\x08(\x12\x10\n\x08isSender\x18\x03 \x01(\x08\x12&\n\x17verification_characters\x18\x04 \x01(\tB\x05\x92?\x02\x08\n\"\x15\n\x13\x44uplicatedPublicKey\"\x0f\n\rLowEntropyKey\"9\n\x08\x46ileInfo\x12\x19\n\tfile_name\x18\x01 \x01(\tB\x06\x92?\x03\x08\xe4\x01\x12\x12\n\nsize_bytes\x18\x02 \x01(\r\"\xb8\x02\n\x07ToRadio\x12\x31\n\x06packet\x18\x01 \x01(\x0b\x32\x1f.meshtastic.protobuf.MeshPacketH\x00\x12\x18\n\x0ewant_config_id\x18\x03 \x01(\rH\x00\x12\x14\n\ndisconnect\x18\x04 \x01(\x08H\x00\x12\x33\n\x0cxmodemPacket\x18\x05 \x01(\x0b\x32\x1b.meshtastic.protobuf.XModemH\x00\x12M\n\x16mqttClientProxyMessage\x18\x06 \x01(\x0b\x32+.meshtastic.protobuf.MqttClientProxyMessageH\x00\x12\x33\n\theartbeat\x18\x07 \x01(\x0b\x32\x1e.meshtastic.protobuf.HeartbeatH\x00\x42\x11\n\x0fpayload_variant\"Q\n\nCompressed\x12-\n\x07portnum\x18\x01 \x01(\x0e\x32\x1c.meshtastic.protobuf.PortNum\x12\x14\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x42\x06\x92?\x03\x08\xe9\x01\"\x97\x01\n\x0cNeighborInfo\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x17\n\x0flast_sent_by_id\x18\x02 \x01(\r\x12$\n\x1cnode_broadcast_interval_secs\x18\x03 \x01(\r\x12\x37\n\tneighbors\x18\x04 \x03(\x0b\x32\x1d.meshtastic.protobuf.NeighborB\x05\x92?\x02\x10\n\"d\n\x08Neighbor\x12\x0f\n\x07node_id\x18\x01 \x01(\r\x12\x0b\n\x03snr\x18\x02 \x01(\x02\x12\x14\n\x0clast_rx_time\x18\x03 \x01(\x07\x12$\n\x1cnode_broadcast_interval_secs\x18\x04 \x01(\r\"\xf0\x02\n\x0e\x44\x65viceMetadata\x12\x1f\n\x10\x66irmware_version\x18\x01 \x01(\tB\x05\x92?\x02\x08\x12\x12\x1c\n\x14\x64\x65vice_state_version\x18\x02 \x01(\r\x12\x13\n\x0b\x63\x61nShutdown\x18\x03 \x01(\x08\x12\x0f\n\x07hasWifi\x18\x04 \x01(\x08\x12\x14\n\x0chasBluetooth\x18\x05 \x01(\x08\x12\x13\n\x0bhasEthernet\x18\x06 \x01(\x08\x12;\n\x04role\x18\x07 \x01(\x0e\x32-.meshtastic.protobuf.Config.DeviceConfig.Role\x12\x16\n\x0eposition_flags\x18\x08 \x01(\r\x12\x34\n\x08hw_model\x18\t \x01(\x0e\x32\".meshtastic.protobuf.HardwareModel\x12\x19\n\x11hasRemoteHardware\x18\n \x01(\x08\x12\x0e\n\x06hasPKC\x18\x0b \x01(\x08\x12\x18\n\x10\x65xcluded_modules\x18\x0c \x01(\r\"\x1a\n\tHeartbeat\x12\r\n\x05nonce\x18\x01 \x01(\r\"^\n\x15NodeRemoteHardwarePin\x12\x10\n\x08node_num\x18\x01 \x01(\r\x12\x33\n\x03pin\x18\x02 \x01(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\"{\n\x0e\x43hunkedPayload\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x1a\n\x0b\x63hunk_count\x18\x02 \x01(\rB\x05\x92?\x02\x38\x10\x12\x1a\n\x0b\x63hunk_index\x18\x03 \x01(\rB\x05\x92?\x02\x38\x10\x12\x1d\n\rpayload_chunk\x18\x04 \x01(\x0c\x42\x06\x92?\x03\x08\xe4\x01\"\x1f\n\rresend_chunks\x12\x0e\n\x06\x63hunks\x18\x01 \x03(\r\"\xb3\x01\n\x16\x43hunkedPayloadResponse\x12\x12\n\npayload_id\x18\x01 \x01(\r\x12\x1a\n\x10request_transfer\x18\x02 \x01(\x08H\x00\x12\x19\n\x0f\x61\x63\x63\x65pt_transfer\x18\x03 \x01(\x08H\x00\x12;\n\rresend_chunks\x18\x04 \x01(\x0b\x32\".meshtastic.protobuf.resend_chunksH\x00\x42\x11\n\x0fpayload_variant*\xce\x14\n\rHardwareModel\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08TLORA_V2\x10\x01\x12\x0c\n\x08TLORA_V1\x10\x02\x12\x12\n\x0eTLORA_V2_1_1P6\x10\x03\x12\t\n\x05TBEAM\x10\x04\x12\x0f\n\x0bHELTEC_V2_0\x10\x05\x12\x0e\n\nTBEAM_V0P7\x10\x06\x12\n\n\x06T_ECHO\x10\x07\x12\x10\n\x0cTLORA_V1_1P3\x10\x08\x12\x0b\n\x07RAK4631\x10\t\x12\x0f\n\x0bHELTEC_V2_1\x10\n\x12\r\n\tHELTEC_V1\x10\x0b\x12\x18\n\x14LILYGO_TBEAM_S3_CORE\x10\x0c\x12\x0c\n\x08RAK11200\x10\r\x12\x0b\n\x07NANO_G1\x10\x0e\x12\x12\n\x0eTLORA_V2_1_1P8\x10\x0f\x12\x0f\n\x0bTLORA_T3_S3\x10\x10\x12\x14\n\x10NANO_G1_EXPLORER\x10\x11\x12\x11\n\rNANO_G2_ULTRA\x10\x12\x12\r\n\tLORA_TYPE\x10\x13\x12\x0b\n\x07WIPHONE\x10\x14\x12\x0e\n\nWIO_WM1110\x10\x15\x12\x0b\n\x07RAK2560\x10\x16\x12\x13\n\x0fHELTEC_HRU_3601\x10\x17\x12\x1a\n\x16HELTEC_WIRELESS_BRIDGE\x10\x18\x12\x0e\n\nSTATION_G1\x10\x19\x12\x0c\n\x08RAK11310\x10\x1a\x12\x14\n\x10SENSELORA_RP2040\x10\x1b\x12\x10\n\x0cSENSELORA_S3\x10\x1c\x12\r\n\tCANARYONE\x10\x1d\x12\x0f\n\x0bRP2040_LORA\x10\x1e\x12\x0e\n\nSTATION_G2\x10\x1f\x12\x11\n\rLORA_RELAY_V1\x10 \x12\x0f\n\x0bT_ECHO_PLUS\x10!\x12\x07\n\x03PPR\x10\"\x12\x0f\n\x0bGENIEBLOCKS\x10#\x12\x11\n\rNRF52_UNKNOWN\x10$\x12\r\n\tPORTDUINO\x10%\x12\x0f\n\x0b\x41NDROID_SIM\x10&\x12\n\n\x06\x44IY_V1\x10\'\x12\x15\n\x11NRF52840_PCA10059\x10(\x12\n\n\x06\x44R_DEV\x10)\x12\x0b\n\x07M5STACK\x10*\x12\r\n\tHELTEC_V3\x10+\x12\x11\n\rHELTEC_WSL_V3\x10,\x12\x13\n\x0f\x42\x45TAFPV_2400_TX\x10-\x12\x17\n\x13\x42\x45TAFPV_900_NANO_TX\x10.\x12\x0c\n\x08RPI_PICO\x10/\x12\x1b\n\x17HELTEC_WIRELESS_TRACKER\x10\x30\x12\x19\n\x15HELTEC_WIRELESS_PAPER\x10\x31\x12\n\n\x06T_DECK\x10\x32\x12\x0e\n\nT_WATCH_S3\x10\x33\x12\x11\n\rPICOMPUTER_S3\x10\x34\x12\x0f\n\x0bHELTEC_HT62\x10\x35\x12\x12\n\x0e\x45\x42YTE_ESP32_S3\x10\x36\x12\x11\n\rESP32_S3_PICO\x10\x37\x12\r\n\tCHATTER_2\x10\x38\x12\x1e\n\x1aHELTEC_WIRELESS_PAPER_V1_0\x10\x39\x12 \n\x1cHELTEC_WIRELESS_TRACKER_V1_0\x10:\x12\x0b\n\x07UNPHONE\x10;\x12\x0c\n\x08TD_LORAC\x10<\x12\x13\n\x0f\x43\x44\x45\x42YTE_EORA_S3\x10=\x12\x0f\n\x0bTWC_MESH_V4\x10>\x12\x16\n\x12NRF52_PROMICRO_DIY\x10?\x12\x1f\n\x1bRADIOMASTER_900_BANDIT_NANO\x10@\x12\x1c\n\x18HELTEC_CAPSULE_SENSOR_V3\x10\x41\x12\x1d\n\x19HELTEC_VISION_MASTER_T190\x10\x42\x12\x1d\n\x19HELTEC_VISION_MASTER_E213\x10\x43\x12\x1d\n\x19HELTEC_VISION_MASTER_E290\x10\x44\x12\x19\n\x15HELTEC_MESH_NODE_T114\x10\x45\x12\x16\n\x12SENSECAP_INDICATOR\x10\x46\x12\x13\n\x0fTRACKER_T1000_E\x10G\x12\x0b\n\x07RAK3172\x10H\x12\n\n\x06WIO_E5\x10I\x12\x1a\n\x16RADIOMASTER_900_BANDIT\x10J\x12\x13\n\x0fME25LS01_4Y10TD\x10K\x12\x18\n\x14RP2040_FEATHER_RFM95\x10L\x12\x15\n\x11M5STACK_COREBASIC\x10M\x12\x11\n\rM5STACK_CORE2\x10N\x12\r\n\tRPI_PICO2\x10O\x12\x12\n\x0eM5STACK_CORES3\x10P\x12\x11\n\rSEEED_XIAO_S3\x10Q\x12\x0b\n\x07MS24SF1\x10R\x12\x0c\n\x08TLORA_C6\x10S\x12\x0f\n\x0bWISMESH_TAP\x10T\x12\r\n\tROUTASTIC\x10U\x12\x0c\n\x08MESH_TAB\x10V\x12\x0c\n\x08MESHLINK\x10W\x12\x12\n\x0eXIAO_NRF52_KIT\x10X\x12\x10\n\x0cTHINKNODE_M1\x10Y\x12\x10\n\x0cTHINKNODE_M2\x10Z\x12\x0f\n\x0bT_ETH_ELITE\x10[\x12\x15\n\x11HELTEC_SENSOR_HUB\x10\\\x12\r\n\tMUZI_BASE\x10]\x12\x16\n\x12HELTEC_MESH_POCKET\x10^\x12\x14\n\x10SEEED_SOLAR_NODE\x10_\x12\x18\n\x14NOMADSTAR_METEOR_PRO\x10`\x12\r\n\tCROWPANEL\x10\x61\x12\x0b\n\x07LINK_32\x10\x62\x12\x18\n\x14SEEED_WIO_TRACKER_L1\x10\x63\x12\x1d\n\x19SEEED_WIO_TRACKER_L1_EINK\x10\x64\x12\x0f\n\x0bMUZI_R1_NEO\x10\x65\x12\x0e\n\nT_DECK_PRO\x10\x66\x12\x10\n\x0cT_LORA_PAGER\x10g\x12\x14\n\x10M5STACK_RESERVED\x10h\x12\x0f\n\x0bWISMESH_TAG\x10i\x12\x0b\n\x07RAK3312\x10j\x12\x10\n\x0cTHINKNODE_M5\x10k\x12\x15\n\x11HELTEC_MESH_SOLAR\x10l\x12\x0f\n\x0bT_ECHO_LITE\x10m\x12\r\n\tHELTEC_V4\x10n\x12\x0f\n\x0bM5STACK_C6L\x10o\x12\x19\n\x15M5STACK_CARDPUTER_ADV\x10p\x12\x1e\n\x1aHELTEC_WIRELESS_TRACKER_V2\x10q\x12\x11\n\rT_WATCH_ULTRA\x10r\x12\x10\n\x0cTHINKNODE_M3\x10s\x12\x12\n\x0eWISMESH_TAP_V2\x10t\x12\x0b\n\x07RAK3401\x10u\x12\x0b\n\x07RAK6421\x10v\x12\x10\n\x0cTHINKNODE_M4\x10w\x12\x10\n\x0cTHINKNODE_M6\x10x\x12\x12\n\x0eMESHSTICK_1262\x10y\x12\x10\n\x0cTBEAM_1_WATT\x10z\x12\x14\n\x10T5_S3_EPAPER_PRO\x10{\x12\r\n\tTBEAM_BPF\x10|\x12\x12\n\x0eMINI_EPAPER_S3\x10}\x12\x13\n\x0fTDISPLAY_S3_PRO\x10~\x12\x19\n\x15HELTEC_MESH_NODE_T096\x10\x7f\x12\x18\n\x13TRACKER_T1000_E_PRO\x10\x80\x01\x12\x11\n\x0cTHINKNODE_M7\x10\x81\x01\x12\x11\n\x0cTHINKNODE_M8\x10\x82\x01\x12\x11\n\x0cTHINKNODE_M9\x10\x83\x01\x12\x11\n\x0cHELTEC_V4_R8\x10\x84\x01\x12\x18\n\x13HELTEC_MESH_NODE_T1\x10\x85\x01\x12\x0f\n\nSTATION_G3\x10\x86\x01\x12\x13\n\x0eT_IMPULSE_PLUS\x10\x87\x01\x12\x10\n\x0bT_ECHO_CARD\x10\x88\x01\x12\x0f\n\nPRIVATE_HW\x10\xff\x01*,\n\tConstants\x12\x08\n\x04ZERO\x10\x00\x12\x15\n\x10\x44\x41TA_PAYLOAD_LEN\x10\xe9\x01*\xb4\x02\n\x11\x43riticalErrorCode\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bTX_WATCHDOG\x10\x01\x12\x14\n\x10SLEEP_ENTER_WAIT\x10\x02\x12\x0c\n\x08NO_RADIO\x10\x03\x12\x0f\n\x0bUNSPECIFIED\x10\x04\x12\x15\n\x11UBLOX_UNIT_FAILED\x10\x05\x12\r\n\tNO_AXP192\x10\x06\x12\x19\n\x15INVALID_RADIO_SETTING\x10\x07\x12\x13\n\x0fTRANSMIT_FAILED\x10\x08\x12\x0c\n\x08\x42ROWNOUT\x10\t\x12\x12\n\x0eSX1262_FAILURE\x10\n\x12\x11\n\rRADIO_SPI_BUG\x10\x0b\x12 \n\x1c\x46LASH_CORRUPTION_RECOVERABLE\x10\x0c\x12\"\n\x1e\x46LASH_CORRUPTION_UNRECOVERABLE\x10\r*\x7f\n\x0f\x46irmwareEdition\x12\x0b\n\x07VANILLA\x10\x00\x12\x11\n\rSMART_CITIZEN\x10\x01\x12\x0e\n\nOPEN_SAUCE\x10\x10\x12\n\n\x06\x44\x45\x46\x43ON\x10\x11\x12\x0f\n\x0b\x42URNING_MAN\x10\x12\x12\x0e\n\nHAMVENTION\x10\x13\x12\x0f\n\x0b\x44IY_EDITION\x10\x7f*\x80\x03\n\x0f\x45xcludedModules\x12\x11\n\rEXCLUDED_NONE\x10\x00\x12\x0f\n\x0bMQTT_CONFIG\x10\x01\x12\x11\n\rSERIAL_CONFIG\x10\x02\x12\x13\n\x0f\x45XTNOTIF_CONFIG\x10\x04\x12\x17\n\x13STOREFORWARD_CONFIG\x10\x08\x12\x14\n\x10RANGETEST_CONFIG\x10\x10\x12\x14\n\x10TELEMETRY_CONFIG\x10 \x12\x14\n\x10\x43\x41NNEDMSG_CONFIG\x10@\x12\x11\n\x0c\x41UDIO_CONFIG\x10\x80\x01\x12\x1a\n\x15REMOTEHARDWARE_CONFIG\x10\x80\x02\x12\x18\n\x13NEIGHBORINFO_CONFIG\x10\x80\x04\x12\x1b\n\x16\x41MBIENTLIGHTING_CONFIG\x10\x80\x08\x12\x1b\n\x16\x44\x45TECTIONSENSOR_CONFIG\x10\x80\x10\x12\x16\n\x11PAXCOUNTER_CONFIG\x10\x80 \x12\x15\n\x10\x42LUETOOTH_CONFIG\x10\x80@\x12\x14\n\x0eNETWORK_CONFIG\x10\x80\x80\x01\x42`\n\x14org.meshtastic.protoB\nMeshProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,108 +29,222 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.mesh_pb if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\nMeshProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _USER.fields_by_name['id']._options = None + _USER.fields_by_name['id']._serialized_options = b'\222?\002\010\020' + _USER.fields_by_name['long_name']._options = None + _USER.fields_by_name['long_name']._serialized_options = b'\222?\002\010(' + _USER.fields_by_name['short_name']._options = None + _USER.fields_by_name['short_name']._serialized_options = b'\222?\002\010\005' _USER.fields_by_name['macaddr']._options = None - _USER.fields_by_name['macaddr']._serialized_options = b'\030\001' + _USER.fields_by_name['macaddr']._serialized_options = b'\030\001\222?\004\010\006x\001' + _USER.fields_by_name['public_key']._options = None + _USER.fields_by_name['public_key']._serialized_options = b'\222?\002\010 ' + _ROUTEDISCOVERY.fields_by_name['route']._options = None + _ROUTEDISCOVERY.fields_by_name['route']._serialized_options = b'\222?\002\020\010' + _ROUTEDISCOVERY.fields_by_name['snr_towards']._options = None + _ROUTEDISCOVERY.fields_by_name['snr_towards']._serialized_options = b'\222?\004\020\0108\010' + _ROUTEDISCOVERY.fields_by_name['route_back']._options = None + _ROUTEDISCOVERY.fields_by_name['route_back']._serialized_options = b'\222?\002\020\010' + _ROUTEDISCOVERY.fields_by_name['snr_back']._options = None + _ROUTEDISCOVERY.fields_by_name['snr_back']._serialized_options = b'\222?\004\020\0108\010' + _DATA.fields_by_name['payload']._options = None + _DATA.fields_by_name['payload']._serialized_options = b'\222?\003\010\351\001' + _DATA.fields_by_name['bitfield']._options = None + _DATA.fields_by_name['bitfield']._serialized_options = b'\222?\0028\010' + _KEYVERIFICATION.fields_by_name['hash1']._options = None + _KEYVERIFICATION.fields_by_name['hash1']._serialized_options = b'\222?\002\010 ' + _KEYVERIFICATION.fields_by_name['hash2']._options = None + _KEYVERIFICATION.fields_by_name['hash2']._serialized_options = b'\222?\002\010 ' + _STOREFORWARDPLUSPLUS.fields_by_name['message_hash']._options = None + _STOREFORWARDPLUSPLUS.fields_by_name['message_hash']._serialized_options = b'\222?\002\010 ' + _STOREFORWARDPLUSPLUS.fields_by_name['commit_hash']._options = None + _STOREFORWARDPLUSPLUS.fields_by_name['commit_hash']._serialized_options = b'\222?\002\010 ' + _STOREFORWARDPLUSPLUS.fields_by_name['root_hash']._options = None + _STOREFORWARDPLUSPLUS.fields_by_name['root_hash']._serialized_options = b'\222?\002\010 ' + _STOREFORWARDPLUSPLUS.fields_by_name['message']._options = None + _STOREFORWARDPLUSPLUS.fields_by_name['message']._serialized_options = b'\222?\003\010\360\001' + _REMOTESHELL.fields_by_name['payload']._options = None + _REMOTESHELL.fields_by_name['payload']._serialized_options = b'\222?\003\010\310\001' + _WAYPOINT.fields_by_name['id']._options = None + _WAYPOINT.fields_by_name['id']._serialized_options = b'\222?\002\010\020' + _WAYPOINT.fields_by_name['name']._options = None + _WAYPOINT.fields_by_name['name']._serialized_options = b'\222?\002\010\036' + _WAYPOINT.fields_by_name['description']._options = None + _WAYPOINT.fields_by_name['description']._serialized_options = b'\222?\002\010d' + _STATUSMESSAGE.fields_by_name['status']._options = None + _STATUSMESSAGE.fields_by_name['status']._serialized_options = b'\222?\002\010P' + _MQTTCLIENTPROXYMESSAGE.fields_by_name['topic']._options = None + _MQTTCLIENTPROXYMESSAGE.fields_by_name['topic']._serialized_options = b'\222?\002\010<' + _MQTTCLIENTPROXYMESSAGE.fields_by_name['data']._options = None + _MQTTCLIENTPROXYMESSAGE.fields_by_name['data']._serialized_options = b'\222?\003\010\263\003' + _MQTTCLIENTPROXYMESSAGE.fields_by_name['text']._options = None + _MQTTCLIENTPROXYMESSAGE.fields_by_name['text']._serialized_options = b'\222?\003\010\263\003' + _MESHPACKET.fields_by_name['channel']._options = None + _MESHPACKET.fields_by_name['channel']._serialized_options = b'\222?\0028\010' + _MESHPACKET.fields_by_name['encrypted']._options = None + _MESHPACKET.fields_by_name['encrypted']._serialized_options = b'\222?\003\010\200\002' + _MESHPACKET.fields_by_name['id']._options = None + _MESHPACKET.fields_by_name['id']._serialized_options = b'\222?\002\010\020' + _MESHPACKET.fields_by_name['hop_limit']._options = None + _MESHPACKET.fields_by_name['hop_limit']._serialized_options = b'\222?\0028\010' _MESHPACKET.fields_by_name['delayed']._options = None _MESHPACKET.fields_by_name['delayed']._serialized_options = b'\030\001' - _globals['_HARDWAREMODEL']._serialized_start=9094 - _globals['_HARDWAREMODEL']._serialized_end=11732 - _globals['_CONSTANTS']._serialized_start=11734 - _globals['_CONSTANTS']._serialized_end=11778 - _globals['_CRITICALERRORCODE']._serialized_start=11781 - _globals['_CRITICALERRORCODE']._serialized_end=12089 - _globals['_FIRMWAREEDITION']._serialized_start=12091 - _globals['_FIRMWAREEDITION']._serialized_end=12218 - _globals['_EXCLUDEDMODULES']._serialized_start=12221 - _globals['_EXCLUDEDMODULES']._serialized_end=12605 - _globals['_POSITION']._serialized_start=310 - _globals['_POSITION']._serialized_end=1231 - _globals['_POSITION_LOCSOURCE']._serialized_start=926 - _globals['_POSITION_LOCSOURCE']._serialized_end=1004 - _globals['_POSITION_ALTSOURCE']._serialized_start=1006 - _globals['_POSITION_ALTSOURCE']._serialized_end=1104 - _globals['_USER']._serialized_start=1234 - _globals['_USER']._serialized_end=1518 - _globals['_ROUTEDISCOVERY']._serialized_start=1520 - _globals['_ROUTEDISCOVERY']._serialized_end=1610 - _globals['_ROUTING']._serialized_start=1613 - _globals['_ROUTING']._serialized_end=2177 - _globals['_ROUTING_ERROR']._serialized_start=1807 - _globals['_ROUTING_ERROR']._serialized_end=2166 - _globals['_DATA']._serialized_start=2180 - _globals['_DATA']._serialized_end=2392 - _globals['_KEYVERIFICATION']._serialized_start=2394 - _globals['_KEYVERIFICATION']._serialized_end=2456 - _globals['_STOREFORWARDPLUSPLUS']._serialized_start=2459 - _globals['_STOREFORWARDPLUSPLUS']._serialized_end=2927 - _globals['_STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE']._serialized_start=2778 - _globals['_STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE']._serialized_end=2927 - _globals['_REMOTESHELL']._serialized_start=2930 - _globals['_REMOTESHELL']._serialized_end=3294 - _globals['_REMOTESHELL_OPCODE']._serialized_start=3151 - _globals['_REMOTESHELL_OPCODE']._serialized_end=3294 - _globals['_WAYPOINT']._serialized_start=3297 - _globals['_WAYPOINT']._serialized_end=3485 - _globals['_STATUSMESSAGE']._serialized_start=3487 - _globals['_STATUSMESSAGE']._serialized_end=3518 - _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_start=3520 - _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_end=3628 - _globals['_MESHPACKET']._serialized_start=3631 - _globals['_MESHPACKET']._serialized_end=4616 - _globals['_MESHPACKET_PRIORITY']._serialized_start=4193 - _globals['_MESHPACKET_PRIORITY']._serialized_end=4319 - _globals['_MESHPACKET_DELAYED']._serialized_start=4321 - _globals['_MESHPACKET_DELAYED']._serialized_end=4387 - _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_start=4390 - _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_end=4597 - _globals['_NODEINFO']._serialized_start=4619 - _globals['_NODEINFO']._serialized_end=4991 - _globals['_MYNODEINFO']._serialized_start=4994 - _globals['_MYNODEINFO']._serialized_end=5196 - _globals['_LOGRECORD']._serialized_start=5199 - _globals['_LOGRECORD']._serialized_end=5400 - _globals['_LOGRECORD_LEVEL']._serialized_start=5312 - _globals['_LOGRECORD_LEVEL']._serialized_end=5400 - _globals['_QUEUESTATUS']._serialized_start=5402 - _globals['_QUEUESTATUS']._serialized_end=5482 - _globals['_FROMRADIO']._serialized_start=5485 - _globals['_FROMRADIO']._serialized_end=6436 - _globals['_LOCKDOWNSTATUS']._serialized_start=6439 - _globals['_LOCKDOWNSTATUS']._serialized_end=6709 - _globals['_LOCKDOWNSTATUS_STATE']._serialized_start=6613 - _globals['_LOCKDOWNSTATUS_STATE']._serialized_end=6709 - _globals['_CLIENTNOTIFICATION']._serialized_start=6712 - _globals['_CLIENTNOTIFICATION']._serialized_end=7272 - _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_start=7274 - _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_end=7368 - _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_start=7370 - _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_end=7440 - _globals['_KEYVERIFICATIONFINAL']._serialized_start=7442 - _globals['_KEYVERIFICATIONFINAL']._serialized_end=7555 - _globals['_DUPLICATEDPUBLICKEY']._serialized_start=7557 - _globals['_DUPLICATEDPUBLICKEY']._serialized_end=7578 - _globals['_LOWENTROPYKEY']._serialized_start=7580 - _globals['_LOWENTROPYKEY']._serialized_end=7595 - _globals['_FILEINFO']._serialized_start=7597 - _globals['_FILEINFO']._serialized_end=7646 - _globals['_TORADIO']._serialized_start=7649 - _globals['_TORADIO']._serialized_end=7961 - _globals['_COMPRESSED']._serialized_start=7963 - _globals['_COMPRESSED']._serialized_end=8036 - _globals['_NEIGHBORINFO']._serialized_start=8039 - _globals['_NEIGHBORINFO']._serialized_end=8183 - _globals['_NEIGHBOR']._serialized_start=8185 - _globals['_NEIGHBOR']._serialized_end=8285 - _globals['_DEVICEMETADATA']._serialized_start=8288 - _globals['_DEVICEMETADATA']._serialized_end=8649 - _globals['_HEARTBEAT']._serialized_start=8651 - _globals['_HEARTBEAT']._serialized_end=8677 - _globals['_NODEREMOTEHARDWAREPIN']._serialized_start=8679 - _globals['_NODEREMOTEHARDWAREPIN']._serialized_end=8773 - _globals['_CHUNKEDPAYLOAD']._serialized_start=8775 - _globals['_CHUNKEDPAYLOAD']._serialized_end=8876 - _globals['_RESEND_CHUNKS']._serialized_start=8878 - _globals['_RESEND_CHUNKS']._serialized_end=8909 - _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_start=8912 - _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_end=9091 + _MESHPACKET.fields_by_name['hop_start']._options = None + _MESHPACKET.fields_by_name['hop_start']._serialized_options = b'\222?\0028\010' + _MESHPACKET.fields_by_name['public_key']._options = None + _MESHPACKET.fields_by_name['public_key']._serialized_options = b'\222?\002\010 ' + _MESHPACKET.fields_by_name['next_hop']._options = None + _MESHPACKET.fields_by_name['next_hop']._serialized_options = b'\222?\0028\010' + _MESHPACKET.fields_by_name['relay_node']._options = None + _MESHPACKET.fields_by_name['relay_node']._serialized_options = b'\222?\0028\010' + _NODEINFO.fields_by_name['channel']._options = None + _NODEINFO.fields_by_name['channel']._serialized_options = b'\222?\0028\010' + _NODEINFO.fields_by_name['hops_away']._options = None + _NODEINFO.fields_by_name['hops_away']._serialized_options = b'\222?\0028\010' + _MYNODEINFO.fields_by_name['device_id']._options = None + _MYNODEINFO.fields_by_name['device_id']._serialized_options = b'\222?\002\010\020' + _MYNODEINFO.fields_by_name['pio_env']._options = None + _MYNODEINFO.fields_by_name['pio_env']._serialized_options = b'\222?\002\010(' + _MYNODEINFO.fields_by_name['firmware_edition']._options = None + _MYNODEINFO.fields_by_name['firmware_edition']._serialized_options = b'\222?\0028\010' + _MYNODEINFO.fields_by_name['nodedb_count']._options = None + _MYNODEINFO.fields_by_name['nodedb_count']._serialized_options = b'\222?\0028\020' + _LOGRECORD.fields_by_name['message']._options = None + _LOGRECORD.fields_by_name['message']._serialized_options = b'\222?\003\010\200\003' + _LOGRECORD.fields_by_name['source']._options = None + _LOGRECORD.fields_by_name['source']._serialized_options = b'\222?\002\010 ' + _QUEUESTATUS.fields_by_name['res']._options = None + _QUEUESTATUS.fields_by_name['res']._serialized_options = b'\222?\0028\010' + _QUEUESTATUS.fields_by_name['free']._options = None + _QUEUESTATUS.fields_by_name['free']._serialized_options = b'\222?\0028\010' + _QUEUESTATUS.fields_by_name['maxlen']._options = None + _QUEUESTATUS.fields_by_name['maxlen']._serialized_options = b'\222?\0028\010' + _FROMRADIO.fields_by_name['id']._options = None + _FROMRADIO.fields_by_name['id']._serialized_options = b'\222?\002\010\020' + _LOCKDOWNSTATUS.fields_by_name['lock_reason']._options = None + _LOCKDOWNSTATUS.fields_by_name['lock_reason']._serialized_options = b'\222?\002\010 ' + _CLIENTNOTIFICATION.fields_by_name['message']._options = None + _CLIENTNOTIFICATION.fields_by_name['message']._serialized_options = b'\222?\003\010\220\003' + _KEYVERIFICATIONNUMBERINFORM.fields_by_name['remote_longname']._options = None + _KEYVERIFICATIONNUMBERINFORM.fields_by_name['remote_longname']._serialized_options = b'\222?\002\010(' + _KEYVERIFICATIONNUMBERREQUEST.fields_by_name['remote_longname']._options = None + _KEYVERIFICATIONNUMBERREQUEST.fields_by_name['remote_longname']._serialized_options = b'\222?\002\010(' + _KEYVERIFICATIONFINAL.fields_by_name['remote_longname']._options = None + _KEYVERIFICATIONFINAL.fields_by_name['remote_longname']._serialized_options = b'\222?\002\010(' + _KEYVERIFICATIONFINAL.fields_by_name['verification_characters']._options = None + _KEYVERIFICATIONFINAL.fields_by_name['verification_characters']._serialized_options = b'\222?\002\010\n' + _FILEINFO.fields_by_name['file_name']._options = None + _FILEINFO.fields_by_name['file_name']._serialized_options = b'\222?\003\010\344\001' + _COMPRESSED.fields_by_name['data']._options = None + _COMPRESSED.fields_by_name['data']._serialized_options = b'\222?\003\010\351\001' + _NEIGHBORINFO.fields_by_name['neighbors']._options = None + _NEIGHBORINFO.fields_by_name['neighbors']._serialized_options = b'\222?\002\020\n' + _DEVICEMETADATA.fields_by_name['firmware_version']._options = None + _DEVICEMETADATA.fields_by_name['firmware_version']._serialized_options = b'\222?\002\010\022' + _CHUNKEDPAYLOAD.fields_by_name['chunk_count']._options = None + _CHUNKEDPAYLOAD.fields_by_name['chunk_count']._serialized_options = b'\222?\0028\020' + _CHUNKEDPAYLOAD.fields_by_name['chunk_index']._options = None + _CHUNKEDPAYLOAD.fields_by_name['chunk_index']._serialized_options = b'\222?\0028\020' + _CHUNKEDPAYLOAD.fields_by_name['payload_chunk']._options = None + _CHUNKEDPAYLOAD.fields_by_name['payload_chunk']._serialized_options = b'\222?\003\010\344\001' + _globals['_HARDWAREMODEL']._serialized_start=9550 + _globals['_HARDWAREMODEL']._serialized_end=12188 + _globals['_CONSTANTS']._serialized_start=12190 + _globals['_CONSTANTS']._serialized_end=12234 + _globals['_CRITICALERRORCODE']._serialized_start=12237 + _globals['_CRITICALERRORCODE']._serialized_end=12545 + _globals['_FIRMWAREEDITION']._serialized_start=12547 + _globals['_FIRMWAREEDITION']._serialized_end=12674 + _globals['_EXCLUDEDMODULES']._serialized_start=12677 + _globals['_EXCLUDEDMODULES']._serialized_end=13061 + _globals['_POSITION']._serialized_start=344 + _globals['_POSITION']._serialized_end=1265 + _globals['_POSITION_LOCSOURCE']._serialized_start=960 + _globals['_POSITION_LOCSOURCE']._serialized_end=1038 + _globals['_POSITION_ALTSOURCE']._serialized_start=1040 + _globals['_POSITION_ALTSOURCE']._serialized_end=1138 + _globals['_USER']._serialized_start=1268 + _globals['_USER']._serialized_end=1587 + _globals['_ROUTEDISCOVERY']._serialized_start=1589 + _globals['_ROUTEDISCOVERY']._serialized_end=1711 + _globals['_ROUTING']._serialized_start=1714 + _globals['_ROUTING']._serialized_end=2278 + _globals['_ROUTING_ERROR']._serialized_start=1908 + _globals['_ROUTING_ERROR']._serialized_end=2267 + _globals['_DATA']._serialized_start=2281 + _globals['_DATA']._serialized_end=2508 + _globals['_KEYVERIFICATION']._serialized_start=2510 + _globals['_KEYVERIFICATION']._serialized_end=2586 + _globals['_STOREFORWARDPLUSPLUS']._serialized_start=2589 + _globals['_STOREFORWARDPLUSPLUS']._serialized_end=3086 + _globals['_STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE']._serialized_start=2937 + _globals['_STOREFORWARDPLUSPLUS_SFPP_MESSAGE_TYPE']._serialized_end=3086 + _globals['_REMOTESHELL']._serialized_start=3089 + _globals['_REMOTESHELL']._serialized_end=3461 + _globals['_REMOTESHELL_OPCODE']._serialized_start=3318 + _globals['_REMOTESHELL_OPCODE']._serialized_end=3461 + _globals['_WAYPOINT']._serialized_start=3464 + _globals['_WAYPOINT']._serialized_end=3673 + _globals['_STATUSMESSAGE']._serialized_start=3675 + _globals['_STATUSMESSAGE']._serialized_end=3713 + _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_start=3716 + _globals['_MQTTCLIENTPROXYMESSAGE']._serialized_end=3847 + _globals['_MESHPACKET']._serialized_start=3850 + _globals['_MESHPACKET']._serialized_end=4892 + _globals['_MESHPACKET_PRIORITY']._serialized_start=4469 + _globals['_MESHPACKET_PRIORITY']._serialized_end=4595 + _globals['_MESHPACKET_DELAYED']._serialized_start=4597 + _globals['_MESHPACKET_DELAYED']._serialized_end=4663 + _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_start=4666 + _globals['_MESHPACKET_TRANSPORTMECHANISM']._serialized_end=4873 + _globals['_NODEINFO']._serialized_start=4895 + _globals['_NODEINFO']._serialized_end=5281 + _globals['_MYNODEINFO']._serialized_start=5284 + _globals['_MYNODEINFO']._serialized_end=5514 + _globals['_LOGRECORD']._serialized_start=5517 + _globals['_LOGRECORD']._serialized_end=5733 + _globals['_LOGRECORD_LEVEL']._serialized_start=5645 + _globals['_LOGRECORD_LEVEL']._serialized_end=5733 + _globals['_QUEUESTATUS']._serialized_start=5735 + _globals['_QUEUESTATUS']._serialized_end=5836 + _globals['_FROMRADIO']._serialized_start=5839 + _globals['_FROMRADIO']._serialized_end=6797 + _globals['_LOCKDOWNSTATUS']._serialized_start=6800 + _globals['_LOCKDOWNSTATUS']._serialized_end=7077 + _globals['_LOCKDOWNSTATUS_STATE']._serialized_start=6981 + _globals['_LOCKDOWNSTATUS_STATE']._serialized_end=7077 + _globals['_CLIENTNOTIFICATION']._serialized_start=7080 + _globals['_CLIENTNOTIFICATION']._serialized_end=7648 + _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_start=7650 + _globals['_KEYVERIFICATIONNUMBERINFORM']._serialized_end=7751 + _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_start=7753 + _globals['_KEYVERIFICATIONNUMBERREQUEST']._serialized_end=7830 + _globals['_KEYVERIFICATIONFINAL']._serialized_start=7832 + _globals['_KEYVERIFICATIONFINAL']._serialized_end=7959 + _globals['_DUPLICATEDPUBLICKEY']._serialized_start=7961 + _globals['_DUPLICATEDPUBLICKEY']._serialized_end=7982 + _globals['_LOWENTROPYKEY']._serialized_start=7984 + _globals['_LOWENTROPYKEY']._serialized_end=7999 + _globals['_FILEINFO']._serialized_start=8001 + _globals['_FILEINFO']._serialized_end=8058 + _globals['_TORADIO']._serialized_start=8061 + _globals['_TORADIO']._serialized_end=8373 + _globals['_COMPRESSED']._serialized_start=8375 + _globals['_COMPRESSED']._serialized_end=8456 + _globals['_NEIGHBORINFO']._serialized_start=8459 + _globals['_NEIGHBORINFO']._serialized_end=8610 + _globals['_NEIGHBOR']._serialized_start=8612 + _globals['_NEIGHBOR']._serialized_end=8712 + _globals['_DEVICEMETADATA']._serialized_start=8715 + _globals['_DEVICEMETADATA']._serialized_end=9083 + _globals['_HEARTBEAT']._serialized_start=9085 + _globals['_HEARTBEAT']._serialized_end=9111 + _globals['_NODEREMOTEHARDWAREPIN']._serialized_start=9113 + _globals['_NODEREMOTEHARDWAREPIN']._serialized_end=9207 + _globals['_CHUNKEDPAYLOAD']._serialized_start=9209 + _globals['_CHUNKEDPAYLOAD']._serialized_end=9332 + _globals['_RESEND_CHUNKS']._serialized_start=9334 + _globals['_RESEND_CHUNKS']._serialized_end=9365 + _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_start=9368 + _globals['_CHUNKEDPAYLOADRESPONSE']._serialized_end=9547 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/module_config_pb2.py b/meshtastic/protobuf/module_config_pb2.py index dfc8240..0bebf1a 100644 --- a/meshtastic/protobuf/module_config_pb2.py +++ b/meshtastic/protobuf/module_config_pb2.py @@ -12,9 +12,10 @@ _sym_db = _symbol_database.Default() from meshtastic.protobuf import atak_pb2 as meshtastic_dot_protobuf_dot_atak__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtastic/protobuf/module_config.proto\x12\x13meshtastic.protobuf\x1a\x1emeshtastic/protobuf/atak.proto\"\x86/\n\x0cModuleConfig\x12<\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfigH\x00\x12@\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfigH\x00\x12]\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfigH\x00\x12M\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfigH\x00\x12G\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfigH\x00\x12\x46\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfigH\x00\x12O\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfigH\x00\x12>\n\x05\x61udio\x18\x08 \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfigH\x00\x12Q\n\x0fremote_hardware\x18\t \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfigH\x00\x12M\n\rneighbor_info\x18\n \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfigH\x00\x12S\n\x10\x61mbient_lighting\x18\x0b \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfigH\x00\x12S\n\x10\x64\x65tection_sensor\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfigH\x00\x12H\n\npaxcounter\x18\r \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfigH\x00\x12N\n\rstatusmessage\x18\x0e \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.StatusMessageConfigH\x00\x12W\n\x12traffic_management\x18\x0f \x01(\x0b\x32\x39.meshtastic.protobuf.ModuleConfig.TrafficManagementConfigH\x00\x12:\n\x03tak\x18\x10 \x01(\x0b\x32+.meshtastic.protobuf.ModuleConfig.TAKConfigH\x00\x1a\xbd\x02\n\nMQTTConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x10\n\x08username\x18\x03 \x01(\t\x12\x10\n\x08password\x18\x04 \x01(\t\x12\x1a\n\x12\x65ncryption_enabled\x18\x05 \x01(\x08\x12\x18\n\x0cjson_enabled\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0btls_enabled\x18\x07 \x01(\x08\x12\x0c\n\x04root\x18\x08 \x01(\t\x12\x1f\n\x17proxy_to_client_enabled\x18\t \x01(\x08\x12\x1d\n\x15map_reporting_enabled\x18\n \x01(\x08\x12P\n\x13map_report_settings\x18\x0b \x01(\x0b\x32\x33.meshtastic.protobuf.ModuleConfig.MapReportSettings\x1an\n\x11MapReportSettings\x12\x1d\n\x15publish_interval_secs\x18\x01 \x01(\r\x12\x1a\n\x12position_precision\x18\x02 \x01(\r\x12\x1e\n\x16should_report_location\x18\x03 \x01(\x08\x1a\x8b\x01\n\x14RemoteHardwareConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1a\x61llow_undefined_pin_access\x18\x02 \x01(\x08\x12>\n\x0e\x61vailable_pins\x18\x03 \x03(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePin\x1aZ\n\x12NeighborInfoConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0fupdate_interval\x18\x02 \x01(\r\x12\x1a\n\x12transmit_over_lora\x18\x03 \x01(\x08\x1a\xa0\x03\n\x15\x44\x65tectionSensorConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16minimum_broadcast_secs\x18\x02 \x01(\r\x12\x1c\n\x14state_broadcast_secs\x18\x03 \x01(\r\x12\x11\n\tsend_bell\x18\x04 \x01(\x08\x12\x0c\n\x04name\x18\x05 \x01(\t\x12\x13\n\x0bmonitor_pin\x18\x06 \x01(\r\x12\x63\n\x16\x64\x65tection_trigger_type\x18\x07 \x01(\x0e\x32\x43.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig.TriggerType\x12\x12\n\nuse_pullup\x18\x08 \x01(\x08\"\x88\x01\n\x0bTriggerType\x12\r\n\tLOGIC_LOW\x10\x00\x12\x0e\n\nLOGIC_HIGH\x10\x01\x12\x10\n\x0c\x46\x41LLING_EDGE\x10\x02\x12\x0f\n\x0bRISING_EDGE\x10\x03\x12\x1a\n\x16\x45ITHER_EDGE_ACTIVE_LOW\x10\x04\x12\x1b\n\x17\x45ITHER_EDGE_ACTIVE_HIGH\x10\x05\x1a\xed\x02\n\x0b\x41udioConfig\x12\x16\n\x0e\x63odec2_enabled\x18\x01 \x01(\x08\x12\x0f\n\x07ptt_pin\x18\x02 \x01(\r\x12I\n\x07\x62itrate\x18\x03 \x01(\x0e\x32\x38.meshtastic.protobuf.ModuleConfig.AudioConfig.Audio_Baud\x12\x0e\n\x06i2s_ws\x18\x04 \x01(\r\x12\x0e\n\x06i2s_sd\x18\x05 \x01(\r\x12\x0f\n\x07i2s_din\x18\x06 \x01(\r\x12\x0f\n\x07i2s_sck\x18\x07 \x01(\r\"\xa7\x01\n\nAudio_Baud\x12\x12\n\x0e\x43ODEC2_DEFAULT\x10\x00\x12\x0f\n\x0b\x43ODEC2_3200\x10\x01\x12\x0f\n\x0b\x43ODEC2_2400\x10\x02\x12\x0f\n\x0b\x43ODEC2_1600\x10\x03\x12\x0f\n\x0b\x43ODEC2_1400\x10\x04\x12\x0f\n\x0b\x43ODEC2_1300\x10\x05\x12\x0f\n\x0b\x43ODEC2_1200\x10\x06\x12\x0e\n\nCODEC2_700\x10\x07\x12\x0f\n\x0b\x43ODEC2_700B\x10\x08\x1av\n\x10PaxcounterConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1apaxcounter_update_interval\x18\x02 \x01(\r\x12\x16\n\x0ewifi_threshold\x18\x03 \x01(\x05\x12\x15\n\rble_threshold\x18\x04 \x01(\x05\x1a\xd3\x03\n\x17TrafficManagementConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16position_dedup_enabled\x18\x02 \x01(\x08\x12\x1f\n\x17position_precision_bits\x18\x03 \x01(\r\x12\"\n\x1aposition_min_interval_secs\x18\x04 \x01(\r\x12 \n\x18nodeinfo_direct_response\x18\x05 \x01(\x08\x12)\n!nodeinfo_direct_response_max_hops\x18\x06 \x01(\r\x12\x1a\n\x12rate_limit_enabled\x18\x07 \x01(\x08\x12\x1e\n\x16rate_limit_window_secs\x18\x08 \x01(\r\x12\x1e\n\x16rate_limit_max_packets\x18\t \x01(\r\x12\x1c\n\x14\x64rop_unknown_enabled\x18\n \x01(\x08\x12 \n\x18unknown_packet_threshold\x18\x0b \x01(\r\x12\x1d\n\x15\x65xhaust_hop_telemetry\x18\x0c \x01(\x08\x12\x1c\n\x14\x65xhaust_hop_position\x18\r \x01(\x08\x12\x1c\n\x14router_preserve_hops\x18\x0e \x01(\x08\x1a\xb5\x05\n\x0cSerialConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0c\n\x04\x65\x63ho\x18\x02 \x01(\x08\x12\x0b\n\x03rxd\x18\x03 \x01(\r\x12\x0b\n\x03txd\x18\x04 \x01(\r\x12H\n\x04\x62\x61ud\x18\x05 \x01(\x0e\x32:.meshtastic.protobuf.ModuleConfig.SerialConfig.Serial_Baud\x12\x0f\n\x07timeout\x18\x06 \x01(\r\x12H\n\x04mode\x18\x07 \x01(\x0e\x32:.meshtastic.protobuf.ModuleConfig.SerialConfig.Serial_Mode\x12$\n\x1coverride_console_serial_port\x18\x08 \x01(\x08\"\x8a\x02\n\x0bSerial_Baud\x12\x10\n\x0c\x42\x41UD_DEFAULT\x10\x00\x12\x0c\n\x08\x42\x41UD_110\x10\x01\x12\x0c\n\x08\x42\x41UD_300\x10\x02\x12\x0c\n\x08\x42\x41UD_600\x10\x03\x12\r\n\tBAUD_1200\x10\x04\x12\r\n\tBAUD_2400\x10\x05\x12\r\n\tBAUD_4800\x10\x06\x12\r\n\tBAUD_9600\x10\x07\x12\x0e\n\nBAUD_19200\x10\x08\x12\x0e\n\nBAUD_38400\x10\t\x12\x0e\n\nBAUD_57600\x10\n\x12\x0f\n\x0b\x42\x41UD_115200\x10\x0b\x12\x0f\n\x0b\x42\x41UD_230400\x10\x0c\x12\x0f\n\x0b\x42\x41UD_460800\x10\r\x12\x0f\n\x0b\x42\x41UD_576000\x10\x0e\x12\x0f\n\x0b\x42\x41UD_921600\x10\x0f\"\x93\x01\n\x0bSerial_Mode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\n\n\x06SIMPLE\x10\x01\x12\t\n\x05PROTO\x10\x02\x12\x0b\n\x07TEXTMSG\x10\x03\x12\x08\n\x04NMEA\x10\x04\x12\x0b\n\x07\x43\x41LTOPO\x10\x05\x12\x08\n\x04WS85\x10\x06\x12\r\n\tVE_DIRECT\x10\x07\x12\r\n\tMS_CONFIG\x10\x08\x12\x07\n\x03LOG\x10\t\x12\x0b\n\x07LOGTEXT\x10\n\x1a\xe9\x02\n\x1a\x45xternalNotificationConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\toutput_ms\x18\x02 \x01(\r\x12\x0e\n\x06output\x18\x03 \x01(\r\x12\x14\n\x0coutput_vibra\x18\x08 \x01(\r\x12\x15\n\routput_buzzer\x18\t \x01(\r\x12\x0e\n\x06\x61\x63tive\x18\x04 \x01(\x08\x12\x15\n\ralert_message\x18\x05 \x01(\x08\x12\x1b\n\x13\x61lert_message_vibra\x18\n \x01(\x08\x12\x1c\n\x14\x61lert_message_buzzer\x18\x0b \x01(\x08\x12\x12\n\nalert_bell\x18\x06 \x01(\x08\x12\x18\n\x10\x61lert_bell_vibra\x18\x0c \x01(\x08\x12\x19\n\x11\x61lert_bell_buzzer\x18\r \x01(\x08\x12\x0f\n\x07use_pwm\x18\x07 \x01(\x08\x12\x13\n\x0bnag_timeout\x18\x0e \x01(\r\x12\x19\n\x11use_i2s_as_buzzer\x18\x0f \x01(\x08\x1a\x97\x01\n\x12StoreForwardConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\theartbeat\x18\x02 \x01(\x08\x12\x0f\n\x07records\x18\x03 \x01(\r\x12\x1a\n\x12history_return_max\x18\x04 \x01(\r\x12\x1d\n\x15history_return_window\x18\x05 \x01(\r\x12\x11\n\tis_server\x18\x06 \x01(\x08\x1aY\n\x0fRangeTestConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06sender\x18\x02 \x01(\r\x12\x0c\n\x04save\x18\x03 \x01(\x08\x12\x17\n\x0f\x63lear_on_reboot\x18\x04 \x01(\x08\x1a\x8f\x04\n\x0fTelemetryConfig\x12\x1e\n\x16\x64\x65vice_update_interval\x18\x01 \x01(\r\x12#\n\x1b\x65nvironment_update_interval\x18\x02 \x01(\r\x12\'\n\x1f\x65nvironment_measurement_enabled\x18\x03 \x01(\x08\x12\"\n\x1a\x65nvironment_screen_enabled\x18\x04 \x01(\x08\x12&\n\x1e\x65nvironment_display_fahrenheit\x18\x05 \x01(\x08\x12\x1b\n\x13\x61ir_quality_enabled\x18\x06 \x01(\x08\x12\x1c\n\x14\x61ir_quality_interval\x18\x07 \x01(\r\x12!\n\x19power_measurement_enabled\x18\x08 \x01(\x08\x12\x1d\n\x15power_update_interval\x18\t \x01(\r\x12\x1c\n\x14power_screen_enabled\x18\n \x01(\x08\x12\"\n\x1ahealth_measurement_enabled\x18\x0b \x01(\x08\x12\x1e\n\x16health_update_interval\x18\x0c \x01(\r\x12\x1d\n\x15health_screen_enabled\x18\r \x01(\x08\x12 \n\x18\x64\x65vice_telemetry_enabled\x18\x0e \x01(\x08\x12\"\n\x1a\x61ir_quality_screen_enabled\x18\x0f \x01(\x08\x1a\xf9\x04\n\x13\x43\x61nnedMessageConfig\x12\x17\n\x0frotary1_enabled\x18\x01 \x01(\x08\x12\x19\n\x11inputbroker_pin_a\x18\x02 \x01(\r\x12\x19\n\x11inputbroker_pin_b\x18\x03 \x01(\r\x12\x1d\n\x15inputbroker_pin_press\x18\x04 \x01(\r\x12\x62\n\x14inputbroker_event_cw\x18\x05 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x63\n\x15inputbroker_event_ccw\x18\x06 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x65\n\x17inputbroker_event_press\x18\x07 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x17\n\x0fupdown1_enabled\x18\x08 \x01(\x08\x12\x13\n\x07\x65nabled\x18\t \x01(\x08\x42\x02\x18\x01\x12\x1e\n\x12\x61llow_input_source\x18\n \x01(\tB\x02\x18\x01\x12\x11\n\tsend_bell\x18\x0b \x01(\x08\"c\n\x0eInputEventChar\x12\x08\n\x04NONE\x10\x00\x12\x06\n\x02UP\x10\x11\x12\x08\n\x04\x44OWN\x10\x12\x12\x08\n\x04LEFT\x10\x13\x12\t\n\x05RIGHT\x10\x14\x12\n\n\x06SELECT\x10\n\x12\x08\n\x04\x42\x41\x43K\x10\x1b\x12\n\n\x06\x43\x41NCEL\x10\x18\x1a\x65\n\x15\x41mbientLightingConfig\x12\x11\n\tled_state\x18\x01 \x01(\x08\x12\x0f\n\x07\x63urrent\x18\x02 \x01(\r\x12\x0b\n\x03red\x18\x03 \x01(\r\x12\r\n\x05green\x18\x04 \x01(\r\x12\x0c\n\x04\x62lue\x18\x05 \x01(\r\x1a*\n\x13StatusMessageConfig\x12\x13\n\x0bnode_status\x18\x01 \x01(\t\x1a\x63\n\tTAKConfig\x12\'\n\x04team\x18\x01 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12-\n\x04role\x18\x02 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRoleB\x11\n\x0fpayload_variant\"m\n\x11RemoteHardwarePin\x12\x10\n\x08gpio_pin\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x38\n\x04type\x18\x03 \x01(\x0e\x32*.meshtastic.protobuf.RemoteHardwarePinType*I\n\x15RemoteHardwarePinType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0c\x44IGITAL_READ\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x42h\n\x14org.meshtastic.protoB\x12ModuleConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'meshtastic/protobuf/module_config.proto\x12\x13meshtastic.protobuf\x1a\x1emeshtastic/protobuf/atak.proto\x1a meshtastic/protobuf/nanopb.proto\"\x9f\x30\n\x0cModuleConfig\x12<\n\x04mqtt\x18\x01 \x01(\x0b\x32,.meshtastic.protobuf.ModuleConfig.MQTTConfigH\x00\x12@\n\x06serial\x18\x02 \x01(\x0b\x32..meshtastic.protobuf.ModuleConfig.SerialConfigH\x00\x12]\n\x15\x65xternal_notification\x18\x03 \x01(\x0b\x32<.meshtastic.protobuf.ModuleConfig.ExternalNotificationConfigH\x00\x12M\n\rstore_forward\x18\x04 \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.StoreForwardConfigH\x00\x12G\n\nrange_test\x18\x05 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.RangeTestConfigH\x00\x12\x46\n\ttelemetry\x18\x06 \x01(\x0b\x32\x31.meshtastic.protobuf.ModuleConfig.TelemetryConfigH\x00\x12O\n\x0e\x63\x61nned_message\x18\x07 \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.CannedMessageConfigH\x00\x12>\n\x05\x61udio\x18\x08 \x01(\x0b\x32-.meshtastic.protobuf.ModuleConfig.AudioConfigH\x00\x12Q\n\x0fremote_hardware\x18\t \x01(\x0b\x32\x36.meshtastic.protobuf.ModuleConfig.RemoteHardwareConfigH\x00\x12M\n\rneighbor_info\x18\n \x01(\x0b\x32\x34.meshtastic.protobuf.ModuleConfig.NeighborInfoConfigH\x00\x12S\n\x10\x61mbient_lighting\x18\x0b \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.AmbientLightingConfigH\x00\x12S\n\x10\x64\x65tection_sensor\x18\x0c \x01(\x0b\x32\x37.meshtastic.protobuf.ModuleConfig.DetectionSensorConfigH\x00\x12H\n\npaxcounter\x18\r \x01(\x0b\x32\x32.meshtastic.protobuf.ModuleConfig.PaxcounterConfigH\x00\x12N\n\rstatusmessage\x18\x0e \x01(\x0b\x32\x35.meshtastic.protobuf.ModuleConfig.StatusMessageConfigH\x00\x12W\n\x12traffic_management\x18\x0f \x01(\x0b\x32\x39.meshtastic.protobuf.ModuleConfig.TrafficManagementConfigH\x00\x12:\n\x03tak\x18\x10 \x01(\x0b\x32+.meshtastic.protobuf.ModuleConfig.TAKConfigH\x00\x1a\xd9\x02\n\nMQTTConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x16\n\x07\x61\x64\x64ress\x18\x02 \x01(\tB\x05\x92?\x02\x08@\x12\x17\n\x08username\x18\x03 \x01(\tB\x05\x92?\x02\x08@\x12\x17\n\x08password\x18\x04 \x01(\tB\x05\x92?\x02\x08 \x12\x1a\n\x12\x65ncryption_enabled\x18\x05 \x01(\x08\x12\x18\n\x0cjson_enabled\x18\x06 \x01(\x08\x42\x02\x18\x01\x12\x13\n\x0btls_enabled\x18\x07 \x01(\x08\x12\x13\n\x04root\x18\x08 \x01(\tB\x05\x92?\x02\x08 \x12\x1f\n\x17proxy_to_client_enabled\x18\t \x01(\x08\x12\x1d\n\x15map_reporting_enabled\x18\n \x01(\x08\x12P\n\x13map_report_settings\x18\x0b \x01(\x0b\x32\x33.meshtastic.protobuf.ModuleConfig.MapReportSettings\x1an\n\x11MapReportSettings\x12\x1d\n\x15publish_interval_secs\x18\x01 \x01(\r\x12\x1a\n\x12position_precision\x18\x02 \x01(\r\x12\x1e\n\x16should_report_location\x18\x03 \x01(\x08\x1a\x92\x01\n\x14RemoteHardwareConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1a\x61llow_undefined_pin_access\x18\x02 \x01(\x08\x12\x45\n\x0e\x61vailable_pins\x18\x03 \x03(\x0b\x32&.meshtastic.protobuf.RemoteHardwarePinB\x05\x92?\x02\x10\x04\x1aZ\n\x12NeighborInfoConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x17\n\x0fupdate_interval\x18\x02 \x01(\r\x12\x1a\n\x12transmit_over_lora\x18\x03 \x01(\x08\x1a\xb5\x03\n\x15\x44\x65tectionSensorConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16minimum_broadcast_secs\x18\x02 \x01(\r\x12\x1c\n\x14state_broadcast_secs\x18\x03 \x01(\r\x12\x11\n\tsend_bell\x18\x04 \x01(\x08\x12\x13\n\x04name\x18\x05 \x01(\tB\x05\x92?\x02\x08\x14\x12\x1a\n\x0bmonitor_pin\x18\x06 \x01(\rB\x05\x92?\x02\x38\x08\x12j\n\x16\x64\x65tection_trigger_type\x18\x07 \x01(\x0e\x32\x43.meshtastic.protobuf.ModuleConfig.DetectionSensorConfig.TriggerTypeB\x05\x92?\x02\x08\x08\x12\x12\n\nuse_pullup\x18\x08 \x01(\x08\"\x88\x01\n\x0bTriggerType\x12\r\n\tLOGIC_LOW\x10\x00\x12\x0e\n\nLOGIC_HIGH\x10\x01\x12\x10\n\x0c\x46\x41LLING_EDGE\x10\x02\x12\x0f\n\x0bRISING_EDGE\x10\x03\x12\x1a\n\x16\x45ITHER_EDGE_ACTIVE_LOW\x10\x04\x12\x1b\n\x17\x45ITHER_EDGE_ACTIVE_HIGH\x10\x05\x1a\x90\x03\n\x0b\x41udioConfig\x12\x16\n\x0e\x63odec2_enabled\x18\x01 \x01(\x08\x12\x16\n\x07ptt_pin\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08\x12I\n\x07\x62itrate\x18\x03 \x01(\x0e\x32\x38.meshtastic.protobuf.ModuleConfig.AudioConfig.Audio_Baud\x12\x15\n\x06i2s_ws\x18\x04 \x01(\rB\x05\x92?\x02\x38\x08\x12\x15\n\x06i2s_sd\x18\x05 \x01(\rB\x05\x92?\x02\x38\x08\x12\x16\n\x07i2s_din\x18\x06 \x01(\rB\x05\x92?\x02\x38\x08\x12\x16\n\x07i2s_sck\x18\x07 \x01(\rB\x05\x92?\x02\x38\x08\"\xa7\x01\n\nAudio_Baud\x12\x12\n\x0e\x43ODEC2_DEFAULT\x10\x00\x12\x0f\n\x0b\x43ODEC2_3200\x10\x01\x12\x0f\n\x0b\x43ODEC2_2400\x10\x02\x12\x0f\n\x0b\x43ODEC2_1600\x10\x03\x12\x0f\n\x0b\x43ODEC2_1400\x10\x04\x12\x0f\n\x0b\x43ODEC2_1300\x10\x05\x12\x0f\n\x0b\x43ODEC2_1200\x10\x06\x12\x0e\n\nCODEC2_700\x10\x07\x12\x0f\n\x0b\x43ODEC2_700B\x10\x08\x1av\n\x10PaxcounterConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\"\n\x1apaxcounter_update_interval\x18\x02 \x01(\r\x12\x16\n\x0ewifi_threshold\x18\x03 \x01(\x05\x12\x15\n\rble_threshold\x18\x04 \x01(\x05\x1a\xd3\x03\n\x17TrafficManagementConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x1e\n\x16position_dedup_enabled\x18\x02 \x01(\x08\x12\x1f\n\x17position_precision_bits\x18\x03 \x01(\r\x12\"\n\x1aposition_min_interval_secs\x18\x04 \x01(\r\x12 \n\x18nodeinfo_direct_response\x18\x05 \x01(\x08\x12)\n!nodeinfo_direct_response_max_hops\x18\x06 \x01(\r\x12\x1a\n\x12rate_limit_enabled\x18\x07 \x01(\x08\x12\x1e\n\x16rate_limit_window_secs\x18\x08 \x01(\r\x12\x1e\n\x16rate_limit_max_packets\x18\t \x01(\r\x12\x1c\n\x14\x64rop_unknown_enabled\x18\n \x01(\x08\x12 \n\x18unknown_packet_threshold\x18\x0b \x01(\r\x12\x1d\n\x15\x65xhaust_hop_telemetry\x18\x0c \x01(\x08\x12\x1c\n\x14\x65xhaust_hop_position\x18\r \x01(\x08\x12\x1c\n\x14router_preserve_hops\x18\x0e \x01(\x08\x1a\xb5\x05\n\x0cSerialConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0c\n\x04\x65\x63ho\x18\x02 \x01(\x08\x12\x0b\n\x03rxd\x18\x03 \x01(\r\x12\x0b\n\x03txd\x18\x04 \x01(\r\x12H\n\x04\x62\x61ud\x18\x05 \x01(\x0e\x32:.meshtastic.protobuf.ModuleConfig.SerialConfig.Serial_Baud\x12\x0f\n\x07timeout\x18\x06 \x01(\r\x12H\n\x04mode\x18\x07 \x01(\x0e\x32:.meshtastic.protobuf.ModuleConfig.SerialConfig.Serial_Mode\x12$\n\x1coverride_console_serial_port\x18\x08 \x01(\x08\"\x8a\x02\n\x0bSerial_Baud\x12\x10\n\x0c\x42\x41UD_DEFAULT\x10\x00\x12\x0c\n\x08\x42\x41UD_110\x10\x01\x12\x0c\n\x08\x42\x41UD_300\x10\x02\x12\x0c\n\x08\x42\x41UD_600\x10\x03\x12\r\n\tBAUD_1200\x10\x04\x12\r\n\tBAUD_2400\x10\x05\x12\r\n\tBAUD_4800\x10\x06\x12\r\n\tBAUD_9600\x10\x07\x12\x0e\n\nBAUD_19200\x10\x08\x12\x0e\n\nBAUD_38400\x10\t\x12\x0e\n\nBAUD_57600\x10\n\x12\x0f\n\x0b\x42\x41UD_115200\x10\x0b\x12\x0f\n\x0b\x42\x41UD_230400\x10\x0c\x12\x0f\n\x0b\x42\x41UD_460800\x10\r\x12\x0f\n\x0b\x42\x41UD_576000\x10\x0e\x12\x0f\n\x0b\x42\x41UD_921600\x10\x0f\"\x93\x01\n\x0bSerial_Mode\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\n\n\x06SIMPLE\x10\x01\x12\t\n\x05PROTO\x10\x02\x12\x0b\n\x07TEXTMSG\x10\x03\x12\x08\n\x04NMEA\x10\x04\x12\x0b\n\x07\x43\x41LTOPO\x10\x05\x12\x08\n\x04WS85\x10\x06\x12\r\n\tVE_DIRECT\x10\x07\x12\r\n\tMS_CONFIG\x10\x08\x12\x07\n\x03LOG\x10\t\x12\x0b\n\x07LOGTEXT\x10\n\x1a\xfe\x02\n\x1a\x45xternalNotificationConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\toutput_ms\x18\x02 \x01(\r\x12\x0e\n\x06output\x18\x03 \x01(\r\x12\x1b\n\x0coutput_vibra\x18\x08 \x01(\rB\x05\x92?\x02\x38\x08\x12\x1c\n\routput_buzzer\x18\t \x01(\rB\x05\x92?\x02\x38\x08\x12\x0e\n\x06\x61\x63tive\x18\x04 \x01(\x08\x12\x15\n\ralert_message\x18\x05 \x01(\x08\x12\x1b\n\x13\x61lert_message_vibra\x18\n \x01(\x08\x12\x1c\n\x14\x61lert_message_buzzer\x18\x0b \x01(\x08\x12\x12\n\nalert_bell\x18\x06 \x01(\x08\x12\x18\n\x10\x61lert_bell_vibra\x18\x0c \x01(\x08\x12\x19\n\x11\x61lert_bell_buzzer\x18\r \x01(\x08\x12\x0f\n\x07use_pwm\x18\x07 \x01(\x08\x12\x1a\n\x0bnag_timeout\x18\x0e \x01(\rB\x05\x92?\x02\x38\x10\x12\x19\n\x11use_i2s_as_buzzer\x18\x0f \x01(\x08\x1a\x97\x01\n\x12StoreForwardConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x11\n\theartbeat\x18\x02 \x01(\x08\x12\x0f\n\x07records\x18\x03 \x01(\r\x12\x1a\n\x12history_return_max\x18\x04 \x01(\r\x12\x1d\n\x15history_return_window\x18\x05 \x01(\r\x12\x11\n\tis_server\x18\x06 \x01(\x08\x1aY\n\x0fRangeTestConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x0e\n\x06sender\x18\x02 \x01(\r\x12\x0c\n\x04save\x18\x03 \x01(\x08\x12\x17\n\x0f\x63lear_on_reboot\x18\x04 \x01(\x08\x1a\x8f\x04\n\x0fTelemetryConfig\x12\x1e\n\x16\x64\x65vice_update_interval\x18\x01 \x01(\r\x12#\n\x1b\x65nvironment_update_interval\x18\x02 \x01(\r\x12\'\n\x1f\x65nvironment_measurement_enabled\x18\x03 \x01(\x08\x12\"\n\x1a\x65nvironment_screen_enabled\x18\x04 \x01(\x08\x12&\n\x1e\x65nvironment_display_fahrenheit\x18\x05 \x01(\x08\x12\x1b\n\x13\x61ir_quality_enabled\x18\x06 \x01(\x08\x12\x1c\n\x14\x61ir_quality_interval\x18\x07 \x01(\r\x12!\n\x19power_measurement_enabled\x18\x08 \x01(\x08\x12\x1d\n\x15power_update_interval\x18\t \x01(\r\x12\x1c\n\x14power_screen_enabled\x18\n \x01(\x08\x12\"\n\x1ahealth_measurement_enabled\x18\x0b \x01(\x08\x12\x1e\n\x16health_update_interval\x18\x0c \x01(\r\x12\x1d\n\x15health_screen_enabled\x18\r \x01(\x08\x12 \n\x18\x64\x65vice_telemetry_enabled\x18\x0e \x01(\x08\x12\"\n\x1a\x61ir_quality_screen_enabled\x18\x0f \x01(\x08\x1a\xfe\x04\n\x13\x43\x61nnedMessageConfig\x12\x17\n\x0frotary1_enabled\x18\x01 \x01(\x08\x12\x19\n\x11inputbroker_pin_a\x18\x02 \x01(\r\x12\x19\n\x11inputbroker_pin_b\x18\x03 \x01(\r\x12\x1d\n\x15inputbroker_pin_press\x18\x04 \x01(\r\x12\x62\n\x14inputbroker_event_cw\x18\x05 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x63\n\x15inputbroker_event_ccw\x18\x06 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x65\n\x17inputbroker_event_press\x18\x07 \x01(\x0e\x32\x44.meshtastic.protobuf.ModuleConfig.CannedMessageConfig.InputEventChar\x12\x17\n\x0fupdown1_enabled\x18\x08 \x01(\x08\x12\x13\n\x07\x65nabled\x18\t \x01(\x08\x42\x02\x18\x01\x12#\n\x12\x61llow_input_source\x18\n \x01(\tB\x07\x18\x01\x92?\x02\x08\x10\x12\x11\n\tsend_bell\x18\x0b \x01(\x08\"c\n\x0eInputEventChar\x12\x08\n\x04NONE\x10\x00\x12\x06\n\x02UP\x10\x11\x12\x08\n\x04\x44OWN\x10\x12\x12\x08\n\x04LEFT\x10\x13\x12\t\n\x05RIGHT\x10\x14\x12\n\n\x06SELECT\x10\n\x12\x08\n\x04\x42\x41\x43K\x10\x1b\x12\n\n\x06\x43\x41NCEL\x10\x18\x1a\x81\x01\n\x15\x41mbientLightingConfig\x12\x11\n\tled_state\x18\x01 \x01(\x08\x12\x16\n\x07\x63urrent\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08\x12\x12\n\x03red\x18\x03 \x01(\rB\x05\x92?\x02\x38\x08\x12\x14\n\x05green\x18\x04 \x01(\rB\x05\x92?\x02\x38\x08\x12\x13\n\x04\x62lue\x18\x05 \x01(\rB\x05\x92?\x02\x38\x08\x1a\x31\n\x13StatusMessageConfig\x12\x1a\n\x0bnode_status\x18\x01 \x01(\tB\x05\x92?\x02\x08P\x1a\x63\n\tTAKConfig\x12\'\n\x04team\x18\x01 \x01(\x0e\x32\x19.meshtastic.protobuf.Team\x12-\n\x04role\x18\x02 \x01(\x0e\x32\x1f.meshtastic.protobuf.MemberRoleB\x11\n\x0fpayload_variant\"{\n\x11RemoteHardwarePin\x12\x17\n\x08gpio_pin\x18\x01 \x01(\rB\x05\x92?\x02\x38\x08\x12\x13\n\x04name\x18\x02 \x01(\tB\x05\x92?\x02\x08\x0f\x12\x38\n\x04type\x18\x03 \x01(\x0e\x32*.meshtastic.protobuf.RemoteHardwarePinType*I\n\x15RemoteHardwarePinType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0c\x44IGITAL_READ\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x42h\n\x14org.meshtastic.protoB\x12ModuleConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -22,60 +23,106 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.module_ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\022ModuleConfigProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' + _MODULECONFIG_MQTTCONFIG.fields_by_name['address']._options = None + _MODULECONFIG_MQTTCONFIG.fields_by_name['address']._serialized_options = b'\222?\002\010@' + _MODULECONFIG_MQTTCONFIG.fields_by_name['username']._options = None + _MODULECONFIG_MQTTCONFIG.fields_by_name['username']._serialized_options = b'\222?\002\010@' + _MODULECONFIG_MQTTCONFIG.fields_by_name['password']._options = None + _MODULECONFIG_MQTTCONFIG.fields_by_name['password']._serialized_options = b'\222?\002\010 ' _MODULECONFIG_MQTTCONFIG.fields_by_name['json_enabled']._options = None _MODULECONFIG_MQTTCONFIG.fields_by_name['json_enabled']._serialized_options = b'\030\001' + _MODULECONFIG_MQTTCONFIG.fields_by_name['root']._options = None + _MODULECONFIG_MQTTCONFIG.fields_by_name['root']._serialized_options = b'\222?\002\010 ' + _MODULECONFIG_REMOTEHARDWARECONFIG.fields_by_name['available_pins']._options = None + _MODULECONFIG_REMOTEHARDWARECONFIG.fields_by_name['available_pins']._serialized_options = b'\222?\002\020\004' + _MODULECONFIG_DETECTIONSENSORCONFIG.fields_by_name['name']._options = None + _MODULECONFIG_DETECTIONSENSORCONFIG.fields_by_name['name']._serialized_options = b'\222?\002\010\024' + _MODULECONFIG_DETECTIONSENSORCONFIG.fields_by_name['monitor_pin']._options = None + _MODULECONFIG_DETECTIONSENSORCONFIG.fields_by_name['monitor_pin']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_DETECTIONSENSORCONFIG.fields_by_name['detection_trigger_type']._options = None + _MODULECONFIG_DETECTIONSENSORCONFIG.fields_by_name['detection_trigger_type']._serialized_options = b'\222?\002\010\010' + _MODULECONFIG_AUDIOCONFIG.fields_by_name['ptt_pin']._options = None + _MODULECONFIG_AUDIOCONFIG.fields_by_name['ptt_pin']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_ws']._options = None + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_ws']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_sd']._options = None + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_sd']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_din']._options = None + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_din']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_sck']._options = None + _MODULECONFIG_AUDIOCONFIG.fields_by_name['i2s_sck']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG.fields_by_name['output_vibra']._options = None + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG.fields_by_name['output_vibra']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG.fields_by_name['output_buzzer']._options = None + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG.fields_by_name['output_buzzer']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG.fields_by_name['nag_timeout']._options = None + _MODULECONFIG_EXTERNALNOTIFICATIONCONFIG.fields_by_name['nag_timeout']._serialized_options = b'\222?\0028\020' _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['enabled']._options = None _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['enabled']._serialized_options = b'\030\001' _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['allow_input_source']._options = None - _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['allow_input_source']._serialized_options = b'\030\001' - _globals['_REMOTEHARDWAREPINTYPE']._serialized_start=6232 - _globals['_REMOTEHARDWAREPINTYPE']._serialized_end=6305 - _globals['_MODULECONFIG']._serialized_start=97 - _globals['_MODULECONFIG']._serialized_end=6119 - _globals['_MODULECONFIG_MQTTCONFIG']._serialized_start=1341 - _globals['_MODULECONFIG_MQTTCONFIG']._serialized_end=1658 - _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_start=1660 - _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_end=1770 - _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_start=1773 - _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_end=1912 - _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_start=1914 - _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_end=2004 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_start=2007 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_end=2423 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_start=2287 - _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_end=2423 - _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_start=2426 - _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_end=2791 - _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_start=2624 - _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_end=2791 - _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_start=2793 - _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_end=2911 - _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_start=2914 - _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_end=3381 - _globals['_MODULECONFIG_SERIALCONFIG']._serialized_start=3384 - _globals['_MODULECONFIG_SERIALCONFIG']._serialized_end=4077 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_start=3661 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_end=3927 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_start=3930 - _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_end=4077 - _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_start=4080 - _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_end=4441 - _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_start=4444 - _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_end=4595 - _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_start=4597 - _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_end=4686 - _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_start=4689 - _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_end=5216 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_start=5219 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_end=5852 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_start=5753 - _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_end=5852 - _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_start=5854 - _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_end=5955 - _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_start=5957 - _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_end=5999 - _globals['_MODULECONFIG_TAKCONFIG']._serialized_start=6001 - _globals['_MODULECONFIG_TAKCONFIG']._serialized_end=6100 - _globals['_REMOTEHARDWAREPIN']._serialized_start=6121 - _globals['_REMOTEHARDWAREPIN']._serialized_end=6230 + _MODULECONFIG_CANNEDMESSAGECONFIG.fields_by_name['allow_input_source']._serialized_options = b'\030\001\222?\002\010\020' + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['current']._options = None + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['current']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['red']._options = None + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['red']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['green']._options = None + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['green']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['blue']._options = None + _MODULECONFIG_AMBIENTLIGHTINGCONFIG.fields_by_name['blue']._serialized_options = b'\222?\0028\010' + _MODULECONFIG_STATUSMESSAGECONFIG.fields_by_name['node_status']._options = None + _MODULECONFIG_STATUSMESSAGECONFIG.fields_by_name['node_status']._serialized_options = b'\222?\002\010P' + _REMOTEHARDWAREPIN.fields_by_name['gpio_pin']._options = None + _REMOTEHARDWAREPIN.fields_by_name['gpio_pin']._serialized_options = b'\222?\0028\010' + _REMOTEHARDWAREPIN.fields_by_name['name']._options = None + _REMOTEHARDWAREPIN.fields_by_name['name']._serialized_options = b'\222?\002\010\017' + _globals['_REMOTEHARDWAREPINTYPE']._serialized_start=6433 + _globals['_REMOTEHARDWAREPINTYPE']._serialized_end=6506 + _globals['_MODULECONFIG']._serialized_start=131 + _globals['_MODULECONFIG']._serialized_end=6306 + _globals['_MODULECONFIG_MQTTCONFIG']._serialized_start=1375 + _globals['_MODULECONFIG_MQTTCONFIG']._serialized_end=1720 + _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_start=1722 + _globals['_MODULECONFIG_MAPREPORTSETTINGS']._serialized_end=1832 + _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_start=1835 + _globals['_MODULECONFIG_REMOTEHARDWARECONFIG']._serialized_end=1981 + _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_start=1983 + _globals['_MODULECONFIG_NEIGHBORINFOCONFIG']._serialized_end=2073 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_start=2076 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG']._serialized_end=2513 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_start=2377 + _globals['_MODULECONFIG_DETECTIONSENSORCONFIG_TRIGGERTYPE']._serialized_end=2513 + _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_start=2516 + _globals['_MODULECONFIG_AUDIOCONFIG']._serialized_end=2916 + _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_start=2749 + _globals['_MODULECONFIG_AUDIOCONFIG_AUDIO_BAUD']._serialized_end=2916 + _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_start=2918 + _globals['_MODULECONFIG_PAXCOUNTERCONFIG']._serialized_end=3036 + _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_start=3039 + _globals['_MODULECONFIG_TRAFFICMANAGEMENTCONFIG']._serialized_end=3506 + _globals['_MODULECONFIG_SERIALCONFIG']._serialized_start=3509 + _globals['_MODULECONFIG_SERIALCONFIG']._serialized_end=4202 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_start=3786 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_BAUD']._serialized_end=4052 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_start=4055 + _globals['_MODULECONFIG_SERIALCONFIG_SERIAL_MODE']._serialized_end=4202 + _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_start=4205 + _globals['_MODULECONFIG_EXTERNALNOTIFICATIONCONFIG']._serialized_end=4587 + _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_start=4590 + _globals['_MODULECONFIG_STOREFORWARDCONFIG']._serialized_end=4741 + _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_start=4743 + _globals['_MODULECONFIG_RANGETESTCONFIG']._serialized_end=4832 + _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_start=4835 + _globals['_MODULECONFIG_TELEMETRYCONFIG']._serialized_end=5362 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_start=5365 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG']._serialized_end=6003 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_start=5904 + _globals['_MODULECONFIG_CANNEDMESSAGECONFIG_INPUTEVENTCHAR']._serialized_end=6003 + _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_start=6006 + _globals['_MODULECONFIG_AMBIENTLIGHTINGCONFIG']._serialized_end=6135 + _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_start=6137 + _globals['_MODULECONFIG_STATUSMESSAGECONFIG']._serialized_end=6186 + _globals['_MODULECONFIG_TAKCONFIG']._serialized_start=6188 + _globals['_MODULECONFIG_TAKCONFIG']._serialized_end=6287 + _globals['_REMOTEHARDWAREPIN']._serialized_start=6308 + _globals['_REMOTEHARDWAREPIN']._serialized_end=6431 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/mqtt_pb2.py b/meshtastic/protobuf/mqtt_pb2.py index 7b4e4c0..54e0918 100644 --- a/meshtastic/protobuf/mqtt_pb2.py +++ b/meshtastic/protobuf/mqtt_pb2.py @@ -13,9 +13,10 @@ _sym_db = _symbol_database.Default() from meshtastic.protobuf import config_pb2 as meshtastic_dot_protobuf_dot_config__pb2 from meshtastic.protobuf import mesh_pb2 as meshtastic_dot_protobuf_dot_mesh__pb2 +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__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\x14org.meshtastic.protoB\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\x1a meshtastic/protobuf/nanopb.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\"\x9f\x04\n\tMapReport\x12\x18\n\tlong_name\x18\x01 \x01(\tB\x05\x92?\x02\x08(\x12\x19\n\nshort_name\x18\x02 \x01(\tB\x05\x92?\x02\x08\x05\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\x1f\n\x10\x66irmware_version\x18\x05 \x01(\tB\x05\x92?\x02\x08\x12\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%\n\x16num_online_local_nodes\x18\r \x01(\rB\x05\x92?\x02\x38\x10\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -23,8 +24,16 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.mqtt_pb if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=227 - _globals['_MAPREPORT']._serialized_start=230 - _globals['_MAPREPORT']._serialized_end=745 + _MAPREPORT.fields_by_name['long_name']._options = None + _MAPREPORT.fields_by_name['long_name']._serialized_options = b'\222?\002\010(' + _MAPREPORT.fields_by_name['short_name']._options = None + _MAPREPORT.fields_by_name['short_name']._serialized_options = b'\222?\002\010\005' + _MAPREPORT.fields_by_name['firmware_version']._options = None + _MAPREPORT.fields_by_name['firmware_version']._serialized_options = b'\222?\002\010\022' + _MAPREPORT.fields_by_name['num_online_local_nodes']._options = None + _MAPREPORT.fields_by_name['num_online_local_nodes']._serialized_options = b'\222?\0028\020' + _globals['_SERVICEENVELOPE']._serialized_start=155 + _globals['_SERVICEENVELOPE']._serialized_end=261 + _globals['_MAPREPORT']._serialized_start=264 + _globals['_MAPREPORT']._serialized_end=807 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/rtttl_pb2.py b/meshtastic/protobuf/rtttl_pb2.py index 12842c2..95039ed 100644 --- a/meshtastic/protobuf/rtttl_pb2.py +++ b/meshtastic/protobuf/rtttl_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmeshtastic/protobuf/rtttl.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\'\n\x0bRTTTLConfig\x12\x18\n\x08ringtone\x18\x01 \x01(\tB\x06\x92?\x03\x08\xe7\x01\x42g\n\x14org.meshtastic.protoB\x11RTTTLConfigProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,6 +22,8 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.rtttl_p if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=87 + _RTTTLCONFIG.fields_by_name['ringtone']._options = None + _RTTTLCONFIG.fields_by_name['ringtone']._serialized_options = b'\222?\003\010\347\001' + _globals['_RTTTLCONFIG']._serialized_start=90 + _globals['_RTTTLCONFIG']._serialized_end=129 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/serial_hal_pb2.py b/meshtastic/protobuf/serial_hal_pb2.py index 5ec565c..2fe775c 100644 --- a/meshtastic/protobuf/serial_hal_pb2.py +++ b/meshtastic/protobuf/serial_hal_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/serial_hal.proto\x12\x13meshtastic.protobuf\"\xab\x02\n\x10SerialHalCommand\x12\x16\n\x0etransaction_id\x18\x01 \x01(\r\x12\x38\n\x04type\x18\x02 \x01(\x0e\x32*.meshtastic.protobuf.SerialHalCommand.Type\x12\x0b\n\x03pin\x18\x03 \x01(\r\x12\r\n\x05value\x18\x04 \x01(\r\x12\x0c\n\x04mode\x18\x05 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\"\x8c\x01\n\x04Type\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08PIN_MODE\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x12\x10\n\x0c\x44IGITAL_READ\x10\x03\x12\x14\n\x10\x41TTACH_INTERRUPT\x10\x04\x12\x14\n\x10\x44\x45TACH_INTERRUPT\x10\x05\x12\x10\n\x0cSPI_TRANSFER\x10\x06\x12\x08\n\x04NOOP\x10\x07\"\xd5\x01\n\x11SerialHalResponse\x12\x16\n\x0etransaction_id\x18\x01 \x01(\r\x12=\n\x06result\x18\x02 \x01(\x0e\x32-.meshtastic.protobuf.SerialHalResponse.Result\x12\r\n\x05value\x18\x03 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\r\n\x05\x65rror\x18\x05 \x01(\t\"=\n\x06Result\x12\x06\n\x02OK\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10\x02\x12\x0f\n\x0bUNSUPPORTED\x10\x03\x42_\n\x14org.meshtastic.protoB\tSerialHalZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$meshtastic/protobuf/serial_hal.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\xb3\x02\n\x10SerialHalCommand\x12\x16\n\x0etransaction_id\x18\x01 \x01(\r\x12\x38\n\x04type\x18\x02 \x01(\x0e\x32*.meshtastic.protobuf.SerialHalCommand.Type\x12\x0b\n\x03pin\x18\x03 \x01(\r\x12\r\n\x05value\x18\x04 \x01(\r\x12\x0c\n\x04mode\x18\x05 \x01(\r\x12\x14\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x04\"\x8c\x01\n\x04Type\x12\t\n\x05UNSET\x10\x00\x12\x0c\n\x08PIN_MODE\x10\x01\x12\x11\n\rDIGITAL_WRITE\x10\x02\x12\x10\n\x0c\x44IGITAL_READ\x10\x03\x12\x14\n\x10\x41TTACH_INTERRUPT\x10\x04\x12\x14\n\x10\x44\x45TACH_INTERRUPT\x10\x05\x12\x10\n\x0cSPI_TRANSFER\x10\x06\x12\x08\n\x04NOOP\x10\x07\"\xe4\x01\n\x11SerialHalResponse\x12\x16\n\x0etransaction_id\x18\x01 \x01(\r\x12=\n\x06result\x18\x02 \x01(\x0e\x32-.meshtastic.protobuf.SerialHalResponse.Result\x12\r\n\x05value\x18\x03 \x01(\r\x12\x14\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x04\x12\x14\n\x05\x65rror\x18\x05 \x01(\tB\x05\x92?\x02\x08P\"=\n\x06Result\x12\x06\n\x02OK\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10\x02\x12\x0f\n\x0bUNSUPPORTED\x10\x03\x42_\n\x14org.meshtastic.protoB\tSerialHalZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,12 +22,18 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.serial_ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\tSerialHalZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_SERIALHALCOMMAND']._serialized_start=62 - _globals['_SERIALHALCOMMAND']._serialized_end=361 - _globals['_SERIALHALCOMMAND_TYPE']._serialized_start=221 - _globals['_SERIALHALCOMMAND_TYPE']._serialized_end=361 - _globals['_SERIALHALRESPONSE']._serialized_start=364 - _globals['_SERIALHALRESPONSE']._serialized_end=577 - _globals['_SERIALHALRESPONSE_RESULT']._serialized_start=516 - _globals['_SERIALHALRESPONSE_RESULT']._serialized_end=577 + _SERIALHALCOMMAND.fields_by_name['data']._options = None + _SERIALHALCOMMAND.fields_by_name['data']._serialized_options = b'\222?\003\010\200\004' + _SERIALHALRESPONSE.fields_by_name['data']._options = None + _SERIALHALRESPONSE.fields_by_name['data']._serialized_options = b'\222?\003\010\200\004' + _SERIALHALRESPONSE.fields_by_name['error']._options = None + _SERIALHALRESPONSE.fields_by_name['error']._serialized_options = b'\222?\002\010P' + _globals['_SERIALHALCOMMAND']._serialized_start=96 + _globals['_SERIALHALCOMMAND']._serialized_end=403 + _globals['_SERIALHALCOMMAND_TYPE']._serialized_start=263 + _globals['_SERIALHALCOMMAND_TYPE']._serialized_end=403 + _globals['_SERIALHALRESPONSE']._serialized_start=406 + _globals['_SERIALHALRESPONSE']._serialized_end=634 + _globals['_SERIALHALRESPONSE_RESULT']._serialized_start=573 + _globals['_SERIALHALRESPONSE_RESULT']._serialized_end=634 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/storeforward_pb2.py b/meshtastic/protobuf/storeforward_pb2.py index cd57ff6..7ff93bd 100644 --- a/meshtastic/protobuf/storeforward_pb2.py +++ b/meshtastic/protobuf/storeforward_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&meshtastic/protobuf/storeforward.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\xc8\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\x16\n\x04text\x18\x05 \x01(\x0c\x42\x06\x92?\x03\x08\xe9\x01H\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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,14 +22,16 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.storefo if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=1024 - _globals['_STOREANDFORWARD_STATISTICS']._serialized_start=366 - _globals['_STOREANDFORWARD_STATISTICS']._serialized_end=571 - _globals['_STOREANDFORWARD_HISTORY']._serialized_start=573 - _globals['_STOREANDFORWARD_HISTORY']._serialized_end=646 - _globals['_STOREANDFORWARD_HEARTBEAT']._serialized_start=648 - _globals['_STOREANDFORWARD_HEARTBEAT']._serialized_end=694 - _globals['_STOREANDFORWARD_REQUESTRESPONSE']._serialized_start=697 - _globals['_STOREANDFORWARD_REQUESTRESPONSE']._serialized_end=1013 + _STOREANDFORWARD.fields_by_name['text']._options = None + _STOREANDFORWARD.fields_by_name['text']._serialized_options = b'\222?\003\010\351\001' + _globals['_STOREANDFORWARD']._serialized_start=98 + _globals['_STOREANDFORWARD']._serialized_end=1066 + _globals['_STOREANDFORWARD_STATISTICS']._serialized_start=408 + _globals['_STOREANDFORWARD_STATISTICS']._serialized_end=613 + _globals['_STOREANDFORWARD_HISTORY']._serialized_start=615 + _globals['_STOREANDFORWARD_HISTORY']._serialized_end=688 + _globals['_STOREANDFORWARD_HEARTBEAT']._serialized_start=690 + _globals['_STOREANDFORWARD_HEARTBEAT']._serialized_end=736 + _globals['_STOREANDFORWARD_REQUESTRESPONSE']._serialized_start=739 + _globals['_STOREANDFORWARD_REQUESTRESPONSE']._serialized_end=1055 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/telemetry_pb2.py b/meshtastic/protobuf/telemetry_pb2.py index fba676f..8fefe68 100644 --- a/meshtastic/protobuf/telemetry_pb2.py +++ b/meshtastic/protobuf/telemetry_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/telemetry.proto\x12\x13meshtastic.protobuf\"\xf3\x01\n\rDeviceMetrics\x12\x1a\n\rbattery_level\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07voltage\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x63hannel_utilization\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x1b\n\x0euptime_seconds\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x10\n\x0e_battery_levelB\n\n\x08_voltageB\x16\n\x14_channel_utilizationB\x0e\n\x0c_air_util_txB\x11\n\x0f_uptime_seconds\"\xa0\x07\n\x12\x45nvironmentMetrics\x12\x18\n\x0btemperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11relative_humidity\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1b\n\x0egas_resistance\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x14\n\x07voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x14\n\x07\x63urrent\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x10\n\x03iaq\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x10\n\x03lux\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x16\n\twhite_lux\x18\n \x01(\x02H\t\x88\x01\x01\x12\x13\n\x06ir_lux\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x13\n\x06uv_lux\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x1b\n\x0ewind_direction\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x17\n\nwind_speed\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x13\n\x06weight\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x16\n\twind_gust\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x16\n\twind_lull\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x16\n\tradiation\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x18\n\x0brainfall_1h\x18\x13 \x01(\x02H\x12\x88\x01\x01\x12\x19\n\x0crainfall_24h\x18\x14 \x01(\x02H\x13\x88\x01\x01\x12\x1a\n\rsoil_moisture\x18\x15 \x01(\rH\x14\x88\x01\x01\x12\x1d\n\x10soil_temperature\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12\x1c\n\x14one_wire_temperature\x18\x17 \x03(\x02\x42\x0e\n\x0c_temperatureB\x14\n\x12_relative_humidityB\x16\n\x14_barometric_pressureB\x11\n\x0f_gas_resistanceB\n\n\x08_voltageB\n\n\x08_currentB\x06\n\x04_iaqB\x0b\n\t_distanceB\x06\n\x04_luxB\x0c\n\n_white_luxB\t\n\x07_ir_luxB\t\n\x07_uv_luxB\x11\n\x0f_wind_directionB\r\n\x0b_wind_speedB\t\n\x07_weightB\x0c\n\n_wind_gustB\x0c\n\n_wind_lullB\x0c\n\n_radiationB\x0e\n\x0c_rainfall_1hB\x0f\n\r_rainfall_24hB\x10\n\x0e_soil_moistureB\x13\n\x11_soil_temperature\"\xae\x05\n\x0cPowerMetrics\x12\x18\n\x0b\x63h1_voltage\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x18\n\x0b\x63h1_current\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0b\x63h2_voltage\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x63h2_current\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x18\n\x0b\x63h3_voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x18\n\x0b\x63h3_current\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x18\n\x0b\x63h4_voltage\x18\x07 \x01(\x02H\x06\x88\x01\x01\x12\x18\n\x0b\x63h4_current\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x18\n\x0b\x63h5_voltage\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x18\n\x0b\x63h5_current\x18\n \x01(\x02H\t\x88\x01\x01\x12\x18\n\x0b\x63h6_voltage\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x18\n\x0b\x63h6_current\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x18\n\x0b\x63h7_voltage\x18\r \x01(\x02H\x0c\x88\x01\x01\x12\x18\n\x0b\x63h7_current\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x18\n\x0b\x63h8_voltage\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x18\n\x0b\x63h8_current\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x42\x0e\n\x0c_ch1_voltageB\x0e\n\x0c_ch1_currentB\x0e\n\x0c_ch2_voltageB\x0e\n\x0c_ch2_currentB\x0e\n\x0c_ch3_voltageB\x0e\n\x0c_ch3_currentB\x0e\n\x0c_ch4_voltageB\x0e\n\x0c_ch4_currentB\x0e\n\x0c_ch5_voltageB\x0e\n\x0c_ch5_currentB\x0e\n\x0c_ch6_voltageB\x0e\n\x0c_ch6_currentB\x0e\n\x0c_ch7_voltageB\x0e\n\x0c_ch7_currentB\x0e\n\x0c_ch8_voltageB\x0e\n\x0c_ch8_current\"\xb1\t\n\x11\x41irQualityMetrics\x12\x1a\n\rpm10_standard\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\rpm25_standard\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0epm100_standard\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12pm10_environmental\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1f\n\x12pm25_environmental\x18\x05 \x01(\rH\x04\x88\x01\x01\x12 \n\x13pm100_environmental\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1b\n\x0eparticles_03um\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x1b\n\x0eparticles_05um\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x1b\n\x0eparticles_10um\x18\t \x01(\rH\x08\x88\x01\x01\x12\x1b\n\x0eparticles_25um\x18\n \x01(\rH\t\x88\x01\x01\x12\x1b\n\x0eparticles_50um\x18\x0b \x01(\rH\n\x88\x01\x01\x12\x1c\n\x0fparticles_100um\x18\x0c \x01(\rH\x0b\x88\x01\x01\x12\x10\n\x03\x63o2\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x1c\n\x0f\x63o2_temperature\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x19\n\x0c\x63o2_humidity\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x1e\n\x11\x66orm_formaldehyde\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x1a\n\rform_humidity\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x1d\n\x10\x66orm_temperature\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x1a\n\rpm40_standard\x18\x13 \x01(\rH\x12\x88\x01\x01\x12\x1b\n\x0eparticles_40um\x18\x14 \x01(\rH\x13\x88\x01\x01\x12\x1b\n\x0epm_temperature\x18\x15 \x01(\x02H\x14\x88\x01\x01\x12\x18\n\x0bpm_humidity\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12\x17\n\npm_voc_idx\x18\x17 \x01(\x02H\x16\x88\x01\x01\x12\x17\n\npm_nox_idx\x18\x18 \x01(\x02H\x17\x88\x01\x01\x12\x1a\n\rparticles_tps\x18\x19 \x01(\x02H\x18\x88\x01\x01\x42\x10\n\x0e_pm10_standardB\x10\n\x0e_pm25_standardB\x11\n\x0f_pm100_standardB\x15\n\x13_pm10_environmentalB\x15\n\x13_pm25_environmentalB\x16\n\x14_pm100_environmentalB\x11\n\x0f_particles_03umB\x11\n\x0f_particles_05umB\x11\n\x0f_particles_10umB\x11\n\x0f_particles_25umB\x11\n\x0f_particles_50umB\x12\n\x10_particles_100umB\x06\n\x04_co2B\x12\n\x10_co2_temperatureB\x0f\n\r_co2_humidityB\x14\n\x12_form_formaldehydeB\x10\n\x0e_form_humidityB\x13\n\x11_form_temperatureB\x10\n\x0e_pm40_standardB\x11\n\x0f_particles_40umB\x11\n\x0f_pm_temperatureB\x0e\n\x0c_pm_humidityB\r\n\x0b_pm_voc_idxB\r\n\x0b_pm_nox_idxB\x10\n\x0e_particles_tps\"\xff\x02\n\nLocalStats\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x1b\n\x13\x63hannel_utilization\x18\x02 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x03 \x01(\x02\x12\x16\n\x0enum_packets_tx\x18\x04 \x01(\r\x12\x16\n\x0enum_packets_rx\x18\x05 \x01(\r\x12\x1a\n\x12num_packets_rx_bad\x18\x06 \x01(\r\x12\x18\n\x10num_online_nodes\x18\x07 \x01(\r\x12\x17\n\x0fnum_total_nodes\x18\x08 \x01(\r\x12\x13\n\x0bnum_rx_dupe\x18\t \x01(\r\x12\x14\n\x0cnum_tx_relay\x18\n \x01(\r\x12\x1d\n\x15num_tx_relay_canceled\x18\x0b \x01(\r\x12\x18\n\x10heap_total_bytes\x18\x0c \x01(\r\x12\x17\n\x0fheap_free_bytes\x18\r \x01(\r\x12\x16\n\x0enum_tx_dropped\x18\x0e \x01(\r\x12\x13\n\x0bnoise_floor\x18\x0f \x01(\x05\"\xe4\x01\n\x16TrafficManagementStats\x12\x19\n\x11packets_inspected\x18\x01 \x01(\r\x12\x1c\n\x14position_dedup_drops\x18\x02 \x01(\r\x12\x1b\n\x13nodeinfo_cache_hits\x18\x03 \x01(\r\x12\x18\n\x10rate_limit_drops\x18\x04 \x01(\r\x12\x1c\n\x14unknown_packet_drops\x18\x05 \x01(\r\x12\x1d\n\x15hop_exhausted_packets\x18\x06 \x01(\r\x12\x1d\n\x15router_hops_preserved\x18\x07 \x01(\r\"{\n\rHealthMetrics\x12\x16\n\theart_bpm\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04spO2\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x18\n\x0btemperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x42\x0c\n\n_heart_bpmB\x07\n\x05_spO2B\x0e\n\x0c_temperature\"\x91\x02\n\x0bHostMetrics\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x15\n\rfreemem_bytes\x18\x02 \x01(\x04\x12\x17\n\x0f\x64iskfree1_bytes\x18\x03 \x01(\x04\x12\x1c\n\x0f\x64iskfree2_bytes\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1c\n\x0f\x64iskfree3_bytes\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\r\n\x05load1\x18\x06 \x01(\r\x12\r\n\x05load5\x18\x07 \x01(\r\x12\x0e\n\x06load15\x18\x08 \x01(\r\x12\x18\n\x0buser_string\x18\t \x01(\tH\x02\x88\x01\x01\x42\x12\n\x10_diskfree2_bytesB\x12\n\x10_diskfree3_bytesB\x0e\n\x0c_user_string\"\xae\x04\n\tTelemetry\x12\x0c\n\x04time\x18\x01 \x01(\x07\x12<\n\x0e\x64\x65vice_metrics\x18\x02 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetricsH\x00\x12\x46\n\x13\x65nvironment_metrics\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.EnvironmentMetricsH\x00\x12\x45\n\x13\x61ir_quality_metrics\x18\x04 \x01(\x0b\x32&.meshtastic.protobuf.AirQualityMetricsH\x00\x12:\n\rpower_metrics\x18\x05 \x01(\x0b\x32!.meshtastic.protobuf.PowerMetricsH\x00\x12\x36\n\x0blocal_stats\x18\x06 \x01(\x0b\x32\x1f.meshtastic.protobuf.LocalStatsH\x00\x12<\n\x0ehealth_metrics\x18\x07 \x01(\x0b\x32\".meshtastic.protobuf.HealthMetricsH\x00\x12\x38\n\x0chost_metrics\x18\x08 \x01(\x0b\x32 .meshtastic.protobuf.HostMetricsH\x00\x12O\n\x18traffic_management_stats\x18\t \x01(\x0b\x32+.meshtastic.protobuf.TrafficManagementStatsH\x00\x42\t\n\x07variant\">\n\rNau7802Config\x12\x12\n\nzeroOffset\x18\x01 \x01(\x05\x12\x19\n\x11\x63\x61librationFactor\x18\x02 \x01(\x02\"\xf0\x01\n\nSEN5XState\x12\x1a\n\x12last_cleaning_time\x18\x01 \x01(\r\x12\x1b\n\x13last_cleaning_valid\x18\x02 \x01(\x08\x12\x15\n\rone_shot_mode\x18\x03 \x01(\x08\x12\x1b\n\x0evoc_state_time\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0fvoc_state_valid\x18\x05 \x01(\x08H\x01\x88\x01\x01\x12\x1c\n\x0fvoc_state_array\x18\x06 \x01(\x06H\x02\x88\x01\x01\x42\x11\n\x0f_voc_state_timeB\x12\n\x10_voc_state_validB\x12\n\x10_voc_state_array*\xdc\x05\n\x13TelemetrySensorType\x12\x10\n\x0cSENSOR_UNSET\x10\x00\x12\n\n\x06\x42ME280\x10\x01\x12\n\n\x06\x42ME680\x10\x02\x12\x0b\n\x07MCP9808\x10\x03\x12\n\n\x06INA260\x10\x04\x12\n\n\x06INA219\x10\x05\x12\n\n\x06\x42MP280\x10\x06\x12\t\n\x05SHTC3\x10\x07\x12\t\n\x05LPS22\x10\x08\x12\x0b\n\x07QMC6310\x10\t\x12\x0b\n\x07QMI8658\x10\n\x12\x0c\n\x08QMC5883L\x10\x0b\x12\t\n\x05SHT31\x10\x0c\x12\x0c\n\x08PMSA003I\x10\r\x12\x0b\n\x07INA3221\x10\x0e\x12\n\n\x06\x42MP085\x10\x0f\x12\x0c\n\x08RCWL9620\x10\x10\x12\t\n\x05SHT4X\x10\x11\x12\x0c\n\x08VEML7700\x10\x12\x12\x0c\n\x08MLX90632\x10\x13\x12\x0b\n\x07OPT3001\x10\x14\x12\x0c\n\x08LTR390UV\x10\x15\x12\x0e\n\nTSL25911FN\x10\x16\x12\t\n\x05\x41HT10\x10\x17\x12\x10\n\x0c\x44\x46ROBOT_LARK\x10\x18\x12\x0b\n\x07NAU7802\x10\x19\x12\n\n\x06\x42MP3XX\x10\x1a\x12\x0c\n\x08ICM20948\x10\x1b\x12\x0c\n\x08MAX17048\x10\x1c\x12\x11\n\rCUSTOM_SENSOR\x10\x1d\x12\x0c\n\x08MAX30102\x10\x1e\x12\x0c\n\x08MLX90614\x10\x1f\x12\t\n\x05SCD4X\x10 \x12\x0b\n\x07RADSENS\x10!\x12\n\n\x06INA226\x10\"\x12\x10\n\x0c\x44\x46ROBOT_RAIN\x10#\x12\n\n\x06\x44PS310\x10$\x12\x0c\n\x08RAK12035\x10%\x12\x0c\n\x08MAX17261\x10&\x12\x0b\n\x07PCT2075\x10\'\x12\x0b\n\x07\x41\x44S1X15\x10(\x12\x0f\n\x0b\x41\x44S1X15_ALT\x10)\x12\t\n\x05SFA30\x10*\x12\t\n\x05SEN5X\x10+\x12\x0b\n\x07TSL2561\x10,\x12\n\n\x06\x42H1750\x10-\x12\x0b\n\x07HDC1080\x10.\x12\t\n\x05SHT21\x10/\x12\t\n\x05STC31\x10\x30\x12\t\n\x05SCD30\x10\x31\x12\t\n\x05SHTXX\x10\x32\x12\n\n\x06\x44S248X\x10\x33\x12\r\n\tMMC5983MA\x10\x34\x12\r\n\tICM42607P\x10\x35\x42\x65\n\x14org.meshtastic.protoB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#meshtastic/protobuf/telemetry.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\xf3\x01\n\rDeviceMetrics\x12\x1a\n\rbattery_level\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07voltage\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x63hannel_utilization\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x61ir_util_tx\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x1b\n\x0euptime_seconds\x18\x05 \x01(\rH\x04\x88\x01\x01\x42\x10\n\x0e_battery_levelB\n\n\x08_voltageB\x16\n\x14_channel_utilizationB\x0e\n\x0c_air_util_txB\x11\n\x0f_uptime_seconds\"\xbc\x07\n\x12\x45nvironmentMetrics\x12\x18\n\x0btemperature\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x1e\n\x11relative_humidity\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12 \n\x13\x62\x61rometric_pressure\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1b\n\x0egas_resistance\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x14\n\x07voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x14\n\x07\x63urrent\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x17\n\x03iaq\x18\x07 \x01(\rB\x05\x92?\x02\x38\x10H\x06\x88\x01\x01\x12\x15\n\x08\x64istance\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x10\n\x03lux\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x16\n\twhite_lux\x18\n \x01(\x02H\t\x88\x01\x01\x12\x13\n\x06ir_lux\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x13\n\x06uv_lux\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\"\n\x0ewind_direction\x18\r \x01(\rB\x05\x92?\x02\x38\x10H\x0c\x88\x01\x01\x12\x17\n\nwind_speed\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x13\n\x06weight\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x16\n\twind_gust\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x16\n\twind_lull\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x16\n\tradiation\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x18\n\x0brainfall_1h\x18\x13 \x01(\x02H\x12\x88\x01\x01\x12\x19\n\x0crainfall_24h\x18\x14 \x01(\x02H\x13\x88\x01\x01\x12!\n\rsoil_moisture\x18\x15 \x01(\rB\x05\x92?\x02\x38\x08H\x14\x88\x01\x01\x12\x1d\n\x10soil_temperature\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12#\n\x14one_wire_temperature\x18\x17 \x03(\x02\x42\x05\x92?\x02\x10\x08\x42\x0e\n\x0c_temperatureB\x14\n\x12_relative_humidityB\x16\n\x14_barometric_pressureB\x11\n\x0f_gas_resistanceB\n\n\x08_voltageB\n\n\x08_currentB\x06\n\x04_iaqB\x0b\n\t_distanceB\x06\n\x04_luxB\x0c\n\n_white_luxB\t\n\x07_ir_luxB\t\n\x07_uv_luxB\x11\n\x0f_wind_directionB\r\n\x0b_wind_speedB\t\n\x07_weightB\x0c\n\n_wind_gustB\x0c\n\n_wind_lullB\x0c\n\n_radiationB\x0e\n\x0c_rainfall_1hB\x0f\n\r_rainfall_24hB\x10\n\x0e_soil_moistureB\x13\n\x11_soil_temperature\"\xae\x05\n\x0cPowerMetrics\x12\x18\n\x0b\x63h1_voltage\x18\x01 \x01(\x02H\x00\x88\x01\x01\x12\x18\n\x0b\x63h1_current\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0b\x63h2_voltage\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x18\n\x0b\x63h2_current\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x18\n\x0b\x63h3_voltage\x18\x05 \x01(\x02H\x04\x88\x01\x01\x12\x18\n\x0b\x63h3_current\x18\x06 \x01(\x02H\x05\x88\x01\x01\x12\x18\n\x0b\x63h4_voltage\x18\x07 \x01(\x02H\x06\x88\x01\x01\x12\x18\n\x0b\x63h4_current\x18\x08 \x01(\x02H\x07\x88\x01\x01\x12\x18\n\x0b\x63h5_voltage\x18\t \x01(\x02H\x08\x88\x01\x01\x12\x18\n\x0b\x63h5_current\x18\n \x01(\x02H\t\x88\x01\x01\x12\x18\n\x0b\x63h6_voltage\x18\x0b \x01(\x02H\n\x88\x01\x01\x12\x18\n\x0b\x63h6_current\x18\x0c \x01(\x02H\x0b\x88\x01\x01\x12\x18\n\x0b\x63h7_voltage\x18\r \x01(\x02H\x0c\x88\x01\x01\x12\x18\n\x0b\x63h7_current\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x18\n\x0b\x63h8_voltage\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x18\n\x0b\x63h8_current\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x42\x0e\n\x0c_ch1_voltageB\x0e\n\x0c_ch1_currentB\x0e\n\x0c_ch2_voltageB\x0e\n\x0c_ch2_currentB\x0e\n\x0c_ch3_voltageB\x0e\n\x0c_ch3_currentB\x0e\n\x0c_ch4_voltageB\x0e\n\x0c_ch4_currentB\x0e\n\x0c_ch5_voltageB\x0e\n\x0c_ch5_currentB\x0e\n\x0c_ch6_voltageB\x0e\n\x0c_ch6_currentB\x0e\n\x0c_ch7_voltageB\x0e\n\x0c_ch7_currentB\x0e\n\x0c_ch8_voltageB\x0e\n\x0c_ch8_current\"\xb1\t\n\x11\x41irQualityMetrics\x12\x1a\n\rpm10_standard\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x1a\n\rpm25_standard\x18\x02 \x01(\rH\x01\x88\x01\x01\x12\x1b\n\x0epm100_standard\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x1f\n\x12pm10_environmental\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x1f\n\x12pm25_environmental\x18\x05 \x01(\rH\x04\x88\x01\x01\x12 \n\x13pm100_environmental\x18\x06 \x01(\rH\x05\x88\x01\x01\x12\x1b\n\x0eparticles_03um\x18\x07 \x01(\rH\x06\x88\x01\x01\x12\x1b\n\x0eparticles_05um\x18\x08 \x01(\rH\x07\x88\x01\x01\x12\x1b\n\x0eparticles_10um\x18\t \x01(\rH\x08\x88\x01\x01\x12\x1b\n\x0eparticles_25um\x18\n \x01(\rH\t\x88\x01\x01\x12\x1b\n\x0eparticles_50um\x18\x0b \x01(\rH\n\x88\x01\x01\x12\x1c\n\x0fparticles_100um\x18\x0c \x01(\rH\x0b\x88\x01\x01\x12\x10\n\x03\x63o2\x18\r \x01(\rH\x0c\x88\x01\x01\x12\x1c\n\x0f\x63o2_temperature\x18\x0e \x01(\x02H\r\x88\x01\x01\x12\x19\n\x0c\x63o2_humidity\x18\x0f \x01(\x02H\x0e\x88\x01\x01\x12\x1e\n\x11\x66orm_formaldehyde\x18\x10 \x01(\x02H\x0f\x88\x01\x01\x12\x1a\n\rform_humidity\x18\x11 \x01(\x02H\x10\x88\x01\x01\x12\x1d\n\x10\x66orm_temperature\x18\x12 \x01(\x02H\x11\x88\x01\x01\x12\x1a\n\rpm40_standard\x18\x13 \x01(\rH\x12\x88\x01\x01\x12\x1b\n\x0eparticles_40um\x18\x14 \x01(\rH\x13\x88\x01\x01\x12\x1b\n\x0epm_temperature\x18\x15 \x01(\x02H\x14\x88\x01\x01\x12\x18\n\x0bpm_humidity\x18\x16 \x01(\x02H\x15\x88\x01\x01\x12\x17\n\npm_voc_idx\x18\x17 \x01(\x02H\x16\x88\x01\x01\x12\x17\n\npm_nox_idx\x18\x18 \x01(\x02H\x17\x88\x01\x01\x12\x1a\n\rparticles_tps\x18\x19 \x01(\x02H\x18\x88\x01\x01\x42\x10\n\x0e_pm10_standardB\x10\n\x0e_pm25_standardB\x11\n\x0f_pm100_standardB\x15\n\x13_pm10_environmentalB\x15\n\x13_pm25_environmentalB\x16\n\x14_pm100_environmentalB\x11\n\x0f_particles_03umB\x11\n\x0f_particles_05umB\x11\n\x0f_particles_10umB\x11\n\x0f_particles_25umB\x11\n\x0f_particles_50umB\x12\n\x10_particles_100umB\x06\n\x04_co2B\x12\n\x10_co2_temperatureB\x0f\n\r_co2_humidityB\x14\n\x12_form_formaldehydeB\x10\n\x0e_form_humidityB\x13\n\x11_form_temperatureB\x10\n\x0e_pm40_standardB\x11\n\x0f_particles_40umB\x11\n\x0f_pm_temperatureB\x0e\n\x0c_pm_humidityB\r\n\x0b_pm_voc_idxB\r\n\x0b_pm_nox_idxB\x10\n\x0e_particles_tps\"\x94\x03\n\nLocalStats\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x1b\n\x13\x63hannel_utilization\x18\x02 \x01(\x02\x12\x13\n\x0b\x61ir_util_tx\x18\x03 \x01(\x02\x12\x16\n\x0enum_packets_tx\x18\x04 \x01(\r\x12\x16\n\x0enum_packets_rx\x18\x05 \x01(\r\x12\x1a\n\x12num_packets_rx_bad\x18\x06 \x01(\r\x12\x1f\n\x10num_online_nodes\x18\x07 \x01(\rB\x05\x92?\x02\x38\x10\x12\x1e\n\x0fnum_total_nodes\x18\x08 \x01(\rB\x05\x92?\x02\x38\x10\x12\x13\n\x0bnum_rx_dupe\x18\t \x01(\r\x12\x14\n\x0cnum_tx_relay\x18\n \x01(\r\x12\x1d\n\x15num_tx_relay_canceled\x18\x0b \x01(\r\x12\x18\n\x10heap_total_bytes\x18\x0c \x01(\r\x12\x17\n\x0fheap_free_bytes\x18\r \x01(\r\x12\x1d\n\x0enum_tx_dropped\x18\x0e \x01(\rB\x05\x92?\x02\x38\x10\x12\x13\n\x0bnoise_floor\x18\x0f \x01(\x05\"\xe4\x01\n\x16TrafficManagementStats\x12\x19\n\x11packets_inspected\x18\x01 \x01(\r\x12\x1c\n\x14position_dedup_drops\x18\x02 \x01(\r\x12\x1b\n\x13nodeinfo_cache_hits\x18\x03 \x01(\r\x12\x18\n\x10rate_limit_drops\x18\x04 \x01(\r\x12\x1c\n\x14unknown_packet_drops\x18\x05 \x01(\r\x12\x1d\n\x15hop_exhausted_packets\x18\x06 \x01(\r\x12\x1d\n\x15router_hops_preserved\x18\x07 \x01(\r\"\x89\x01\n\rHealthMetrics\x12\x1d\n\theart_bpm\x18\x01 \x01(\rB\x05\x92?\x02\x38\x08H\x00\x88\x01\x01\x12\x18\n\x04spO2\x18\x02 \x01(\rB\x05\x92?\x02\x38\x08H\x01\x88\x01\x01\x12\x18\n\x0btemperature\x18\x03 \x01(\x02H\x02\x88\x01\x01\x42\x0c\n\n_heart_bpmB\x07\n\x05_spO2B\x0e\n\x0c_temperature\"\xae\x02\n\x0bHostMetrics\x12\x16\n\x0euptime_seconds\x18\x01 \x01(\r\x12\x15\n\rfreemem_bytes\x18\x02 \x01(\x04\x12\x17\n\x0f\x64iskfree1_bytes\x18\x03 \x01(\x04\x12\x1c\n\x0f\x64iskfree2_bytes\x18\x04 \x01(\x04H\x00\x88\x01\x01\x12\x1c\n\x0f\x64iskfree3_bytes\x18\x05 \x01(\x04H\x01\x88\x01\x01\x12\x14\n\x05load1\x18\x06 \x01(\rB\x05\x92?\x02\x38\x10\x12\x14\n\x05load5\x18\x07 \x01(\rB\x05\x92?\x02\x38\x10\x12\x15\n\x06load15\x18\x08 \x01(\rB\x05\x92?\x02\x38\x10\x12 \n\x0buser_string\x18\t \x01(\tB\x06\x92?\x03\x08\xc8\x01H\x02\x88\x01\x01\x42\x12\n\x10_diskfree2_bytesB\x12\n\x10_diskfree3_bytesB\x0e\n\x0c_user_string\"\xae\x04\n\tTelemetry\x12\x0c\n\x04time\x18\x01 \x01(\x07\x12<\n\x0e\x64\x65vice_metrics\x18\x02 \x01(\x0b\x32\".meshtastic.protobuf.DeviceMetricsH\x00\x12\x46\n\x13\x65nvironment_metrics\x18\x03 \x01(\x0b\x32\'.meshtastic.protobuf.EnvironmentMetricsH\x00\x12\x45\n\x13\x61ir_quality_metrics\x18\x04 \x01(\x0b\x32&.meshtastic.protobuf.AirQualityMetricsH\x00\x12:\n\rpower_metrics\x18\x05 \x01(\x0b\x32!.meshtastic.protobuf.PowerMetricsH\x00\x12\x36\n\x0blocal_stats\x18\x06 \x01(\x0b\x32\x1f.meshtastic.protobuf.LocalStatsH\x00\x12<\n\x0ehealth_metrics\x18\x07 \x01(\x0b\x32\".meshtastic.protobuf.HealthMetricsH\x00\x12\x38\n\x0chost_metrics\x18\x08 \x01(\x0b\x32 .meshtastic.protobuf.HostMetricsH\x00\x12O\n\x18traffic_management_stats\x18\t \x01(\x0b\x32+.meshtastic.protobuf.TrafficManagementStatsH\x00\x42\t\n\x07variant\">\n\rNau7802Config\x12\x12\n\nzeroOffset\x18\x01 \x01(\x05\x12\x19\n\x11\x63\x61librationFactor\x18\x02 \x01(\x02\"\xf0\x01\n\nSEN5XState\x12\x1a\n\x12last_cleaning_time\x18\x01 \x01(\r\x12\x1b\n\x13last_cleaning_valid\x18\x02 \x01(\x08\x12\x15\n\rone_shot_mode\x18\x03 \x01(\x08\x12\x1b\n\x0evoc_state_time\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0fvoc_state_valid\x18\x05 \x01(\x08H\x01\x88\x01\x01\x12\x1c\n\x0fvoc_state_array\x18\x06 \x01(\x06H\x02\x88\x01\x01\x42\x11\n\x0f_voc_state_timeB\x12\n\x10_voc_state_validB\x12\n\x10_voc_state_array*\xdc\x05\n\x13TelemetrySensorType\x12\x10\n\x0cSENSOR_UNSET\x10\x00\x12\n\n\x06\x42ME280\x10\x01\x12\n\n\x06\x42ME680\x10\x02\x12\x0b\n\x07MCP9808\x10\x03\x12\n\n\x06INA260\x10\x04\x12\n\n\x06INA219\x10\x05\x12\n\n\x06\x42MP280\x10\x06\x12\t\n\x05SHTC3\x10\x07\x12\t\n\x05LPS22\x10\x08\x12\x0b\n\x07QMC6310\x10\t\x12\x0b\n\x07QMI8658\x10\n\x12\x0c\n\x08QMC5883L\x10\x0b\x12\t\n\x05SHT31\x10\x0c\x12\x0c\n\x08PMSA003I\x10\r\x12\x0b\n\x07INA3221\x10\x0e\x12\n\n\x06\x42MP085\x10\x0f\x12\x0c\n\x08RCWL9620\x10\x10\x12\t\n\x05SHT4X\x10\x11\x12\x0c\n\x08VEML7700\x10\x12\x12\x0c\n\x08MLX90632\x10\x13\x12\x0b\n\x07OPT3001\x10\x14\x12\x0c\n\x08LTR390UV\x10\x15\x12\x0e\n\nTSL25911FN\x10\x16\x12\t\n\x05\x41HT10\x10\x17\x12\x10\n\x0c\x44\x46ROBOT_LARK\x10\x18\x12\x0b\n\x07NAU7802\x10\x19\x12\n\n\x06\x42MP3XX\x10\x1a\x12\x0c\n\x08ICM20948\x10\x1b\x12\x0c\n\x08MAX17048\x10\x1c\x12\x11\n\rCUSTOM_SENSOR\x10\x1d\x12\x0c\n\x08MAX30102\x10\x1e\x12\x0c\n\x08MLX90614\x10\x1f\x12\t\n\x05SCD4X\x10 \x12\x0b\n\x07RADSENS\x10!\x12\n\n\x06INA226\x10\"\x12\x10\n\x0c\x44\x46ROBOT_RAIN\x10#\x12\n\n\x06\x44PS310\x10$\x12\x0c\n\x08RAK12035\x10%\x12\x0c\n\x08MAX17261\x10&\x12\x0b\n\x07PCT2075\x10\'\x12\x0b\n\x07\x41\x44S1X15\x10(\x12\x0f\n\x0b\x41\x44S1X15_ALT\x10)\x12\t\n\x05SFA30\x10*\x12\t\n\x05SEN5X\x10+\x12\x0b\n\x07TSL2561\x10,\x12\n\n\x06\x42H1750\x10-\x12\x0b\n\x07HDC1080\x10.\x12\t\n\x05SHT21\x10/\x12\t\n\x05STC31\x10\x30\x12\t\n\x05SCD30\x10\x31\x12\t\n\x05SHTXX\x10\x32\x12\n\n\x06\x44S248X\x10\x33\x12\r\n\tMMC5983MA\x10\x34\x12\r\n\tICM42607P\x10\x35\x42\x65\n\x14org.meshtastic.protoB\x0fTelemetryProtosZ\"github.com/meshtastic/go/generated\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,28 +22,54 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.telemet if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\024org.meshtastic.protoB\017TelemetryProtosZ\"github.com/meshtastic/go/generated\252\002\024Meshtastic.Protobufs\272\002\000' - _globals['_TELEMETRYSENSORTYPE']._serialized_start=5017 - _globals['_TELEMETRYSENSORTYPE']._serialized_end=5749 - _globals['_DEVICEMETRICS']._serialized_start=61 - _globals['_DEVICEMETRICS']._serialized_end=304 - _globals['_ENVIRONMENTMETRICS']._serialized_start=307 - _globals['_ENVIRONMENTMETRICS']._serialized_end=1235 - _globals['_POWERMETRICS']._serialized_start=1238 - _globals['_POWERMETRICS']._serialized_end=1924 - _globals['_AIRQUALITYMETRICS']._serialized_start=1927 - _globals['_AIRQUALITYMETRICS']._serialized_end=3128 - _globals['_LOCALSTATS']._serialized_start=3131 - _globals['_LOCALSTATS']._serialized_end=3514 - _globals['_TRAFFICMANAGEMENTSTATS']._serialized_start=3517 - _globals['_TRAFFICMANAGEMENTSTATS']._serialized_end=3745 - _globals['_HEALTHMETRICS']._serialized_start=3747 - _globals['_HEALTHMETRICS']._serialized_end=3870 - _globals['_HOSTMETRICS']._serialized_start=3873 - _globals['_HOSTMETRICS']._serialized_end=4146 - _globals['_TELEMETRY']._serialized_start=4149 - _globals['_TELEMETRY']._serialized_end=4707 - _globals['_NAU7802CONFIG']._serialized_start=4709 - _globals['_NAU7802CONFIG']._serialized_end=4771 - _globals['_SEN5XSTATE']._serialized_start=4774 - _globals['_SEN5XSTATE']._serialized_end=5014 + _ENVIRONMENTMETRICS.fields_by_name['iaq']._options = None + _ENVIRONMENTMETRICS.fields_by_name['iaq']._serialized_options = b'\222?\0028\020' + _ENVIRONMENTMETRICS.fields_by_name['wind_direction']._options = None + _ENVIRONMENTMETRICS.fields_by_name['wind_direction']._serialized_options = b'\222?\0028\020' + _ENVIRONMENTMETRICS.fields_by_name['soil_moisture']._options = None + _ENVIRONMENTMETRICS.fields_by_name['soil_moisture']._serialized_options = b'\222?\0028\010' + _ENVIRONMENTMETRICS.fields_by_name['one_wire_temperature']._options = None + _ENVIRONMENTMETRICS.fields_by_name['one_wire_temperature']._serialized_options = b'\222?\002\020\010' + _LOCALSTATS.fields_by_name['num_online_nodes']._options = None + _LOCALSTATS.fields_by_name['num_online_nodes']._serialized_options = b'\222?\0028\020' + _LOCALSTATS.fields_by_name['num_total_nodes']._options = None + _LOCALSTATS.fields_by_name['num_total_nodes']._serialized_options = b'\222?\0028\020' + _LOCALSTATS.fields_by_name['num_tx_dropped']._options = None + _LOCALSTATS.fields_by_name['num_tx_dropped']._serialized_options = b'\222?\0028\020' + _HEALTHMETRICS.fields_by_name['heart_bpm']._options = None + _HEALTHMETRICS.fields_by_name['heart_bpm']._serialized_options = b'\222?\0028\010' + _HEALTHMETRICS.fields_by_name['spO2']._options = None + _HEALTHMETRICS.fields_by_name['spO2']._serialized_options = b'\222?\0028\010' + _HOSTMETRICS.fields_by_name['load1']._options = None + _HOSTMETRICS.fields_by_name['load1']._serialized_options = b'\222?\0028\020' + _HOSTMETRICS.fields_by_name['load5']._options = None + _HOSTMETRICS.fields_by_name['load5']._serialized_options = b'\222?\0028\020' + _HOSTMETRICS.fields_by_name['load15']._options = None + _HOSTMETRICS.fields_by_name['load15']._serialized_options = b'\222?\0028\020' + _HOSTMETRICS.fields_by_name['user_string']._options = None + _HOSTMETRICS.fields_by_name['user_string']._serialized_options = b'\222?\003\010\310\001' + _globals['_TELEMETRYSENSORTYPE']._serialized_start=5144 + _globals['_TELEMETRYSENSORTYPE']._serialized_end=5876 + _globals['_DEVICEMETRICS']._serialized_start=95 + _globals['_DEVICEMETRICS']._serialized_end=338 + _globals['_ENVIRONMENTMETRICS']._serialized_start=341 + _globals['_ENVIRONMENTMETRICS']._serialized_end=1297 + _globals['_POWERMETRICS']._serialized_start=1300 + _globals['_POWERMETRICS']._serialized_end=1986 + _globals['_AIRQUALITYMETRICS']._serialized_start=1989 + _globals['_AIRQUALITYMETRICS']._serialized_end=3190 + _globals['_LOCALSTATS']._serialized_start=3193 + _globals['_LOCALSTATS']._serialized_end=3597 + _globals['_TRAFFICMANAGEMENTSTATS']._serialized_start=3600 + _globals['_TRAFFICMANAGEMENTSTATS']._serialized_end=3828 + _globals['_HEALTHMETRICS']._serialized_start=3831 + _globals['_HEALTHMETRICS']._serialized_end=3968 + _globals['_HOSTMETRICS']._serialized_start=3971 + _globals['_HOSTMETRICS']._serialized_end=4273 + _globals['_TELEMETRY']._serialized_start=4276 + _globals['_TELEMETRY']._serialized_end=4834 + _globals['_NAU7802CONFIG']._serialized_start=4836 + _globals['_NAU7802CONFIG']._serialized_end=4898 + _globals['_SEN5XSTATE']._serialized_start=4901 + _globals['_SEN5XSTATE']._serialized_end=5141 # @@protoc_insertion_point(module_scope) diff --git a/meshtastic/protobuf/xmodem_pb2.py b/meshtastic/protobuf/xmodem_pb2.py index 3c3dec2..772b3f4 100644 --- a/meshtastic/protobuf/xmodem_pb2.py +++ b/meshtastic/protobuf/xmodem_pb2.py @@ -11,9 +11,10 @@ from google.protobuf.internal import builder as _builder _sym_db = _symbol_database.Default() +from meshtastic.protobuf import nanopb_pb2 as meshtastic_dot_protobuf_dot_nanopb__pb2 -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') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n meshtastic/protobuf/xmodem.proto\x12\x13meshtastic.protobuf\x1a meshtastic/protobuf/nanopb.proto\"\xd5\x01\n\x06XModem\x12\x34\n\x07\x63ontrol\x18\x01 \x01(\x0e\x32#.meshtastic.protobuf.XModem.Control\x12\x12\n\x03seq\x18\x02 \x01(\rB\x05\x92?\x02\x38\x10\x12\x14\n\x05\x63rc16\x18\x03 \x01(\rB\x05\x92?\x02\x38\x10\x12\x16\n\x06\x62uffer\x18\x04 \x01(\x0c\x42\x06\x92?\x03\x08\x80\x01\"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() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -21,8 +22,14 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'meshtastic.protobuf.xmodem_ if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None 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_end=249 - _globals['_XMODEM_CONTROL']._serialized_start=166 - _globals['_XMODEM_CONTROL']._serialized_end=249 + _XMODEM.fields_by_name['seq']._options = None + _XMODEM.fields_by_name['seq']._serialized_options = b'\222?\0028\020' + _XMODEM.fields_by_name['crc16']._options = None + _XMODEM.fields_by_name['crc16']._serialized_options = b'\222?\0028\020' + _XMODEM.fields_by_name['buffer']._options = None + _XMODEM.fields_by_name['buffer']._serialized_options = b'\222?\003\010\200\001' + _globals['_XMODEM']._serialized_start=92 + _globals['_XMODEM']._serialized_end=305 + _globals['_XMODEM_CONTROL']._serialized_start=222 + _globals['_XMODEM_CONTROL']._serialized_end=305 # @@protoc_insertion_point(module_scope) From 280323da8b6bf8922e35d18ddfb81ac52aabc1b3 Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Sun, 31 May 2026 09:52:20 -0700 Subject: [PATCH 2/4] Add tests of nanopb options injection --- .../tests/test_inject_nanopb_options.py | 605 ++++++++++++++++++ 1 file changed, 605 insertions(+) create mode 100644 meshtastic/tests/test_inject_nanopb_options.py diff --git a/meshtastic/tests/test_inject_nanopb_options.py b/meshtastic/tests/test_inject_nanopb_options.py new file mode 100644 index 0000000..2d89188 --- /dev/null +++ b/meshtastic/tests/test_inject_nanopb_options.py @@ -0,0 +1,605 @@ +"""Tests for bin/inject_nanopb_options.py — the nanopb options injection script +and the generated protobuf descriptors it produces. + +Part 1 (test_parse_*, test_inject_*): unit-tests the script's logic directly, +using small synthetic proto snippets. + +Part 2 (test_descriptor_*): smoke-tests the already-generated _pb2.py files to +confirm the regen pipeline embedded the expected nanopb options. +""" + +import importlib.util +import sys +import textwrap +from pathlib import Path +from typing import Any, Dict, Tuple +from unittest.mock import patch + +import pytest + +# --------------------------------------------------------------------------- +# Load bin/inject_nanopb_options.py as a module without adding it to the +# package. __main__ guard means no side-effects on import. +# --------------------------------------------------------------------------- +_SCRIPT_PATH = Path(__file__).parent.parent.parent / "bin" / "inject_nanopb_options.py" + + +def _load_inject_module(): + spec = importlib.util.spec_from_file_location("inject_nanopb_options", _SCRIPT_PATH) + mod = importlib.util.module_from_spec(spec) + with patch.object(sys, "argv", ["inject_nanopb_options.py"]): + spec.loader.exec_module(mod) + return mod + + +_inj = _load_inject_module() + +parse_value = _inj.parse_value +parse_options_file = _inj.parse_options_file +format_nanopb_opts = _inj.format_nanopb_opts +inject_into_proto = _inj.inject_into_proto +message_path_matches = _inj.message_path_matches + +# Convenience: the nanopb import path the script uses after the sed fixup +NANOPB_IMPORT = 'import "meshtastic/protobuf/nanopb.proto";' + + +# =========================================================================== +# Part 1 — Script unit tests +# =========================================================================== + +# --------------------------------------------------------------------------- +# parse_value +# --------------------------------------------------------------------------- + + +@pytest.mark.unit +def test_parse_value_integer(): + assert parse_value("40") == 40 + + +@pytest.mark.unit +def test_parse_value_negative_integer(): + assert parse_value("-1") == -1 + + +@pytest.mark.unit +def test_parse_value_true(): + assert parse_value("true") is True + + +@pytest.mark.unit +def test_parse_value_false(): + assert parse_value("false") is False + + +@pytest.mark.unit +def test_parse_value_string(): + assert parse_value("IS_8") == "IS_8" + + +# --------------------------------------------------------------------------- +# parse_options_file +# --------------------------------------------------------------------------- + + +def _write_options(tmp_path: Path, content: str) -> Path: + p = tmp_path / "test.options" + p.write_text(textwrap.dedent(content)) + return p + + +@pytest.mark.unit +def test_parse_wildcard(tmp_path): + """Wildcard pattern (no dot) lands in the wildcard dict.""" + f = _write_options(tmp_path, "*macaddr max_size:6 fixed_length:true\n") + specific, wildcard = parse_options_file(f) + assert "macaddr" in wildcard + assert wildcard["macaddr"] == {"max_size": 6, "fixed_length": True} + assert specific == {} + + +@pytest.mark.unit +def test_parse_specific(tmp_path): + """Single-dot pattern lands in the specific dict with a 2-tuple key.""" + f = _write_options(tmp_path, "*User.long_name max_size:40\n") + specific, wildcard = parse_options_file(f) + assert ("User", "long_name") in specific + assert specific[("User", "long_name")] == {"max_size": 40} + assert wildcard == {} + + +@pytest.mark.unit +def test_parse_multilevel(tmp_path): + """Three-part pattern (Route.Link.uid) produces a 3-tuple key.""" + f = _write_options(tmp_path, "*Route.Link.uid max_size:48\n") + specific, wildcard = parse_options_file(f) + assert ("Route", "Link", "uid") in specific + assert specific[("Route", "Link", "uid")] == {"max_size": 48} + + +@pytest.mark.unit +def test_parse_strips_inline_comments(tmp_path): + """Text after # is ignored.""" + f = _write_options(tmp_path, "*id max_size:16 # node id strings\n") + _, wildcard = parse_options_file(f) + assert wildcard["id"] == {"max_size": 16} + + +@pytest.mark.unit +def test_parse_skips_comment_only_lines(tmp_path): + """Lines that are entirely comments produce no entries.""" + f = _write_options(tmp_path, "# this is a comment\n*id max_size:16\n") + _, wildcard = parse_options_file(f) + assert list(wildcard.keys()) == ["id"] + + +@pytest.mark.unit +def test_parse_skips_blank_lines(tmp_path): + """Blank lines are silently ignored.""" + f = _write_options(tmp_path, "\n\n*id max_size:16\n\n") + _, wildcard = parse_options_file(f) + assert "id" in wildcard + + +@pytest.mark.unit +def test_parse_skips_non_python_options(tmp_path): + """Options not in FIELD_OPTIONS (e.g. anonymous_oneof) are dropped.""" + f = _write_options(tmp_path, "*MeshPacket.payload_variant anonymous_oneof:true\n") + specific, wildcard = parse_options_file(f) + # anonymous_oneof is not in FIELD_OPTIONS → no entry should be produced + assert specific == {} + assert wildcard == {} + + +@pytest.mark.unit +def test_parse_merges_repeated_patterns(tmp_path): + """Two lines for the same pattern are merged.""" + f = _write_options( + tmp_path, + "*SecurityConfig.admin_key max_size:32\n" + "*SecurityConfig.admin_key max_count:3\n", + ) + specific, _ = parse_options_file(f) + assert specific[("SecurityConfig", "admin_key")] == {"max_size": 32, "max_count": 3} + + +@pytest.mark.unit +def test_parse_int_and_bool_values(tmp_path): + """int_size parses as int; fixed_length parses as bool.""" + f = _write_options(tmp_path, "*Data.payload max_size:233 fixed_length:false\n") + specific, _ = parse_options_file(f) + opts = specific[("Data", "payload")] + assert opts["max_size"] == 233 + assert opts["fixed_length"] is False + + +# --------------------------------------------------------------------------- +# message_path_matches +# --------------------------------------------------------------------------- + + +@pytest.mark.unit +def test_message_path_matches_simple(): + stack = [("message", "User")] + assert message_path_matches(stack, ("User",)) + + +@pytest.mark.unit +def test_message_path_matches_nested(): + stack = [("message", "Config"), ("message", "DeviceConfig")] + assert message_path_matches(stack, ("DeviceConfig",)) + assert message_path_matches(stack, ("Config", "DeviceConfig")) + + +@pytest.mark.unit +def test_message_path_matches_with_oneof_in_stack(): + """oneof frames in the stack are skipped when looking for messages.""" + stack = [("message", "MeshPacket"), ("oneof", "payload_variant")] + assert message_path_matches(stack, ("MeshPacket",)) + + +@pytest.mark.unit +def test_message_path_no_match(): + stack = [("message", "User")] + assert not message_path_matches(stack, ("Route",)) + + +@pytest.mark.unit +def test_message_path_multilevel_partial_match(): + """A 2-element path must match the last 2 message names on the stack.""" + stack = [("message", "Route"), ("message", "Link")] + assert message_path_matches(stack, ("Route", "Link")) + assert not message_path_matches(stack, ("Other", "Link")) + + +# --------------------------------------------------------------------------- +# format_nanopb_opts +# --------------------------------------------------------------------------- + + +@pytest.mark.unit +def test_format_max_size(): + assert format_nanopb_opts({"max_size": 40}) == "(nanopb).max_size = 40" + + +@pytest.mark.unit +def test_format_int_size_as_enum(): + assert format_nanopb_opts({"int_size": 8}) == "(nanopb).int_size = IS_8" + assert format_nanopb_opts({"int_size": 16}) == "(nanopb).int_size = IS_16" + assert format_nanopb_opts({"int_size": 32}) == "(nanopb).int_size = IS_32" + assert format_nanopb_opts({"int_size": 64}) == "(nanopb).int_size = IS_64" + + +@pytest.mark.unit +def test_format_bool_true(): + assert format_nanopb_opts({"fixed_length": True}) == "(nanopb).fixed_length = true" + + +@pytest.mark.unit +def test_format_bool_false(): + assert format_nanopb_opts({"fixed_length": False}) == "(nanopb).fixed_length = false" + + +# --------------------------------------------------------------------------- +# inject_into_proto — helpers +# --------------------------------------------------------------------------- + +_NANOPB_IMPORT_PATH = "meshtastic/protobuf/nanopb.proto" + + +def _inject(proto_src: str, specific=None, wildcard=None) -> str: + """Run inject_into_proto with empty dicts as defaults.""" + return inject_into_proto( + textwrap.dedent(proto_src), + specific or {}, + wildcard or {}, + _NANOPB_IMPORT_PATH, + ) + + +# --------------------------------------------------------------------------- +# inject_into_proto — option injection +# --------------------------------------------------------------------------- + + +@pytest.mark.unit +def test_inject_adds_option_to_plain_field(): + """A field with no existing options gets a nanopb annotation.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/channel.proto"; + message User { + string long_name = 1; + } + """ + result = _inject(proto, specific={("User", "long_name"): {"max_size": 40}}) + assert "long_name = 1 [(nanopb).max_size = 40];" in result + + +@pytest.mark.unit +def test_inject_merges_with_existing_options(): + """nanopb annotation is appended after existing field options.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/channel.proto"; + message User { + bytes macaddr = 4 [deprecated = true]; + } + """ + result = _inject(proto, wildcard={"macaddr": {"max_size": 6}}) + assert "[deprecated = true, (nanopb).max_size = 6];" in result + + +@pytest.mark.unit +def test_inject_int_size_uses_enum_name(): + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Foo { + uint32 hop_limit = 9; + } + """ + result = _inject(proto, specific={("Foo", "hop_limit"): {"int_size": 8}}) + assert "(nanopb).int_size = IS_8" in result + + +@pytest.mark.unit +def test_inject_wildcard_applied_across_messages(): + """A wildcard option hits the matching field in every message.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message A { + bytes macaddr = 1; + } + message B { + bytes macaddr = 2; + } + """ + result = _inject(proto, wildcard={"macaddr": {"max_size": 6}}) + assert result.count("(nanopb).max_size = 6") == 2 + + +@pytest.mark.unit +def test_inject_specific_not_leaking_to_other_messages(): + """A message-specific option does NOT apply to a different message's field.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message User { + string id = 1; + } + message Other { + string id = 1; + } + """ + result = _inject(proto, specific={("User", "id"): {"max_size": 16}}) + lines = result.splitlines() + user_line = next(l for l in lines if "User" not in l and "id = 1" in l and "Other" not in l.split("message")[0] if "message" not in l) + # Easier: count annotations — should be exactly one + assert result.count("(nanopb).max_size = 16") == 1 + + +@pytest.mark.unit +def test_inject_nested_message(): + """A 2-part specific key only hits the field in the correct nested message.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Route { + message Link { + string uid = 1; + } + string uid = 2; + } + """ + # Route.Link.uid → key = ('Route', 'Link', 'uid') + result = _inject(proto, specific={("Route", "Link", "uid"): {"max_size": 48}}) + lines = result.splitlines() + # Only the uid inside Link should have the annotation + assert result.count("(nanopb).max_size = 48") == 1 + # Confirm it's the inner one (it has 4 spaces more indent than outer uid) + annotated = next(l for l in lines if "(nanopb).max_size = 48" in l) + plain = next(l for l in lines if "uid = 2" in l) + assert annotated.index("uid") > plain.index("uid") + + +@pytest.mark.unit +def test_inject_skips_enum_body_values(): + """Enum value lines must not be treated as field declarations.""" + proto = """\ + syntax = "proto3"; + message Foo { + enum Role { + CLIENT = 0; + ROUTER = 2; + } + Role role = 1; + } + """ + # Wildcard for 'role' should only hit the field, not enum values + result = _inject(proto, wildcard={"role": {"max_size": 8}}) + assert result.count("(nanopb)") == 1 + assert "(nanopb)" not in next(l for l in result.splitlines() if "CLIENT" in l) + + +@pytest.mark.unit +def test_inject_optional_qualifier_preserved(): + """The 'optional' qualifier is kept when a field gets an annotation.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Foo { + optional uint32 altitude = 3; + } + """ + result = _inject(proto, specific={("Foo", "altitude"): {"int_size": 16}}) + assert "optional uint32 altitude = 3 [(nanopb).int_size = IS_16];" in result + + +@pytest.mark.unit +def test_inject_repeated_qualifier_preserved(): + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Foo { + repeated int32 snr = 2; + } + """ + result = _inject(proto, specific={("Foo", "snr"): {"max_count": 8}}) + assert "repeated int32 snr = 2 [(nanopb).max_count = 8];" in result + + +@pytest.mark.unit +def test_inject_multiple_options_on_one_field(): + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Foo { + repeated int32 snr = 1; + } + """ + result = _inject(proto, specific={("Foo", "snr"): {"max_count": 8, "int_size": 8}}) + assert "(nanopb).max_count = 8" in result + assert "(nanopb).int_size = IS_8" in result + + +# --------------------------------------------------------------------------- +# inject_into_proto — import insertion +# --------------------------------------------------------------------------- + + +@pytest.mark.unit +def test_inject_adds_nanopb_import_when_absent(): + """nanopb.proto import is added when the file has other imports.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Foo { + string name = 1; + } + """ + result = _inject(proto, wildcard={"name": {"max_size": 30}}) + assert NANOPB_IMPORT in result + + +@pytest.mark.unit +def test_inject_no_duplicate_nanopb_import(): + """nanopb.proto import is NOT added a second time if already present.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + import "meshtastic/protobuf/nanopb.proto"; + message Foo { + string name = 1; + } + """ + result = _inject(proto, wildcard={"name": {"max_size": 30}}) + assert result.count(NANOPB_IMPORT) == 1 + + +@pytest.mark.unit +def test_inject_import_placed_after_existing_imports(): + """nanopb import appears after the last existing import, not at the top.""" + proto = """\ + syntax = "proto3"; + import "meshtastic/protobuf/mesh.proto"; + message Foo { + string name = 1; + } + """ + result = _inject(proto, wildcard={"name": {"max_size": 30}}) + lines = result.splitlines() + mesh_idx = next(i for i, l in enumerate(lines) if "mesh.proto" in l) + nanopb_idx = next(i for i, l in enumerate(lines) if "nanopb.proto" in l) + assert nanopb_idx == mesh_idx + 1 + + +@pytest.mark.unit +def test_inject_import_after_syntax_when_no_existing_imports(): + """When a proto has no imports, nanopb import goes AFTER the syntax line, + not before it (regression test for the last_import_idx == -1 bug).""" + proto = """\ + syntax = "proto3"; + message XModem { + uint32 seq = 2; + } + """ + result = _inject(proto, specific={("XModem", "seq"): {"int_size": 16}}) + lines = result.splitlines() + syntax_idx = next(i for i, l in enumerate(lines) if l.strip().startswith("syntax")) + nanopb_idx = next(i for i, l in enumerate(lines) if "nanopb.proto" in l) + assert nanopb_idx > syntax_idx, "nanopb import must come after the syntax line" + # syntax line must still be first non-blank line + first_non_blank = next(l.strip() for l in lines if l.strip()) + assert first_non_blank.startswith("syntax") + + +@pytest.mark.unit +def test_inject_noop_when_no_options(): + """Proto file is returned unchanged when there are no options to inject.""" + proto = 'syntax = "proto3";\nmessage Foo { string x = 1; }\n' + result = _inject(proto) + assert result == proto + + +# =========================================================================== +# Part 2 — Descriptor integration tests +# Verify that regen-protobufs.sh produced _pb2.py files with nanopb options +# embedded in the serialized descriptors. +# =========================================================================== + +from meshtastic.protobuf import ( # noqa: E402 (after local helpers) + atak_pb2, + config_pb2, + mesh_pb2, + nanopb_pb2, + telemetry_pb2, +) + + +def _field_opts(descriptor, *path): + """Walk a descriptor by field/nested-type path and return its nanopb opts. + + Elements of *path that are message names are looked up in nested_types_by_name; + the final element is looked up in fields_by_name. + """ + desc = descriptor + for step in path[:-1]: + desc = desc.nested_types_by_name[step] + field = desc.fields_by_name[path[-1]] + return field.GetOptions().Extensions[nanopb_pb2.nanopb] + + +@pytest.mark.unit +def test_descriptor_user_long_name(): + opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["User"], "long_name") + assert opts.max_size == 40 + + +@pytest.mark.unit +def test_descriptor_user_short_name(): + opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["User"], "short_name") + assert opts.max_size == 5 + + +@pytest.mark.unit +def test_descriptor_wildcard_macaddr(): + """Wildcard option from mesh.options applied to User.macaddr.""" + opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["User"], "macaddr") + assert opts.max_size == 6 + assert opts.fixed_length is True + + +@pytest.mark.unit +def test_descriptor_meshpacket_hop_limit(): + opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["MeshPacket"], "hop_limit") + assert opts.int_size == nanopb_pb2.IS_8 + + +@pytest.mark.unit +def test_descriptor_routediscovery_snr_towards(): + opts = _field_opts( + mesh_pb2.DESCRIPTOR.message_types_by_name["RouteDiscovery"], "snr_towards" + ) + assert opts.max_count == 8 + assert opts.int_size == nanopb_pb2.IS_8 + + +@pytest.mark.unit +def test_descriptor_data_payload(): + opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["Data"], "payload") + assert opts.max_size == 233 + + +@pytest.mark.unit +def test_descriptor_nested_deviceconfig_tzdef(): + """Config.DeviceConfig.tzdef — option on a field inside a nested message.""" + config = config_pb2.DESCRIPTOR.message_types_by_name["Config"] + opts = _field_opts(config, "DeviceConfig", "tzdef") + assert opts.max_size == 65 + + +@pytest.mark.unit +def test_descriptor_nested_securityconfig_admin_key(): + """Config.SecurityConfig.admin_key — two options merged from two .options lines.""" + config = config_pb2.DESCRIPTOR.message_types_by_name["Config"] + opts = _field_opts(config, "SecurityConfig", "admin_key") + assert opts.max_size == 32 + assert opts.max_count == 3 + + +@pytest.mark.unit +def test_descriptor_multilevel_nested_route_link_uid(): + """Route.Link.uid — three-level nested pattern from atak.options.""" + route = atak_pb2.DESCRIPTOR.message_types_by_name["Route"] + opts = _field_opts(route, "Link", "uid") + assert opts.max_size == 48 + + +@pytest.mark.unit +def test_descriptor_telemetry_environment_one_wire_temperature(): + env = telemetry_pb2.DESCRIPTOR.message_types_by_name["EnvironmentMetrics"] + opts = _field_opts(env, "one_wire_temperature") + assert opts.max_count == 8 From 3916009dbd0bba603af8dabdfcc66e98a7218eed Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Sun, 31 May 2026 10:01:39 -0700 Subject: [PATCH 3/4] pylint cleanups --- bin/inject_nanopb_options.py | 9 ++-- .../tests/test_inject_nanopb_options.py | 42 +++++++++++++------ 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/bin/inject_nanopb_options.py b/bin/inject_nanopb_options.py index bfd1b19..43fd337 100644 --- a/bin/inject_nanopb_options.py +++ b/bin/inject_nanopb_options.py @@ -21,7 +21,7 @@ generated by regen-protobufs.sh, not the source .proto files. import re import sys from pathlib import Path -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, Dict, List, Tuple # IntSize enum values from nanopb.proto INT_SIZE_ENUM = {8: "IS_8", 16: "IS_16", 32: "IS_32", 64: "IS_64"} @@ -72,7 +72,7 @@ def parse_options_file( specific: Dict[Tuple[str, ...], Dict[str, Any]] = {} wildcard: Dict[str, Dict[str, Any]] = {} - with open(path) as f: + with open(path, encoding="utf-8") as f: for line in f: # Strip inline comments comment_pos = line.find("#") @@ -287,6 +287,7 @@ def inject_into_proto( def main() -> int: + """Parse an .options file and inject its constraints into a .proto file in-place.""" if len(sys.argv) != 3: print( f"Usage: {sys.argv[0]} ", @@ -312,13 +313,13 @@ def main() -> int: print(f" [{opts_path.name}] No injectable options found, skipping.") return 0 - content = proto_path.read_text() + content = proto_path.read_text(encoding="utf-8") # After regen-protobufs.sh's sed fixup, the nanopb import path is: nanopb_import_path = "meshtastic/protobuf/nanopb.proto" modified = inject_into_proto(content, specific, wildcard, nanopb_import_path) - proto_path.write_text(modified) + proto_path.write_text(modified, encoding="utf-8") print( f" [{opts_path.name}] Injected {len(specific)} specific + " diff --git a/meshtastic/tests/test_inject_nanopb_options.py b/meshtastic/tests/test_inject_nanopb_options.py index 2d89188..9239a8a 100644 --- a/meshtastic/tests/test_inject_nanopb_options.py +++ b/meshtastic/tests/test_inject_nanopb_options.py @@ -12,11 +12,18 @@ import importlib.util import sys import textwrap from pathlib import Path -from typing import Any, Dict, Tuple from unittest.mock import patch import pytest +from meshtastic.protobuf import ( + atak_pb2, + config_pb2, + mesh_pb2, + nanopb_pb2, + telemetry_pb2, +) + # --------------------------------------------------------------------------- # Load bin/inject_nanopb_options.py as a module without adding it to the # package. __main__ guard means no side-effects on import. @@ -55,26 +62,31 @@ NANOPB_IMPORT = 'import "meshtastic/protobuf/nanopb.proto";' @pytest.mark.unit def test_parse_value_integer(): + """parse_value converts a decimal string to int.""" assert parse_value("40") == 40 @pytest.mark.unit def test_parse_value_negative_integer(): + """parse_value handles negative integer strings.""" assert parse_value("-1") == -1 @pytest.mark.unit def test_parse_value_true(): + """parse_value converts 'true' to Python True.""" assert parse_value("true") is True @pytest.mark.unit def test_parse_value_false(): + """parse_value converts 'false' to Python False.""" assert parse_value("false") is False @pytest.mark.unit def test_parse_value_string(): + """parse_value returns non-numeric, non-boolean strings as-is.""" assert parse_value("IS_8") == "IS_8" @@ -113,7 +125,7 @@ def test_parse_specific(tmp_path): def test_parse_multilevel(tmp_path): """Three-part pattern (Route.Link.uid) produces a 3-tuple key.""" f = _write_options(tmp_path, "*Route.Link.uid max_size:48\n") - specific, wildcard = parse_options_file(f) + specific, _ = parse_options_file(f) assert ("Route", "Link", "uid") in specific assert specific[("Route", "Link", "uid")] == {"max_size": 48} @@ -181,12 +193,14 @@ def test_parse_int_and_bool_values(tmp_path): @pytest.mark.unit def test_message_path_matches_simple(): + """A single-element path matches the current message on the stack.""" stack = [("message", "User")] assert message_path_matches(stack, ("User",)) @pytest.mark.unit def test_message_path_matches_nested(): + """Both a 1-element and 2-element path match correctly against a nested stack.""" stack = [("message", "Config"), ("message", "DeviceConfig")] assert message_path_matches(stack, ("DeviceConfig",)) assert message_path_matches(stack, ("Config", "DeviceConfig")) @@ -201,6 +215,7 @@ def test_message_path_matches_with_oneof_in_stack(): @pytest.mark.unit def test_message_path_no_match(): + """A path with the wrong message name does not match.""" stack = [("message", "User")] assert not message_path_matches(stack, ("Route",)) @@ -220,11 +235,13 @@ def test_message_path_multilevel_partial_match(): @pytest.mark.unit def test_format_max_size(): + """max_size is rendered as an integer literal.""" assert format_nanopb_opts({"max_size": 40}) == "(nanopb).max_size = 40" @pytest.mark.unit def test_format_int_size_as_enum(): + """int_size numeric values are rendered as IS_8/IS_16/IS_32/IS_64 enum names.""" assert format_nanopb_opts({"int_size": 8}) == "(nanopb).int_size = IS_8" assert format_nanopb_opts({"int_size": 16}) == "(nanopb).int_size = IS_16" assert format_nanopb_opts({"int_size": 32}) == "(nanopb).int_size = IS_32" @@ -233,11 +250,13 @@ def test_format_int_size_as_enum(): @pytest.mark.unit def test_format_bool_true(): + """True is rendered as the proto literal 'true'.""" assert format_nanopb_opts({"fixed_length": True}) == "(nanopb).fixed_length = true" @pytest.mark.unit def test_format_bool_false(): + """False is rendered as the proto literal 'false'.""" assert format_nanopb_opts({"fixed_length": False}) == "(nanopb).fixed_length = false" @@ -293,6 +312,7 @@ def test_inject_merges_with_existing_options(): @pytest.mark.unit def test_inject_int_size_uses_enum_name(): + """int_size values are written as IS_N enum names, not raw integers.""" proto = """\ syntax = "proto3"; import "meshtastic/protobuf/mesh.proto"; @@ -335,8 +355,6 @@ def test_inject_specific_not_leaking_to_other_messages(): } """ result = _inject(proto, specific={("User", "id"): {"max_size": 16}}) - lines = result.splitlines() - user_line = next(l for l in lines if "User" not in l and "id = 1" in l and "Other" not in l.split("message")[0] if "message" not in l) # Easier: count annotations — should be exactly one assert result.count("(nanopb).max_size = 16") == 1 @@ -400,6 +418,7 @@ def test_inject_optional_qualifier_preserved(): @pytest.mark.unit def test_inject_repeated_qualifier_preserved(): + """The 'repeated' qualifier is kept when a field gets an annotation.""" proto = """\ syntax = "proto3"; import "meshtastic/protobuf/mesh.proto"; @@ -413,6 +432,7 @@ def test_inject_repeated_qualifier_preserved(): @pytest.mark.unit def test_inject_multiple_options_on_one_field(): + """Multiple options from the same pattern are all injected on one field.""" proto = """\ syntax = "proto3"; import "meshtastic/protobuf/mesh.proto"; @@ -510,14 +530,6 @@ def test_inject_noop_when_no_options(): # embedded in the serialized descriptors. # =========================================================================== -from meshtastic.protobuf import ( # noqa: E402 (after local helpers) - atak_pb2, - config_pb2, - mesh_pb2, - nanopb_pb2, - telemetry_pb2, -) - def _field_opts(descriptor, *path): """Walk a descriptor by field/nested-type path and return its nanopb opts. @@ -534,12 +546,14 @@ def _field_opts(descriptor, *path): @pytest.mark.unit def test_descriptor_user_long_name(): + """User.long_name has max_size = 40 from mesh.options.""" opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["User"], "long_name") assert opts.max_size == 40 @pytest.mark.unit def test_descriptor_user_short_name(): + """User.short_name has max_size = 5 from mesh.options.""" opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["User"], "short_name") assert opts.max_size == 5 @@ -554,12 +568,14 @@ def test_descriptor_wildcard_macaddr(): @pytest.mark.unit def test_descriptor_meshpacket_hop_limit(): + """MeshPacket.hop_limit has int_size = IS_8 from mesh.options.""" opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["MeshPacket"], "hop_limit") assert opts.int_size == nanopb_pb2.IS_8 @pytest.mark.unit def test_descriptor_routediscovery_snr_towards(): + """RouteDiscovery.snr_towards has max_count = 8 and int_size = IS_8 from mesh.options.""" opts = _field_opts( mesh_pb2.DESCRIPTOR.message_types_by_name["RouteDiscovery"], "snr_towards" ) @@ -569,6 +585,7 @@ def test_descriptor_routediscovery_snr_towards(): @pytest.mark.unit def test_descriptor_data_payload(): + """Data.payload has max_size = 233 from mesh.options.""" opts = _field_opts(mesh_pb2.DESCRIPTOR.message_types_by_name["Data"], "payload") assert opts.max_size == 233 @@ -600,6 +617,7 @@ def test_descriptor_multilevel_nested_route_link_uid(): @pytest.mark.unit def test_descriptor_telemetry_environment_one_wire_temperature(): + """EnvironmentMetrics.one_wire_temperature has max_count = 8 from telemetry.options.""" env = telemetry_pb2.DESCRIPTOR.message_types_by_name["EnvironmentMetrics"] opts = _field_opts(env, "one_wire_temperature") assert opts.max_count == 8 From a7d13eb2c1cf0b968f104953d5a11ceeaaa8c25e Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Sun, 31 May 2026 10:17:27 -0700 Subject: [PATCH 4/4] the fuzz --- bin/inject_nanopb_options.py | 2 +- .../tests/test_inject_nanopb_options.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/bin/inject_nanopb_options.py b/bin/inject_nanopb_options.py index 43fd337..38df902 100644 --- a/bin/inject_nanopb_options.py +++ b/bin/inject_nanopb_options.py @@ -49,7 +49,7 @@ FIELD_OPTIONS = frozenset( def parse_value(s: str) -> Any: """Convert an option value string to an appropriate Python type.""" - if s.lstrip("-").isdigit(): + if re.fullmatch(r"-?[0-9]+", s): return int(s) if s.lower() == "true": return True diff --git a/meshtastic/tests/test_inject_nanopb_options.py b/meshtastic/tests/test_inject_nanopb_options.py index 9239a8a..852b72b 100644 --- a/meshtastic/tests/test_inject_nanopb_options.py +++ b/meshtastic/tests/test_inject_nanopb_options.py @@ -15,6 +15,7 @@ from pathlib import Path from unittest.mock import patch import pytest +from hypothesis import given, strategies as st from meshtastic.protobuf import ( atak_pb2, @@ -90,6 +91,28 @@ def test_parse_value_string(): assert parse_value("IS_8") == "IS_8" +@pytest.mark.unit +@given(st.integers()) +def test_parse_value_any_integer_returns_int(n): + """parse_value always returns int for any decimal integer string.""" + assert parse_value(str(n)) == n + + +@pytest.mark.unit +@given(st.text()) +def test_parse_value_never_crashes(s): + """parse_value never raises on arbitrary input.""" + result = parse_value(s) + assert isinstance(result, (int, bool, str)) + + +@pytest.mark.unit +@given(st.text().filter(lambda s: not s.lstrip("-").isdigit() and s.lower() not in ("true", "false"))) +def test_parse_value_non_numeric_non_bool_returns_str(s): + """parse_value returns the original string when it is neither an integer nor a boolean.""" + assert parse_value(s) == s + + # --------------------------------------------------------------------------- # parse_options_file # ---------------------------------------------------------------------------