diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bdae11d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,15 @@ +name: "CI" +on: push + +jobs: + update-docs: + environment: Production + runs-on: ubuntu-latest + + steps: + - name: Update Docs + uses: benc-uk/workflow-dispatch@v1 + with: + workflow: "Update protobufs" + repo: meshtastic/meshtastic + token: ${{ secrets.ACCESS_TOKEN }} diff --git a/README.md b/README.md index f9cbb2c..9d5b184 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Meshtastic-protobufs -The protobuf definitions for the meshtastic project (used by apps and the device code) +The protobuf definitions for the Meshtastic project (used by apps and the device code) -For questions on using these protobufs please post in our [forum](meshtastic.discourse.group). We are friendly and we love people building/extending this work. +For questions on using these protobufs please post in our [forum](meshtastic.discourse.group). We are friendly and we love people building/extending this work. -For autogenerated documentation (extracted from the .proto files) see [here](docs/docs.md). +For documentation please visit the [Meshtastic Docs](https://meshtastic.org/docs/developers/protobufs/api). diff --git a/admin.proto b/admin.proto index 485eba9..9210fbd 100644 --- a/admin.proto +++ b/admin.proto @@ -10,8 +10,8 @@ import "channel.proto"; option java_outer_classname = "AdminProtos"; /* - * This message is handled by the Admin plugin and is responsible for all settings/channel read/write operations. This message - * is used to do settings operations to both remote AND local nodes. + * This message is handled by the Admin plugin 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) */ message AdminMessage { @@ -29,12 +29,16 @@ message AdminMessage { User set_owner = 2; /* - * 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 */ + * 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. + */ Channel set_channel = 3; /* - * Send the current RadioConfig in the response for this message + * Send the current RadioConfig in the response for this message. */ bool get_radio_request = 4; RadioConfig get_radio_response = 5; @@ -46,22 +50,23 @@ message AdminMessage { uint32 get_channel_request = 6; Channel get_channel_response = 7; - /* 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. + /* + * 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 = 32; bool confirm_set_radio = 33; - /* This message is only supported for the simulator porduino build. If received the - * simulator will exit successfully/ + /* + * This message is only supported for the simulator porduino build. + * If received the simulator will exit successfully. */ bool exit_simulator = 34; - /** Tell the node to reboot in this many seconds (or <0 to cancel reboot) + /* + * Tell the node to reboot in this many seconds (or <0 to cancel reboot) */ int32 reboot_seconds = 35; } diff --git a/apponly.proto b/apponly.proto index f8ed602..ac76ade 100644 --- a/apponly.proto +++ b/apponly.proto @@ -8,8 +8,10 @@ import "channel.proto"; option java_outer_classname = "AppOnlyProtos"; /* - * 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 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 */ message ChannelSet { diff --git a/bin/regen-docs.sh b/bin/regen-docs.sh deleted file mode 100755 index 76ba544..0000000 --- a/bin/regen-docs.sh +++ /dev/null @@ -1,9 +0,0 @@ -set -e - -# A script to regenerate protobuf documentation markdown -# using "go get -u github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc" - -docker run --rm \ - -v $(pwd)/docs:/out \ - -v $(pwd):/protos \ - pseudomuto/protoc-gen-doc --doc_opt=markdown,docs.md diff --git a/channel.proto b/channel.proto index 2b141c8..a19eea3 100644 --- a/channel.proto +++ b/channel.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -/* +/* * Meshtastic protobufs * * For more information on protobufs (and tools to use them with the language of your choice) see @@ -35,23 +35,24 @@ option java_outer_classname = "ChannelProtos"; * 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" + * 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 + * FIXME: explain how apps use channels for security. + * explain how remote settings and remote gpio are managed as an example */ message ChannelSettings { /* * If zero then, use default max legal continuous power (ie. something that won't * burn out the radio hardware) - * In most cases you should use zero here. Units are in dBm. + * In most cases you should use zero here. + * Units are in dBm. */ int32 tx_power = 1; @@ -104,19 +105,21 @@ message ChannelSettings { uint32 bandwidth = 6; /* - * A number from 7 to 12. Indicates number of chirps per symbol as - * 1< + * 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) */ @@ -147,26 +150,29 @@ message User { string long_name = 2; /* - * A VERY short name, ideally two characters. Suitable for a tiny OLED screen + * A VERY short name, ideally two characters. + * Suitable for a tiny OLED screen */ string short_name = 3; /* - * This is the addr of the radio. Not populated by the phone, - * but added by the esp32 when broadcasting + * This is the addr of the radio. + * Not populated by the phone, but added by the esp32 when broadcasting */ bytes macaddr = 4; /* * 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 + * 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. */ HardwareModel hw_model = 6; /* - * 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. + * 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 = 7; } @@ -271,8 +277,8 @@ message Routing { * Deprecated - this has been replced with error_reason == NONE && request_id != 0 * This is an ack. * This packet is a requested acknoledgement indicating that we have received - * the specified message ID. This packet type can be used both for immediate - * (0 hops) messages or can be routed through multiple hops if dest is set. + * the specified message ID. + * This packet type can be used both for immediate (0 hops) messages or can be routed through multiple hops if dest is set. * Note: As an optimization, recipients can _also_ populate a field in payload * if they think the recipient would appreciate that extra state. * @@ -316,8 +322,8 @@ message Data { * 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. + * RouteDiscovery messages _must_ populate this. + * Other message types might need to if they are doing multihop routing. */ fixed32 dest = 4; @@ -329,8 +335,8 @@ message Data { fixed32 source = 5; /* - * Only used in routing or response messages. Indicates the original message ID that - * this message is reporting failure on. (formerly called original_id) + * Only used in routing or response messages. + * Indicates the original message ID that this message is reporting failure on. (formerly called original_id) */ fixed32 request_id = 6; } @@ -343,8 +349,8 @@ message Data { message MeshPacket { /* - * The priority of this message for sending. Higher priorities are sent first - * (when managing the transmit queue). + * 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. @@ -402,8 +408,8 @@ message MeshPacket { /* * The sending node number. - * Note: Our crypto implementation uses this field as well. See - * docs/software/crypto.md for details. + * Note: Our crypto implementation uses this field as well. + * See [crypto](/developers/device/encryption.md) for details. * FIXME - really should be fixed32 instead, this encoding only hurts the ble link though. */ fixed32 from = 1; @@ -415,19 +421,19 @@ message MeshPacket { fixed32 to = 2; /* - * (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. + * (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 payloadVariant is - * an 'encrypted'. + * contains the 'channel hash' instead of the index. + * This 'trick' is only used while the payloadVariant is an 'encrypted'. */ uint32 channel = 3; /* - * Internally to the mesh radios we will route SubPackets encrypted per - * docs/software/crypto.md. However, when a particular node has the correct + * Internally to the mesh radios we will route SubPackets encrypted per [this](/developers/device/encryption.md). + * However, when a particular node has the correct * key to decode a particular packet, it will decode the payload into a SubPacket protobuf structure. * Software outside of the device nodes will never encounter a packet where * "decoded" is not populated (i.e. any encryption/decryption happens before reaching the applications) @@ -440,29 +446,31 @@ message MeshPacket { } /* - * 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. + * 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 docs/software/crypto.md for details. + * Note: Our crypto implementation uses this id as well. + * See [crypto](/developers/device/encryption.md) for details. * FIXME - really should be fixed32 instead, this encoding only * hurts the ble link though. */ fixed32 id = 6; /* - * 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 + * 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) */ fixed32 rx_time = 7; /* - * *Never* sent over the radio links. Set during reception to indicate the SNR - * of this packet. Used to collect statistics on current link quality. + * *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 = 8; @@ -475,16 +483,14 @@ message MeshPacket { uint32 hop_limit = 10; /* - * 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. + * 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. + * 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 = 11; @@ -556,8 +562,8 @@ message NodeInfo { User user = 2; /* - * 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. + * 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. */ Position position = 3; @@ -592,7 +598,9 @@ message NodeInfo { * fixed32 next_hop = 5; */ - /** Set to indicate the last time we received a packet from this node */ + /* + * Set to indicate the last time we received a packet from this node + */ fixed32 last_heard = 4; } @@ -648,7 +656,9 @@ enum CriticalErrorCode { */ TransmitFailed = 8; - /* We detected that the main CPU voltage dropped below the minumum acceptable value */ + /* + * We detected that the main CPU voltage dropped below the minumum acceptable value + */ Brownout = 9; /* Selftest of SX1262 radio chip failed */ @@ -673,13 +683,15 @@ message MyNodeInfo { uint32 my_node_num = 1; /* - * Note: This flag merely means we detected a hardware GPS in our node. Not the same as UserPreferences.location_sharing + * Note: This flag merely means we detected a hardware GPS in our node. + * Not the same as UserPreferences.location_sharing */ bool has_gps = 2; /* - * # of frequencies that can be used (set at build time in the device flash image). Note: this is different from max_channels, this field - * is telling the # of frequency bands this node can use. (old name was num_channels) + * # of frequencies that can be used (set at build time in the device flash image). + * Note: this is different from max_channels, this field is telling the # of frequency bands this node can use. + * (old name was num_channels) */ uint32 num_bands = 3; @@ -691,17 +703,18 @@ message MyNodeInfo { /* * Deprecated! ONLY USED IN DEVICE CODE (for upgrading old 1.0 firmwares) DO NOT READ ELSEWHERE. * The region code for my radio (US, CN, etc...) - * Note: This string is deprecated. The 1.0 builds populate it based on the - * flashed firmware name. But for newer builds this string will be unpopulated - * (missing/null). For those builds you should instead look at the new - * read/write region enum in UserSettings + * Note: This string is deprecated. + * The 1.0 builds populate it based on the flashed firmware name. + * But for newer builds this string will be unpopulated (missing/null). + * For those builds you should instead look at the new read/write region enum in UserSettings * The format of this string was 1.0-US or 1.0-CN etc.. Or empty string if unset. */ string region = 4 [deprecated = true]; /* * 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 + * 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. */ string hw_model_deprecated = 5 [deprecated = true]; @@ -741,15 +754,14 @@ message MyNodeInfo { /* * 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 + * message delivery time, 5 minutes. + * Formerly called FLOOD_EXPIRE_TIME in the device code */ uint32 message_timeout_msec = 13; /* - * 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 + * 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 min_app_version = 14; @@ -848,12 +860,13 @@ message FromRadio { * 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. + * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. */ uint32 config_complete_id = 8; /* - * Sent to tell clients the radio has just rebooted. Set to true if present. + * 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. */ @@ -879,7 +892,8 @@ message ToRadio { uint32 app_version = 1; /* - * True if the peer device can gateway MQTT packets. If true, the device will not try to send packets to the internet directly, + * True if the peer device can gateway MQTT packets. + * If true, the device will not try to send packets to the internet directly, * instead it will pass the packets to the peer for dispatching. * This feature is optional, if set to false the device will assume the client can not gateway to MQTT. */ @@ -900,7 +914,8 @@ message ToRadio { MeshPacket packet = 2; /* - * Information about the peer, sent after the phone sneds want_config_id. Old clients do not send this, which is fine. + * Information about the peer, sent after the phone sneds want_config_id. + * Old clients do not send this, which is fine. */ PeerInfo peer_info = 3; @@ -917,8 +932,8 @@ message ToRadio { uint32 want_config_id = 100; /* - * 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. + * 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 = 104; diff --git a/notused/future.proto b/notused/future.proto index 158ebc5..bf8e418 100644 --- a/notused/future.proto +++ b/notused/future.proto @@ -5,8 +5,8 @@ syntax = "proto3"; */ /* - * Placeholder for data we will eventually set during initial programming. This - * will allow us to stop having a load for each region. + * Placeholder for data we will eventually set during initial programming. + * This will allow us to stop having a load for each region. */ message ManufacturingData { diff --git a/portnums.proto b/portnums.proto index 546badc..0d9d03f 100644 --- a/portnums.proto +++ b/portnums.proto @@ -9,7 +9,8 @@ option optimize_for = LITE_RUNTIME; * 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: + * 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 @@ -42,8 +43,8 @@ enum PortNum { /* * A message receive acknowledgment, sent in cleartext - allows radio to * show user that a message has been read by the recipient, optional - * Note: this concept has been removed for now. Once READACK is implemented, use the - * new packet type/port number stuff? + * Note: this concept has been removed for now. + * Once READACK is implemented, use the new packet type/port number stuff? * @exclude * CLEAR_READACK = 2; * Reserved for built-in GPIO/example app. diff --git a/radioconfig.proto b/radioconfig.proto index 1529d77..fb2b866 100644 --- a/radioconfig.proto +++ b/radioconfig.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -/* +/* * Meshtastic protobufs * * For more information on protobufs (and tools to use them with the language of your choice) see @@ -77,7 +77,8 @@ enum ChargeCurrent { /* * How the GPS hardware in this unit is operated. - * Note: This is independent of how our location is shared with other devices. For that see LocationSharing + * Note: This is independent of how our location is shared with other devices. + * For that see LocationSharing */ enum GpsOperation { @@ -111,7 +112,7 @@ enum GpsOperation { GpsOpDisabled = 4; } -/* +/* * How our location is shared with other nodes (or the local phone) */ enum LocationSharing { @@ -140,7 +141,7 @@ enum LocationSharing { message RadioConfig { /* - * see sw-design.md for more information on these preferences + * see [software design](/software/other/sw-design.md) for more information on these preferences */ message UserPreferences { @@ -164,56 +165,56 @@ message RadioConfig { /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of 1 minute */ uint32 wait_bluetooth_secs = 4; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of one minute */ uint32 screen_on_secs = 5; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of 15 minutes */ uint32 phone_timeout_secs = 6; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of two hours, MAXUINT for disabled */ uint32 phone_sds_timeout_sec = 7; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of two hours, MAXUINT for disabled */ uint32 mesh_sds_timeout_secs = 8; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of one year */ uint32 sds_secs = 9; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of 3600 */ uint32 ls_secs = 10; /* * Power management state machine option. - * See https://github.com/meshtastic/Meshtastic-device/blob/master/docs/software/power.md for details. + * See [power management](/software/other/power.md) for details. * 0 for default of 10 seconds */ uint32 min_wake_secs = 11; @@ -246,7 +247,8 @@ message RadioConfig { ChargeCurrent charge_current = 16; /* - * Are we operating as a router. Changes behavior in the following ways: + * Are we operating as a router. + * Changes behavior in the following ways: * The device will only sleep for critically low battery level (i.e. always tries to stay alive for the mesh) * In the future routing decisions will preferentially route packets through nodes with this attribute (because assumed * good line of sight) @@ -255,14 +257,14 @@ message RadioConfig { /* * 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). + * 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). */ bool is_low_power = 38; /* - * 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. + * 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 = 39; @@ -279,7 +281,8 @@ message RadioConfig { /* * How the GPS hardware in this unit is operated. - * Note: This is independent of how our location is shared with other devices. For that see LocationSharing + * Note: This is independent of how our location is shared with other devices. + * For that see LocationSharing */ GpsOperation gps_operation = 33; @@ -298,33 +301,35 @@ message RadioConfig { */ uint32 gps_attempt_time = 36; - /** + /* * This parameter is for advanced users with advanced test equipment, we do not recommend most users use it. - * A frequency offset that is added to to the calculated band center frequency. Used to correct for crystal calibration errors. + * A frequency offset that is added to to the calculated band center frequency. + * Used to correct for crystal calibration errors. */ float frequency_offset = 41; - /** - * The server to use for our MQTT global message gateway feature. If not set, the default server will be used - */ + /* + * The server to use for our MQTT global message gateway feature. + * If not set, the default server will be used + */ string mqtt_server = 42; - /** + /* * 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. + * is_uplink_enabled or is_downlink_enabled. * But if this flag is set, all MQTT features will be disabled and no servers will be contacted. */ bool mqtt_disabled = 43; /* - * This setting is never saved to disk, but if set, all device settings will be - * returned to factory defaults. (Region, serial number etc... will be preserved) + * This setting is never saved to disk, but if set, all device settings will be returned to factory defaults. + * (Region, serial number etc... will be preserved) */ bool factory_reset = 100; /* - * 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. + * 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 = 101; @@ -384,22 +389,25 @@ message RadioConfig { * Enable/Disable the environmental measurement plugin measurement collection */ bool environmental_measurement_plugin_measurement_enabled = 140; + /* * Enable/Disable the environmental measurement plugin on-device display */ bool environmental_measurement_plugin_screen_enabled = 141; - /* - * Sometimes sensor reads can fail. If this happens, we - * will retry a configurable number of attempts - * Each attempt will be delayed by the minimum - * required refresh rate for that sensor + + /* + * Sometimes sensor reads can fail. + * If this happens, we will retry a configurable number of attempts, + * each attempt will be delayed by the minimum required refresh rate for that sensor */ uint32 environmental_measurement_plugin_read_error_count_threshold = 142; + /* * Interval in seconds of how often we should try to send our * measurements to the mesh */ uint32 environmental_measurement_plugin_update_interval = 143; + /* * Sometimes we can end up with more than read_error_count_threshold failures. * In this case, we will stop trying to read from the sensor for a while.