diff --git a/protobufs b/protobufs index 1763fe4a3..2b391ff8a 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 1763fe4a389f0864f153a9986699e1ea56e67fac +Subproject commit 2b391ff8a76bfc07662faa007bb4fd6e01691ba8 diff --git a/src/mesh/generated/meshtastic/admin.pb.c b/src/mesh/generated/meshtastic/admin.pb.c new file mode 100644 index 000000000..1f668dabc --- /dev/null +++ b/src/mesh/generated/meshtastic/admin.pb.c @@ -0,0 +1,14 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/admin.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_AdminMessage, meshtastic_AdminMessage, 2) + + + + + diff --git a/src/mesh/generated/meshtastic/admin.pb.h b/src/mesh/generated/meshtastic/admin.pb.h new file mode 100644 index 000000000..5caa22bb7 --- /dev/null +++ b/src/mesh/generated/meshtastic/admin.pb.h @@ -0,0 +1,249 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_ADMIN_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_ADMIN_PB_H_INCLUDED +#include +#include "meshtastic/channel.pb.h" +#include "meshtastic/config.pb.h" +#include "meshtastic/device_metadata.pb.h" +#include "meshtastic/mesh.pb.h" +#include "meshtastic/module_config.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* TODO: REPLACE */ +typedef enum _meshtastic_AdminMessage_ConfigType { + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_DEVICE_CONFIG = 0, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_POSITION_CONFIG = 1, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_POWER_CONFIG = 2, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_NETWORK_CONFIG = 3, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_DISPLAY_CONFIG = 4, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_LORA_CONFIG = 5, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG = 6 +} meshtastic_AdminMessage_ConfigType; + +/* TODO: REPLACE */ +typedef enum _meshtastic_AdminMessage_ModuleConfigType { + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_MQTT_CONFIG = 0, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_SERIAL_CONFIG = 1, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_EXTNOTIF_CONFIG = 2, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_STOREFORWARD_CONFIG = 3, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_RANGETEST_CONFIG = 4, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_TELEMETRY_CONFIG = 5, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_CANNEDMSG_CONFIG = 6, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_AUDIO_CONFIG = 7, + /* TODO: REPLACE */ + meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG = 8 +} meshtastic_AdminMessage_ModuleConfigType; + +/* Struct definitions */ +/* This message is handled by the Admin module and is responsible for all settings/channel read/write operations. + This message is used to do settings operations to both remote AND local nodes. + (Prior to 1.2 these operations were done via special ToRadio operations) */ +typedef struct _meshtastic_AdminMessage { + pb_size_t which_payload_variant; + union { + /* Send the specified channel in the response to this message + NOTE: This field is sent with the channel index + 1 (to ensure we never try to send 'zero' - which protobufs treats as not present) */ + uint32_t get_channel_request; + /* TODO: REPLACE */ + meshtastic_Channel get_channel_response; + /* Send the current owner data in the response to this message. */ + bool get_owner_request; + /* TODO: REPLACE */ + meshtastic_User get_owner_response; + /* Ask for the following config data to be sent */ + meshtastic_AdminMessage_ConfigType get_config_request; + /* Send the current Config in the response to this message. */ + meshtastic_Config get_config_response; + /* Ask for the following config data to be sent */ + meshtastic_AdminMessage_ModuleConfigType get_module_config_request; + /* Send the current Config in the response to this message. */ + meshtastic_ModuleConfig get_module_config_response; + /* Get the Canned Message Module messages in the response to this message. */ + bool get_canned_message_module_messages_request; + /* Get the Canned Message Module messages in the response to this message. */ + char get_canned_message_module_messages_response[201]; + /* Request the node to send device metadata (firmware, protobuf version, etc) */ + bool get_device_metadata_request; + /* Device metadata response */ + meshtastic_DeviceMetadata get_device_metadata_response; + /* Get the Ringtone in the response to this message. */ + bool get_ringtone_request; + /* Get the Ringtone in the response to this message. */ + char get_ringtone_response[231]; + /* Set the owner for this node */ + meshtastic_User set_owner; + /* Set channels (using the new API). + A special channel is the "primary channel". + The other records are secondary channels. + Note: only one channel can be marked as primary. + If the client sets a particular channel to be primary, the previous channel will be set to SECONDARY automatically. */ + meshtastic_Channel set_channel; + /* Set the current Config */ + meshtastic_Config set_config; + /* Set the current Config */ + meshtastic_ModuleConfig set_module_config; + /* Set the Canned Message Module messages text. */ + char set_canned_message_module_messages[201]; + /* Set the ringtone for ExternalNotification. */ + char set_ringtone_message[231]; + /* Begins an edit transaction for config, module config, owner, and channel settings changes + This will delay the standard *implicit* save to the file system and subsequent reboot behavior until committed (commit_edit_settings) */ + bool begin_edit_settings; + /* Commits an open transaction for any edits made to config, module config, owner, and channel settings */ + bool commit_edit_settings; + /* Setting channels/radio config remotely carries the risk that you might send an invalid config and the radio never talks to your mesh again. + Therefore if setting either of these properties remotely, you must send a confirm_xxx message within 10 minutes. + If you fail to do so, the radio will assume loss of comms and revert your changes. + These messages are optional when changing the local node. */ + bool confirm_set_channel; + /* TODO: REPLACE */ + bool confirm_set_radio; + /* Tell the node to reboot into the OTA Firmware in this many seconds (or <0 to cancel reboot) + Only Implemented for ESP32 Devices. This needs to be issued to send a new main firmware via bluetooth. */ + int32_t reboot_ota_seconds; + /* This message is only supported for the simulator porduino build. + If received the simulator will exit successfully. */ + bool exit_simulator; + /* Tell the node to reboot in this many seconds (or <0 to cancel reboot) */ + int32_t reboot_seconds; + /* Tell the node to shutdown in this many seconds (or <0 to cancel shutdown) */ + int32_t shutdown_seconds; + /* Tell the node to factory reset, all device settings will be returned to factory defaults. */ + int32_t factory_reset; + /* Tell the node to reset the nodedb. */ + int32_t nodedb_reset; + }; +} meshtastic_AdminMessage; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_AdminMessage_ConfigType_MIN meshtastic_AdminMessage_ConfigType_DEVICE_CONFIG +#define _meshtastic_AdminMessage_ConfigType_MAX meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG +#define _meshtastic_AdminMessage_ConfigType_ARRAYSIZE ((meshtastic_AdminMessage_ConfigType)(meshtastic_AdminMessage_ConfigType_BLUETOOTH_CONFIG+1)) + +#define _meshtastic_AdminMessage_ModuleConfigType_MIN meshtastic_AdminMessage_ModuleConfigType_MQTT_CONFIG +#define _meshtastic_AdminMessage_ModuleConfigType_MAX meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG +#define _meshtastic_AdminMessage_ModuleConfigType_ARRAYSIZE ((meshtastic_AdminMessage_ModuleConfigType)(meshtastic_AdminMessage_ModuleConfigType_REMOTEHARDWARE_CONFIG+1)) + +#define meshtastic_AdminMessage_payload_variant_get_config_request_ENUMTYPE meshtastic_AdminMessage_ConfigType +#define meshtastic_AdminMessage_payload_variant_get_module_config_request_ENUMTYPE meshtastic_AdminMessage_ModuleConfigType + + +/* Initializer values for message structs */ +#define meshtastic_AdminMessage_init_default {0, {0}} +#define meshtastic_AdminMessage_init_zero {0, {0}} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_AdminMessage_get_channel_request_tag 1 +#define meshtastic_AdminMessage_get_channel_response_tag 2 +#define meshtastic_AdminMessage_get_owner_request_tag 3 +#define meshtastic_AdminMessage_get_owner_response_tag 4 +#define meshtastic_AdminMessage_get_config_request_tag 5 +#define meshtastic_AdminMessage_get_config_response_tag 6 +#define meshtastic_AdminMessage_get_module_config_request_tag 7 +#define meshtastic_AdminMessage_get_module_config_response_tag 8 +#define meshtastic_AdminMessage_get_canned_message_module_messages_request_tag 10 +#define meshtastic_AdminMessage_get_canned_message_module_messages_response_tag 11 +#define meshtastic_AdminMessage_get_device_metadata_request_tag 12 +#define meshtastic_AdminMessage_get_device_metadata_response_tag 13 +#define meshtastic_AdminMessage_get_ringtone_request_tag 14 +#define meshtastic_AdminMessage_get_ringtone_response_tag 15 +#define meshtastic_AdminMessage_set_owner_tag 32 +#define meshtastic_AdminMessage_set_channel_tag 33 +#define meshtastic_AdminMessage_set_config_tag 34 +#define meshtastic_AdminMessage_set_module_config_tag 35 +#define meshtastic_AdminMessage_set_canned_message_module_messages_tag 36 +#define meshtastic_AdminMessage_set_ringtone_message_tag 37 +#define meshtastic_AdminMessage_begin_edit_settings_tag 64 +#define meshtastic_AdminMessage_commit_edit_settings_tag 65 +#define meshtastic_AdminMessage_confirm_set_channel_tag 66 +#define meshtastic_AdminMessage_confirm_set_radio_tag 67 +#define meshtastic_AdminMessage_reboot_ota_seconds_tag 95 +#define meshtastic_AdminMessage_exit_simulator_tag 96 +#define meshtastic_AdminMessage_reboot_seconds_tag 97 +#define meshtastic_AdminMessage_shutdown_seconds_tag 98 +#define meshtastic_AdminMessage_factory_reset_tag 99 +#define meshtastic_AdminMessage_nodedb_reset_tag 100 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_AdminMessage_FIELDLIST(X, a) \ +X(a, STATIC, ONEOF, UINT32, (payload_variant,get_channel_request,get_channel_request), 1) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_channel_response,get_channel_response), 2) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,get_owner_request,get_owner_request), 3) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_owner_response,get_owner_response), 4) \ +X(a, STATIC, ONEOF, UENUM, (payload_variant,get_config_request,get_config_request), 5) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_config_response,get_config_response), 6) \ +X(a, STATIC, ONEOF, UENUM, (payload_variant,get_module_config_request,get_module_config_request), 7) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_module_config_response,get_module_config_response), 8) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,get_canned_message_module_messages_request,get_canned_message_module_messages_request), 10) \ +X(a, STATIC, ONEOF, STRING, (payload_variant,get_canned_message_module_messages_response,get_canned_message_module_messages_response), 11) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,get_device_metadata_request,get_device_metadata_request), 12) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,get_device_metadata_response,get_device_metadata_response), 13) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,get_ringtone_request,get_ringtone_request), 14) \ +X(a, STATIC, ONEOF, STRING, (payload_variant,get_ringtone_response,get_ringtone_response), 15) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,set_owner,set_owner), 32) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,set_channel,set_channel), 33) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,set_config,set_config), 34) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,set_module_config,set_module_config), 35) \ +X(a, STATIC, ONEOF, STRING, (payload_variant,set_canned_message_module_messages,set_canned_message_module_messages), 36) \ +X(a, STATIC, ONEOF, STRING, (payload_variant,set_ringtone_message,set_ringtone_message), 37) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,begin_edit_settings,begin_edit_settings), 64) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,commit_edit_settings,commit_edit_settings), 65) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,confirm_set_channel,confirm_set_channel), 66) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,confirm_set_radio,confirm_set_radio), 67) \ +X(a, STATIC, ONEOF, INT32, (payload_variant,reboot_ota_seconds,reboot_ota_seconds), 95) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,exit_simulator,exit_simulator), 96) \ +X(a, STATIC, ONEOF, INT32, (payload_variant,reboot_seconds,reboot_seconds), 97) \ +X(a, STATIC, ONEOF, INT32, (payload_variant,shutdown_seconds,shutdown_seconds), 98) \ +X(a, STATIC, ONEOF, INT32, (payload_variant,factory_reset,factory_reset), 99) \ +X(a, STATIC, ONEOF, INT32, (payload_variant,nodedb_reset,nodedb_reset), 100) +#define meshtastic_AdminMessage_CALLBACK NULL +#define meshtastic_AdminMessage_DEFAULT NULL +#define meshtastic_AdminMessage_payload_variant_get_channel_response_MSGTYPE meshtastic_Channel +#define meshtastic_AdminMessage_payload_variant_get_owner_response_MSGTYPE meshtastic_User +#define meshtastic_AdminMessage_payload_variant_get_config_response_MSGTYPE meshtastic_Config +#define meshtastic_AdminMessage_payload_variant_get_module_config_response_MSGTYPE meshtastic_ModuleConfig +#define meshtastic_AdminMessage_payload_variant_get_device_metadata_response_MSGTYPE meshtastic_DeviceMetadata +#define meshtastic_AdminMessage_payload_variant_set_owner_MSGTYPE meshtastic_User +#define meshtastic_AdminMessage_payload_variant_set_channel_MSGTYPE meshtastic_Channel +#define meshtastic_AdminMessage_payload_variant_set_config_MSGTYPE meshtastic_Config +#define meshtastic_AdminMessage_payload_variant_set_module_config_MSGTYPE meshtastic_ModuleConfig + +extern const pb_msgdesc_t meshtastic_AdminMessage_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_AdminMessage_fields &meshtastic_AdminMessage_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_AdminMessage_size 234 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/apponly.pb.c b/src/mesh/generated/meshtastic/apponly.pb.c new file mode 100644 index 000000000..8c3801ed7 --- /dev/null +++ b/src/mesh/generated/meshtastic/apponly.pb.c @@ -0,0 +1,12 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/apponly.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_ChannelSet, meshtastic_ChannelSet, 2) + + + diff --git a/src/mesh/generated/meshtastic/apponly.pb.h b/src/mesh/generated/meshtastic/apponly.pb.h new file mode 100644 index 000000000..187df98d4 --- /dev/null +++ b/src/mesh/generated/meshtastic/apponly.pb.h @@ -0,0 +1,63 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_APPONLY_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_APPONLY_PB_H_INCLUDED +#include +#include "meshtastic/channel.pb.h" +#include "meshtastic/config.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Struct definitions */ +/* This is the most compact possible representation for a set of channels. + It includes only one PRIMARY channel (which must be first) and + any SECONDARY channels. + No DISABLED channels are included. + This abstraction is used only on the the 'app side' of the world (ie python, javascript and android etc) to show a group of Channels as a (long) URL */ +typedef struct _meshtastic_ChannelSet { + /* Channel list with settings */ + pb_size_t settings_count; + meshtastic_ChannelSettings settings[8]; + /* LoRa config */ + bool has_lora_config; + meshtastic_Config_LoRaConfig lora_config; +} meshtastic_ChannelSet; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initializer values for message structs */ +#define meshtastic_ChannelSet_init_default {0, {meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default, meshtastic_ChannelSettings_init_default}, false, meshtastic_Config_LoRaConfig_init_default} +#define meshtastic_ChannelSet_init_zero {0, {meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero, meshtastic_ChannelSettings_init_zero}, false, meshtastic_Config_LoRaConfig_init_zero} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_ChannelSet_settings_tag 1 +#define meshtastic_ChannelSet_lora_config_tag 2 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_ChannelSet_FIELDLIST(X, a) \ +X(a, STATIC, REPEATED, MESSAGE, settings, 1) \ +X(a, STATIC, OPTIONAL, MESSAGE, lora_config, 2) +#define meshtastic_ChannelSet_CALLBACK NULL +#define meshtastic_ChannelSet_DEFAULT NULL +#define meshtastic_ChannelSet_settings_MSGTYPE meshtastic_ChannelSettings +#define meshtastic_ChannelSet_lora_config_MSGTYPE meshtastic_Config_LoRaConfig + +extern const pb_msgdesc_t meshtastic_ChannelSet_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_ChannelSet_fields &meshtastic_ChannelSet_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_ChannelSet_size 584 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/cannedmessages.pb.c b/src/mesh/generated/meshtastic/cannedmessages.pb.c new file mode 100644 index 000000000..fffa3fdf9 --- /dev/null +++ b/src/mesh/generated/meshtastic/cannedmessages.pb.c @@ -0,0 +1,12 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/cannedmessages.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_CannedMessageModuleConfig, meshtastic_CannedMessageModuleConfig, AUTO) + + + diff --git a/src/mesh/generated/meshtastic/cannedmessages.pb.h b/src/mesh/generated/meshtastic/cannedmessages.pb.h new file mode 100644 index 000000000..b81f65d0d --- /dev/null +++ b/src/mesh/generated/meshtastic/cannedmessages.pb.h @@ -0,0 +1,49 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_CANNEDMESSAGES_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_CANNEDMESSAGES_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Struct definitions */ +/* Canned message module configuration. */ +typedef struct _meshtastic_CannedMessageModuleConfig { + /* Predefined messages for canned message module separated by '|' characters. */ + char messages[201]; +} meshtastic_CannedMessageModuleConfig; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initializer values for message structs */ +#define meshtastic_CannedMessageModuleConfig_init_default {""} +#define meshtastic_CannedMessageModuleConfig_init_zero {""} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_CannedMessageModuleConfig_messages_tag 1 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_CannedMessageModuleConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, STRING, messages, 1) +#define meshtastic_CannedMessageModuleConfig_CALLBACK NULL +#define meshtastic_CannedMessageModuleConfig_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_CannedMessageModuleConfig_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_CannedMessageModuleConfig_fields &meshtastic_CannedMessageModuleConfig_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_CannedMessageModuleConfig_size 203 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/channel.pb.c b/src/mesh/generated/meshtastic/channel.pb.c new file mode 100644 index 000000000..62585fd17 --- /dev/null +++ b/src/mesh/generated/meshtastic/channel.pb.c @@ -0,0 +1,16 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/channel.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_ChannelSettings, meshtastic_ChannelSettings, AUTO) + + +PB_BIND(meshtastic_Channel, meshtastic_Channel, AUTO) + + + + diff --git a/src/mesh/generated/meshtastic/channel.pb.h b/src/mesh/generated/meshtastic/channel.pb.h new file mode 100644 index 000000000..83ef7b5fc --- /dev/null +++ b/src/mesh/generated/meshtastic/channel.pb.h @@ -0,0 +1,172 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_CHANNEL_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_CHANNEL_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* How this channel is being used (or not). + Note: this field is an enum to give us options for the future. + In particular, someday we might make a 'SCANNING' option. + SCANNING channels could have different frequencies and the radio would + occasionally check that freq to see if anything is being transmitted. + For devices that have multiple physical radios attached, we could keep multiple PRIMARY/SCANNING channels active at once to allow + cross band routing as needed. + If a device has only a single radio (the common case) only one channel can be PRIMARY at a time + (but any number of SECONDARY channels can't be sent received on that common frequency) */ +typedef enum _meshtastic_Channel_Role { + /* This channel is not in use right now */ + meshtastic_Channel_Role_DISABLED = 0, + /* This channel is used to set the frequency for the radio - all other enabled channels must be SECONDARY */ + meshtastic_Channel_Role_PRIMARY = 1, + /* Secondary channels are only used for encryption/decryption/authentication purposes. + Their radio settings (freq etc) are ignored, only psk is used. */ + meshtastic_Channel_Role_SECONDARY = 2 +} meshtastic_Channel_Role; + +/* Struct definitions */ +typedef PB_BYTES_ARRAY_T(32) meshtastic_ChannelSettings_psk_t; +/* Full settings (center freq, spread factor, pre-shared secret key etc...) + needed to configure a radio for speaking on a particular channel This + information can be encoded as a QRcode/url so that other users can configure + their radio to join the same channel. + A note about how channel names are shown to users: channelname-Xy + poundsymbol is a prefix used to indicate this is a channel name (idea from @professr). + Where X is a letter from A-Z (base 26) representing a hash of the PSK for this + channel - so that if the user changes anything about the channel (which does + force a new PSK) this letter will also change. Thus preventing user confusion if + two friends try to type in a channel name of "BobsChan" and then can't talk + because their PSKs will be different. + The PSK is hashed into this letter by "0x41 + [xor all bytes of the psk ] modulo 26" + This also allows the option of someday if people have the PSK off (zero), the + users COULD type in a channel name and be able to talk. + Y is a lower case letter from a-z that represents the channel 'speed' settings + (for some future definition of speed) + FIXME: Add description of multi-channel support and how primary vs secondary channels are used. + FIXME: explain how apps use channels for security. + explain how remote settings and remote gpio are managed as an example */ +typedef struct _meshtastic_ChannelSettings { + /* Deprecated in favor of LoraConfig.channel_num */ + uint32_t channel_num; + /* A simple pre-shared key for now for crypto. + Must be either 0 bytes (no crypto), 16 bytes (AES128), or 32 bytes (AES256). + A special shorthand is used for 1 byte long psks. + These psks should be treated as only minimally secure, + because they are listed in this source code. + Those bytes are mapped using the following scheme: + `0` = No crypto + `1` = The special "default" channel key: {0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0xbf} + `2` through 10 = The default channel key, except with 1 through 9 added to the last byte. + Shown to user as simple1 through 10 */ + meshtastic_ChannelSettings_psk_t psk; + /* A SHORT name that will be packed into the URL. + Less than 12 bytes. + Something for end users to call the channel + If this is the empty string it is assumed that this channel + is the special (minimally secure) "Default"channel. + In user interfaces it should be rendered as a local language translation of "X". + For channel_num hashing empty string will be treated as "X". + Where "X" is selected based on the English words listed above for ModemPreset */ + char name[12]; + /* Used to construct a globally unique channel ID. + The full globally unique ID will be: "name.id" where ID is shown as base36. + Assuming that the number of meshtastic users is below 20K (true for a long time) + the chance of this 64 bit random number colliding with anyone else is super low. + And the penalty for collision is low as well, it just means that anyone trying to decrypt channel messages might need to + try multiple candidate channels. + Any time a non wire compatible change is made to a channel, this field should be regenerated. + There are a small number of 'special' globally known (and fairly) insecure standard channels. + Those channels do not have a numeric id included in the settings, but instead it is pulled from + a table of well known IDs. + (see Well Known Channels FIXME) */ + uint32_t id; + /* If true, messages on the mesh will be sent to the *public* internet by any gateway ndoe */ + bool uplink_enabled; + /* If true, messages seen on the internet will be forwarded to the local mesh. */ + bool downlink_enabled; +} meshtastic_ChannelSettings; + +/* A pair of a channel number, mode and the (sharable) settings for that channel */ +typedef struct _meshtastic_Channel { + /* The index of this channel in the channel table (from 0 to MAX_NUM_CHANNELS-1) + (Someday - not currently implemented) An index of -1 could be used to mean "set by name", + in which case the target node will find and set the channel by settings.name. */ + int8_t index; + /* The new settings, or NULL to disable that channel */ + bool has_settings; + meshtastic_ChannelSettings settings; + /* TODO: REPLACE */ + meshtastic_Channel_Role role; +} meshtastic_Channel; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_Channel_Role_MIN meshtastic_Channel_Role_DISABLED +#define _meshtastic_Channel_Role_MAX meshtastic_Channel_Role_SECONDARY +#define _meshtastic_Channel_Role_ARRAYSIZE ((meshtastic_Channel_Role)(meshtastic_Channel_Role_SECONDARY+1)) + + +#define meshtastic_Channel_role_ENUMTYPE meshtastic_Channel_Role + + +/* Initializer values for message structs */ +#define meshtastic_ChannelSettings_init_default {0, {0, {0}}, "", 0, 0, 0} +#define meshtastic_Channel_init_default {0, false, meshtastic_ChannelSettings_init_default, _meshtastic_Channel_Role_MIN} +#define meshtastic_ChannelSettings_init_zero {0, {0, {0}}, "", 0, 0, 0} +#define meshtastic_Channel_init_zero {0, false, meshtastic_ChannelSettings_init_zero, _meshtastic_Channel_Role_MIN} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_ChannelSettings_channel_num_tag 1 +#define meshtastic_ChannelSettings_psk_tag 2 +#define meshtastic_ChannelSettings_name_tag 3 +#define meshtastic_ChannelSettings_id_tag 4 +#define meshtastic_ChannelSettings_uplink_enabled_tag 5 +#define meshtastic_ChannelSettings_downlink_enabled_tag 6 +#define meshtastic_Channel_index_tag 1 +#define meshtastic_Channel_settings_tag 2 +#define meshtastic_Channel_role_tag 3 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_ChannelSettings_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, channel_num, 1) \ +X(a, STATIC, SINGULAR, BYTES, psk, 2) \ +X(a, STATIC, SINGULAR, STRING, name, 3) \ +X(a, STATIC, SINGULAR, FIXED32, id, 4) \ +X(a, STATIC, SINGULAR, BOOL, uplink_enabled, 5) \ +X(a, STATIC, SINGULAR, BOOL, downlink_enabled, 6) +#define meshtastic_ChannelSettings_CALLBACK NULL +#define meshtastic_ChannelSettings_DEFAULT NULL + +#define meshtastic_Channel_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, index, 1) \ +X(a, STATIC, OPTIONAL, MESSAGE, settings, 2) \ +X(a, STATIC, SINGULAR, UENUM, role, 3) +#define meshtastic_Channel_CALLBACK NULL +#define meshtastic_Channel_DEFAULT NULL +#define meshtastic_Channel_settings_MSGTYPE meshtastic_ChannelSettings + +extern const pb_msgdesc_t meshtastic_ChannelSettings_msg; +extern const pb_msgdesc_t meshtastic_Channel_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_ChannelSettings_fields &meshtastic_ChannelSettings_msg +#define meshtastic_Channel_fields &meshtastic_Channel_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_ChannelSettings_size 62 +#define meshtastic_Channel_size 77 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/config.pb.c b/src/mesh/generated/meshtastic/config.pb.c new file mode 100644 index 000000000..7cbee2bb8 --- /dev/null +++ b/src/mesh/generated/meshtastic/config.pb.c @@ -0,0 +1,46 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/config.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_Config, meshtastic_Config, AUTO) + + +PB_BIND(meshtastic_Config_DeviceConfig, meshtastic_Config_DeviceConfig, AUTO) + + +PB_BIND(meshtastic_Config_PositionConfig, meshtastic_Config_PositionConfig, AUTO) + + +PB_BIND(meshtastic_Config_PowerConfig, meshtastic_Config_PowerConfig, AUTO) + + +PB_BIND(meshtastic_Config_NetworkConfig, meshtastic_Config_NetworkConfig, AUTO) + + +PB_BIND(meshtastic_Config_NetworkConfig_IpV4Config, meshtastic_Config_NetworkConfig_IpV4Config, AUTO) + + +PB_BIND(meshtastic_Config_DisplayConfig, meshtastic_Config_DisplayConfig, AUTO) + + +PB_BIND(meshtastic_Config_LoRaConfig, meshtastic_Config_LoRaConfig, 2) + + +PB_BIND(meshtastic_Config_BluetoothConfig, meshtastic_Config_BluetoothConfig, AUTO) + + + + + + + + + + + + + diff --git a/src/mesh/generated/meshtastic/config.pb.h b/src/mesh/generated/meshtastic/config.pb.h new file mode 100644 index 000000000..ed8396d5f --- /dev/null +++ b/src/mesh/generated/meshtastic/config.pb.h @@ -0,0 +1,707 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_CONFIG_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_CONFIG_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* Defines the device's role on the Mesh network */ +typedef enum _meshtastic_Config_DeviceConfig_Role { + /* Client device role */ + meshtastic_Config_DeviceConfig_Role_CLIENT = 0, + /* Client Mute device role + Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh. */ + meshtastic_Config_DeviceConfig_Role_CLIENT_MUTE = 1, + /* Router device role. + Mesh packets will prefer to be routed over this node. This node will not be used by client apps. + The wifi/ble radios and the oled screen will be put to sleep. */ + meshtastic_Config_DeviceConfig_Role_ROUTER = 2, + /* Router Client device role + Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client. */ + meshtastic_Config_DeviceConfig_Role_ROUTER_CLIENT = 3 +} meshtastic_Config_DeviceConfig_Role; + +/* Bit field of boolean configuration options, indicating which optional + fields to include when assembling POSITION messages + Longitude and latitude are always included (also time if GPS-synced) + NOTE: the more fields are included, the larger the message will be - + leading to longer airtime and a higher risk of packet loss */ +typedef enum _meshtastic_Config_PositionConfig_PositionFlags { + /* Required for compilation */ + meshtastic_Config_PositionConfig_PositionFlags_UNSET = 0, + /* Include an altitude value (if available) */ + meshtastic_Config_PositionConfig_PositionFlags_ALTITUDE = 1, + /* Altitude value is MSL */ + meshtastic_Config_PositionConfig_PositionFlags_ALTITUDE_MSL = 2, + /* Include geoidal separation */ + meshtastic_Config_PositionConfig_PositionFlags_GEOIDAL_SEPARATION = 4, + /* Include the DOP value ; PDOP used by default, see below */ + meshtastic_Config_PositionConfig_PositionFlags_DOP = 8, + /* If POS_DOP set, send separate HDOP / VDOP values instead of PDOP */ + meshtastic_Config_PositionConfig_PositionFlags_HVDOP = 16, + /* Include number of "satellites in view" */ + meshtastic_Config_PositionConfig_PositionFlags_SATINVIEW = 32, + /* Include a sequence number incremented per packet */ + meshtastic_Config_PositionConfig_PositionFlags_SEQ_NO = 64, + /* Include positional timestamp (from GPS solution) */ + meshtastic_Config_PositionConfig_PositionFlags_TIMESTAMP = 128, + /* Include positional heading + Intended for use with vehicle not walking speeds + walking speeds are likely to be error prone like the compass */ + meshtastic_Config_PositionConfig_PositionFlags_HEADING = 256, + /* Include positional speed + Intended for use with vehicle not walking speeds + walking speeds are likely to be error prone like the compass */ + meshtastic_Config_PositionConfig_PositionFlags_SPEED = 512 +} meshtastic_Config_PositionConfig_PositionFlags; + +typedef enum _meshtastic_Config_NetworkConfig_AddressMode { + /* obtain ip address via DHCP */ + meshtastic_Config_NetworkConfig_AddressMode_DHCP = 0, + /* use static ip address */ + meshtastic_Config_NetworkConfig_AddressMode_STATIC = 1 +} meshtastic_Config_NetworkConfig_AddressMode; + +/* How the GPS coordinates are displayed on the OLED screen. */ +typedef enum _meshtastic_Config_DisplayConfig_GpsCoordinateFormat { + /* GPS coordinates are displayed in the normal decimal degrees format: + DD.DDDDDD DDD.DDDDDD */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DEC = 0, + /* GPS coordinates are displayed in the degrees minutes seconds format: + DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat_DMS = 1, + /* Universal Transverse Mercator format: + ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat_UTM = 2, + /* Military Grid Reference System format: + ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square, + E is easting, N is northing */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat_MGRS = 3, + /* Open Location Code (aka Plus Codes). */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OLC = 4, + /* Ordnance Survey Grid Reference (the National Grid System of the UK). + Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square, + E is the easting, N is the northing */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat_OSGR = 5 +} meshtastic_Config_DisplayConfig_GpsCoordinateFormat; + +/* Unit display preference */ +typedef enum _meshtastic_Config_DisplayConfig_DisplayUnits { + /* Metric (Default) */ + meshtastic_Config_DisplayConfig_DisplayUnits_METRIC = 0, + /* Imperial */ + meshtastic_Config_DisplayConfig_DisplayUnits_IMPERIAL = 1 +} meshtastic_Config_DisplayConfig_DisplayUnits; + +/* Override OLED outo detect with this if it fails. */ +typedef enum _meshtastic_Config_DisplayConfig_OledType { + /* Default / Auto */ + meshtastic_Config_DisplayConfig_OledType_OLED_AUTO = 0, + /* Default / Auto */ + meshtastic_Config_DisplayConfig_OledType_OLED_SSD1306 = 1, + /* Default / Auto */ + meshtastic_Config_DisplayConfig_OledType_OLED_SH1106 = 2 +} meshtastic_Config_DisplayConfig_OledType; + +typedef enum _meshtastic_Config_DisplayConfig_DisplayMode { + /* Default. The old style for the 128x64 OLED screen */ + meshtastic_Config_DisplayConfig_DisplayMode_DEFAULT = 0, + /* Rearrange display elements to cater for bicolor OLED displays */ + meshtastic_Config_DisplayConfig_DisplayMode_TWOCOLOR = 1, + /* Same as TwoColor, but with inverted top bar. Not so good for Epaper displays */ + meshtastic_Config_DisplayConfig_DisplayMode_INVERTED = 2, + /* TFT Full Color Displays (not implemented yet) */ + meshtastic_Config_DisplayConfig_DisplayMode_COLOR = 3 +} meshtastic_Config_DisplayConfig_DisplayMode; + +typedef enum _meshtastic_Config_LoRaConfig_RegionCode { + /* Region is not set */ + meshtastic_Config_LoRaConfig_RegionCode_UNSET = 0, + /* United States */ + meshtastic_Config_LoRaConfig_RegionCode_US = 1, + /* European Union 433mhz */ + meshtastic_Config_LoRaConfig_RegionCode_EU_433 = 2, + /* European Union 433mhz */ + meshtastic_Config_LoRaConfig_RegionCode_EU_868 = 3, + /* China */ + meshtastic_Config_LoRaConfig_RegionCode_CN = 4, + /* Japan */ + meshtastic_Config_LoRaConfig_RegionCode_JP = 5, + /* Australia / New Zealand */ + meshtastic_Config_LoRaConfig_RegionCode_ANZ = 6, + /* Korea */ + meshtastic_Config_LoRaConfig_RegionCode_KR = 7, + /* Taiwan */ + meshtastic_Config_LoRaConfig_RegionCode_TW = 8, + /* Russia */ + meshtastic_Config_LoRaConfig_RegionCode_RU = 9, + /* India */ + meshtastic_Config_LoRaConfig_RegionCode_IN = 10, + /* New Zealand 865mhz */ + meshtastic_Config_LoRaConfig_RegionCode_NZ_865 = 11, + /* Thailand */ + meshtastic_Config_LoRaConfig_RegionCode_TH = 12, + /* WLAN Band */ + meshtastic_Config_LoRaConfig_RegionCode_LORA_24 = 13, + /* Ukraine 433mhz */ + meshtastic_Config_LoRaConfig_RegionCode_UA_433 = 14, + /* Ukraine 868mhz */ + meshtastic_Config_LoRaConfig_RegionCode_UA_868 = 15 +} meshtastic_Config_LoRaConfig_RegionCode; + +/* Standard predefined channel settings + Note: these mappings must match ModemPreset Choice in the device code. */ +typedef enum _meshtastic_Config_LoRaConfig_ModemPreset { + /* Long Range - Fast */ + meshtastic_Config_LoRaConfig_ModemPreset_LONG_FAST = 0, + /* Long Range - Slow */ + meshtastic_Config_LoRaConfig_ModemPreset_LONG_SLOW = 1, + /* Very Long Range - Slow */ + meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW = 2, + /* Medium Range - Slow */ + meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_SLOW = 3, + /* Medium Range - Fast */ + meshtastic_Config_LoRaConfig_ModemPreset_MEDIUM_FAST = 4, + /* Short Range - Slow */ + meshtastic_Config_LoRaConfig_ModemPreset_SHORT_SLOW = 5, + /* Short Range - Fast */ + meshtastic_Config_LoRaConfig_ModemPreset_SHORT_FAST = 6 +} meshtastic_Config_LoRaConfig_ModemPreset; + +typedef enum _meshtastic_Config_BluetoothConfig_PairingMode { + /* Device generates a random pin that will be shown on the screen of the device for pairing */ + meshtastic_Config_BluetoothConfig_PairingMode_RANDOM_PIN = 0, + /* Device requires a specified fixed pin for pairing */ + meshtastic_Config_BluetoothConfig_PairingMode_FIXED_PIN = 1, + /* Device requires no pin for pairing */ + meshtastic_Config_BluetoothConfig_PairingMode_NO_PIN = 2 +} meshtastic_Config_BluetoothConfig_PairingMode; + +/* Struct definitions */ +/* Configuration */ +typedef struct _meshtastic_Config_DeviceConfig { + /* Sets the role of node */ + meshtastic_Config_DeviceConfig_Role role; + /* Disabling this will disable the SerialConsole by not initilizing the StreamAPI */ + bool serial_enabled; + /* By default we turn off logging as soon as an API client connects (to keep shared serial link quiet). + Set this to true to leave the debug log outputting even when API is active. */ + bool debug_log_enabled; + /* For boards without a hard wired button, this is the pin number that will be used + Boards that have more than one button can swap the function with this one. defaults to BUTTON_PIN if defined. */ + uint32_t button_gpio; + /* For boards without a PWM buzzer, this is the pin number that will be used + Defaults to PIN_BUZZER if defined. */ + uint32_t buzzer_gpio; +} meshtastic_Config_DeviceConfig; + +/* Position Config */ +typedef struct _meshtastic_Config_PositionConfig { + /* We should send our position this often (but only if it has changed significantly) + Defaults to 15 minutes */ + uint32_t position_broadcast_secs; + /* Adaptive position braoadcast, which is now the default. */ + bool position_broadcast_smart_enabled; + /* If set, this node is at a fixed position. + We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node. + The lat/lon/alt can be set by an internal GPS or with the help of the app. */ + bool fixed_position; + /* Is GPS enabled for this node? */ + bool gps_enabled; + /* How often should we try to get GPS position (in seconds) + or zero for the default of once every 30 seconds + or a very large value (maxint) to update only once at boot. */ + uint32_t gps_update_interval; + /* How long should we try to get our position during each gps_update_interval attempt? (in seconds) + Or if zero, use the default of 30 seconds. + If we don't get a new gps fix in that time, the gps will be put into sleep until the next gps_update_rate + window. */ + uint32_t gps_attempt_time; + /* Bit field of boolean configuration options for POSITION messages + (bitwise OR of PositionFlags) */ + uint32_t position_flags; + /* (Re)define GPS_RX_PIN for your board. */ + uint32_t rx_gpio; + /* (Re)define GPS_TX_PIN for your board. */ + uint32_t tx_gpio; +} meshtastic_Config_PositionConfig; + +/* Power Config\ + See [Power Config](/docs/settings/config/power) for additional power config details. */ +typedef struct _meshtastic_Config_PowerConfig { + /* If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in + we should try to minimize power consumption as much as possible. + YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case). + Advanced Option */ + bool is_power_saving; + /* If non-zero, the device will fully power off this many seconds after external power is removed. */ + uint32_t on_battery_shutdown_after_secs; + /* Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k) + Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation. + Should be set to floating point value between 2 and 4 + Fixes issues on Heltec v2 */ + float adc_multiplier_override; + /* Wait Bluetooth Seconds + The number of seconds for to wait before turning off BLE in No Bluetooth states + 0 for default of 1 minute */ + uint32_t wait_bluetooth_secs; + /* Mesh Super Deep Sleep Timeout Seconds + While in Light Sleep if this value is exceeded we will lower into super deep sleep + for sds_secs (default 1 year) or a button press + 0 for default of two hours, MAXUINT for disabled */ + uint32_t mesh_sds_timeout_secs; + /* Super Deep Sleep Seconds + While in Light Sleep if mesh_sds_timeout_secs is exceeded we will lower into super deep sleep + for this value (default 1 year) or a button press + 0 for default of one year */ + uint32_t sds_secs; + /* Light Sleep Seconds + In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on + ESP32 Only + 0 for default of 300 */ + uint32_t ls_secs; + /* Minimum Wake Seconds + While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value + 0 for default of 10 seconds */ + uint32_t min_wake_secs; +} meshtastic_Config_PowerConfig; + +typedef struct _meshtastic_Config_NetworkConfig_IpV4Config { + /* Static IP address */ + uint32_t ip; + /* Static gateway address */ + uint32_t gateway; + /* Static subnet mask */ + uint32_t subnet; + /* Static DNS server address */ + uint32_t dns; +} meshtastic_Config_NetworkConfig_IpV4Config; + +/* Network Config */ +typedef struct _meshtastic_Config_NetworkConfig { + /* Enable WiFi (disables Bluetooth) */ + bool wifi_enabled; + /* If set, this node will try to join the specified wifi network and + acquire an address via DHCP */ + char wifi_ssid[33]; + /* If set, will be use to authenticate to the named wifi */ + char wifi_psk[64]; + /* NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org` */ + char ntp_server[33]; + /* Enable Ethernet */ + bool eth_enabled; + /* acquire an address via DHCP or assign static */ + meshtastic_Config_NetworkConfig_AddressMode address_mode; + /* struct to keep static address */ + bool has_ipv4_config; + meshtastic_Config_NetworkConfig_IpV4Config ipv4_config; +} meshtastic_Config_NetworkConfig; + +/* Display Config */ +typedef struct _meshtastic_Config_DisplayConfig { + /* Number of seconds the screen stays on after pressing the user button or receiving a message + 0 for default of one minute MAXUINT for always on */ + uint32_t screen_on_secs; + /* How the GPS coordinates are formatted on the OLED screen. */ + meshtastic_Config_DisplayConfig_GpsCoordinateFormat gps_format; + /* Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. + Potentially useful for devices without user buttons. */ + uint32_t auto_screen_carousel_secs; + /* If this is set, the displayed compass will always point north. if unset, the old behaviour + (top of display is heading direction) is used. */ + bool compass_north_top; + /* Flip screen vertically, for cases that mount the screen upside down */ + bool flip_screen; + /* Perferred display units */ + meshtastic_Config_DisplayConfig_DisplayUnits units; + /* Override auto-detect in screen */ + meshtastic_Config_DisplayConfig_OledType oled; + /* Display Mode */ + meshtastic_Config_DisplayConfig_DisplayMode displaymode; + /* Print first line in pseudo-bold? FALSE is original style, TRUE is bold */ + bool heading_bold; +} meshtastic_Config_DisplayConfig; + +/* Lora Config */ +typedef struct _meshtastic_Config_LoRaConfig { + /* When enabled, the `modem_preset` fields will be adheared to, else the `bandwidth`/`spread_factor`/`coding_rate` + will be taked from their respective manually defined fields */ + bool use_preset; + /* Either modem_config or bandwidth/spreading/coding will be specified - NOT BOTH. + As a heuristic: If bandwidth is specified, do not use modem_config. + Because protobufs take ZERO space when the value is zero this works out nicely. + This value is replaced by bandwidth/spread_factor/coding_rate. + If you'd like to experiment with other options add them to MeshRadio.cpp in the device code. */ + meshtastic_Config_LoRaConfig_ModemPreset modem_preset; + /* Bandwidth in MHz + Certain bandwidth numbers are 'special' and will be converted to the + appropriate floating point value: 31 -> 31.25MHz */ + uint16_t bandwidth; + /* A number from 7 to 12. + Indicates number of chirps per symbol as 1< +#include "meshtastic/config.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Struct definitions */ +/* Device metadata response */ +typedef struct _meshtastic_DeviceMetadata { + /* Device firmware version string */ + char firmware_version[18]; + /* Device state version */ + uint32_t device_state_version; + /* Indicates whether the device can shutdown CPU natively or via power management chip */ + bool canShutdown; + /* Indicates that the device has native wifi capability */ + bool hasWifi; + /* Indicates that the device has native bluetooth capability */ + bool hasBluetooth; + /* Indicates that the device has an ethernet peripheral */ + bool hasEthernet; + /* Indicates that the device's role in the mesh */ + meshtastic_Config_DeviceConfig_Role role; + /* Indicates the device's current enabled position flags */ + meshtastic_Config_PositionConfig_PositionFlags position_flags; +} meshtastic_DeviceMetadata; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initializer values for message structs */ +#define meshtastic_DeviceMetadata_init_default {"", 0, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_Role_MIN, _meshtastic_Config_PositionConfig_PositionFlags_MIN} +#define meshtastic_DeviceMetadata_init_zero {"", 0, 0, 0, 0, 0, _meshtastic_Config_DeviceConfig_Role_MIN, _meshtastic_Config_PositionConfig_PositionFlags_MIN} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_DeviceMetadata_firmware_version_tag 1 +#define meshtastic_DeviceMetadata_device_state_version_tag 2 +#define meshtastic_DeviceMetadata_canShutdown_tag 3 +#define meshtastic_DeviceMetadata_hasWifi_tag 4 +#define meshtastic_DeviceMetadata_hasBluetooth_tag 5 +#define meshtastic_DeviceMetadata_hasEthernet_tag 6 +#define meshtastic_DeviceMetadata_role_tag 7 +#define meshtastic_DeviceMetadata_position_flags_tag 8 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_DeviceMetadata_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, STRING, firmware_version, 1) \ +X(a, STATIC, SINGULAR, UINT32, device_state_version, 2) \ +X(a, STATIC, SINGULAR, BOOL, canShutdown, 3) \ +X(a, STATIC, SINGULAR, BOOL, hasWifi, 4) \ +X(a, STATIC, SINGULAR, BOOL, hasBluetooth, 5) \ +X(a, STATIC, SINGULAR, BOOL, hasEthernet, 6) \ +X(a, STATIC, SINGULAR, UENUM, role, 7) \ +X(a, STATIC, SINGULAR, UENUM, position_flags, 8) +#define meshtastic_DeviceMetadata_CALLBACK NULL +#define meshtastic_DeviceMetadata_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_DeviceMetadata_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_DeviceMetadata_fields &meshtastic_DeviceMetadata_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_DeviceMetadata_size 38 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/deviceonly.pb.c b/src/mesh/generated/meshtastic/deviceonly.pb.c new file mode 100644 index 000000000..f3d27d086 --- /dev/null +++ b/src/mesh/generated/meshtastic/deviceonly.pb.c @@ -0,0 +1,19 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/deviceonly.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_DeviceState, meshtastic_DeviceState, 4) + + +PB_BIND(meshtastic_ChannelFile, meshtastic_ChannelFile, 2) + + +PB_BIND(meshtastic_OEMStore, meshtastic_OEMStore, 2) + + + + diff --git a/src/mesh/generated/meshtastic/deviceonly.pb.h b/src/mesh/generated/meshtastic/deviceonly.pb.h new file mode 100644 index 000000000..842431b28 --- /dev/null +++ b/src/mesh/generated/meshtastic/deviceonly.pb.h @@ -0,0 +1,184 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_DEVICEONLY_PB_H_INCLUDED +#include +#include "meshtastic/channel.pb.h" +#include "meshtastic/mesh.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* TODO: REPLACE */ +typedef enum _meshtastic_ScreenFonts { + /* TODO: REPLACE */ + meshtastic_ScreenFonts_FONT_SMALL = 0, + /* TODO: REPLACE */ + meshtastic_ScreenFonts_FONT_MEDIUM = 1, + /* TODO: REPLACE */ + meshtastic_ScreenFonts_FONT_LARGE = 2 +} meshtastic_ScreenFonts; + +/* Struct definitions */ +/* This message is never sent over the wire, but it is used for serializing DB + state to flash in the device code + FIXME, since we write this each time we enter deep sleep (and have infinite + flash) it would be better to use some sort of append only data structure for + the receive queue and use the preferences store for the other stuff */ +typedef struct _meshtastic_DeviceState { + /* Read only settings/info about this node */ + bool has_my_node; + meshtastic_MyNodeInfo my_node; + /* My owner info */ + bool has_owner; + meshtastic_User owner; + /* TODO: REPLACE */ + pb_size_t node_db_count; + meshtastic_NodeInfo node_db[80]; + /* Received packets saved for delivery to the phone */ + pb_size_t receive_queue_count; + meshtastic_MeshPacket receive_queue[1]; + /* We keep the last received text message (only) stored in the device flash, + so we can show it on the screen. + Might be null */ + bool has_rx_text_message; + meshtastic_MeshPacket rx_text_message; + /* A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. */ + uint32_t version; + /* Used only during development. + Indicates developer is testing and changes should never be saved to flash. */ + bool no_save; + /* Some GPSes seem to have bogus settings from the factory, so we always do one factory reset. */ + bool did_gps_reset; +} meshtastic_DeviceState; + +/* The on-disk saved channels */ +typedef struct _meshtastic_ChannelFile { + /* The channels our node knows about */ + pb_size_t channels_count; + meshtastic_Channel channels[8]; + /* A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. */ + uint32_t version; +} meshtastic_ChannelFile; + +typedef PB_BYTES_ARRAY_T(2048) meshtastic_OEMStore_oem_icon_bits_t; +typedef PB_BYTES_ARRAY_T(32) meshtastic_OEMStore_oem_aes_key_t; +/* This can be used for customizing the firmware distribution. If populated, + show a secondary bootup screen with cuatom logo and text for 2.5 seconds. */ +typedef struct _meshtastic_OEMStore { + /* The Logo width in Px */ + uint32_t oem_icon_width; + /* The Logo height in Px */ + uint32_t oem_icon_height; + /* The Logo in xbm bytechar format */ + meshtastic_OEMStore_oem_icon_bits_t oem_icon_bits; + /* Use this font for the OEM text. */ + meshtastic_ScreenFonts oem_font; + /* Use this font for the OEM text. */ + char oem_text[40]; + /* The default device encryption key, 16 or 32 byte */ + meshtastic_OEMStore_oem_aes_key_t oem_aes_key; +} meshtastic_OEMStore; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_ScreenFonts_MIN meshtastic_ScreenFonts_FONT_SMALL +#define _meshtastic_ScreenFonts_MAX meshtastic_ScreenFonts_FONT_LARGE +#define _meshtastic_ScreenFonts_ARRAYSIZE ((meshtastic_ScreenFonts)(meshtastic_ScreenFonts_FONT_LARGE+1)) + + + +#define meshtastic_OEMStore_oem_font_ENUMTYPE meshtastic_ScreenFonts + + +/* Initializer values for message structs */ +#define meshtastic_DeviceState_init_default {false, meshtastic_MyNodeInfo_init_default, false, meshtastic_User_init_default, 0, {meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default, meshtastic_NodeInfo_init_default}, 0, {meshtastic_MeshPacket_init_default}, false, meshtastic_MeshPacket_init_default, 0, 0, 0} +#define meshtastic_ChannelFile_init_default {0, {meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default, meshtastic_Channel_init_default}, 0} +#define meshtastic_OEMStore_init_default {0, 0, {0, {0}}, _meshtastic_ScreenFonts_MIN, "", {0, {0}}} +#define meshtastic_DeviceState_init_zero {false, meshtastic_MyNodeInfo_init_zero, false, meshtastic_User_init_zero, 0, {meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero, meshtastic_NodeInfo_init_zero}, 0, {meshtastic_MeshPacket_init_zero}, false, meshtastic_MeshPacket_init_zero, 0, 0, 0} +#define meshtastic_ChannelFile_init_zero {0, {meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero, meshtastic_Channel_init_zero}, 0} +#define meshtastic_OEMStore_init_zero {0, 0, {0, {0}}, _meshtastic_ScreenFonts_MIN, "", {0, {0}}} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_DeviceState_my_node_tag 2 +#define meshtastic_DeviceState_owner_tag 3 +#define meshtastic_DeviceState_node_db_tag 4 +#define meshtastic_DeviceState_receive_queue_tag 5 +#define meshtastic_DeviceState_rx_text_message_tag 7 +#define meshtastic_DeviceState_version_tag 8 +#define meshtastic_DeviceState_no_save_tag 9 +#define meshtastic_DeviceState_did_gps_reset_tag 11 +#define meshtastic_ChannelFile_channels_tag 1 +#define meshtastic_ChannelFile_version_tag 2 +#define meshtastic_OEMStore_oem_icon_width_tag 1 +#define meshtastic_OEMStore_oem_icon_height_tag 2 +#define meshtastic_OEMStore_oem_icon_bits_tag 3 +#define meshtastic_OEMStore_oem_font_tag 4 +#define meshtastic_OEMStore_oem_text_tag 5 +#define meshtastic_OEMStore_oem_aes_key_tag 6 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_DeviceState_FIELDLIST(X, a) \ +X(a, STATIC, OPTIONAL, MESSAGE, my_node, 2) \ +X(a, STATIC, OPTIONAL, MESSAGE, owner, 3) \ +X(a, STATIC, REPEATED, MESSAGE, node_db, 4) \ +X(a, STATIC, REPEATED, MESSAGE, receive_queue, 5) \ +X(a, STATIC, OPTIONAL, MESSAGE, rx_text_message, 7) \ +X(a, STATIC, SINGULAR, UINT32, version, 8) \ +X(a, STATIC, SINGULAR, BOOL, no_save, 9) \ +X(a, STATIC, SINGULAR, BOOL, did_gps_reset, 11) +#define meshtastic_DeviceState_CALLBACK NULL +#define meshtastic_DeviceState_DEFAULT NULL +#define meshtastic_DeviceState_my_node_MSGTYPE meshtastic_MyNodeInfo +#define meshtastic_DeviceState_owner_MSGTYPE meshtastic_User +#define meshtastic_DeviceState_node_db_MSGTYPE meshtastic_NodeInfo +#define meshtastic_DeviceState_receive_queue_MSGTYPE meshtastic_MeshPacket +#define meshtastic_DeviceState_rx_text_message_MSGTYPE meshtastic_MeshPacket + +#define meshtastic_ChannelFile_FIELDLIST(X, a) \ +X(a, STATIC, REPEATED, MESSAGE, channels, 1) \ +X(a, STATIC, SINGULAR, UINT32, version, 2) +#define meshtastic_ChannelFile_CALLBACK NULL +#define meshtastic_ChannelFile_DEFAULT NULL +#define meshtastic_ChannelFile_channels_MSGTYPE meshtastic_Channel + +#define meshtastic_OEMStore_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, oem_icon_width, 1) \ +X(a, STATIC, SINGULAR, UINT32, oem_icon_height, 2) \ +X(a, STATIC, SINGULAR, BYTES, oem_icon_bits, 3) \ +X(a, STATIC, SINGULAR, UENUM, oem_font, 4) \ +X(a, STATIC, SINGULAR, STRING, oem_text, 5) \ +X(a, STATIC, SINGULAR, BYTES, oem_aes_key, 6) +#define meshtastic_OEMStore_CALLBACK NULL +#define meshtastic_OEMStore_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_DeviceState_msg; +extern const pb_msgdesc_t meshtastic_ChannelFile_msg; +extern const pb_msgdesc_t meshtastic_OEMStore_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_DeviceState_fields &meshtastic_DeviceState_msg +#define meshtastic_ChannelFile_fields &meshtastic_ChannelFile_msg +#define meshtastic_OEMStore_fields &meshtastic_OEMStore_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_ChannelFile_size 638 +#define meshtastic_DeviceState_size 21800 +#define meshtastic_OEMStore_size 2140 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/localonly.pb.c b/src/mesh/generated/meshtastic/localonly.pb.c new file mode 100644 index 000000000..8fc3f1139 --- /dev/null +++ b/src/mesh/generated/meshtastic/localonly.pb.c @@ -0,0 +1,15 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/localonly.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_LocalConfig, meshtastic_LocalConfig, 2) + + +PB_BIND(meshtastic_LocalModuleConfig, meshtastic_LocalModuleConfig, 2) + + + diff --git a/src/mesh/generated/meshtastic/localonly.pb.h b/src/mesh/generated/meshtastic/localonly.pb.h new file mode 100644 index 000000000..4d806ec12 --- /dev/null +++ b/src/mesh/generated/meshtastic/localonly.pb.h @@ -0,0 +1,166 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_LOCALONLY_PB_H_INCLUDED +#include +#include "meshtastic/config.pb.h" +#include "meshtastic/module_config.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Struct definitions */ +typedef struct _meshtastic_LocalConfig { + /* The part of the config that is specific to the Device */ + bool has_device; + meshtastic_Config_DeviceConfig device; + /* The part of the config that is specific to the GPS Position */ + bool has_position; + meshtastic_Config_PositionConfig position; + /* The part of the config that is specific to the Power settings */ + bool has_power; + meshtastic_Config_PowerConfig power; + /* The part of the config that is specific to the Wifi Settings */ + bool has_network; + meshtastic_Config_NetworkConfig network; + /* The part of the config that is specific to the Display */ + bool has_display; + meshtastic_Config_DisplayConfig display; + /* The part of the config that is specific to the Lora Radio */ + bool has_lora; + meshtastic_Config_LoRaConfig lora; + /* The part of the config that is specific to the Bluetooth settings */ + bool has_bluetooth; + meshtastic_Config_BluetoothConfig bluetooth; + /* A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. */ + uint32_t version; +} meshtastic_LocalConfig; + +typedef struct _meshtastic_LocalModuleConfig { + /* The part of the config that is specific to the MQTT module */ + bool has_mqtt; + meshtastic_ModuleConfig_MQTTConfig mqtt; + /* The part of the config that is specific to the Serial module */ + bool has_serial; + meshtastic_ModuleConfig_SerialConfig serial; + /* The part of the config that is specific to the ExternalNotification module */ + bool has_external_notification; + meshtastic_ModuleConfig_ExternalNotificationConfig external_notification; + /* The part of the config that is specific to the Store & Forward module */ + bool has_store_forward; + meshtastic_ModuleConfig_StoreForwardConfig store_forward; + /* The part of the config that is specific to the RangeTest module */ + bool has_range_test; + meshtastic_ModuleConfig_RangeTestConfig range_test; + /* The part of the config that is specific to the Telemetry module */ + bool has_telemetry; + meshtastic_ModuleConfig_TelemetryConfig telemetry; + /* The part of the config that is specific to the Canned Message module */ + bool has_canned_message; + meshtastic_ModuleConfig_CannedMessageConfig canned_message; + /* A version integer used to invalidate old save files when we make + incompatible changes This integer is set at build time and is private to + NodeDB.cpp in the device code. */ + uint32_t version; + /* The part of the config that is specific to the Audio module */ + bool has_audio; + meshtastic_ModuleConfig_AudioConfig audio; + /* The part of the config that is specific to the Remote Hardware module */ + bool has_remote_hardware; + meshtastic_ModuleConfig_RemoteHardwareConfig remote_hardware; +} meshtastic_LocalModuleConfig; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initializer values for message structs */ +#define meshtastic_LocalConfig_init_default {false, meshtastic_Config_DeviceConfig_init_default, false, meshtastic_Config_PositionConfig_init_default, false, meshtastic_Config_PowerConfig_init_default, false, meshtastic_Config_NetworkConfig_init_default, false, meshtastic_Config_DisplayConfig_init_default, false, meshtastic_Config_LoRaConfig_init_default, false, meshtastic_Config_BluetoothConfig_init_default, 0} +#define meshtastic_LocalModuleConfig_init_default {false, meshtastic_ModuleConfig_MQTTConfig_init_default, false, meshtastic_ModuleConfig_SerialConfig_init_default, false, meshtastic_ModuleConfig_ExternalNotificationConfig_init_default, false, meshtastic_ModuleConfig_StoreForwardConfig_init_default, false, meshtastic_ModuleConfig_RangeTestConfig_init_default, false, meshtastic_ModuleConfig_TelemetryConfig_init_default, false, meshtastic_ModuleConfig_CannedMessageConfig_init_default, 0, false, meshtastic_ModuleConfig_AudioConfig_init_default, false, meshtastic_ModuleConfig_RemoteHardwareConfig_init_default} +#define meshtastic_LocalConfig_init_zero {false, meshtastic_Config_DeviceConfig_init_zero, false, meshtastic_Config_PositionConfig_init_zero, false, meshtastic_Config_PowerConfig_init_zero, false, meshtastic_Config_NetworkConfig_init_zero, false, meshtastic_Config_DisplayConfig_init_zero, false, meshtastic_Config_LoRaConfig_init_zero, false, meshtastic_Config_BluetoothConfig_init_zero, 0} +#define meshtastic_LocalModuleConfig_init_zero {false, meshtastic_ModuleConfig_MQTTConfig_init_zero, false, meshtastic_ModuleConfig_SerialConfig_init_zero, false, meshtastic_ModuleConfig_ExternalNotificationConfig_init_zero, false, meshtastic_ModuleConfig_StoreForwardConfig_init_zero, false, meshtastic_ModuleConfig_RangeTestConfig_init_zero, false, meshtastic_ModuleConfig_TelemetryConfig_init_zero, false, meshtastic_ModuleConfig_CannedMessageConfig_init_zero, 0, false, meshtastic_ModuleConfig_AudioConfig_init_zero, false, meshtastic_ModuleConfig_RemoteHardwareConfig_init_zero} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_LocalConfig_device_tag 1 +#define meshtastic_LocalConfig_position_tag 2 +#define meshtastic_LocalConfig_power_tag 3 +#define meshtastic_LocalConfig_network_tag 4 +#define meshtastic_LocalConfig_display_tag 5 +#define meshtastic_LocalConfig_lora_tag 6 +#define meshtastic_LocalConfig_bluetooth_tag 7 +#define meshtastic_LocalConfig_version_tag 8 +#define meshtastic_LocalModuleConfig_mqtt_tag 1 +#define meshtastic_LocalModuleConfig_serial_tag 2 +#define meshtastic_LocalModuleConfig_external_notification_tag 3 +#define meshtastic_LocalModuleConfig_store_forward_tag 4 +#define meshtastic_LocalModuleConfig_range_test_tag 5 +#define meshtastic_LocalModuleConfig_telemetry_tag 6 +#define meshtastic_LocalModuleConfig_canned_message_tag 7 +#define meshtastic_LocalModuleConfig_version_tag 8 +#define meshtastic_LocalModuleConfig_audio_tag 9 +#define meshtastic_LocalModuleConfig_remote_hardware_tag 10 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_LocalConfig_FIELDLIST(X, a) \ +X(a, STATIC, OPTIONAL, MESSAGE, device, 1) \ +X(a, STATIC, OPTIONAL, MESSAGE, position, 2) \ +X(a, STATIC, OPTIONAL, MESSAGE, power, 3) \ +X(a, STATIC, OPTIONAL, MESSAGE, network, 4) \ +X(a, STATIC, OPTIONAL, MESSAGE, display, 5) \ +X(a, STATIC, OPTIONAL, MESSAGE, lora, 6) \ +X(a, STATIC, OPTIONAL, MESSAGE, bluetooth, 7) \ +X(a, STATIC, SINGULAR, UINT32, version, 8) +#define meshtastic_LocalConfig_CALLBACK NULL +#define meshtastic_LocalConfig_DEFAULT NULL +#define meshtastic_LocalConfig_device_MSGTYPE meshtastic_Config_DeviceConfig +#define meshtastic_LocalConfig_position_MSGTYPE meshtastic_Config_PositionConfig +#define meshtastic_LocalConfig_power_MSGTYPE meshtastic_Config_PowerConfig +#define meshtastic_LocalConfig_network_MSGTYPE meshtastic_Config_NetworkConfig +#define meshtastic_LocalConfig_display_MSGTYPE meshtastic_Config_DisplayConfig +#define meshtastic_LocalConfig_lora_MSGTYPE meshtastic_Config_LoRaConfig +#define meshtastic_LocalConfig_bluetooth_MSGTYPE meshtastic_Config_BluetoothConfig + +#define meshtastic_LocalModuleConfig_FIELDLIST(X, a) \ +X(a, STATIC, OPTIONAL, MESSAGE, mqtt, 1) \ +X(a, STATIC, OPTIONAL, MESSAGE, serial, 2) \ +X(a, STATIC, OPTIONAL, MESSAGE, external_notification, 3) \ +X(a, STATIC, OPTIONAL, MESSAGE, store_forward, 4) \ +X(a, STATIC, OPTIONAL, MESSAGE, range_test, 5) \ +X(a, STATIC, OPTIONAL, MESSAGE, telemetry, 6) \ +X(a, STATIC, OPTIONAL, MESSAGE, canned_message, 7) \ +X(a, STATIC, SINGULAR, UINT32, version, 8) \ +X(a, STATIC, OPTIONAL, MESSAGE, audio, 9) \ +X(a, STATIC, OPTIONAL, MESSAGE, remote_hardware, 10) +#define meshtastic_LocalModuleConfig_CALLBACK NULL +#define meshtastic_LocalModuleConfig_DEFAULT NULL +#define meshtastic_LocalModuleConfig_mqtt_MSGTYPE meshtastic_ModuleConfig_MQTTConfig +#define meshtastic_LocalModuleConfig_serial_MSGTYPE meshtastic_ModuleConfig_SerialConfig +#define meshtastic_LocalModuleConfig_external_notification_MSGTYPE meshtastic_ModuleConfig_ExternalNotificationConfig +#define meshtastic_LocalModuleConfig_store_forward_MSGTYPE meshtastic_ModuleConfig_StoreForwardConfig +#define meshtastic_LocalModuleConfig_range_test_MSGTYPE meshtastic_ModuleConfig_RangeTestConfig +#define meshtastic_LocalModuleConfig_telemetry_MSGTYPE meshtastic_ModuleConfig_TelemetryConfig +#define meshtastic_LocalModuleConfig_canned_message_MSGTYPE meshtastic_ModuleConfig_CannedMessageConfig +#define meshtastic_LocalModuleConfig_audio_MSGTYPE meshtastic_ModuleConfig_AudioConfig +#define meshtastic_LocalModuleConfig_remote_hardware_MSGTYPE meshtastic_ModuleConfig_RemoteHardwareConfig + +extern const pb_msgdesc_t meshtastic_LocalConfig_msg; +extern const pb_msgdesc_t meshtastic_LocalModuleConfig_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_LocalConfig_fields &meshtastic_LocalConfig_msg +#define meshtastic_LocalModuleConfig_fields &meshtastic_LocalModuleConfig_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_LocalConfig_size 391 +#define meshtastic_LocalModuleConfig_size 412 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/mesh.pb.c b/src/mesh/generated/meshtastic/mesh.pb.c new file mode 100644 index 000000000..977e3916f --- /dev/null +++ b/src/mesh/generated/meshtastic/mesh.pb.c @@ -0,0 +1,60 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/mesh.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_Position, meshtastic_Position, AUTO) + + +PB_BIND(meshtastic_User, meshtastic_User, AUTO) + + +PB_BIND(meshtastic_RouteDiscovery, meshtastic_RouteDiscovery, AUTO) + + +PB_BIND(meshtastic_Routing, meshtastic_Routing, AUTO) + + +PB_BIND(meshtastic_Data, meshtastic_Data, 2) + + +PB_BIND(meshtastic_Waypoint, meshtastic_Waypoint, AUTO) + + +PB_BIND(meshtastic_MeshPacket, meshtastic_MeshPacket, 2) + + +PB_BIND(meshtastic_NodeInfo, meshtastic_NodeInfo, AUTO) + + +PB_BIND(meshtastic_MyNodeInfo, meshtastic_MyNodeInfo, AUTO) + + +PB_BIND(meshtastic_LogRecord, meshtastic_LogRecord, AUTO) + + +PB_BIND(meshtastic_QueueStatus, meshtastic_QueueStatus, AUTO) + + +PB_BIND(meshtastic_FromRadio, meshtastic_FromRadio, 2) + + +PB_BIND(meshtastic_ToRadio, meshtastic_ToRadio, 2) + + +PB_BIND(meshtastic_Compressed, meshtastic_Compressed, AUTO) + + + + + + + + + + + + diff --git a/src/mesh/generated/meshtastic/mesh.pb.h b/src/mesh/generated/meshtastic/mesh.pb.h new file mode 100644 index 000000000..0a8cf5cfe --- /dev/null +++ b/src/mesh/generated/meshtastic/mesh.pb.h @@ -0,0 +1,1158 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_MESH_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_MESH_PB_H_INCLUDED +#include +#include "meshtastic/channel.pb.h" +#include "meshtastic/config.pb.h" +#include "meshtastic/module_config.pb.h" +#include "meshtastic/portnums.pb.h" +#include "meshtastic/telemetry.pb.h" +#include "meshtastic/xmodem.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* Note: these enum names must EXACTLY match the string used in the device + bin/build-all.sh script. + Because they will be used to find firmware filenames in the android app for OTA updates. + To match the old style filenames, _ is converted to -, p is converted to . */ +typedef enum _meshtastic_HardwareModel { + /* TODO: REPLACE */ + meshtastic_HardwareModel_UNSET = 0, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TLORA_V2 = 1, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TLORA_V1 = 2, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TLORA_V2_1_1P6 = 3, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TBEAM = 4, + /* The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13 + (see HELTEC_V2 for the new version). */ + meshtastic_HardwareModel_HELTEC_V2_0 = 5, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TBEAM_V0P7 = 6, + /* TODO: REPLACE */ + meshtastic_HardwareModel_T_ECHO = 7, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TLORA_V1_1P3 = 8, + /* TODO: REPLACE */ + meshtastic_HardwareModel_RAK4631 = 9, + /* The new version of the heltec WiFi_Lora_32_V2 board that has battery sensing hooked to GPIO 37. + Sadly they did not update anything on the silkscreen to identify this board */ + meshtastic_HardwareModel_HELTEC_V2_1 = 10, + /* Ancient heltec WiFi_Lora_32 board */ + meshtastic_HardwareModel_HELTEC_V1 = 11, + /* New T-BEAM with ESP32-S3 CPU */ + meshtastic_HardwareModel_LILYGO_TBEAM_S3_CORE = 12, + /* RAK WisBlock ESP32 core: https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/ */ + meshtastic_HardwareModel_RAK11200 = 13, + /* B&Q Consulting Nano Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:nano */ + meshtastic_HardwareModel_NANO_G1 = 14, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TLORA_V2_1_1P8 = 15, + /* TODO: REPLACE */ + meshtastic_HardwareModel_TLORA_T3_S3 = 16, + /* B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ + meshtastic_HardwareModel_STATION_G1 = 25, + /* Less common/prototype boards listed here (needs one more byte over the air) */ + meshtastic_HardwareModel_LORA_RELAY_V1 = 32, + /* TODO: REPLACE */ + meshtastic_HardwareModel_NRF52840DK = 33, + /* TODO: REPLACE */ + meshtastic_HardwareModel_PPR = 34, + /* TODO: REPLACE */ + meshtastic_HardwareModel_GENIEBLOCKS = 35, + /* TODO: REPLACE */ + meshtastic_HardwareModel_NRF52_UNKNOWN = 36, + /* TODO: REPLACE */ + meshtastic_HardwareModel_PORTDUINO = 37, + /* The simulator built into the android app */ + meshtastic_HardwareModel_ANDROID_SIM = 38, + /* Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics */ + meshtastic_HardwareModel_DIY_V1 = 39, + /* nRF52840 Dongle : https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle/ */ + meshtastic_HardwareModel_NRF52840_PCA10059 = 40, + /* Custom Disaster Radio esp32 v3 device https://github.com/sudomesh/disaster-radio/tree/master/hardware/board_esp32_v3 */ + meshtastic_HardwareModel_DR_DEV = 41, + /* M5 esp32 based MCU modules with enclosure, TFT and LORA Shields. All Variants (Basic, Core, Fire, Core2, Paper) https://m5stack.com/ */ + meshtastic_HardwareModel_M5STACK = 42, + /* New Heltec LoRA32 with ESP32-S3 CPU */ + meshtastic_HardwareModel_HELTEC_V3 = 43, + /* New Heltec Wireless Stick Lite with ESP32-S3 CPU */ + meshtastic_HardwareModel_HELTEC_WSL_V3 = 44, + /* New BETAFPV ELRS Micro TX Module 2.4G with ESP32 CPU */ + meshtastic_HardwareModel_BETAFPV_2400_TX = 45, + /* Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. */ + meshtastic_HardwareModel_PRIVATE_HW = 255 +} meshtastic_HardwareModel; + +/* Shared constants between device and phone */ +typedef enum _meshtastic_Constants { + /* First enum must be zero, and we are just using this enum to + pass int constants between two very different environments */ + meshtastic_Constants_ZERO = 0, + /* From mesh.options + note: this payload length is ONLY the bytes that are sent inside of the Data protobuf (excluding protobuf overhead). The 16 byte header is + outside of this envelope */ + meshtastic_Constants_DATA_PAYLOAD_LEN = 237 +} meshtastic_Constants; + +/* Error codes for critical errors + The device might report these fault codes on the screen. + If you encounter a fault code, please post on the meshtastic.discourse.group + and we'll try to help. */ +typedef enum _meshtastic_CriticalErrorCode { + /* TODO: REPLACE */ + meshtastic_CriticalErrorCode_NONE = 0, + /* A software bug was detected while trying to send lora */ + meshtastic_CriticalErrorCode_TX_WATCHDOG = 1, + /* A software bug was detected on entry to sleep */ + meshtastic_CriticalErrorCode_SLEEP_ENTER_WAIT = 2, + /* No Lora radio hardware could be found */ + meshtastic_CriticalErrorCode_NO_RADIO = 3, + /* Not normally used */ + meshtastic_CriticalErrorCode_UNSPECIFIED = 4, + /* We failed while configuring a UBlox GPS */ + meshtastic_CriticalErrorCode_UBLOX_UNIT_FAILED = 5, + /* This board was expected to have a power management chip and it is missing or broken */ + meshtastic_CriticalErrorCode_NO_AXP192 = 6, + /* The channel tried to set a radio setting which is not supported by this chipset, + radio comms settings are now undefined. */ + meshtastic_CriticalErrorCode_INVALID_RADIO_SETTING = 7, + /* Radio transmit hardware failure. We sent data to the radio chip, but it didn't + reply with an interrupt. */ + meshtastic_CriticalErrorCode_TRANSMIT_FAILED = 8, + /* We detected that the main CPU voltage dropped below the minumum acceptable value */ + meshtastic_CriticalErrorCode_BROWNOUT = 9, + /* Selftest of SX1262 radio chip failed */ + meshtastic_CriticalErrorCode_SX1262_FAILURE = 10, + /* A (likely software but possibly hardware) failure was detected while trying to send packets. + If this occurs on your board, please post in the forum so that we can ask you to collect some information to allow fixing this bug */ + meshtastic_CriticalErrorCode_RADIO_SPI_BUG = 11 +} meshtastic_CriticalErrorCode; + +/* How the location was acquired: manual, onboard GPS, external (EUD) GPS */ +typedef enum _meshtastic_Position_LocSource { + /* TODO: REPLACE */ + meshtastic_Position_LocSource_LOC_UNSET = 0, + /* TODO: REPLACE */ + meshtastic_Position_LocSource_LOC_MANUAL = 1, + /* TODO: REPLACE */ + meshtastic_Position_LocSource_LOC_INTERNAL = 2, + /* TODO: REPLACE */ + meshtastic_Position_LocSource_LOC_EXTERNAL = 3 +} meshtastic_Position_LocSource; + +/* How the altitude was acquired: manual, GPS int/ext, etc + Default: same as location_source if present */ +typedef enum _meshtastic_Position_AltSource { + /* TODO: REPLACE */ + meshtastic_Position_AltSource_ALT_UNSET = 0, + /* TODO: REPLACE */ + meshtastic_Position_AltSource_ALT_MANUAL = 1, + /* TODO: REPLACE */ + meshtastic_Position_AltSource_ALT_INTERNAL = 2, + /* TODO: REPLACE */ + meshtastic_Position_AltSource_ALT_EXTERNAL = 3, + /* TODO: REPLACE */ + meshtastic_Position_AltSource_ALT_BAROMETRIC = 4 +} meshtastic_Position_AltSource; + +/* A failure in delivering a message (usually used for routing control messages, but might be provided in addition to ack.fail_id to provide + details on the type of failure). */ +typedef enum _meshtastic_Routing_Error { + /* This message is not a failure */ + meshtastic_Routing_Error_NONE = 0, + /* Our node doesn't have a route to the requested destination anymore. */ + meshtastic_Routing_Error_NO_ROUTE = 1, + /* We received a nak while trying to forward on your behalf */ + meshtastic_Routing_Error_GOT_NAK = 2, + /* TODO: REPLACE */ + meshtastic_Routing_Error_TIMEOUT = 3, + /* No suitable interface could be found for delivering this packet */ + meshtastic_Routing_Error_NO_INTERFACE = 4, + /* We reached the max retransmission count (typically for naive flood routing) */ + meshtastic_Routing_Error_MAX_RETRANSMIT = 5, + /* No suitable channel was found for sending this packet (i.e. was requested channel index disabled?) */ + meshtastic_Routing_Error_NO_CHANNEL = 6, + /* The packet was too big for sending (exceeds interface MTU after encoding) */ + meshtastic_Routing_Error_TOO_LARGE = 7, + /* The request had want_response set, the request reached the destination node, but no service on that node wants to send a response + (possibly due to bad channel permissions) */ + meshtastic_Routing_Error_NO_RESPONSE = 8, + /* Cannot send currently because duty cycle regulations will be violated. */ + meshtastic_Routing_Error_DUTY_CYCLE_LIMIT = 9, + /* The application layer service on the remote node received your request, but considered your request somehow invalid */ + meshtastic_Routing_Error_BAD_REQUEST = 32, + /* The application layer service on the remote node received your request, but considered your request not authorized + (i.e you did not send the request on the required bound channel) */ + meshtastic_Routing_Error_NOT_AUTHORIZED = 33 +} meshtastic_Routing_Error; + +/* The priority of this message for sending. + Higher priorities are sent first (when managing the transmit queue). + This field is never sent over the air, it is only used internally inside of a local device node. + API clients (either on the local node or connected directly to the node) + can set this parameter if necessary. + (values must be <= 127 to keep protobuf field to one byte in size. + Detailed background on this field: + I noticed a funny side effect of lora being so slow: Usually when making + a protocol there isn’t much need to use message priority to change the order + of transmission (because interfaces are fairly fast). + But for lora where packets can take a few seconds each, it is very important + to make sure that critical packets are sent ASAP. + In the case of meshtastic that means we want to send protocol acks as soon as possible + (to prevent unneeded retransmissions), we want routing messages to be sent next, + then messages marked as reliable and finally ‘background’ packets like periodic position updates. + So I bit the bullet and implemented a new (internal - not sent over the air) + field in MeshPacket called ‘priority’. + And the transmission queue in the router object is now a priority queue. */ +typedef enum _meshtastic_MeshPacket_Priority { + /* Treated as Priority.DEFAULT */ + meshtastic_MeshPacket_Priority_UNSET = 0, + /* TODO: REPLACE */ + meshtastic_MeshPacket_Priority_MIN = 1, + /* Background position updates are sent with very low priority - + if the link is super congested they might not go out at all */ + meshtastic_MeshPacket_Priority_BACKGROUND = 10, + /* This priority is used for most messages that don't have a priority set */ + meshtastic_MeshPacket_Priority_DEFAULT = 64, + /* If priority is unset but the message is marked as want_ack, + assume it is important and use a slightly higher priority */ + meshtastic_MeshPacket_Priority_RELIABLE = 70, + /* Ack/naks are sent with very high priority to ensure that retransmission + stops as soon as possible */ + meshtastic_MeshPacket_Priority_ACK = 120, + /* TODO: REPLACE */ + meshtastic_MeshPacket_Priority_MAX = 127 +} meshtastic_MeshPacket_Priority; + +/* Identify if this is a delayed packet */ +typedef enum _meshtastic_MeshPacket_Delayed { + /* If unset, the message is being sent in real time. */ + meshtastic_MeshPacket_Delayed_NO_DELAY = 0, + /* The message is delayed and was originally a broadcast */ + meshtastic_MeshPacket_Delayed_DELAYED_BROADCAST = 1, + /* The message is delayed and was originally a direct message */ + meshtastic_MeshPacket_Delayed_DELAYED_DIRECT = 2 +} meshtastic_MeshPacket_Delayed; + +/* Log levels, chosen to match python logging conventions. */ +typedef enum _meshtastic_LogRecord_Level { + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_UNSET = 0, + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_CRITICAL = 50, + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_ERROR = 40, + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_WARNING = 30, + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_INFO = 20, + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_DEBUG = 10, + /* Log levels, chosen to match python logging conventions. */ + meshtastic_LogRecord_Level_TRACE = 5 +} meshtastic_LogRecord_Level; + +/* Struct definitions */ +/* a gps position */ +typedef struct _meshtastic_Position { + /* The new preferred location encoding, multiply by 1e-7 to get degrees + in floating point */ + int32_t latitude_i; + /* TODO: REPLACE */ + int32_t longitude_i; + /* In meters above MSL (but see issue #359) */ + int32_t altitude; + /* This is usually not sent over the mesh (to save space), but it is sent + from the phone so that the local device can set its RTC If it is sent over + the mesh (because there are devices on the mesh without GPS), it will only + be sent by devices which has a hardware GPS clock. + seconds since 1970 */ + uint32_t time; + /* TODO: REPLACE */ + meshtastic_Position_LocSource location_source; + /* TODO: REPLACE */ + meshtastic_Position_AltSource altitude_source; + /* Positional timestamp (actual timestamp of GPS solution) in integer epoch seconds */ + uint32_t timestamp; + /* Pos. timestamp milliseconds adjustment (rarely available or required) */ + int32_t timestamp_millis_adjust; + /* HAE altitude in meters - can be used instead of MSL altitude */ + int32_t altitude_hae; + /* Geoidal separation in meters */ + int32_t altitude_geoidal_separation; + /* Horizontal, Vertical and Position Dilution of Precision, in 1/100 units + - PDOP is sufficient for most cases + - for higher precision scenarios, HDOP and VDOP can be used instead, + in which case PDOP becomes redundant (PDOP=sqrt(HDOP^2 + VDOP^2)) + TODO: REMOVE/INTEGRATE */ + uint32_t PDOP; + /* TODO: REPLACE */ + uint32_t HDOP; + /* TODO: REPLACE */ + uint32_t VDOP; + /* GPS accuracy (a hardware specific constant) in mm + multiplied with DOP to calculate positional accuracy + Default: "'bout three meters-ish" :) */ + uint32_t gps_accuracy; + /* Ground speed in m/s and True North TRACK in 1/100 degrees + Clarification of terms: + - "track" is the direction of motion (measured in horizontal plane) + - "heading" is where the fuselage points (measured in horizontal plane) + - "yaw" indicates a relative rotation about the vertical axis + TODO: REMOVE/INTEGRATE */ + uint32_t ground_speed; + /* TODO: REPLACE */ + uint32_t ground_track; + /* GPS fix quality (from NMEA GxGGA statement or similar) */ + uint32_t fix_quality; + /* GPS fix type 2D/3D (from NMEA GxGSA statement) */ + uint32_t fix_type; + /* GPS "Satellites in View" number */ + uint32_t sats_in_view; + /* Sensor ID - in case multiple positioning sensors are being used */ + uint32_t sensor_id; + /* Estimated/expected time (in seconds) until next update: + - if we update at fixed intervals of X seconds, use X + - if we update at dynamic intervals (based on relative movement etc), + but "AT LEAST every Y seconds", use Y */ + uint32_t next_update; + /* A sequence number, incremented with each Position message to help + detect lost updates if needed */ + uint32_t seq_number; +} meshtastic_Position; + +/* Broadcast when a newly powered mesh node wants to find a node num it can use + Sent from the phone over bluetooth to set the user id for the owner of this node. + Also sent from nodes to each other when a new node signs on (so all clients can have this info) + The algorithm is as follows: + when a node starts up, it broadcasts their user and the normal flow is for all + other nodes to reply with their User as well (so the new node can build its nodedb) + If a node ever receives a User (not just the first broadcast) message where + the sender node number equals our node number, that indicates a collision has + occurred and the following steps should happen: + If the receiving node (that was already in the mesh)'s macaddr is LOWER than the + new User who just tried to sign in: it gets to keep its nodenum. + We send a broadcast message of OUR User (we use a broadcast so that the other node can + receive our message, considering we have the same id - it also serves to let + observers correct their nodedb) - this case is rare so it should be okay. + If any node receives a User where the macaddr is GTE than their local macaddr, + they have been vetoed and should pick a new random nodenum (filtering against + whatever it knows about the nodedb) and rebroadcast their User. + A few nodenums are reserved and will never be requested: + 0xff - broadcast + 0 through 3 - for future use */ +typedef struct _meshtastic_User { + /* A globally unique ID string for this user. + In the case of Signal that would mean +16504442323, for the default macaddr derived id it would be !<8 hexidecimal bytes>. + Note: app developers are encouraged to also use the following standard + node IDs "^all" (for broadcast), "^local" (for the locally connected node) */ + char id[16]; + /* A full name for this user, i.e. "Kevin Hester" */ + char long_name[40]; + /* A VERY short name, ideally two characters. + Suitable for a tiny OLED screen */ + char short_name[5]; + /* This is the addr of the radio. + Not populated by the phone, but added by the esp32 when broadcasting */ + pb_byte_t macaddr[6]; + /* TBEAM, HELTEC, etc... + Starting in 1.2.11 moved to hw_model enum in the NodeInfo object. + Apps will still need the string here for older builds + (so OTA update can find the right image), but if the enum is available it will be used instead. */ + meshtastic_HardwareModel hw_model; + /* In some regions Ham radio operators have different bandwidth limitations than others. + If this user is a licensed operator, set this flag. + Also, "long_name" should be their licence number. */ + bool is_licensed; +} meshtastic_User; + +/* A message used in our Dynamic Source Routing protocol (RFC 4728 based) */ +typedef struct _meshtastic_RouteDiscovery { + /* The list of nodenums this packet has visited so far */ + pb_size_t route_count; + uint32_t route[8]; +} meshtastic_RouteDiscovery; + +/* A Routing control Data packet handled by the routing module */ +typedef struct _meshtastic_Routing { + pb_size_t which_variant; + union { + /* A route request going from the requester */ + meshtastic_RouteDiscovery route_request; + /* A route reply */ + meshtastic_RouteDiscovery route_reply; + /* A failure in delivering a message (usually used for routing control messages, but might be provided + in addition to ack.fail_id to provide details on the type of failure). */ + meshtastic_Routing_Error error_reason; + }; +} meshtastic_Routing; + +typedef PB_BYTES_ARRAY_T(237) meshtastic_Data_payload_t; +/* (Formerly called SubPacket) + The payload portion fo a packet, this is the actual bytes that are sent + inside a radio packet (because from/to are broken out by the comms library) */ +typedef struct _meshtastic_Data { + /* Formerly named typ and of type Type */ + meshtastic_PortNum portnum; + /* TODO: REPLACE */ + meshtastic_Data_payload_t payload; + /* Not normally used, but for testing a sender can request that recipient + responds in kind (i.e. if it received a position, it should unicast back it's position). + Note: that if you set this on a broadcast you will receive many replies. */ + bool want_response; + /* The address of the destination node. + This field is is filled in by the mesh radio device software, application + layer software should never need it. + RouteDiscovery messages _must_ populate this. + Other message types might need to if they are doing multihop routing. */ + uint32_t dest; + /* The address of the original sender for this message. + This field should _only_ be populated for reliable multihop packets (to keep + packets small). */ + uint32_t source; + /* Only used in routing or response messages. + Indicates the original message ID that this message is reporting failure on. (formerly called original_id) */ + uint32_t request_id; + /* If set, this message is intened to be a reply to a previously sent message with the defined id. */ + uint32_t reply_id; + /* Defaults to false. If true, then what is in the payload should be treated as an emoji like giving + a message a heart or poop emoji. */ + uint32_t emoji; +} meshtastic_Data; + +/* Waypoint message, used to share arbitrary locations across the mesh */ +typedef struct _meshtastic_Waypoint { + /* Id of the waypoint */ + uint32_t id; + /* latitude_i */ + int32_t latitude_i; + /* longitude_i */ + int32_t longitude_i; + /* Time the waypoint is to expire (epoch) */ + uint32_t expire; + /* If greater than zero, treat the value as a nodenum only allowing them to update the waypoint. + If zero, the waypoint is open to be edited by any member of the mesh. */ + uint32_t locked_to; + /* Name of the waypoint - max 30 chars */ + char name[30]; + /* Description of the waypoint - max 100 chars */ + char description[100]; + /* Designator icon for the waypoint in the form of a unicode emoji */ + uint32_t icon; +} meshtastic_Waypoint; + +typedef PB_BYTES_ARRAY_T(256) meshtastic_MeshPacket_encrypted_t; +/* A packet envelope sent/received over the mesh + only payload_variant is sent in the payload portion of the LORA packet. + The other fields are either not sent at all, or sent in the special 16 byte LORA header. */ +typedef struct _meshtastic_MeshPacket { + /* The sending node number. + Note: Our crypto implementation uses this field as well. + See [crypto](/docs/overview/encryption) for details. + FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. */ + uint32_t from; + /* The (immediatSee Priority description for more details.y should be fixed32 instead, this encoding only + hurts the ble link though. */ + uint32_t to; + /* (Usually) If set, this indicates the index in the secondary_channels table that this packet was sent/received on. + If unset, packet was on the primary channel. + A particular node might know only a subset of channels in use on the mesh. + Therefore channel_index is inherently a local concept and meaningless to send between nodes. + Very briefly, while sending and receiving deep inside the device Router code, this field instead + contains the 'channel hash' instead of the index. + This 'trick' is only used while the payload_variant is an 'encrypted'. */ + uint8_t channel; + pb_size_t which_payload_variant; + union { + /* TODO: REPLACE */ + meshtastic_Data decoded; + /* TODO: REPLACE */ + meshtastic_MeshPacket_encrypted_t encrypted; + }; + /* A unique ID for this packet. + Always 0 for no-ack packets or non broadcast packets (and therefore take zero bytes of space). + Otherwise a unique ID for this packet, useful for flooding algorithms. + ID only needs to be unique on a _per sender_ basis, and it only + needs to be unique for a few minutes (long enough to last for the length of + any ACK or the completion of a mesh broadcast flood). + Note: Our crypto implementation uses this id as well. + See [crypto](/docs/overview/encryption) for details. + FIXME - really should be fixed32 instead, this encoding only + hurts the ble link though. */ + uint32_t id; + /* The time this message was received by the esp32 (secs since 1970). + Note: this field is _never_ sent on the radio link itself (to save space) Times + are typically not sent over the mesh, but they will be added to any Packet + (chain of SubPacket) sent to the phone (so the phone can know exact time of reception) */ + uint32_t rx_time; + /* *Never* sent over the radio links. + Set during reception to indicate the SNR of this packet. + Used to collect statistics on current link quality. */ + float rx_snr; + /* If unset treated as zero (no forwarding, send to adjacent nodes only) + if 1, allow hopping through one node, etc... + For our usecase real world topologies probably have a max of about 3. + This field is normally placed into a few of bits in the header. */ + uint8_t hop_limit; + /* This packet is being sent as a reliable message, we would prefer it to arrive at the destination. + We would like to receive a ack packet in response. + Broadcasts messages treat this flag specially: Since acks for broadcasts would + rapidly flood the channel, the normal ack behavior is suppressed. + Instead, the original sender listens to see if at least one node is rebroadcasting this packet (because naive flooding algorithm). + If it hears that the odds (given typical LoRa topologies) the odds are very high that every node should eventually receive the message. + So FloodingRouter.cpp generates an implicit ack which is delivered to the original sender. + If after some time we don't hear anyone rebroadcast our packet, we will timeout and retransmit, using the regular resend logic. + Note: This flag is normally sent in a flag bit in the header when sent over the wire */ + bool want_ack; + /* The priority of this message for sending. + See MeshPacket.Priority description for more details. */ + meshtastic_MeshPacket_Priority priority; + /* rssi of received packet. Only sent to phone for dispay purposes. */ + int32_t rx_rssi; + /* Describe if this message is delayed */ + meshtastic_MeshPacket_Delayed delayed; +} meshtastic_MeshPacket; + +/* The bluetooth to device link: + Old BTLE protocol docs from TODO, merge in above and make real docs... + use protocol buffers, and NanoPB + messages from device to phone: + POSITION_UPDATE (..., time) + TEXT_RECEIVED(from, text, time) + OPAQUE_RECEIVED(from, payload, time) (for signal messages or other applications) + messages from phone to device: + SET_MYID(id, human readable long, human readable short) (send down the unique ID + string used for this node, a human readable string shown for that id, and a very + short human readable string suitable for oled screen) SEND_OPAQUE(dest, payload) + (for signal messages or other applications) SEND_TEXT(dest, text) Get all + nodes() (returns list of nodes, with full info, last time seen, loc, battery + level etc) SET_CONFIG (switches device to a new set of radio params and + preshared key, drops all existing nodes, force our node to rejoin this new group) + Full information about a node on the mesh */ +typedef struct _meshtastic_NodeInfo { + /* The node number */ + uint32_t num; + /* The user info for this node */ + bool has_user; + meshtastic_User user; + /* This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true. + Position.time now indicates the last time we received a POSITION from that node. */ + bool has_position; + meshtastic_Position position; + /* Returns the Signal-to-noise ratio (SNR) of the last received message, + as measured by the receiver. Return SNR of the last received message in dB */ + float snr; + /* Set to indicate the last time we received a packet from this node */ + uint32_t last_heard; + /* The latest device metrics for the node. */ + bool has_device_metrics; + meshtastic_DeviceMetrics device_metrics; +} meshtastic_NodeInfo; + +/* Unique local debugging info for this node + Note: we don't include position or the user info, because that will come in the + Sent to the phone in response to WantNodes. */ +typedef struct _meshtastic_MyNodeInfo { + /* Tells the phone what our node number is, default starting value is + lowbyte of macaddr, but it will be fixed if that is already in use */ + uint32_t my_node_num; + /* Note: This flag merely means we detected a hardware GPS in our node. + Not the same as UserPreferences.location_sharing */ + bool has_gps; + /* The maximum number of 'software' channels that can be set on this node. */ + uint32_t max_channels; + /* 0.0.5 etc... */ + char firmware_version[18]; + /* An error message we'd like to report back to the mothership through analytics. + It indicates a serious bug occurred on the device, the device coped with it, + but we still want to tell the devs about the bug. + This field will be cleared after the phone reads MyNodeInfo + (i.e. it will only be reported once) + a numeric error code to go with error message, zero means no error */ + meshtastic_CriticalErrorCode error_code; + /* A numeric error address (nonzero if available) */ + uint32_t error_address; + /* The total number of errors this node has ever encountered + (well - since the last time we discarded preferences) */ + uint32_t error_count; + /* The total number of reboots this node has ever encountered + (well - since the last time we discarded preferences) */ + uint32_t reboot_count; + /* Calculated bitrate of the current channel (in Bytes Per Second) */ + float bitrate; + /* How long before we consider a message abandoned and we can clear our + caches of any messages in flight Normally quite large to handle the worst case + message delivery time, 5 minutes. + Formerly called FLOOD_EXPIRE_TIME in the device code */ + uint32_t message_timeout_msec; + /* The minimum app version that can talk to this device. + Phone/PC apps should compare this to their build number and if too low tell the user they must update their app */ + uint32_t min_app_version; + /* 24 time windows of 1hr each with the airtime transmitted out of the device per hour. */ + pb_size_t air_period_tx_count; + uint32_t air_period_tx[8]; + /* 24 time windows of 1hr each with the airtime of valid packets for your mesh. */ + pb_size_t air_period_rx_count; + uint32_t air_period_rx[8]; + /* Is the device wifi capable? */ + bool has_wifi; + /* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). */ + float channel_utilization; + /* Percent of airtime for transmission used within the last hour. */ + float air_util_tx; +} meshtastic_MyNodeInfo; + +/* Debug output from the device. + To minimize the size of records inside the device code, if a time/source/level is not set + on the message it is assumed to be a continuation of the previously sent message. + This allows the device code to use fixed maxlen 64 byte strings for messages, + and then extend as needed by emitting multiple records. */ +typedef struct _meshtastic_LogRecord { + /* Log levels, chosen to match python logging conventions. */ + char message[64]; + /* Seconds since 1970 - or 0 for unknown/unset */ + uint32_t time; + /* Usually based on thread name - if known */ + char source[8]; + /* Not yet set */ + meshtastic_LogRecord_Level level; +} meshtastic_LogRecord; + +typedef struct _meshtastic_QueueStatus { + /* Last attempt to queue status, ErrorCode */ + int8_t res; + /* Free entries in the outgoing queue */ + uint8_t free; + /* Maximum entries in the outgoing queue */ + uint8_t maxlen; + /* What was mesh packet id that generated this response? */ + uint32_t mesh_packet_id; +} meshtastic_QueueStatus; + +/* Packets from the radio to the phone will appear on the fromRadio characteristic. + It will support READ and NOTIFY. When a new packet arrives the device will BLE notify? + It will sit in that descriptor until consumed by the phone, + at which point the next item in the FIFO will be populated. */ +typedef struct _meshtastic_FromRadio { + /* The packet id, used to allow the phone to request missing read packets from the FIFO, + see our bluetooth docs */ + uint32_t id; + pb_size_t which_payload_variant; + union { + /* Log levels, chosen to match python logging conventions. */ + meshtastic_MeshPacket packet; + /* Tells the phone what our node number is, can be -1 if we've not yet joined a mesh. + NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. */ + meshtastic_MyNodeInfo my_info; + /* One packet is sent for each node in the on radio DB + starts over with the first node in our DB */ + meshtastic_NodeInfo node_info; + /* Include a part of the config (was: RadioConfig radio) */ + meshtastic_Config config; + /* Set to send debug console output over our protobuf stream */ + meshtastic_LogRecord log_record; + /* Sent as true once the device has finished sending all of the responses to want_config + recipient should check if this ID matches our original request nonce, if + not, it means your config responses haven't started yet. + NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. */ + uint32_t config_complete_id; + /* Sent to tell clients the radio has just rebooted. + Set to true if present. + Not used on all transports, currently just used for the serial console. + NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. */ + bool rebooted; + /* Include module config */ + meshtastic_ModuleConfig moduleConfig; + /* One packet is sent for each channel */ + meshtastic_Channel channel; + /* Queue status info */ + meshtastic_QueueStatus queueStatus; + /* File Transfer Chunk */ + meshtastic_XModem xmodemPacket; + }; +} meshtastic_FromRadio; + +/* Packets/commands to the radio will be written (reliably) to the toRadio characteristic. + Once the write completes the phone can assume it is handled. */ +typedef struct _meshtastic_ToRadio { + pb_size_t which_payload_variant; + union { + /* Send this packet on the mesh */ + meshtastic_MeshPacket packet; + /* Phone wants radio to send full node db to the phone, This is + typically the first packet sent to the radio when the phone gets a + bluetooth connection. The radio will respond by sending back a + MyNodeInfo, a owner, a radio config and a series of + FromRadio.node_infos, and config_complete + the integer you write into this field will be reported back in the + config_complete_id response this allows clients to never be confused by + a stale old partially sent config. */ + uint32_t want_config_id; + /* Tell API server we are disconnecting now. + This is useful for serial links where there is no hardware/protocol based notification that the client has dropped the link. + (Sending this message is optional for clients) */ + bool disconnect; + meshtastic_XModem xmodemPacket; + }; +} meshtastic_ToRadio; + +typedef PB_BYTES_ARRAY_T(237) meshtastic_Compressed_data_t; +/* Compressed message payload */ +typedef struct _meshtastic_Compressed { + /* PortNum to determine the how to handle the compressed payload. */ + meshtastic_PortNum portnum; + /* Compressed data. */ + meshtastic_Compressed_data_t data; +} meshtastic_Compressed; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_HardwareModel_MIN meshtastic_HardwareModel_UNSET +#define _meshtastic_HardwareModel_MAX meshtastic_HardwareModel_PRIVATE_HW +#define _meshtastic_HardwareModel_ARRAYSIZE ((meshtastic_HardwareModel)(meshtastic_HardwareModel_PRIVATE_HW+1)) + +#define _meshtastic_Constants_MIN meshtastic_Constants_ZERO +#define _meshtastic_Constants_MAX meshtastic_Constants_DATA_PAYLOAD_LEN +#define _meshtastic_Constants_ARRAYSIZE ((meshtastic_Constants)(meshtastic_Constants_DATA_PAYLOAD_LEN+1)) + +#define _meshtastic_CriticalErrorCode_MIN meshtastic_CriticalErrorCode_NONE +#define _meshtastic_CriticalErrorCode_MAX meshtastic_CriticalErrorCode_RADIO_SPI_BUG +#define _meshtastic_CriticalErrorCode_ARRAYSIZE ((meshtastic_CriticalErrorCode)(meshtastic_CriticalErrorCode_RADIO_SPI_BUG+1)) + +#define _meshtastic_Position_LocSource_MIN meshtastic_Position_LocSource_LOC_UNSET +#define _meshtastic_Position_LocSource_MAX meshtastic_Position_LocSource_LOC_EXTERNAL +#define _meshtastic_Position_LocSource_ARRAYSIZE ((meshtastic_Position_LocSource)(meshtastic_Position_LocSource_LOC_EXTERNAL+1)) + +#define _meshtastic_Position_AltSource_MIN meshtastic_Position_AltSource_ALT_UNSET +#define _meshtastic_Position_AltSource_MAX meshtastic_Position_AltSource_ALT_BAROMETRIC +#define _meshtastic_Position_AltSource_ARRAYSIZE ((meshtastic_Position_AltSource)(meshtastic_Position_AltSource_ALT_BAROMETRIC+1)) + +#define _meshtastic_Routing_Error_MIN meshtastic_Routing_Error_NONE +#define _meshtastic_Routing_Error_MAX meshtastic_Routing_Error_NOT_AUTHORIZED +#define _meshtastic_Routing_Error_ARRAYSIZE ((meshtastic_Routing_Error)(meshtastic_Routing_Error_NOT_AUTHORIZED+1)) + +#define _meshtastic_MeshPacket_Priority_MIN meshtastic_MeshPacket_Priority_UNSET +#define _meshtastic_MeshPacket_Priority_MAX meshtastic_MeshPacket_Priority_MAX +#define _meshtastic_MeshPacket_Priority_ARRAYSIZE ((meshtastic_MeshPacket_Priority)(meshtastic_MeshPacket_Priority_MAX+1)) + +#define _meshtastic_MeshPacket_Delayed_MIN meshtastic_MeshPacket_Delayed_NO_DELAY +#define _meshtastic_MeshPacket_Delayed_MAX meshtastic_MeshPacket_Delayed_DELAYED_DIRECT +#define _meshtastic_MeshPacket_Delayed_ARRAYSIZE ((meshtastic_MeshPacket_Delayed)(meshtastic_MeshPacket_Delayed_DELAYED_DIRECT+1)) + +#define _meshtastic_LogRecord_Level_MIN meshtastic_LogRecord_Level_UNSET +#define _meshtastic_LogRecord_Level_MAX meshtastic_LogRecord_Level_CRITICAL +#define _meshtastic_LogRecord_Level_ARRAYSIZE ((meshtastic_LogRecord_Level)(meshtastic_LogRecord_Level_CRITICAL+1)) + +#define meshtastic_Position_location_source_ENUMTYPE meshtastic_Position_LocSource +#define meshtastic_Position_altitude_source_ENUMTYPE meshtastic_Position_AltSource + +#define meshtastic_User_hw_model_ENUMTYPE meshtastic_HardwareModel + + +#define meshtastic_Routing_variant_error_reason_ENUMTYPE meshtastic_Routing_Error + +#define meshtastic_Data_portnum_ENUMTYPE meshtastic_PortNum + + +#define meshtastic_MeshPacket_priority_ENUMTYPE meshtastic_MeshPacket_Priority +#define meshtastic_MeshPacket_delayed_ENUMTYPE meshtastic_MeshPacket_Delayed + + +#define meshtastic_MyNodeInfo_error_code_ENUMTYPE meshtastic_CriticalErrorCode + +#define meshtastic_LogRecord_level_ENUMTYPE meshtastic_LogRecord_Level + + + + +#define meshtastic_Compressed_portnum_ENUMTYPE meshtastic_PortNum + + +/* Initializer values for message structs */ +#define meshtastic_Position_init_default {0, 0, 0, 0, _meshtastic_Position_LocSource_MIN, _meshtastic_Position_AltSource_MIN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#define meshtastic_User_init_default {"", "", "", {0}, _meshtastic_HardwareModel_MIN, 0} +#define meshtastic_RouteDiscovery_init_default {0, {0, 0, 0, 0, 0, 0, 0, 0}} +#define meshtastic_Routing_init_default {0, {meshtastic_RouteDiscovery_init_default}} +#define meshtastic_Data_init_default {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0} +#define meshtastic_Waypoint_init_default {0, 0, 0, 0, 0, "", "", 0} +#define meshtastic_MeshPacket_init_default {0, 0, 0, 0, {meshtastic_Data_init_default}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN} +#define meshtastic_NodeInfo_init_default {0, false, meshtastic_User_init_default, false, meshtastic_Position_init_default, 0, 0, false, meshtastic_DeviceMetrics_init_default} +#define meshtastic_MyNodeInfo_init_default {0, 0, 0, "", _meshtastic_CriticalErrorCode_MIN, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, 0} +#define meshtastic_LogRecord_init_default {"", 0, "", _meshtastic_LogRecord_Level_MIN} +#define meshtastic_QueueStatus_init_default {0, 0, 0, 0} +#define meshtastic_FromRadio_init_default {0, 0, {meshtastic_MeshPacket_init_default}} +#define meshtastic_ToRadio_init_default {0, {meshtastic_MeshPacket_init_default}} +#define meshtastic_Compressed_init_default {_meshtastic_PortNum_MIN, {0, {0}}} +#define meshtastic_Position_init_zero {0, 0, 0, 0, _meshtastic_Position_LocSource_MIN, _meshtastic_Position_AltSource_MIN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#define meshtastic_User_init_zero {"", "", "", {0}, _meshtastic_HardwareModel_MIN, 0} +#define meshtastic_RouteDiscovery_init_zero {0, {0, 0, 0, 0, 0, 0, 0, 0}} +#define meshtastic_Routing_init_zero {0, {meshtastic_RouteDiscovery_init_zero}} +#define meshtastic_Data_init_zero {_meshtastic_PortNum_MIN, {0, {0}}, 0, 0, 0, 0, 0, 0} +#define meshtastic_Waypoint_init_zero {0, 0, 0, 0, 0, "", "", 0} +#define meshtastic_MeshPacket_init_zero {0, 0, 0, 0, {meshtastic_Data_init_zero}, 0, 0, 0, 0, 0, _meshtastic_MeshPacket_Priority_MIN, 0, _meshtastic_MeshPacket_Delayed_MIN} +#define meshtastic_NodeInfo_init_zero {0, false, meshtastic_User_init_zero, false, meshtastic_Position_init_zero, 0, 0, false, meshtastic_DeviceMetrics_init_zero} +#define meshtastic_MyNodeInfo_init_zero {0, 0, 0, "", _meshtastic_CriticalErrorCode_MIN, 0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, {0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, 0} +#define meshtastic_LogRecord_init_zero {"", 0, "", _meshtastic_LogRecord_Level_MIN} +#define meshtastic_QueueStatus_init_zero {0, 0, 0, 0} +#define meshtastic_FromRadio_init_zero {0, 0, {meshtastic_MeshPacket_init_zero}} +#define meshtastic_ToRadio_init_zero {0, {meshtastic_MeshPacket_init_zero}} +#define meshtastic_Compressed_init_zero {_meshtastic_PortNum_MIN, {0, {0}}} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_Position_latitude_i_tag 1 +#define meshtastic_Position_longitude_i_tag 2 +#define meshtastic_Position_altitude_tag 3 +#define meshtastic_Position_time_tag 4 +#define meshtastic_Position_location_source_tag 5 +#define meshtastic_Position_altitude_source_tag 6 +#define meshtastic_Position_timestamp_tag 7 +#define meshtastic_Position_timestamp_millis_adjust_tag 8 +#define meshtastic_Position_altitude_hae_tag 9 +#define meshtastic_Position_altitude_geoidal_separation_tag 10 +#define meshtastic_Position_PDOP_tag 11 +#define meshtastic_Position_HDOP_tag 12 +#define meshtastic_Position_VDOP_tag 13 +#define meshtastic_Position_gps_accuracy_tag 14 +#define meshtastic_Position_ground_speed_tag 15 +#define meshtastic_Position_ground_track_tag 16 +#define meshtastic_Position_fix_quality_tag 17 +#define meshtastic_Position_fix_type_tag 18 +#define meshtastic_Position_sats_in_view_tag 19 +#define meshtastic_Position_sensor_id_tag 20 +#define meshtastic_Position_next_update_tag 21 +#define meshtastic_Position_seq_number_tag 22 +#define meshtastic_User_id_tag 1 +#define meshtastic_User_long_name_tag 2 +#define meshtastic_User_short_name_tag 3 +#define meshtastic_User_macaddr_tag 4 +#define meshtastic_User_hw_model_tag 5 +#define meshtastic_User_is_licensed_tag 6 +#define meshtastic_RouteDiscovery_route_tag 1 +#define meshtastic_Routing_route_request_tag 1 +#define meshtastic_Routing_route_reply_tag 2 +#define meshtastic_Routing_error_reason_tag 3 +#define meshtastic_Data_portnum_tag 1 +#define meshtastic_Data_payload_tag 2 +#define meshtastic_Data_want_response_tag 3 +#define meshtastic_Data_dest_tag 4 +#define meshtastic_Data_source_tag 5 +#define meshtastic_Data_request_id_tag 6 +#define meshtastic_Data_reply_id_tag 7 +#define meshtastic_Data_emoji_tag 8 +#define meshtastic_Waypoint_id_tag 1 +#define meshtastic_Waypoint_latitude_i_tag 2 +#define meshtastic_Waypoint_longitude_i_tag 3 +#define meshtastic_Waypoint_expire_tag 4 +#define meshtastic_Waypoint_locked_to_tag 5 +#define meshtastic_Waypoint_name_tag 6 +#define meshtastic_Waypoint_description_tag 7 +#define meshtastic_Waypoint_icon_tag 8 +#define meshtastic_MeshPacket_from_tag 1 +#define meshtastic_MeshPacket_to_tag 2 +#define meshtastic_MeshPacket_channel_tag 3 +#define meshtastic_MeshPacket_decoded_tag 4 +#define meshtastic_MeshPacket_encrypted_tag 5 +#define meshtastic_MeshPacket_id_tag 6 +#define meshtastic_MeshPacket_rx_time_tag 7 +#define meshtastic_MeshPacket_rx_snr_tag 8 +#define meshtastic_MeshPacket_hop_limit_tag 9 +#define meshtastic_MeshPacket_want_ack_tag 10 +#define meshtastic_MeshPacket_priority_tag 11 +#define meshtastic_MeshPacket_rx_rssi_tag 12 +#define meshtastic_MeshPacket_delayed_tag 13 +#define meshtastic_NodeInfo_num_tag 1 +#define meshtastic_NodeInfo_user_tag 2 +#define meshtastic_NodeInfo_position_tag 3 +#define meshtastic_NodeInfo_snr_tag 4 +#define meshtastic_NodeInfo_last_heard_tag 5 +#define meshtastic_NodeInfo_device_metrics_tag 6 +#define meshtastic_MyNodeInfo_my_node_num_tag 1 +#define meshtastic_MyNodeInfo_has_gps_tag 2 +#define meshtastic_MyNodeInfo_max_channels_tag 3 +#define meshtastic_MyNodeInfo_firmware_version_tag 4 +#define meshtastic_MyNodeInfo_error_code_tag 5 +#define meshtastic_MyNodeInfo_error_address_tag 6 +#define meshtastic_MyNodeInfo_error_count_tag 7 +#define meshtastic_MyNodeInfo_reboot_count_tag 8 +#define meshtastic_MyNodeInfo_bitrate_tag 9 +#define meshtastic_MyNodeInfo_message_timeout_msec_tag 10 +#define meshtastic_MyNodeInfo_min_app_version_tag 11 +#define meshtastic_MyNodeInfo_air_period_tx_tag 12 +#define meshtastic_MyNodeInfo_air_period_rx_tag 13 +#define meshtastic_MyNodeInfo_has_wifi_tag 14 +#define meshtastic_MyNodeInfo_channel_utilization_tag 15 +#define meshtastic_MyNodeInfo_air_util_tx_tag 16 +#define meshtastic_LogRecord_message_tag 1 +#define meshtastic_LogRecord_time_tag 2 +#define meshtastic_LogRecord_source_tag 3 +#define meshtastic_LogRecord_level_tag 4 +#define meshtastic_QueueStatus_res_tag 1 +#define meshtastic_QueueStatus_free_tag 2 +#define meshtastic_QueueStatus_maxlen_tag 3 +#define meshtastic_QueueStatus_mesh_packet_id_tag 4 +#define meshtastic_FromRadio_id_tag 1 +#define meshtastic_FromRadio_packet_tag 2 +#define meshtastic_FromRadio_my_info_tag 3 +#define meshtastic_FromRadio_node_info_tag 4 +#define meshtastic_FromRadio_config_tag 5 +#define meshtastic_FromRadio_log_record_tag 6 +#define meshtastic_FromRadio_config_complete_id_tag 7 +#define meshtastic_FromRadio_rebooted_tag 8 +#define meshtastic_FromRadio_moduleConfig_tag 9 +#define meshtastic_FromRadio_channel_tag 10 +#define meshtastic_FromRadio_queueStatus_tag 11 +#define meshtastic_FromRadio_xmodemPacket_tag 12 +#define meshtastic_ToRadio_packet_tag 1 +#define meshtastic_ToRadio_want_config_id_tag 3 +#define meshtastic_ToRadio_disconnect_tag 4 +#define meshtastic_ToRadio_xmodemPacket_tag 5 +#define meshtastic_Compressed_portnum_tag 1 +#define meshtastic_Compressed_data_tag 2 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_Position_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, SFIXED32, latitude_i, 1) \ +X(a, STATIC, SINGULAR, SFIXED32, longitude_i, 2) \ +X(a, STATIC, SINGULAR, INT32, altitude, 3) \ +X(a, STATIC, SINGULAR, FIXED32, time, 4) \ +X(a, STATIC, SINGULAR, UENUM, location_source, 5) \ +X(a, STATIC, SINGULAR, UENUM, altitude_source, 6) \ +X(a, STATIC, SINGULAR, FIXED32, timestamp, 7) \ +X(a, STATIC, SINGULAR, INT32, timestamp_millis_adjust, 8) \ +X(a, STATIC, SINGULAR, SINT32, altitude_hae, 9) \ +X(a, STATIC, SINGULAR, SINT32, altitude_geoidal_separation, 10) \ +X(a, STATIC, SINGULAR, UINT32, PDOP, 11) \ +X(a, STATIC, SINGULAR, UINT32, HDOP, 12) \ +X(a, STATIC, SINGULAR, UINT32, VDOP, 13) \ +X(a, STATIC, SINGULAR, UINT32, gps_accuracy, 14) \ +X(a, STATIC, SINGULAR, UINT32, ground_speed, 15) \ +X(a, STATIC, SINGULAR, UINT32, ground_track, 16) \ +X(a, STATIC, SINGULAR, UINT32, fix_quality, 17) \ +X(a, STATIC, SINGULAR, UINT32, fix_type, 18) \ +X(a, STATIC, SINGULAR, UINT32, sats_in_view, 19) \ +X(a, STATIC, SINGULAR, UINT32, sensor_id, 20) \ +X(a, STATIC, SINGULAR, UINT32, next_update, 21) \ +X(a, STATIC, SINGULAR, UINT32, seq_number, 22) +#define meshtastic_Position_CALLBACK NULL +#define meshtastic_Position_DEFAULT NULL + +#define meshtastic_User_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, STRING, id, 1) \ +X(a, STATIC, SINGULAR, STRING, long_name, 2) \ +X(a, STATIC, SINGULAR, STRING, short_name, 3) \ +X(a, STATIC, SINGULAR, FIXED_LENGTH_BYTES, macaddr, 4) \ +X(a, STATIC, SINGULAR, UENUM, hw_model, 5) \ +X(a, STATIC, SINGULAR, BOOL, is_licensed, 6) +#define meshtastic_User_CALLBACK NULL +#define meshtastic_User_DEFAULT NULL + +#define meshtastic_RouteDiscovery_FIELDLIST(X, a) \ +X(a, STATIC, REPEATED, FIXED32, route, 1) +#define meshtastic_RouteDiscovery_CALLBACK NULL +#define meshtastic_RouteDiscovery_DEFAULT NULL + +#define meshtastic_Routing_FIELDLIST(X, a) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,route_request,route_request), 1) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,route_reply,route_reply), 2) \ +X(a, STATIC, ONEOF, UENUM, (variant,error_reason,error_reason), 3) +#define meshtastic_Routing_CALLBACK NULL +#define meshtastic_Routing_DEFAULT NULL +#define meshtastic_Routing_variant_route_request_MSGTYPE meshtastic_RouteDiscovery +#define meshtastic_Routing_variant_route_reply_MSGTYPE meshtastic_RouteDiscovery + +#define meshtastic_Data_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UENUM, portnum, 1) \ +X(a, STATIC, SINGULAR, BYTES, payload, 2) \ +X(a, STATIC, SINGULAR, BOOL, want_response, 3) \ +X(a, STATIC, SINGULAR, FIXED32, dest, 4) \ +X(a, STATIC, SINGULAR, FIXED32, source, 5) \ +X(a, STATIC, SINGULAR, FIXED32, request_id, 6) \ +X(a, STATIC, SINGULAR, FIXED32, reply_id, 7) \ +X(a, STATIC, SINGULAR, FIXED32, emoji, 8) +#define meshtastic_Data_CALLBACK NULL +#define meshtastic_Data_DEFAULT NULL + +#define meshtastic_Waypoint_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, id, 1) \ +X(a, STATIC, SINGULAR, SFIXED32, latitude_i, 2) \ +X(a, STATIC, SINGULAR, SFIXED32, longitude_i, 3) \ +X(a, STATIC, SINGULAR, UINT32, expire, 4) \ +X(a, STATIC, SINGULAR, UINT32, locked_to, 5) \ +X(a, STATIC, SINGULAR, STRING, name, 6) \ +X(a, STATIC, SINGULAR, STRING, description, 7) \ +X(a, STATIC, SINGULAR, FIXED32, icon, 8) +#define meshtastic_Waypoint_CALLBACK NULL +#define meshtastic_Waypoint_DEFAULT NULL + +#define meshtastic_MeshPacket_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, FIXED32, from, 1) \ +X(a, STATIC, SINGULAR, FIXED32, to, 2) \ +X(a, STATIC, SINGULAR, UINT32, channel, 3) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,decoded,decoded), 4) \ +X(a, STATIC, ONEOF, BYTES, (payload_variant,encrypted,encrypted), 5) \ +X(a, STATIC, SINGULAR, FIXED32, id, 6) \ +X(a, STATIC, SINGULAR, FIXED32, rx_time, 7) \ +X(a, STATIC, SINGULAR, FLOAT, rx_snr, 8) \ +X(a, STATIC, SINGULAR, UINT32, hop_limit, 9) \ +X(a, STATIC, SINGULAR, BOOL, want_ack, 10) \ +X(a, STATIC, SINGULAR, UENUM, priority, 11) \ +X(a, STATIC, SINGULAR, INT32, rx_rssi, 12) \ +X(a, STATIC, SINGULAR, UENUM, delayed, 13) +#define meshtastic_MeshPacket_CALLBACK NULL +#define meshtastic_MeshPacket_DEFAULT NULL +#define meshtastic_MeshPacket_payload_variant_decoded_MSGTYPE meshtastic_Data + +#define meshtastic_NodeInfo_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, num, 1) \ +X(a, STATIC, OPTIONAL, MESSAGE, user, 2) \ +X(a, STATIC, OPTIONAL, MESSAGE, position, 3) \ +X(a, STATIC, SINGULAR, FLOAT, snr, 4) \ +X(a, STATIC, SINGULAR, FIXED32, last_heard, 5) \ +X(a, STATIC, OPTIONAL, MESSAGE, device_metrics, 6) +#define meshtastic_NodeInfo_CALLBACK NULL +#define meshtastic_NodeInfo_DEFAULT NULL +#define meshtastic_NodeInfo_user_MSGTYPE meshtastic_User +#define meshtastic_NodeInfo_position_MSGTYPE meshtastic_Position +#define meshtastic_NodeInfo_device_metrics_MSGTYPE meshtastic_DeviceMetrics + +#define meshtastic_MyNodeInfo_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, my_node_num, 1) \ +X(a, STATIC, SINGULAR, BOOL, has_gps, 2) \ +X(a, STATIC, SINGULAR, UINT32, max_channels, 3) \ +X(a, STATIC, SINGULAR, STRING, firmware_version, 4) \ +X(a, STATIC, SINGULAR, UENUM, error_code, 5) \ +X(a, STATIC, SINGULAR, UINT32, error_address, 6) \ +X(a, STATIC, SINGULAR, UINT32, error_count, 7) \ +X(a, STATIC, SINGULAR, UINT32, reboot_count, 8) \ +X(a, STATIC, SINGULAR, FLOAT, bitrate, 9) \ +X(a, STATIC, SINGULAR, UINT32, message_timeout_msec, 10) \ +X(a, STATIC, SINGULAR, UINT32, min_app_version, 11) \ +X(a, STATIC, REPEATED, UINT32, air_period_tx, 12) \ +X(a, STATIC, REPEATED, UINT32, air_period_rx, 13) \ +X(a, STATIC, SINGULAR, BOOL, has_wifi, 14) \ +X(a, STATIC, SINGULAR, FLOAT, channel_utilization, 15) \ +X(a, STATIC, SINGULAR, FLOAT, air_util_tx, 16) +#define meshtastic_MyNodeInfo_CALLBACK NULL +#define meshtastic_MyNodeInfo_DEFAULT NULL + +#define meshtastic_LogRecord_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, STRING, message, 1) \ +X(a, STATIC, SINGULAR, FIXED32, time, 2) \ +X(a, STATIC, SINGULAR, STRING, source, 3) \ +X(a, STATIC, SINGULAR, UENUM, level, 4) +#define meshtastic_LogRecord_CALLBACK NULL +#define meshtastic_LogRecord_DEFAULT NULL + +#define meshtastic_QueueStatus_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, INT32, res, 1) \ +X(a, STATIC, SINGULAR, UINT32, free, 2) \ +X(a, STATIC, SINGULAR, UINT32, maxlen, 3) \ +X(a, STATIC, SINGULAR, UINT32, mesh_packet_id, 4) +#define meshtastic_QueueStatus_CALLBACK NULL +#define meshtastic_QueueStatus_DEFAULT NULL + +#define meshtastic_FromRadio_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, id, 1) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,packet,packet), 2) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,my_info,my_info), 3) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,node_info,node_info), 4) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,config,config), 5) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,log_record,log_record), 6) \ +X(a, STATIC, ONEOF, UINT32, (payload_variant,config_complete_id,config_complete_id), 7) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,rebooted,rebooted), 8) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,moduleConfig,moduleConfig), 9) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,channel,channel), 10) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,queueStatus,queueStatus), 11) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,xmodemPacket,xmodemPacket), 12) +#define meshtastic_FromRadio_CALLBACK NULL +#define meshtastic_FromRadio_DEFAULT NULL +#define meshtastic_FromRadio_payload_variant_packet_MSGTYPE meshtastic_MeshPacket +#define meshtastic_FromRadio_payload_variant_my_info_MSGTYPE meshtastic_MyNodeInfo +#define meshtastic_FromRadio_payload_variant_node_info_MSGTYPE meshtastic_NodeInfo +#define meshtastic_FromRadio_payload_variant_config_MSGTYPE meshtastic_Config +#define meshtastic_FromRadio_payload_variant_log_record_MSGTYPE meshtastic_LogRecord +#define meshtastic_FromRadio_payload_variant_moduleConfig_MSGTYPE meshtastic_ModuleConfig +#define meshtastic_FromRadio_payload_variant_channel_MSGTYPE meshtastic_Channel +#define meshtastic_FromRadio_payload_variant_queueStatus_MSGTYPE meshtastic_QueueStatus +#define meshtastic_FromRadio_payload_variant_xmodemPacket_MSGTYPE meshtastic_XModem + +#define meshtastic_ToRadio_FIELDLIST(X, a) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,packet,packet), 1) \ +X(a, STATIC, ONEOF, UINT32, (payload_variant,want_config_id,want_config_id), 3) \ +X(a, STATIC, ONEOF, BOOL, (payload_variant,disconnect,disconnect), 4) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,xmodemPacket,xmodemPacket), 5) +#define meshtastic_ToRadio_CALLBACK NULL +#define meshtastic_ToRadio_DEFAULT NULL +#define meshtastic_ToRadio_payload_variant_packet_MSGTYPE meshtastic_MeshPacket +#define meshtastic_ToRadio_payload_variant_xmodemPacket_MSGTYPE meshtastic_XModem + +#define meshtastic_Compressed_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UENUM, portnum, 1) \ +X(a, STATIC, SINGULAR, BYTES, data, 2) +#define meshtastic_Compressed_CALLBACK NULL +#define meshtastic_Compressed_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_Position_msg; +extern const pb_msgdesc_t meshtastic_User_msg; +extern const pb_msgdesc_t meshtastic_RouteDiscovery_msg; +extern const pb_msgdesc_t meshtastic_Routing_msg; +extern const pb_msgdesc_t meshtastic_Data_msg; +extern const pb_msgdesc_t meshtastic_Waypoint_msg; +extern const pb_msgdesc_t meshtastic_MeshPacket_msg; +extern const pb_msgdesc_t meshtastic_NodeInfo_msg; +extern const pb_msgdesc_t meshtastic_MyNodeInfo_msg; +extern const pb_msgdesc_t meshtastic_LogRecord_msg; +extern const pb_msgdesc_t meshtastic_QueueStatus_msg; +extern const pb_msgdesc_t meshtastic_FromRadio_msg; +extern const pb_msgdesc_t meshtastic_ToRadio_msg; +extern const pb_msgdesc_t meshtastic_Compressed_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_Position_fields &meshtastic_Position_msg +#define meshtastic_User_fields &meshtastic_User_msg +#define meshtastic_RouteDiscovery_fields &meshtastic_RouteDiscovery_msg +#define meshtastic_Routing_fields &meshtastic_Routing_msg +#define meshtastic_Data_fields &meshtastic_Data_msg +#define meshtastic_Waypoint_fields &meshtastic_Waypoint_msg +#define meshtastic_MeshPacket_fields &meshtastic_MeshPacket_msg +#define meshtastic_NodeInfo_fields &meshtastic_NodeInfo_msg +#define meshtastic_MyNodeInfo_fields &meshtastic_MyNodeInfo_msg +#define meshtastic_LogRecord_fields &meshtastic_LogRecord_msg +#define meshtastic_QueueStatus_fields &meshtastic_QueueStatus_msg +#define meshtastic_FromRadio_fields &meshtastic_FromRadio_msg +#define meshtastic_ToRadio_fields &meshtastic_ToRadio_msg +#define meshtastic_Compressed_fields &meshtastic_Compressed_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_Compressed_size 243 +#define meshtastic_Data_size 270 +#define meshtastic_FromRadio_size 330 +#define meshtastic_LogRecord_size 81 +#define meshtastic_MeshPacket_size 321 +#define meshtastic_MyNodeInfo_size 179 +#define meshtastic_NodeInfo_size 258 +#define meshtastic_Position_size 137 +#define meshtastic_QueueStatus_size 23 +#define meshtastic_RouteDiscovery_size 40 +#define meshtastic_Routing_size 42 +#define meshtastic_ToRadio_size 324 +#define meshtastic_User_size 77 +#define meshtastic_Waypoint_size 165 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/module_config.pb.c b/src/mesh/generated/meshtastic/module_config.pb.c new file mode 100644 index 000000000..0878be909 --- /dev/null +++ b/src/mesh/generated/meshtastic/module_config.pb.c @@ -0,0 +1,43 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/module_config.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_ModuleConfig, meshtastic_ModuleConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_MQTTConfig, meshtastic_ModuleConfig_MQTTConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_RemoteHardwareConfig, meshtastic_ModuleConfig_RemoteHardwareConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_AudioConfig, meshtastic_ModuleConfig_AudioConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_SerialConfig, meshtastic_ModuleConfig_SerialConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_ExternalNotificationConfig, meshtastic_ModuleConfig_ExternalNotificationConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_StoreForwardConfig, meshtastic_ModuleConfig_StoreForwardConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_RangeTestConfig, meshtastic_ModuleConfig_RangeTestConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_TelemetryConfig, meshtastic_ModuleConfig_TelemetryConfig, AUTO) + + +PB_BIND(meshtastic_ModuleConfig_CannedMessageConfig, meshtastic_ModuleConfig_CannedMessageConfig, AUTO) + + + + + + + diff --git a/src/mesh/generated/meshtastic/module_config.pb.h b/src/mesh/generated/meshtastic/module_config.pb.h new file mode 100644 index 000000000..50fed5197 --- /dev/null +++ b/src/mesh/generated/meshtastic/module_config.pb.h @@ -0,0 +1,568 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_MODULE_CONFIG_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_MODULE_CONFIG_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* Baudrate for codec2 voice */ +typedef enum _meshtastic_ModuleConfig_AudioConfig_Audio_Baud { + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_DEFAULT = 0, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_3200 = 1, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_2400 = 2, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1600 = 3, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1400 = 4, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1300 = 5, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_1200 = 6, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700 = 7, + meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B = 8 +} meshtastic_ModuleConfig_AudioConfig_Audio_Baud; + +/* TODO: REPLACE */ +typedef enum _meshtastic_ModuleConfig_SerialConfig_Serial_Baud { + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_DEFAULT = 0, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_110 = 1, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_300 = 2, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_600 = 3, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_1200 = 4, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_2400 = 5, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_4800 = 6, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_9600 = 7, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_19200 = 8, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_38400 = 9, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_57600 = 10, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_115200 = 11, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_230400 = 12, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_460800 = 13, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_576000 = 14, + meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600 = 15 +} meshtastic_ModuleConfig_SerialConfig_Serial_Baud; + +/* TODO: REPLACE */ +typedef enum _meshtastic_ModuleConfig_SerialConfig_Serial_Mode { + meshtastic_ModuleConfig_SerialConfig_Serial_Mode_DEFAULT = 0, + meshtastic_ModuleConfig_SerialConfig_Serial_Mode_SIMPLE = 1, + meshtastic_ModuleConfig_SerialConfig_Serial_Mode_PROTO = 2, + meshtastic_ModuleConfig_SerialConfig_Serial_Mode_TEXTMSG = 3, + meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA = 4 +} meshtastic_ModuleConfig_SerialConfig_Serial_Mode; + +/* TODO: REPLACE */ +typedef enum _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar { + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE = 0, + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_UP = 17, + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_DOWN = 18, + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_LEFT = 19, + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_RIGHT = 20, + /* '\n' */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_SELECT = 10, + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK = 27, + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_CANCEL = 24 +} meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar; + +/* Struct definitions */ +/* MQTT Client Config */ +typedef struct _meshtastic_ModuleConfig_MQTTConfig { + /* If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as + is_uplink_enabled or is_downlink_enabled. */ + bool enabled; + /* The server to use for our MQTT global message gateway feature. + If not set, the default server will be used */ + char address[64]; + /* MQTT username to use (most useful for a custom MQTT server). + If using a custom server, this will be honoured even if empty. + If using the default server, this will only be honoured if set, otherwise the device will use the default username */ + char username[64]; + /* MQTT password to use (most useful for a custom MQTT server). + If using a custom server, this will be honoured even if empty. + If using the default server, this will only be honoured if set, otherwise the device will use the default password */ + char password[64]; + /* Whether to send encrypted or decrypted packets to MQTT. + This parameter is only honoured if you also set server + (the default official mqtt.meshtastic.org server can handle encrypted packets) + Decrypted packets may be useful for external systems that want to consume meshtastic packets */ + bool encryption_enabled; + /* Whether to send / consume json packets on MQTT */ + bool json_enabled; +} meshtastic_ModuleConfig_MQTTConfig; + +/* RemoteHardwareModule Config */ +typedef struct _meshtastic_ModuleConfig_RemoteHardwareConfig { + /* Whether the Module is enabled */ + bool enabled; +} meshtastic_ModuleConfig_RemoteHardwareConfig; + +/* Audio Config for codec2 voice */ +typedef struct _meshtastic_ModuleConfig_AudioConfig { + /* Whether Audio is enabled */ + bool codec2_enabled; + /* PTT Pin */ + uint8_t ptt_pin; + /* The audio sample rate to use for codec2 */ + meshtastic_ModuleConfig_AudioConfig_Audio_Baud bitrate; + /* I2S Word Select */ + uint8_t i2s_ws; + /* I2S Data IN */ + uint8_t i2s_sd; + /* I2S Data OUT */ + uint8_t i2s_din; + /* I2S Clock */ + uint8_t i2s_sck; +} meshtastic_ModuleConfig_AudioConfig; + +/* Serial Config */ +typedef struct _meshtastic_ModuleConfig_SerialConfig { + /* Preferences for the SerialModule + FIXME - Move this out of UserPreferences and into a section for module configuration. */ + bool enabled; + /* TODO: REPLACE */ + bool echo; + /* TODO: REPLACE */ + uint32_t rxd; + /* TODO: REPLACE */ + uint32_t txd; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_SerialConfig_Serial_Baud baud; + /* TODO: REPLACE */ + uint32_t timeout; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_SerialConfig_Serial_Mode mode; +} meshtastic_ModuleConfig_SerialConfig; + +/* External Notifications Config */ +typedef struct _meshtastic_ModuleConfig_ExternalNotificationConfig { + /* Enable the ExternalNotificationModule */ + bool enabled; + /* When using in On/Off mode, keep the output on for this many + milliseconds. Default 1000ms (1 second). */ + uint32_t output_ms; + /* Define the output pin GPIO setting Defaults to + EXT_NOTIFY_OUT if set for the board. + In standalone devices this pin should drive the LED to match the UI. */ + uint32_t output; + /* IF this is true, the 'output' Pin will be pulled active high, false + means active low. */ + bool active; + /* True: Alert when a text message arrives (output) */ + bool alert_message; + /* True: Alert when the bell character is received (output) */ + bool alert_bell; + /* use a PWM output instead of a simple on/off output. This will ignore + the 'output', 'output_ms' and 'active' settings and use the + device.buzzer_gpio instead. */ + bool use_pwm; + /* Optional: Define a secondary output pin for a vibra motor + This is used in standalone devices to match the UI. */ + uint8_t output_vibra; + /* Optional: Define a tertiary output pin for an active buzzer + This is used in standalone devices to to match the UI. */ + uint8_t output_buzzer; + /* True: Alert when a text message arrives (output_vibra) */ + bool alert_message_vibra; + /* True: Alert when a text message arrives (output_buzzer) */ + bool alert_message_buzzer; + /* True: Alert when the bell character is received (output_vibra) */ + bool alert_bell_vibra; + /* True: Alert when the bell character is received (output_buzzer) */ + bool alert_bell_buzzer; + /* The notification will toggle with 'output_ms' for this time of seconds. + Default is 0 which means don't repeat at all. 60 would mean blink + and/or beep for 60 seconds */ + uint16_t nag_timeout; +} meshtastic_ModuleConfig_ExternalNotificationConfig; + +/* Store and Forward Module Config */ +typedef struct _meshtastic_ModuleConfig_StoreForwardConfig { + /* Enable the Store and Forward Module */ + bool enabled; + /* TODO: REPLACE */ + bool heartbeat; + /* TODO: REPLACE */ + uint32_t records; + /* TODO: REPLACE */ + uint32_t history_return_max; + /* TODO: REPLACE */ + uint32_t history_return_window; +} meshtastic_ModuleConfig_StoreForwardConfig; + +/* Preferences for the RangeTestModule */ +typedef struct _meshtastic_ModuleConfig_RangeTestConfig { + /* Enable the Range Test Module */ + bool enabled; + /* Send out range test messages from this node */ + uint32_t sender; + /* Bool value indicating that this node should save a RangeTest.csv file. + ESP32 Only */ + bool save; +} meshtastic_ModuleConfig_RangeTestConfig; + +/* Configuration for both device and environment metrics */ +typedef struct _meshtastic_ModuleConfig_TelemetryConfig { + /* Interval in seconds of how often we should try to send our + device metrics to the mesh */ + uint32_t device_update_interval; + uint32_t environment_update_interval; + /* Preferences for the Telemetry Module (Environment) + Enable/Disable the telemetry measurement module measurement collection */ + bool environment_measurement_enabled; + /* Enable/Disable the telemetry measurement module on-device display */ + bool environment_screen_enabled; + /* We'll always read the sensor in Celsius, but sometimes we might want to + display the results in Fahrenheit as a "user preference". */ + bool environment_display_fahrenheit; +} meshtastic_ModuleConfig_TelemetryConfig; + +/* TODO: REPLACE */ +typedef struct _meshtastic_ModuleConfig_CannedMessageConfig { + /* Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating. */ + bool rotary1_enabled; + /* GPIO pin for rotary encoder A port. */ + uint32_t inputbroker_pin_a; + /* GPIO pin for rotary encoder B port. */ + uint32_t inputbroker_pin_b; + /* GPIO pin for rotary encoder Press port. */ + uint32_t inputbroker_pin_press; + /* Generate input event on CW of this kind. */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_cw; + /* Generate input event on CCW of this kind. */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_ccw; + /* Generate input event on Press of this kind. */ + meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar inputbroker_event_press; + /* Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker. */ + bool updown1_enabled; + /* Enable/disable CannedMessageModule. */ + bool enabled; + /* Input event origin accepted by the canned message module. + Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any" */ + char allow_input_source[16]; + /* CannedMessageModule also sends a bell character with the messages. + ExternalNotificationModule can benefit from this feature. */ + bool send_bell; +} meshtastic_ModuleConfig_CannedMessageConfig; + +/* Module Config */ +typedef struct _meshtastic_ModuleConfig { + pb_size_t which_payload_variant; + union { + /* TODO: REPLACE */ + meshtastic_ModuleConfig_MQTTConfig mqtt; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_SerialConfig serial; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_ExternalNotificationConfig external_notification; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_StoreForwardConfig store_forward; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_RangeTestConfig range_test; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_TelemetryConfig telemetry; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_CannedMessageConfig canned_message; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_AudioConfig audio; + /* TODO: REPLACE */ + meshtastic_ModuleConfig_RemoteHardwareConfig remote_hardware; + } payload_variant; +} meshtastic_ModuleConfig; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MIN meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_DEFAULT +#define _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MAX meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B +#define _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_ARRAYSIZE ((meshtastic_ModuleConfig_AudioConfig_Audio_Baud)(meshtastic_ModuleConfig_AudioConfig_Audio_Baud_CODEC2_700B+1)) + +#define _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MIN meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_DEFAULT +#define _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MAX meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600 +#define _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_ARRAYSIZE ((meshtastic_ModuleConfig_SerialConfig_Serial_Baud)(meshtastic_ModuleConfig_SerialConfig_Serial_Baud_BAUD_921600+1)) + +#define _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MIN meshtastic_ModuleConfig_SerialConfig_Serial_Mode_DEFAULT +#define _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MAX meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA +#define _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_ARRAYSIZE ((meshtastic_ModuleConfig_SerialConfig_Serial_Mode)(meshtastic_ModuleConfig_SerialConfig_Serial_Mode_NMEA+1)) + +#define _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_NONE +#define _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MAX meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK +#define _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_ARRAYSIZE ((meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar)(meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_BACK+1)) + + + + +#define meshtastic_ModuleConfig_AudioConfig_bitrate_ENUMTYPE meshtastic_ModuleConfig_AudioConfig_Audio_Baud + +#define meshtastic_ModuleConfig_SerialConfig_baud_ENUMTYPE meshtastic_ModuleConfig_SerialConfig_Serial_Baud +#define meshtastic_ModuleConfig_SerialConfig_mode_ENUMTYPE meshtastic_ModuleConfig_SerialConfig_Serial_Mode + + + + + +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_cw_ENUMTYPE meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_ccw_ENUMTYPE meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_press_ENUMTYPE meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar + + +/* Initializer values for message structs */ +#define meshtastic_ModuleConfig_init_default {0, {meshtastic_ModuleConfig_MQTTConfig_init_default}} +#define meshtastic_ModuleConfig_MQTTConfig_init_default {0, "", "", "", 0, 0} +#define meshtastic_ModuleConfig_RemoteHardwareConfig_init_default {0} +#define meshtastic_ModuleConfig_AudioConfig_init_default {0, 0, _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MIN, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_SerialConfig_init_default {0, 0, 0, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MIN, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MIN} +#define meshtastic_ModuleConfig_ExternalNotificationConfig_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_StoreForwardConfig_init_default {0, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_RangeTestConfig_init_default {0, 0, 0} +#define meshtastic_ModuleConfig_TelemetryConfig_init_default {0, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_CannedMessageConfig_init_default {0, 0, 0, 0, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, 0, 0, "", 0} +#define meshtastic_ModuleConfig_init_zero {0, {meshtastic_ModuleConfig_MQTTConfig_init_zero}} +#define meshtastic_ModuleConfig_MQTTConfig_init_zero {0, "", "", "", 0, 0} +#define meshtastic_ModuleConfig_RemoteHardwareConfig_init_zero {0} +#define meshtastic_ModuleConfig_AudioConfig_init_zero {0, 0, _meshtastic_ModuleConfig_AudioConfig_Audio_Baud_MIN, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_SerialConfig_init_zero {0, 0, 0, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Baud_MIN, 0, _meshtastic_ModuleConfig_SerialConfig_Serial_Mode_MIN} +#define meshtastic_ModuleConfig_ExternalNotificationConfig_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_StoreForwardConfig_init_zero {0, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_RangeTestConfig_init_zero {0, 0, 0} +#define meshtastic_ModuleConfig_TelemetryConfig_init_zero {0, 0, 0, 0, 0} +#define meshtastic_ModuleConfig_CannedMessageConfig_init_zero {0, 0, 0, 0, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, _meshtastic_ModuleConfig_CannedMessageConfig_InputEventChar_MIN, 0, 0, "", 0} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_ModuleConfig_MQTTConfig_enabled_tag 1 +#define meshtastic_ModuleConfig_MQTTConfig_address_tag 2 +#define meshtastic_ModuleConfig_MQTTConfig_username_tag 3 +#define meshtastic_ModuleConfig_MQTTConfig_password_tag 4 +#define meshtastic_ModuleConfig_MQTTConfig_encryption_enabled_tag 5 +#define meshtastic_ModuleConfig_MQTTConfig_json_enabled_tag 6 +#define meshtastic_ModuleConfig_RemoteHardwareConfig_enabled_tag 1 +#define meshtastic_ModuleConfig_AudioConfig_codec2_enabled_tag 1 +#define meshtastic_ModuleConfig_AudioConfig_ptt_pin_tag 2 +#define meshtastic_ModuleConfig_AudioConfig_bitrate_tag 3 +#define meshtastic_ModuleConfig_AudioConfig_i2s_ws_tag 4 +#define meshtastic_ModuleConfig_AudioConfig_i2s_sd_tag 5 +#define meshtastic_ModuleConfig_AudioConfig_i2s_din_tag 6 +#define meshtastic_ModuleConfig_AudioConfig_i2s_sck_tag 7 +#define meshtastic_ModuleConfig_SerialConfig_enabled_tag 1 +#define meshtastic_ModuleConfig_SerialConfig_echo_tag 2 +#define meshtastic_ModuleConfig_SerialConfig_rxd_tag 3 +#define meshtastic_ModuleConfig_SerialConfig_txd_tag 4 +#define meshtastic_ModuleConfig_SerialConfig_baud_tag 5 +#define meshtastic_ModuleConfig_SerialConfig_timeout_tag 6 +#define meshtastic_ModuleConfig_SerialConfig_mode_tag 7 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_enabled_tag 1 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_ms_tag 2 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_tag 3 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_active_tag 4 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_message_tag 5 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_bell_tag 6 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_use_pwm_tag 7 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_vibra_tag 8 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_output_buzzer_tag 9 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_message_vibra_tag 10 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_message_buzzer_tag 11 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_bell_vibra_tag 12 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_alert_bell_buzzer_tag 13 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_nag_timeout_tag 14 +#define meshtastic_ModuleConfig_StoreForwardConfig_enabled_tag 1 +#define meshtastic_ModuleConfig_StoreForwardConfig_heartbeat_tag 2 +#define meshtastic_ModuleConfig_StoreForwardConfig_records_tag 3 +#define meshtastic_ModuleConfig_StoreForwardConfig_history_return_max_tag 4 +#define meshtastic_ModuleConfig_StoreForwardConfig_history_return_window_tag 5 +#define meshtastic_ModuleConfig_RangeTestConfig_enabled_tag 1 +#define meshtastic_ModuleConfig_RangeTestConfig_sender_tag 2 +#define meshtastic_ModuleConfig_RangeTestConfig_save_tag 3 +#define meshtastic_ModuleConfig_TelemetryConfig_device_update_interval_tag 1 +#define meshtastic_ModuleConfig_TelemetryConfig_environment_update_interval_tag 2 +#define meshtastic_ModuleConfig_TelemetryConfig_environment_measurement_enabled_tag 3 +#define meshtastic_ModuleConfig_TelemetryConfig_environment_screen_enabled_tag 4 +#define meshtastic_ModuleConfig_TelemetryConfig_environment_display_fahrenheit_tag 5 +#define meshtastic_ModuleConfig_CannedMessageConfig_rotary1_enabled_tag 1 +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_pin_a_tag 2 +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_pin_b_tag 3 +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_pin_press_tag 4 +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_cw_tag 5 +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_ccw_tag 6 +#define meshtastic_ModuleConfig_CannedMessageConfig_inputbroker_event_press_tag 7 +#define meshtastic_ModuleConfig_CannedMessageConfig_updown1_enabled_tag 8 +#define meshtastic_ModuleConfig_CannedMessageConfig_enabled_tag 9 +#define meshtastic_ModuleConfig_CannedMessageConfig_allow_input_source_tag 10 +#define meshtastic_ModuleConfig_CannedMessageConfig_send_bell_tag 11 +#define meshtastic_ModuleConfig_mqtt_tag 1 +#define meshtastic_ModuleConfig_serial_tag 2 +#define meshtastic_ModuleConfig_external_notification_tag 3 +#define meshtastic_ModuleConfig_store_forward_tag 4 +#define meshtastic_ModuleConfig_range_test_tag 5 +#define meshtastic_ModuleConfig_telemetry_tag 6 +#define meshtastic_ModuleConfig_canned_message_tag 7 +#define meshtastic_ModuleConfig_audio_tag 8 +#define meshtastic_ModuleConfig_remote_hardware_tag 9 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_ModuleConfig_FIELDLIST(X, a) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,mqtt,payload_variant.mqtt), 1) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,serial,payload_variant.serial), 2) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,external_notification,payload_variant.external_notification), 3) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,store_forward,payload_variant.store_forward), 4) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,range_test,payload_variant.range_test), 5) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,telemetry,payload_variant.telemetry), 6) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,canned_message,payload_variant.canned_message), 7) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,audio,payload_variant.audio), 8) \ +X(a, STATIC, ONEOF, MESSAGE, (payload_variant,remote_hardware,payload_variant.remote_hardware), 9) +#define meshtastic_ModuleConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_DEFAULT NULL +#define meshtastic_ModuleConfig_payload_variant_mqtt_MSGTYPE meshtastic_ModuleConfig_MQTTConfig +#define meshtastic_ModuleConfig_payload_variant_serial_MSGTYPE meshtastic_ModuleConfig_SerialConfig +#define meshtastic_ModuleConfig_payload_variant_external_notification_MSGTYPE meshtastic_ModuleConfig_ExternalNotificationConfig +#define meshtastic_ModuleConfig_payload_variant_store_forward_MSGTYPE meshtastic_ModuleConfig_StoreForwardConfig +#define meshtastic_ModuleConfig_payload_variant_range_test_MSGTYPE meshtastic_ModuleConfig_RangeTestConfig +#define meshtastic_ModuleConfig_payload_variant_telemetry_MSGTYPE meshtastic_ModuleConfig_TelemetryConfig +#define meshtastic_ModuleConfig_payload_variant_canned_message_MSGTYPE meshtastic_ModuleConfig_CannedMessageConfig +#define meshtastic_ModuleConfig_payload_variant_audio_MSGTYPE meshtastic_ModuleConfig_AudioConfig +#define meshtastic_ModuleConfig_payload_variant_remote_hardware_MSGTYPE meshtastic_ModuleConfig_RemoteHardwareConfig + +#define meshtastic_ModuleConfig_MQTTConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 1) \ +X(a, STATIC, SINGULAR, STRING, address, 2) \ +X(a, STATIC, SINGULAR, STRING, username, 3) \ +X(a, STATIC, SINGULAR, STRING, password, 4) \ +X(a, STATIC, SINGULAR, BOOL, encryption_enabled, 5) \ +X(a, STATIC, SINGULAR, BOOL, json_enabled, 6) +#define meshtastic_ModuleConfig_MQTTConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_MQTTConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_RemoteHardwareConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 1) +#define meshtastic_ModuleConfig_RemoteHardwareConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_RemoteHardwareConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_AudioConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, codec2_enabled, 1) \ +X(a, STATIC, SINGULAR, UINT32, ptt_pin, 2) \ +X(a, STATIC, SINGULAR, UENUM, bitrate, 3) \ +X(a, STATIC, SINGULAR, UINT32, i2s_ws, 4) \ +X(a, STATIC, SINGULAR, UINT32, i2s_sd, 5) \ +X(a, STATIC, SINGULAR, UINT32, i2s_din, 6) \ +X(a, STATIC, SINGULAR, UINT32, i2s_sck, 7) +#define meshtastic_ModuleConfig_AudioConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_AudioConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_SerialConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 1) \ +X(a, STATIC, SINGULAR, BOOL, echo, 2) \ +X(a, STATIC, SINGULAR, UINT32, rxd, 3) \ +X(a, STATIC, SINGULAR, UINT32, txd, 4) \ +X(a, STATIC, SINGULAR, UENUM, baud, 5) \ +X(a, STATIC, SINGULAR, UINT32, timeout, 6) \ +X(a, STATIC, SINGULAR, UENUM, mode, 7) +#define meshtastic_ModuleConfig_SerialConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_SerialConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_ExternalNotificationConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 1) \ +X(a, STATIC, SINGULAR, UINT32, output_ms, 2) \ +X(a, STATIC, SINGULAR, UINT32, output, 3) \ +X(a, STATIC, SINGULAR, BOOL, active, 4) \ +X(a, STATIC, SINGULAR, BOOL, alert_message, 5) \ +X(a, STATIC, SINGULAR, BOOL, alert_bell, 6) \ +X(a, STATIC, SINGULAR, BOOL, use_pwm, 7) \ +X(a, STATIC, SINGULAR, UINT32, output_vibra, 8) \ +X(a, STATIC, SINGULAR, UINT32, output_buzzer, 9) \ +X(a, STATIC, SINGULAR, BOOL, alert_message_vibra, 10) \ +X(a, STATIC, SINGULAR, BOOL, alert_message_buzzer, 11) \ +X(a, STATIC, SINGULAR, BOOL, alert_bell_vibra, 12) \ +X(a, STATIC, SINGULAR, BOOL, alert_bell_buzzer, 13) \ +X(a, STATIC, SINGULAR, UINT32, nag_timeout, 14) +#define meshtastic_ModuleConfig_ExternalNotificationConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_ExternalNotificationConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_StoreForwardConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 1) \ +X(a, STATIC, SINGULAR, BOOL, heartbeat, 2) \ +X(a, STATIC, SINGULAR, UINT32, records, 3) \ +X(a, STATIC, SINGULAR, UINT32, history_return_max, 4) \ +X(a, STATIC, SINGULAR, UINT32, history_return_window, 5) +#define meshtastic_ModuleConfig_StoreForwardConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_StoreForwardConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_RangeTestConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 1) \ +X(a, STATIC, SINGULAR, UINT32, sender, 2) \ +X(a, STATIC, SINGULAR, BOOL, save, 3) +#define meshtastic_ModuleConfig_RangeTestConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_RangeTestConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_TelemetryConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, device_update_interval, 1) \ +X(a, STATIC, SINGULAR, UINT32, environment_update_interval, 2) \ +X(a, STATIC, SINGULAR, BOOL, environment_measurement_enabled, 3) \ +X(a, STATIC, SINGULAR, BOOL, environment_screen_enabled, 4) \ +X(a, STATIC, SINGULAR, BOOL, environment_display_fahrenheit, 5) +#define meshtastic_ModuleConfig_TelemetryConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_TelemetryConfig_DEFAULT NULL + +#define meshtastic_ModuleConfig_CannedMessageConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, BOOL, rotary1_enabled, 1) \ +X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_a, 2) \ +X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_b, 3) \ +X(a, STATIC, SINGULAR, UINT32, inputbroker_pin_press, 4) \ +X(a, STATIC, SINGULAR, UENUM, inputbroker_event_cw, 5) \ +X(a, STATIC, SINGULAR, UENUM, inputbroker_event_ccw, 6) \ +X(a, STATIC, SINGULAR, UENUM, inputbroker_event_press, 7) \ +X(a, STATIC, SINGULAR, BOOL, updown1_enabled, 8) \ +X(a, STATIC, SINGULAR, BOOL, enabled, 9) \ +X(a, STATIC, SINGULAR, STRING, allow_input_source, 10) \ +X(a, STATIC, SINGULAR, BOOL, send_bell, 11) +#define meshtastic_ModuleConfig_CannedMessageConfig_CALLBACK NULL +#define meshtastic_ModuleConfig_CannedMessageConfig_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_ModuleConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_MQTTConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_RemoteHardwareConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_AudioConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_SerialConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_ExternalNotificationConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_StoreForwardConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_RangeTestConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_TelemetryConfig_msg; +extern const pb_msgdesc_t meshtastic_ModuleConfig_CannedMessageConfig_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_ModuleConfig_fields &meshtastic_ModuleConfig_msg +#define meshtastic_ModuleConfig_MQTTConfig_fields &meshtastic_ModuleConfig_MQTTConfig_msg +#define meshtastic_ModuleConfig_RemoteHardwareConfig_fields &meshtastic_ModuleConfig_RemoteHardwareConfig_msg +#define meshtastic_ModuleConfig_AudioConfig_fields &meshtastic_ModuleConfig_AudioConfig_msg +#define meshtastic_ModuleConfig_SerialConfig_fields &meshtastic_ModuleConfig_SerialConfig_msg +#define meshtastic_ModuleConfig_ExternalNotificationConfig_fields &meshtastic_ModuleConfig_ExternalNotificationConfig_msg +#define meshtastic_ModuleConfig_StoreForwardConfig_fields &meshtastic_ModuleConfig_StoreForwardConfig_msg +#define meshtastic_ModuleConfig_RangeTestConfig_fields &meshtastic_ModuleConfig_RangeTestConfig_msg +#define meshtastic_ModuleConfig_TelemetryConfig_fields &meshtastic_ModuleConfig_TelemetryConfig_msg +#define meshtastic_ModuleConfig_CannedMessageConfig_fields &meshtastic_ModuleConfig_CannedMessageConfig_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_ModuleConfig_AudioConfig_size 19 +#define meshtastic_ModuleConfig_CannedMessageConfig_size 49 +#define meshtastic_ModuleConfig_ExternalNotificationConfig_size 40 +#define meshtastic_ModuleConfig_MQTTConfig_size 201 +#define meshtastic_ModuleConfig_RangeTestConfig_size 10 +#define meshtastic_ModuleConfig_RemoteHardwareConfig_size 2 +#define meshtastic_ModuleConfig_SerialConfig_size 26 +#define meshtastic_ModuleConfig_StoreForwardConfig_size 22 +#define meshtastic_ModuleConfig_TelemetryConfig_size 18 +#define meshtastic_ModuleConfig_size 204 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/mqtt.pb.c b/src/mesh/generated/meshtastic/mqtt.pb.c new file mode 100644 index 000000000..3046e6109 --- /dev/null +++ b/src/mesh/generated/meshtastic/mqtt.pb.c @@ -0,0 +1,12 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/mqtt.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_ServiceEnvelope, meshtastic_ServiceEnvelope, AUTO) + + + diff --git a/src/mesh/generated/meshtastic/mqtt.pb.h b/src/mesh/generated/meshtastic/mqtt.pb.h new file mode 100644 index 000000000..12e83c724 --- /dev/null +++ b/src/mesh/generated/meshtastic/mqtt.pb.h @@ -0,0 +1,61 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_MQTT_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_MQTT_PB_H_INCLUDED +#include +#include "meshtastic/mesh.pb.h" + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Struct definitions */ +/* This message wraps a MeshPacket with extra metadata about the sender and how it arrived. */ +typedef struct _meshtastic_ServiceEnvelope { + /* The (probably encrypted) packet */ + struct _meshtastic_MeshPacket *packet; + /* The global channel ID it was sent on */ + char *channel_id; + /* The sending gateway node ID. Can we use this to authenticate/prevent fake + nodeid impersonation for senders? - i.e. use gateway/mesh id (which is authenticated) + local node id as + the globally trusted nodenum */ + char *gateway_id; +} meshtastic_ServiceEnvelope; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initializer values for message structs */ +#define meshtastic_ServiceEnvelope_init_default {NULL, NULL, NULL} +#define meshtastic_ServiceEnvelope_init_zero {NULL, NULL, NULL} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_ServiceEnvelope_packet_tag 1 +#define meshtastic_ServiceEnvelope_channel_id_tag 2 +#define meshtastic_ServiceEnvelope_gateway_id_tag 3 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_ServiceEnvelope_FIELDLIST(X, a) \ +X(a, POINTER, OPTIONAL, MESSAGE, packet, 1) \ +X(a, POINTER, SINGULAR, STRING, channel_id, 2) \ +X(a, POINTER, SINGULAR, STRING, gateway_id, 3) +#define meshtastic_ServiceEnvelope_CALLBACK NULL +#define meshtastic_ServiceEnvelope_DEFAULT NULL +#define meshtastic_ServiceEnvelope_packet_MSGTYPE meshtastic_MeshPacket + +extern const pb_msgdesc_t meshtastic_ServiceEnvelope_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_ServiceEnvelope_fields &meshtastic_ServiceEnvelope_msg + +/* Maximum encoded size of messages (where known) */ +/* meshtastic_ServiceEnvelope_size depends on runtime parameters */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/portnums.pb.c b/src/mesh/generated/meshtastic/portnums.pb.c new file mode 100644 index 000000000..dd0d00e20 --- /dev/null +++ b/src/mesh/generated/meshtastic/portnums.pb.c @@ -0,0 +1,10 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/portnums.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + + + diff --git a/src/mesh/generated/meshtastic/portnums.pb.h b/src/mesh/generated/meshtastic/portnums.pb.h new file mode 100644 index 000000000..59cf0ebe5 --- /dev/null +++ b/src/mesh/generated/meshtastic/portnums.pb.h @@ -0,0 +1,112 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_PORTNUMS_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_PORTNUMS_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* For any new 'apps' that run on the device or via sister apps on phones/PCs they should pick and use a + unique 'portnum' for their application. + If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to this + master table. + PortNums should be assigned in the following range: + 0-63 Core Meshtastic use, do not use for third party apps + 64-127 Registered 3rd party apps, send in a pull request that adds a new entry to portnums.proto to register your application + 256-511 Use one of these portnums for your private applications that you don't want to register publically + All other values are reserved. + Note: This was formerly a Type enum named 'typ' with the same id # + We have change to this 'portnum' based scheme for specifying app handlers for particular payloads. + This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically. */ +typedef enum _meshtastic_PortNum { + /* Deprecated: do not use in new code (formerly called OPAQUE) + A message sent from a device outside of the mesh, in a form the mesh does not understand + NOTE: This must be 0, because it is documented in IMeshService.aidl to be so */ + meshtastic_PortNum_UNKNOWN_APP = 0, + /* A simple UTF-8 text message, which even the little micros in the mesh + can understand and show on their screen eventually in some circumstances + even signal might send messages in this form (see below) */ + meshtastic_PortNum_TEXT_MESSAGE_APP = 1, + /* Reserved for built-in GPIO/example app. + See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number */ + meshtastic_PortNum_REMOTE_HARDWARE_APP = 2, + /* The built-in position messaging app. + Payload is a [Position](/docs/developers/protobufs/api#position) message */ + meshtastic_PortNum_POSITION_APP = 3, + /* The built-in user info app. + Payload is a [User](/docs/developers/protobufs/api#user) message */ + meshtastic_PortNum_NODEINFO_APP = 4, + /* Protocol control packets for mesh protocol use. + Payload is a [Routing](/docs/developers/protobufs/api#routing) message */ + meshtastic_PortNum_ROUTING_APP = 5, + /* Admin control packets. + Payload is a [AdminMessage](/docs/developers/protobufs/api#adminmessage) message */ + meshtastic_PortNum_ADMIN_APP = 6, + /* Compressed TEXT_MESSAGE payloads. */ + meshtastic_PortNum_TEXT_MESSAGE_COMPRESSED_APP = 7, + /* Waypoint payloads. + Payload is a [Waypoint](/docs/developers/protobufs/api#waypoint) message */ + meshtastic_PortNum_WAYPOINT_APP = 8, + /* Audio Payloads. + Encapsulated codec2 packets. On 2.4 GHZ Bandwidths only for now */ + meshtastic_PortNum_AUDIO_APP = 9, + /* Provides a 'ping' service that replies to any packet it receives. + Also serves as a small example module. */ + meshtastic_PortNum_REPLY_APP = 32, + /* Used for the python IP tunnel feature */ + meshtastic_PortNum_IP_TUNNEL_APP = 33, + /* Provides a hardware serial interface to send and receive from the Meshtastic network. + Connect to the RX/TX pins of a device with 38400 8N1. Packets received from the Meshtastic + network is forwarded to the RX pin while sending a packet to TX will go out to the Mesh network. + Maximum packet size of 240 bytes. + Module is disabled by default can be turned on by setting SERIAL_MODULE_ENABLED = 1 in SerialPlugh.cpp. */ + meshtastic_PortNum_SERIAL_APP = 64, + /* STORE_FORWARD_APP (Work in Progress) + Maintained by Jm Casler (MC Hamster) : jm@casler.org */ + meshtastic_PortNum_STORE_FORWARD_APP = 65, + /* Optional port for messages for the range test module. */ + meshtastic_PortNum_RANGE_TEST_APP = 66, + /* Provides a format to send and receive telemetry data from the Meshtastic network. + Maintained by Charles Crossan (crossan007) : crossan007@gmail.com */ + meshtastic_PortNum_TELEMETRY_APP = 67, + /* Experimental tools for estimating node position without a GPS + Maintained by Github user a-f-G-U-C (a Meshtastic contributor) + Project files at https://github.com/a-f-G-U-C/Meshtastic-ZPS */ + meshtastic_PortNum_ZPS_APP = 68, + /* Used to let multiple instances of Linux native applications communicate + as if they did using their LoRa chip. + Maintained by GitHub user GUVWAF. + Project files at https://github.com/GUVWAF/Meshtasticator */ + meshtastic_PortNum_SIMULATOR_APP = 69, + /* Provides a traceroute functionality to show the route a packet towards + a certain destination would take on the mesh. */ + meshtastic_PortNum_TRACEROUTE_APP = 70, + /* Private applications should use portnums >= 256. + To simplify initial development and testing you can use "PRIVATE_APP" + in your code without needing to rebuild protobuf files (via [regen-protos.sh](https://github.com/meshtastic/firmware/blob/master/bin/regen-protos.sh)) */ + meshtastic_PortNum_PRIVATE_APP = 256, + /* ATAK Forwarder Module https://github.com/paulmandal/atak-forwarder */ + meshtastic_PortNum_ATAK_FORWARDER = 257, + /* Currently we limit port nums to no higher than this value */ + meshtastic_PortNum_MAX = 511 +} meshtastic_PortNum; + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_PortNum_MIN meshtastic_PortNum_UNKNOWN_APP +#define _meshtastic_PortNum_MAX meshtastic_PortNum_MAX +#define _meshtastic_PortNum_ARRAYSIZE ((meshtastic_PortNum)(meshtastic_PortNum_MAX+1)) + + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/remote_hardware.pb.c b/src/mesh/generated/meshtastic/remote_hardware.pb.c new file mode 100644 index 000000000..f368ec1ef --- /dev/null +++ b/src/mesh/generated/meshtastic/remote_hardware.pb.c @@ -0,0 +1,13 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/remote_hardware.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_HardwareMessage, meshtastic_HardwareMessage, AUTO) + + + + diff --git a/src/mesh/generated/meshtastic/remote_hardware.pb.h b/src/mesh/generated/meshtastic/remote_hardware.pb.h new file mode 100644 index 000000000..26df97616 --- /dev/null +++ b/src/mesh/generated/meshtastic/remote_hardware.pb.h @@ -0,0 +1,93 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_REMOTE_HARDWARE_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_REMOTE_HARDWARE_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* TODO: REPLACE */ +typedef enum _meshtastic_HardwareMessage_Type { + /* Unset/unused */ + meshtastic_HardwareMessage_Type_UNSET = 0, + /* Set gpio gpios based on gpio_mask/gpio_value */ + meshtastic_HardwareMessage_Type_WRITE_GPIOS = 1, + /* We are now interested in watching the gpio_mask gpios. + If the selected gpios change, please broadcast GPIOS_CHANGED. + Will implicitly change the gpios requested to be INPUT gpios. */ + meshtastic_HardwareMessage_Type_WATCH_GPIOS = 2, + /* The gpios listed in gpio_mask have changed, the new values are listed in gpio_value */ + meshtastic_HardwareMessage_Type_GPIOS_CHANGED = 3, + /* Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated */ + meshtastic_HardwareMessage_Type_READ_GPIOS = 4, + /* A reply to READ_GPIOS. gpio_mask and gpio_value will be populated */ + meshtastic_HardwareMessage_Type_READ_GPIOS_REPLY = 5 +} meshtastic_HardwareMessage_Type; + +/* Struct definitions */ +/* An example app to show off the module system. This message is used for + REMOTE_HARDWARE_APP PortNums. + Also provides easy remote access to any GPIO. + In the future other remote hardware operations can be added based on user interest + (i.e. serial output, spi/i2c input/output). + FIXME - currently this feature is turned on by default which is dangerous + because no security yet (beyond the channel mechanism). + It should be off by default and then protected based on some TBD mechanism + (a special channel once multichannel support is included?) */ +typedef struct _meshtastic_HardwareMessage { + /* What type of HardwareMessage is this? */ + meshtastic_HardwareMessage_Type type; + /* What gpios are we changing. Not used for all MessageTypes, see MessageType for details */ + uint64_t gpio_mask; + /* For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios. + Not used for all MessageTypes, see MessageType for details */ + uint64_t gpio_value; +} meshtastic_HardwareMessage; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_HardwareMessage_Type_MIN meshtastic_HardwareMessage_Type_UNSET +#define _meshtastic_HardwareMessage_Type_MAX meshtastic_HardwareMessage_Type_READ_GPIOS_REPLY +#define _meshtastic_HardwareMessage_Type_ARRAYSIZE ((meshtastic_HardwareMessage_Type)(meshtastic_HardwareMessage_Type_READ_GPIOS_REPLY+1)) + +#define meshtastic_HardwareMessage_type_ENUMTYPE meshtastic_HardwareMessage_Type + + +/* Initializer values for message structs */ +#define meshtastic_HardwareMessage_init_default {_meshtastic_HardwareMessage_Type_MIN, 0, 0} +#define meshtastic_HardwareMessage_init_zero {_meshtastic_HardwareMessage_Type_MIN, 0, 0} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_HardwareMessage_type_tag 1 +#define meshtastic_HardwareMessage_gpio_mask_tag 2 +#define meshtastic_HardwareMessage_gpio_value_tag 3 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_HardwareMessage_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UENUM, type, 1) \ +X(a, STATIC, SINGULAR, UINT64, gpio_mask, 2) \ +X(a, STATIC, SINGULAR, UINT64, gpio_value, 3) +#define meshtastic_HardwareMessage_CALLBACK NULL +#define meshtastic_HardwareMessage_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_HardwareMessage_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_HardwareMessage_fields &meshtastic_HardwareMessage_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_HardwareMessage_size 24 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/rtttl.pb.c b/src/mesh/generated/meshtastic/rtttl.pb.c new file mode 100644 index 000000000..685bbde45 --- /dev/null +++ b/src/mesh/generated/meshtastic/rtttl.pb.c @@ -0,0 +1,12 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/rtttl.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_RTTTLConfig, meshtastic_RTTTLConfig, AUTO) + + + diff --git a/src/mesh/generated/meshtastic/rtttl.pb.h b/src/mesh/generated/meshtastic/rtttl.pb.h new file mode 100644 index 000000000..aa55d0b7d --- /dev/null +++ b/src/mesh/generated/meshtastic/rtttl.pb.h @@ -0,0 +1,49 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_RTTTL_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_RTTTL_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Struct definitions */ +/* Canned message module configuration. */ +typedef struct _meshtastic_RTTTLConfig { + /* Ringtone for PWM Buzzer in RTTTL Format. */ + char ringtone[230]; +} meshtastic_RTTTLConfig; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Initializer values for message structs */ +#define meshtastic_RTTTLConfig_init_default {""} +#define meshtastic_RTTTLConfig_init_zero {""} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_RTTTLConfig_ringtone_tag 1 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_RTTTLConfig_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, STRING, ringtone, 1) +#define meshtastic_RTTTLConfig_CALLBACK NULL +#define meshtastic_RTTTLConfig_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_RTTTLConfig_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_RTTTLConfig_fields &meshtastic_RTTTLConfig_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_RTTTLConfig_size 232 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/storeforward.pb.c b/src/mesh/generated/meshtastic/storeforward.pb.c new file mode 100644 index 000000000..44a1c70c1 --- /dev/null +++ b/src/mesh/generated/meshtastic/storeforward.pb.c @@ -0,0 +1,22 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/storeforward.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_StoreAndForward, meshtastic_StoreAndForward, AUTO) + + +PB_BIND(meshtastic_StoreAndForward_Statistics, meshtastic_StoreAndForward_Statistics, AUTO) + + +PB_BIND(meshtastic_StoreAndForward_History, meshtastic_StoreAndForward_History, AUTO) + + +PB_BIND(meshtastic_StoreAndForward_Heartbeat, meshtastic_StoreAndForward_Heartbeat, AUTO) + + + + diff --git a/src/mesh/generated/meshtastic/storeforward.pb.h b/src/mesh/generated/meshtastic/storeforward.pb.h new file mode 100644 index 000000000..e6cb51f61 --- /dev/null +++ b/src/mesh/generated/meshtastic/storeforward.pb.h @@ -0,0 +1,213 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_STOREFORWARD_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_STOREFORWARD_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* 001 - 063 = From Router + 064 - 127 = From Client */ +typedef enum _meshtastic_StoreAndForward_RequestResponse { + /* Unset/unused */ + meshtastic_StoreAndForward_RequestResponse_UNSET = 0, + /* Router is an in error state. */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_ERROR = 1, + /* Router heartbeat */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_HEARTBEAT = 2, + /* Router has requested the client respond. This can work as a + "are you there" message. */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_PING = 3, + /* The response to a "Ping" */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_PONG = 4, + /* Router is currently busy. Please try again later. */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_BUSY = 5, + /* Router is responding to a request for history. */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_HISTORY = 6, + /* Router is responding to a request for stats. */ + meshtastic_StoreAndForward_RequestResponse_ROUTER_STATS = 7, + /* Client is an in error state. */ + meshtastic_StoreAndForward_RequestResponse_CLIENT_ERROR = 64, + /* Client has requested a replay from the router. */ + meshtastic_StoreAndForward_RequestResponse_CLIENT_HISTORY = 65, + /* Client has requested stats from the router. */ + meshtastic_StoreAndForward_RequestResponse_CLIENT_STATS = 66, + /* Client has requested the router respond. This can work as a + "are you there" message. */ + meshtastic_StoreAndForward_RequestResponse_CLIENT_PING = 67, + /* The response to a "Ping" */ + meshtastic_StoreAndForward_RequestResponse_CLIENT_PONG = 68, + /* Client has requested that the router abort processing the client's request */ + meshtastic_StoreAndForward_RequestResponse_CLIENT_ABORT = 106 +} meshtastic_StoreAndForward_RequestResponse; + +/* Struct definitions */ +/* TODO: REPLACE */ +typedef struct _meshtastic_StoreAndForward_Statistics { + /* Number of messages we have ever seen */ + uint32_t messages_total; + /* Number of messages we have currently saved our history. */ + uint32_t messages_saved; + /* Maximum number of messages we will save */ + uint32_t messages_max; + /* Router uptime in seconds */ + uint32_t up_time; + /* Number of times any client sent a request to the S&F. */ + uint32_t requests; + /* Number of times the history was requested. */ + uint32_t requests_history; + /* Is the heartbeat enabled on the server? */ + bool heartbeat; + /* Is the heartbeat enabled on the server? */ + uint32_t return_max; + /* Is the heartbeat enabled on the server? */ + uint32_t return_window; +} meshtastic_StoreAndForward_Statistics; + +/* TODO: REPLACE */ +typedef struct _meshtastic_StoreAndForward_History { + /* Number of that will be sent to the client */ + uint32_t history_messages; + /* The window of messages that was used to filter the history client requested */ + uint32_t window; + /* The window of messages that was used to filter the history client requested */ + uint32_t last_request; +} meshtastic_StoreAndForward_History; + +/* TODO: REPLACE */ +typedef struct _meshtastic_StoreAndForward_Heartbeat { + /* Number of that will be sent to the client */ + uint32_t period; + /* If set, this is not the primary Store & Forward router on the mesh */ + uint32_t secondary; +} meshtastic_StoreAndForward_Heartbeat; + +/* TODO: REPLACE */ +typedef struct _meshtastic_StoreAndForward { + /* TODO: REPLACE */ + meshtastic_StoreAndForward_RequestResponse rr; + pb_size_t which_variant; + union { + /* TODO: REPLACE */ + meshtastic_StoreAndForward_Statistics stats; + /* TODO: REPLACE */ + meshtastic_StoreAndForward_History history; + /* TODO: REPLACE */ + meshtastic_StoreAndForward_Heartbeat heartbeat; + /* Empty Payload */ + bool empty; + } variant; +} meshtastic_StoreAndForward; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_StoreAndForward_RequestResponse_MIN meshtastic_StoreAndForward_RequestResponse_UNSET +#define _meshtastic_StoreAndForward_RequestResponse_MAX meshtastic_StoreAndForward_RequestResponse_CLIENT_ABORT +#define _meshtastic_StoreAndForward_RequestResponse_ARRAYSIZE ((meshtastic_StoreAndForward_RequestResponse)(meshtastic_StoreAndForward_RequestResponse_CLIENT_ABORT+1)) + +#define meshtastic_StoreAndForward_rr_ENUMTYPE meshtastic_StoreAndForward_RequestResponse + + + + + +/* Initializer values for message structs */ +#define meshtastic_StoreAndForward_init_default {_meshtastic_StoreAndForward_RequestResponse_MIN, 0, {meshtastic_StoreAndForward_Statistics_init_default}} +#define meshtastic_StoreAndForward_Statistics_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0} +#define meshtastic_StoreAndForward_History_init_default {0, 0, 0} +#define meshtastic_StoreAndForward_Heartbeat_init_default {0, 0} +#define meshtastic_StoreAndForward_init_zero {_meshtastic_StoreAndForward_RequestResponse_MIN, 0, {meshtastic_StoreAndForward_Statistics_init_zero}} +#define meshtastic_StoreAndForward_Statistics_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0} +#define meshtastic_StoreAndForward_History_init_zero {0, 0, 0} +#define meshtastic_StoreAndForward_Heartbeat_init_zero {0, 0} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_StoreAndForward_Statistics_messages_total_tag 1 +#define meshtastic_StoreAndForward_Statistics_messages_saved_tag 2 +#define meshtastic_StoreAndForward_Statistics_messages_max_tag 3 +#define meshtastic_StoreAndForward_Statistics_up_time_tag 4 +#define meshtastic_StoreAndForward_Statistics_requests_tag 5 +#define meshtastic_StoreAndForward_Statistics_requests_history_tag 6 +#define meshtastic_StoreAndForward_Statistics_heartbeat_tag 7 +#define meshtastic_StoreAndForward_Statistics_return_max_tag 8 +#define meshtastic_StoreAndForward_Statistics_return_window_tag 9 +#define meshtastic_StoreAndForward_History_history_messages_tag 1 +#define meshtastic_StoreAndForward_History_window_tag 2 +#define meshtastic_StoreAndForward_History_last_request_tag 3 +#define meshtastic_StoreAndForward_Heartbeat_period_tag 1 +#define meshtastic_StoreAndForward_Heartbeat_secondary_tag 2 +#define meshtastic_StoreAndForward_rr_tag 1 +#define meshtastic_StoreAndForward_stats_tag 2 +#define meshtastic_StoreAndForward_history_tag 3 +#define meshtastic_StoreAndForward_heartbeat_tag 4 +#define meshtastic_StoreAndForward_empty_tag 5 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_StoreAndForward_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UENUM, rr, 1) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,stats,variant.stats), 2) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,history,variant.history), 3) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,heartbeat,variant.heartbeat), 4) \ +X(a, STATIC, ONEOF, BOOL, (variant,empty,variant.empty), 5) +#define meshtastic_StoreAndForward_CALLBACK NULL +#define meshtastic_StoreAndForward_DEFAULT NULL +#define meshtastic_StoreAndForward_variant_stats_MSGTYPE meshtastic_StoreAndForward_Statistics +#define meshtastic_StoreAndForward_variant_history_MSGTYPE meshtastic_StoreAndForward_History +#define meshtastic_StoreAndForward_variant_heartbeat_MSGTYPE meshtastic_StoreAndForward_Heartbeat + +#define meshtastic_StoreAndForward_Statistics_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, messages_total, 1) \ +X(a, STATIC, SINGULAR, UINT32, messages_saved, 2) \ +X(a, STATIC, SINGULAR, UINT32, messages_max, 3) \ +X(a, STATIC, SINGULAR, UINT32, up_time, 4) \ +X(a, STATIC, SINGULAR, UINT32, requests, 5) \ +X(a, STATIC, SINGULAR, UINT32, requests_history, 6) \ +X(a, STATIC, SINGULAR, BOOL, heartbeat, 7) \ +X(a, STATIC, SINGULAR, UINT32, return_max, 8) \ +X(a, STATIC, SINGULAR, UINT32, return_window, 9) +#define meshtastic_StoreAndForward_Statistics_CALLBACK NULL +#define meshtastic_StoreAndForward_Statistics_DEFAULT NULL + +#define meshtastic_StoreAndForward_History_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, history_messages, 1) \ +X(a, STATIC, SINGULAR, UINT32, window, 2) \ +X(a, STATIC, SINGULAR, UINT32, last_request, 3) +#define meshtastic_StoreAndForward_History_CALLBACK NULL +#define meshtastic_StoreAndForward_History_DEFAULT NULL + +#define meshtastic_StoreAndForward_Heartbeat_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, period, 1) \ +X(a, STATIC, SINGULAR, UINT32, secondary, 2) +#define meshtastic_StoreAndForward_Heartbeat_CALLBACK NULL +#define meshtastic_StoreAndForward_Heartbeat_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_StoreAndForward_msg; +extern const pb_msgdesc_t meshtastic_StoreAndForward_Statistics_msg; +extern const pb_msgdesc_t meshtastic_StoreAndForward_History_msg; +extern const pb_msgdesc_t meshtastic_StoreAndForward_Heartbeat_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_StoreAndForward_fields &meshtastic_StoreAndForward_msg +#define meshtastic_StoreAndForward_Statistics_fields &meshtastic_StoreAndForward_Statistics_msg +#define meshtastic_StoreAndForward_History_fields &meshtastic_StoreAndForward_History_msg +#define meshtastic_StoreAndForward_Heartbeat_fields &meshtastic_StoreAndForward_Heartbeat_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_StoreAndForward_Heartbeat_size 12 +#define meshtastic_StoreAndForward_History_size 18 +#define meshtastic_StoreAndForward_Statistics_size 50 +#define meshtastic_StoreAndForward_size 54 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/telemetry.pb.c b/src/mesh/generated/meshtastic/telemetry.pb.c new file mode 100644 index 000000000..cdc01710a --- /dev/null +++ b/src/mesh/generated/meshtastic/telemetry.pb.c @@ -0,0 +1,19 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/telemetry.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_DeviceMetrics, meshtastic_DeviceMetrics, AUTO) + + +PB_BIND(meshtastic_EnvironmentMetrics, meshtastic_EnvironmentMetrics, AUTO) + + +PB_BIND(meshtastic_Telemetry, meshtastic_Telemetry, AUTO) + + + + diff --git a/src/mesh/generated/meshtastic/telemetry.pb.h b/src/mesh/generated/meshtastic/telemetry.pb.h new file mode 100644 index 000000000..511ae1229 --- /dev/null +++ b/src/mesh/generated/meshtastic/telemetry.pb.h @@ -0,0 +1,172 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_TELEMETRY_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_TELEMETRY_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +/* TODO: REPLACE */ +typedef enum _meshtastic_TelemetrySensorType { + /* No external telemetry sensor explicitly set */ + meshtastic_TelemetrySensorType_SENSOR_UNSET = 0, + /* High accuracy temperature, pressure, humidity */ + meshtastic_TelemetrySensorType_BME280 = 1, + /* High accuracy temperature, pressure, humidity, and air resistance */ + meshtastic_TelemetrySensorType_BME680 = 2, + /* Very high accuracy temperature */ + meshtastic_TelemetrySensorType_MCP9808 = 3, + /* Moderate accuracy current and voltage */ + meshtastic_TelemetrySensorType_INA260 = 4, + /* Moderate accuracy current and voltage */ + meshtastic_TelemetrySensorType_INA219 = 5, + /* High accuracy temperature and pressure */ + meshtastic_TelemetrySensorType_BMP280 = 6, + /* High accuracy temperature and humidity */ + meshtastic_TelemetrySensorType_SHTC3 = 7, + /* High accuracy pressure */ + meshtastic_TelemetrySensorType_LPS22 = 8, + /* 3-Axis magnetic sensor */ + meshtastic_TelemetrySensorType_QMC6310 = 9, + /* 6-Axis inertial measurement sensor */ + meshtastic_TelemetrySensorType_QMI8658 = 10, + /* 3-Axis magnetic sensor */ + meshtastic_TelemetrySensorType_QMC5883L = 11, + /* High accuracy temperature and humidity */ + meshtastic_TelemetrySensorType_SHT31 = 12 +} meshtastic_TelemetrySensorType; + +/* Struct definitions */ +/* Key native device metrics such as battery level */ +typedef struct _meshtastic_DeviceMetrics { + /* 1-100 (0 means powered) */ + uint32_t battery_level; + /* Voltage measured */ + float voltage; + /* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise). */ + float channel_utilization; + /* Percent of airtime for transmission used within the last hour. */ + float air_util_tx; +} meshtastic_DeviceMetrics; + +/* Weather station or other environmental metrics */ +typedef struct _meshtastic_EnvironmentMetrics { + /* Temperature measured */ + float temperature; + /* Relative humidity percent measured */ + float relative_humidity; + /* Barometric pressure in hPA measured */ + float barometric_pressure; + /* Gas resistance in mOhm measured */ + float gas_resistance; + /* Voltage measured */ + float voltage; + /* Current measured */ + float current; +} meshtastic_EnvironmentMetrics; + +/* Types of Measurements the telemetry module is equipped to handle */ +typedef struct _meshtastic_Telemetry { + /* This is usually not sent over the mesh (to save space), but it is sent + from the phone so that the local device can set its RTC If it is sent over + the mesh (because there are devices on the mesh without GPS), it will only + be sent by devices which has a hardware GPS clock (IE Mobile Phone). + seconds since 1970 */ + uint32_t time; + pb_size_t which_variant; + union { + /* Key native device metrics such as battery level */ + meshtastic_DeviceMetrics device_metrics; + /* Weather station or other environmental metrics */ + meshtastic_EnvironmentMetrics environment_metrics; + } variant; +} meshtastic_Telemetry; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_TelemetrySensorType_MIN meshtastic_TelemetrySensorType_SENSOR_UNSET +#define _meshtastic_TelemetrySensorType_MAX meshtastic_TelemetrySensorType_SHT31 +#define _meshtastic_TelemetrySensorType_ARRAYSIZE ((meshtastic_TelemetrySensorType)(meshtastic_TelemetrySensorType_SHT31+1)) + + + + + +/* Initializer values for message structs */ +#define meshtastic_DeviceMetrics_init_default {0, 0, 0, 0} +#define meshtastic_EnvironmentMetrics_init_default {0, 0, 0, 0, 0, 0} +#define meshtastic_Telemetry_init_default {0, 0, {meshtastic_DeviceMetrics_init_default}} +#define meshtastic_DeviceMetrics_init_zero {0, 0, 0, 0} +#define meshtastic_EnvironmentMetrics_init_zero {0, 0, 0, 0, 0, 0} +#define meshtastic_Telemetry_init_zero {0, 0, {meshtastic_DeviceMetrics_init_zero}} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_DeviceMetrics_battery_level_tag 1 +#define meshtastic_DeviceMetrics_voltage_tag 2 +#define meshtastic_DeviceMetrics_channel_utilization_tag 3 +#define meshtastic_DeviceMetrics_air_util_tx_tag 4 +#define meshtastic_EnvironmentMetrics_temperature_tag 1 +#define meshtastic_EnvironmentMetrics_relative_humidity_tag 2 +#define meshtastic_EnvironmentMetrics_barometric_pressure_tag 3 +#define meshtastic_EnvironmentMetrics_gas_resistance_tag 4 +#define meshtastic_EnvironmentMetrics_voltage_tag 5 +#define meshtastic_EnvironmentMetrics_current_tag 6 +#define meshtastic_Telemetry_time_tag 1 +#define meshtastic_Telemetry_device_metrics_tag 2 +#define meshtastic_Telemetry_environment_metrics_tag 3 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_DeviceMetrics_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UINT32, battery_level, 1) \ +X(a, STATIC, SINGULAR, FLOAT, voltage, 2) \ +X(a, STATIC, SINGULAR, FLOAT, channel_utilization, 3) \ +X(a, STATIC, SINGULAR, FLOAT, air_util_tx, 4) +#define meshtastic_DeviceMetrics_CALLBACK NULL +#define meshtastic_DeviceMetrics_DEFAULT NULL + +#define meshtastic_EnvironmentMetrics_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, FLOAT, temperature, 1) \ +X(a, STATIC, SINGULAR, FLOAT, relative_humidity, 2) \ +X(a, STATIC, SINGULAR, FLOAT, barometric_pressure, 3) \ +X(a, STATIC, SINGULAR, FLOAT, gas_resistance, 4) \ +X(a, STATIC, SINGULAR, FLOAT, voltage, 5) \ +X(a, STATIC, SINGULAR, FLOAT, current, 6) +#define meshtastic_EnvironmentMetrics_CALLBACK NULL +#define meshtastic_EnvironmentMetrics_DEFAULT NULL + +#define meshtastic_Telemetry_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, FIXED32, time, 1) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,device_metrics,variant.device_metrics), 2) \ +X(a, STATIC, ONEOF, MESSAGE, (variant,environment_metrics,variant.environment_metrics), 3) +#define meshtastic_Telemetry_CALLBACK NULL +#define meshtastic_Telemetry_DEFAULT NULL +#define meshtastic_Telemetry_variant_device_metrics_MSGTYPE meshtastic_DeviceMetrics +#define meshtastic_Telemetry_variant_environment_metrics_MSGTYPE meshtastic_EnvironmentMetrics + +extern const pb_msgdesc_t meshtastic_DeviceMetrics_msg; +extern const pb_msgdesc_t meshtastic_EnvironmentMetrics_msg; +extern const pb_msgdesc_t meshtastic_Telemetry_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_DeviceMetrics_fields &meshtastic_DeviceMetrics_msg +#define meshtastic_EnvironmentMetrics_fields &meshtastic_EnvironmentMetrics_msg +#define meshtastic_Telemetry_fields &meshtastic_Telemetry_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_DeviceMetrics_size 21 +#define meshtastic_EnvironmentMetrics_size 30 +#define meshtastic_Telemetry_size 37 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif diff --git a/src/mesh/generated/meshtastic/xmodem.pb.c b/src/mesh/generated/meshtastic/xmodem.pb.c new file mode 100644 index 000000000..9692a5eb4 --- /dev/null +++ b/src/mesh/generated/meshtastic/xmodem.pb.c @@ -0,0 +1,13 @@ +/* Automatically generated nanopb constant definitions */ +/* Generated by nanopb-0.4.7 */ + +#include "meshtastic/xmodem.pb.h" +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +PB_BIND(meshtastic_XModem, meshtastic_XModem, AUTO) + + + + diff --git a/src/mesh/generated/meshtastic/xmodem.pb.h b/src/mesh/generated/meshtastic/xmodem.pb.h new file mode 100644 index 000000000..48d5aa5cd --- /dev/null +++ b/src/mesh/generated/meshtastic/xmodem.pb.h @@ -0,0 +1,77 @@ +/* Automatically generated nanopb header */ +/* Generated by nanopb-0.4.7 */ + +#ifndef PB_MESHTASTIC_MESHTASTIC_XMODEM_PB_H_INCLUDED +#define PB_MESHTASTIC_MESHTASTIC_XMODEM_PB_H_INCLUDED +#include + +#if PB_PROTO_HEADER_VERSION != 40 +#error Regenerate this file with the current version of nanopb generator. +#endif + +/* Enum definitions */ +typedef enum _meshtastic_XModem_Control { + meshtastic_XModem_Control_NUL = 0, + meshtastic_XModem_Control_SOH = 1, + meshtastic_XModem_Control_STX = 2, + meshtastic_XModem_Control_EOT = 4, + meshtastic_XModem_Control_ACK = 6, + meshtastic_XModem_Control_NAK = 21, + meshtastic_XModem_Control_CAN = 24, + meshtastic_XModem_Control_CTRLZ = 26 +} meshtastic_XModem_Control; + +/* Struct definitions */ +typedef PB_BYTES_ARRAY_T(128) meshtastic_XModem_buffer_t; +typedef struct _meshtastic_XModem { + meshtastic_XModem_Control control; + uint16_t seq; + uint16_t crc16; + meshtastic_XModem_buffer_t buffer; +} meshtastic_XModem; + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Helper constants for enums */ +#define _meshtastic_XModem_Control_MIN meshtastic_XModem_Control_NUL +#define _meshtastic_XModem_Control_MAX meshtastic_XModem_Control_CTRLZ +#define _meshtastic_XModem_Control_ARRAYSIZE ((meshtastic_XModem_Control)(meshtastic_XModem_Control_CTRLZ+1)) + +#define meshtastic_XModem_control_ENUMTYPE meshtastic_XModem_Control + + +/* Initializer values for message structs */ +#define meshtastic_XModem_init_default {_meshtastic_XModem_Control_MIN, 0, 0, {0, {0}}} +#define meshtastic_XModem_init_zero {_meshtastic_XModem_Control_MIN, 0, 0, {0, {0}}} + +/* Field tags (for use in manual encoding/decoding) */ +#define meshtastic_XModem_control_tag 1 +#define meshtastic_XModem_seq_tag 2 +#define meshtastic_XModem_crc16_tag 3 +#define meshtastic_XModem_buffer_tag 4 + +/* Struct field encoding specification for nanopb */ +#define meshtastic_XModem_FIELDLIST(X, a) \ +X(a, STATIC, SINGULAR, UENUM, control, 1) \ +X(a, STATIC, SINGULAR, UINT32, seq, 2) \ +X(a, STATIC, SINGULAR, UINT32, crc16, 3) \ +X(a, STATIC, SINGULAR, BYTES, buffer, 4) +#define meshtastic_XModem_CALLBACK NULL +#define meshtastic_XModem_DEFAULT NULL + +extern const pb_msgdesc_t meshtastic_XModem_msg; + +/* Defines for backwards compatibility with code written before nanopb-0.4.0 */ +#define meshtastic_XModem_fields &meshtastic_XModem_msg + +/* Maximum encoded size of messages (where known) */ +#define meshtastic_XModem_size 141 + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif