diff --git a/.protolint.yml b/.protolint.yml new file mode 100644 index 0000000..f681e62 --- /dev/null +++ b/.protolint.yml @@ -0,0 +1,20 @@ +--- +lint: + + rules: + + remove: + - ENUM_FIELD_NAMES_PREFIX + - ENUM_FIELD_NAMES_UPPER_SNAKE_CASE + - ENUM_NAMES_UPPER_CAMEL_CASE + - FIELD_NAMES_LOWER_SNAKE_CASE + - ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH + - REPEATED_FIELD_NAMES_PLURALIZED + - ORDER + + rules_option: + max_line_length: + max_chars: 180 + + indent: + style: 2 diff --git a/README.md b/README.md index 4c12b11..74be814 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,10 @@ To generate Nanopb c code: * /home/kevinh/packages/nanopb-0.4.4-linux-x86/generator-bin/protoc --nanopb_out=/tmp -I=app/src/main/proto mesh.proto Nanopb binaries available here: -* https://jpa.kapsi.fi/nanopb/download/ use nanopb 0.4.4 \ No newline at end of file +* https://jpa.kapsi.fi/nanopb/download/ use nanopb 0.4.4 + +To lint: +* Install protolint: brew tap yoheimuta/protolint; brew install protolint +* Run it from the main directory: *protolint* lint . +* (optional) Have it fix the mundane warnings: *protolint* lint -fix . +* See https://github.com/yoheimuta/protolint for more info diff --git a/admin.proto b/admin.proto index d3ed2e8..1dea1a5 100644 --- a/admin.proto +++ b/admin.proto @@ -4,9 +4,9 @@ option java_package = "com.geeksville.mesh"; option optimize_for = LITE_RUNTIME; option go_package = "github.com/meshtastic/gomeshproto"; +import "channel.proto"; import "mesh.proto"; import "radioconfig.proto"; -import "channel.proto"; option java_outer_classname = "AdminProtos"; @@ -17,58 +17,58 @@ option java_outer_classname = "AdminProtos"; */ message AdminMessage { - oneof variant { - - /* - * set the radio provisioning for this node - */ - RadioConfig set_radio = 1; - - /* - * Set the owner for this node - */ - 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. - */ - Channel set_channel = 3; - - /* - * Send the current RadioConfig in the response for this message. - */ - bool get_radio_request = 4; - RadioConfig get_radio_response = 5; - - /* - * Send the specified channel in the response for 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 get_channel_request = 6; - Channel get_channel_response = 7; + oneof variant { - /* - * 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; + /* + * Set the radio provisioning for this node + */ + RadioConfig set_radio = 1; - /* - * This message is only supported for the simulator porduino build. - * If received the simulator will exit successfully. - */ - bool exit_simulator = 34; + /* + * Set the owner for this node + */ + User set_owner = 2; - /* - * Tell the node to reboot in this many seconds (or <0 to cancel reboot) - */ - int32 reboot_seconds = 35; - } - } \ No newline at end of file + /* + * 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. + */ + bool get_radio_request = 4; + RadioConfig get_radio_response = 5; + + /* + * Send the specified channel in the response for 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 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. + * 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. + */ + bool exit_simulator = 34; + + /* + * 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 15e3b45..719a429 100644 --- a/apponly.proto +++ b/apponly.proto @@ -16,5 +16,5 @@ option java_outer_classname = "AppOnlyProtos"; * 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 { - repeated ChannelSettings settings = 1; + repeated ChannelSettings settings = 1; } \ No newline at end of file diff --git a/channel.proto b/channel.proto index 1332b10..101a0d4 100644 --- a/channel.proto +++ b/channel.proto @@ -59,11 +59,11 @@ message ChannelSettings { int32 tx_power = 1; /* - * Standard predefined channel settings + * Standard predefined channel settings * Note: these mappings must match ModemConfigChoice in the device code. */ enum ModemConfig { - + /* * < Bw = 125 kHz, Cr = 4/5, Sf(7) = 128chips/symbol, CRC * < on. Default medium range (5.469 kbps) @@ -75,19 +75,19 @@ message ChannelSettings { * < on. Fast+short range (21.875 kbps) */ Bw500Cr45Sf128 = 1; - + /* * < Bw = 31.25 kHz, Cr = 4/8, Sf(9) = 512chips/symbol, * < CRC on. Slow+long range (275 bps) */ Bw31_25Cr48Sf512 = 2; - + /* * < Bw = 125 kHz, Cr = 4/8, Sf(12) = 4096chips/symbol, CRC * < on. Slow+long range (183 bps) */ Bw125Cr48Sf4096 = 3; - } + } /* * Note: This is the 'old' mechanism for specifying channel parameters. @@ -223,15 +223,15 @@ message Channel { /* * Secondary channels are only used for encryption/decryption/authentication purposes. - * Their radio settings (freq etc) are ignored, only psk is used. + * Their radio settings (freq etc) are ignored, only psk is used. */ SECONDARY = 2; } /* * 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. + * (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. */ int32 index = 1; diff --git a/deviceonly.proto b/deviceonly.proto index c7b8682..0d3110a 100644 --- a/deviceonly.proto +++ b/deviceonly.proto @@ -4,8 +4,8 @@ option java_package = "com.geeksville.mesh"; option optimize_for = LITE_RUNTIME; option go_package = "github.com/meshtastic/gomeshproto"; -import "mesh.proto"; import "channel.proto"; +import "mesh.proto"; import "radioconfig.proto"; option java_outer_classname = "DeviceOnly"; @@ -16,15 +16,15 @@ option java_outer_classname = "DeviceOnly"; * The device firmware uses this stub while migrating old nodes to the new preferences system. */ message LegacyRadioConfig { - message LegacyPreferences { - - /* - * The region code for my radio (US, CN, EU433, etc...) - */ - RegionCode region = 15; - } + message LegacyPreferences { - LegacyPreferences preferences = 1; + /* + * The region code for my radio (US, CN, EU433, etc...) + */ + RegionCode region = 15; + } + + LegacyPreferences preferences = 1; } /* @@ -36,65 +36,65 @@ message LegacyRadioConfig { */ message DeviceState { - /* - * Was secondary_channels before 1.2 - */ - reserved 12; - - /* - * Moved to its own file, but we keep this here so we can automatically migrate old radio.region settings - */ - LegacyRadioConfig legacyRadio = 1; - - /* - * Read only settings/info about this node - */ - MyNodeInfo my_node = 2; - - /* - * My owner info - */ - User owner = 3; - - repeated NodeInfo node_db = 4; - - /* - * Received packets saved for delivery to the phone - */ - repeated MeshPacket receive_queue = 5; - - /* - * 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 version = 8; - - /* - * We keep the last received text message (only) stored in the device flash, - * so we can show it on the screen. - * Might be null - */ - MeshPacket rx_text_message = 7; - - /* - * Used only during development. - * Indicates developer is testing and changes should never be saved to flash. - */ - bool no_save = 9; - - /* - * Some GPSes seem to have bogus settings from the factory, so we always do one factory reset. - */ - bool did_gps_reset = 11; - } + /* + * Was secondary_channels before 1.2 + */ + reserved 12; /* - * The on-disk saved channels + * Moved to its own file, but we keep this here so we can automatically migrate old radio.region settings */ - message ChannelFile { - /* - * The channels our node knows about - */ - repeated Channel channels = 1; - } \ No newline at end of file + LegacyRadioConfig legacyRadio = 1; + + /* + * Read only settings/info about this node + */ + MyNodeInfo my_node = 2; + + /* + * My owner info + */ + User owner = 3; + + repeated NodeInfo node_db = 4; + + /* + * Received packets saved for delivery to the phone + */ + repeated MeshPacket receive_queue = 5; + + /* + * 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 version = 8; + + /* + * We keep the last received text message (only) stored in the device flash, + * so we can show it on the screen. + * Might be null + */ + MeshPacket rx_text_message = 7; + + /* + * Used only during development. + * Indicates developer is testing and changes should never be saved to flash. + */ + bool no_save = 9; + + /* + * Some GPSes seem to have bogus settings from the factory, so we always do one factory reset. + */ + bool did_gps_reset = 11; +} + +/* + * The on-disk saved channels + */ +message ChannelFile { + /* + * The channels our node knows about + */ + repeated Channel channels = 1; +} diff --git a/environmental_measurement.proto b/environmental_measurement.proto index 1e97460..64d73a0 100644 --- a/environmental_measurement.proto +++ b/environmental_measurement.proto @@ -3,8 +3,8 @@ option go_package = "github.com/meshtastic/gomeshproto"; message EnvironmentalMeasurement { - float temperature = 1; + float temperature = 1; float relative_humidity = 2; float barometric_pressure = 3; -} \ No newline at end of file +} diff --git a/mesh.proto b/mesh.proto index 4a60d53..fe09450 100644 --- a/mesh.proto +++ b/mesh.proto @@ -196,71 +196,71 @@ message Position { */ } - /* +/* * 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 . - */ - enum HardwareModel { - UNSET = 0; - TLORA_V2 = 1; - TLORA_V1 = 2; - TLORA_V2_1_1p6 = 3; - TBEAM = 4; + */ +enum HardwareModel { + UNSET = 0; + TLORA_V2 = 1; + TLORA_V1 = 2; + TLORA_V2_1_1p6 = 3; + 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). - HELTEC_V2_0 = 5; + // The original heltec WiFi_Lora_32_V2, which had battery voltage sensing hooked to GPIO 13 (see HELTEC_V2 for the new version). + HELTEC_V2_0 = 5; - TBEAM0p7 = 6; - T_ECHO = 7; - TLORA_V1_1p3 = 8; - RAK4631 = 9; + TBEAM0p7 = 6; + T_ECHO = 7; + TLORA_V1_1p3 = 8; + 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 - HELTEC_V2_1 = 10; + // 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 + HELTEC_V2_1 = 10; - /* - * Less common/prototype boards listed here (needs one more byte over the air) - */ - LORA_RELAY_V1 = 32; - NRF52840DK = 33; - PPR = 34; - GENIEBLOCKS = 35; - NRF52_UNKNOWN = 36; - PORTDUINO = 37; + /* + * Less common/prototype boards listed here (needs one more byte over the air) + */ + LORA_RELAY_V1 = 32; + NRF52840DK = 33; + PPR = 34; + GENIEBLOCKS = 35; + NRF52_UNKNOWN = 36; + PORTDUINO = 37; - /* - * The simulator built into the android app - */ - ANDROID_SIM = 38; + /* + * The simulator built into the android app + */ + ANDROID_SIM = 38; - /* - * Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics - */ - DIY_V1 = 39; - } + /* + * Custom DIY device based on @NanoVHF schematics: https://github.com/NanoVHF/Meshtastic-DIY/tree/main/Schematics + */ + DIY_V1 = 39; +} /* * The team colors are based on the names of "friendly teams" in ATAK: * https://github.com/deptofdefense/AndroidTacticalAssaultKit-CIV/blob/master/atak/ATAK/app/src/main/assets/filters/team_filters.xml */ enum Team { - CLEAR = 0; /* the default (unset) is "achromatic" (unaffiliated) */ - CYAN = 1; - WHITE = 2; - YELLOW = 3; - ORANGE = 4; - MAGENTA = 5; - RED = 6; - MAROON = 7; - PURPLE = 8; - DARK_BLUE = 9; - BLUE = 10; - TEAL = 11; - GREEN = 12; - DARK_GREEN = 13; - BROWN = 14; + CLEAR = 0; /* the default (unset) is "achromatic" (unaffiliated) */ + CYAN = 1; + WHITE = 2; + YELLOW = 3; + ORANGE = 4; + MAGENTA = 5; + RED = 6; + MAROON = 7; + PURPLE = 8; + DARK_BLUE = 9; + BLUE = 10; + TEAL = 11; + GREEN = 12; + DARK_GREEN = 13; + BROWN = 14; } /* @@ -316,49 +316,49 @@ message User { */ 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 * (so OTA update can find the right image), but if the enum is available it will be used instead. */ - HardwareModel hw_model = 6; + 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. - */ - bool is_licensed = 7; + /* + * 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; - /* - * Participants in the same network can self-group into different teams. - * Short-term this can be used to visually differentiate them on the map; - * in the longer term it could also help users to semi-automatically - * select or ignore messages according to team affiliation. - * In total, 14 teams are defined (encoded in 4 bits) - */ - Team team = 8; + /* + * Participants in the same network can self-group into different teams. + * Short-term this can be used to visually differentiate them on the map; + * in the longer term it could also help users to semi-automatically + * select or ignore messages according to team affiliation. + * In total, 14 teams are defined (encoded in 4 bits) + */ + Team team = 8; - /* - * Transmit power at antenna connector, in decibel-milliwatt - * An optional self-reported value useful in network planning, discovery - * and positioning - along with ant_gain_dbi and ant_azimuth below - */ - uint32 tx_power_dbm = 10; + /* + * Transmit power at antenna connector, in decibel-milliwatt + * An optional self-reported value useful in network planning, discovery + * and positioning - along with ant_gain_dbi and ant_azimuth below + */ + uint32 tx_power_dbm = 10; - /* - * Antenna gain (applicable to both Tx and Rx), in decibel-isotropic - */ - uint32 ant_gain_dbi = 11; + /* + * Antenna gain (applicable to both Tx and Rx), in decibel-isotropic + */ + uint32 ant_gain_dbi = 11; - /* - * Directional antenna true azimuth *if applicable*, in degrees (0-360) - * Only applicable in case of stationary nodes with a directional antenna - * Zero = not applicable (mobile or omni) or not specified - * (use a value of 360 to indicate an antenna azimuth of zero degrees) - */ - uint32 ant_azimuth = 12; + /* + * Directional antenna true azimuth *if applicable*, in degrees (0-360) + * Only applicable in case of stationary nodes with a directional antenna + * Zero = not applicable (mobile or omni) or not specified + * (use a value of 360 to indicate an antenna azimuth of zero degrees) + */ + uint32 ant_azimuth = 12; } /* @@ -372,10 +372,8 @@ message RouteDiscovery { repeated fixed32 route = 2; } - - /* - *A Routing control Data packet handled by the routing plugin + * A Routing control Data packet handled by the routing plugin */ message Routing { @@ -416,7 +414,7 @@ message Routing { * No suitable channel was found for sending this packet (i.e. was requested channel index disabled?) */ NO_CHANNEL = 6; - + /* * The packet was too big for sending (exceeds interface MTU after encoding) */ @@ -449,11 +447,11 @@ message Routing { /* * A route reply */ - RouteDiscovery route_reply = 2; + RouteDiscovery route_reply = 2; /* - * 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). + * 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). */ Error error_reason = 3; @@ -475,7 +473,7 @@ message Routing { * * fixed32 fail_id = 5; */ - } + } } /* @@ -488,12 +486,12 @@ message Data { /* * Formerly named typ and of type Type */ - PortNum portnum = 1; + PortNum portnum = 1; - /* - * Required - */ - bytes payload = 2; + /* + * Required + */ + bytes payload = 2; /* * Not normally used, but for testing a sender can request that recipient @@ -522,7 +520,7 @@ message Data { * 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; + fixed32 request_id = 6; } /* @@ -596,7 +594,7 @@ message MeshPacket { * 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; + fixed32 from = 1; /* * The (immediatSee Priority description for more details.y should be fixed32 instead, this encoding only @@ -614,7 +612,7 @@ message MeshPacket { * 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 [this](/developers/device/encryption.md). * However, when a particular node has the correct @@ -623,7 +621,7 @@ message MeshPacket { * "decoded" is not populated (i.e. any encryption/decryption happens before reaching the applications) * The numeric IDs for these fields were selected to keep backwards compatibility with old applications. */ - + oneof payloadVariant { Data decoded = 4; bytes encrypted = 5; @@ -641,7 +639,7 @@ message MeshPacket { * FIXME - really should be fixed32 instead, this encoding only * hurts the ble link though. */ - fixed32 id = 6; + fixed32 id = 6; /* * The time this message was received by the esp32 (secs since 1970). @@ -680,7 +678,7 @@ message MeshPacket { bool want_ack = 11; /* - * The priority of this message for sending. + * The priority of this message for sending. * See MeshPacket.Priority description for more details. */ Priority priority = 12; @@ -688,7 +686,7 @@ message MeshPacket { /* * rssi of received packet. Only sent to phone for dispay purposes. */ - int32 rx_rssi = 13; + int32 rx_rssi = 13; } /* @@ -700,8 +698,8 @@ enum Constants { * First enum must be zero, and we are just using this enum to * pass int constants between two very different environments */ - Unused = 0; - + Unused = 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 @@ -736,7 +734,7 @@ enum Constants { message NodeInfo { /* - * the node number + * The node number */ uint32 num = 1; @@ -776,16 +774,16 @@ message NodeInfo { * RouteState route = 4; */ - /* + /* * Not currently used (till full DSR deployment?) Our current preferred node node for routing - might be the same as num if * we are adjacent Or zero if we don't yet know a route to this node. * fixed32 next_hop = 5; */ - /* - * Set to indicate the last time we received a packet from this node - */ - fixed32 last_heard = 4; + /* + * Set to indicate the last time we received a packet from this node + */ + fixed32 last_heard = 4; } /* @@ -795,7 +793,7 @@ message NodeInfo { * If you encounter a fault code, please post on the meshtastic.discourse.group * and we'll try to help. */ -enum CriticalErrorCode { +enum CriticalErrorCode { None = 0; /* @@ -806,7 +804,7 @@ enum CriticalErrorCode { /* * A software bug was detected on entry to sleep */ - SleepEnterWait = 2; + SleepEnterWait = 2; /* * No Lora radio hardware could be found @@ -880,7 +878,7 @@ message MyNodeInfo { uint32 num_bands = 3; /* - * The maximum number of 'software' channels that can be set on this node. + * The maximum number of 'software' channels that can be set on this node. */ uint32 max_channels = 15; @@ -916,7 +914,7 @@ message MyNodeInfo { * (i.e. it will only be reported once) * a numeric error code to go with error message, zero means no error */ - CriticalErrorCode error_code = 7; + CriticalErrorCode error_code = 7; /* * A numeric error address (nonzero if available) @@ -957,7 +955,7 @@ message MyNodeInfo { /* * Debug output from the device. * - * To minimize the size of records inside the device code, if a time/source/level is not set + * 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. @@ -1031,17 +1029,17 @@ message FromRadio { /* * One packet is sent for each node in the on radio DB - * starts over with the first node in our DB + * starts over with the first node in our DB */ NodeInfo node_info = 4; /* - * set to send debug console output over our protobuf stream + * Set to send debug console output over our protobuf stream */ LogRecord log_record = 7; /* - * sent as true once the device has finished sending all of the responses to want_config + * 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. @@ -1052,7 +1050,7 @@ message FromRadio { * 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. + * NOTE: This ID must not change - to keep (minimal) compatibility with <1.2 version of android apps. */ bool rebooted = 9; } @@ -1060,7 +1058,7 @@ message FromRadio { /* - * packets/commands to the radio will be written (reliably) to the toRadio characteristic. + * Packets/commands to the radio will be written (reliably) to the toRadio characteristic. * Once the write completes the phone can assume it is handled. */ message ToRadio { @@ -1070,7 +1068,7 @@ message ToRadio { */ message PeerInfo { /* - * The numeric version code for the client application, which in some cases are used to control device behavior (so the device can + * The numeric version code for the client application, which in some cases are used to control device behavior (so the device can * make assumptions about who is using the API. */ uint32 app_version = 1; @@ -1086,14 +1084,14 @@ message ToRadio { /* * In the <1.2 versions packet had ID 2, to prevent confusing old apps with our new packets, we've changed. - * 101-103 were used for set_radio, set_owner, set_channel + * 101-103 were used for set_radio, set_owner, set_channel */ reserved 1, 101, 102, 103; oneof payloadVariant { /* - * send this packet on the mesh + * Send this packet on the mesh */ MeshPacket packet = 2; @@ -1104,7 +1102,7 @@ message ToRadio { PeerInfo peer_info = 3; /* - * phone wants radio to send full node db to the phone, This is + * 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 diff --git a/mqtt.proto b/mqtt.proto index 3ef7aa5..ba114ab 100644 --- a/mqtt.proto +++ b/mqtt.proto @@ -12,21 +12,20 @@ option java_outer_classname = "MQTTProtos"; * This message wraps a MeshPacket with extra metadata about the sender and how it arrived. */ message ServiceEnvelope { - /* - * The (probably encrypted) packet - */ - MeshPacket packet = 1; + /* + * The (probably encrypted) packet + */ + MeshPacket packet = 1; - /* - * The global channel ID it was sent on - */ - string channel_id = 2; + /* + * The global channel ID it was sent on + */ + string channel_id = 2; - /* - * 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 - */ - string gateway_id = 3; + /* + * 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 + */ + string gateway_id = 3; } - diff --git a/notused/future.proto b/notused/future.proto index bf8e418..e33abaa 100644 --- a/notused/future.proto +++ b/notused/future.proto @@ -13,9 +13,9 @@ message ManufacturingData { /* * center frequency for the radio hardware that was stuffed */ - uint32 fradioFreq = 1; + uint32 fradioFreq = 1; - /* + /* * TBEAM, HELTEC, etc... */ string hw_model = 2; diff --git a/portnums.proto b/portnums.proto index 65fa52b..a9725d3 100644 --- a/portnums.proto +++ b/portnums.proto @@ -26,120 +26,120 @@ option go_package = "github.com/meshtastic/gomeshproto"; */ enum 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 - */ - UNKNOWN_APP = 0; + /* + * 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 + */ + 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) - * Formerly called CLEAR_TEXT - */ - TEXT_MESSAGE_APP = 1; + /* + * 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) + * Formerly called CLEAR_TEXT + */ + TEXT_MESSAGE_APP = 1; - /* - * 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? - * @exclude - * CLEAR_READACK = 2; - */ + /* + * 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? + * @exclude + * CLEAR_READACK = 2; + */ - /* - * Reserved for built-in GPIO/example app. - * See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number - */ - REMOTE_HARDWARE_APP = 2; + /* + * Reserved for built-in GPIO/example app. + * See remote_hardware.proto/HardwareMessage for details on the message sent/received to this port number + */ + REMOTE_HARDWARE_APP = 2; - /* - * The built-in position messaging app. - * Payload is a [Position](/developers/protobufs/api.md#position) message - */ - POSITION_APP = 3; + /* + * The built-in position messaging app. + * Payload is a [Position](/developers/protobufs/api.md#position) message + */ + POSITION_APP = 3; - /* - * The built-in user info app. - * Payload is a [User](/developers/protobufs/api.md#user) message - */ - NODEINFO_APP = 4; + /* + * The built-in user info app. + * Payload is a [User](/developers/protobufs/api.md#user) message + */ + NODEINFO_APP = 4; - /* - * Protocol control packets for mesh protocol use. - * Payload is a [Routing](/developers/protobufs/api.md#routing) message - */ - ROUTING_APP = 5; + /* + * Protocol control packets for mesh protocol use. + * Payload is a [Routing](/developers/protobufs/api.md#routing) message + */ + ROUTING_APP = 5; - /* - * Admin control packets. - * Payload is a [AdminMessage](/developers/protobufs/api.md#adminmessage) message - */ - ADMIN_APP = 6; + /* + * Admin control packets. + * Payload is a [AdminMessage](/developers/protobufs/api.md#adminmessage) message + */ + ADMIN_APP = 6; - /* - * Provides a 'ping' service that replies to any packet it receives. - * Also serves as a small example plugin. - */ - REPLY_APP = 32; + /* + * Provides a 'ping' service that replies to any packet it receives. + * Also serves as a small example plugin. + */ + REPLY_APP = 32; - /* - * Used for the python IP tunnel feature - */ - IP_TUNNEL_APP = 33; + /* + * Used for the python IP tunnel feature + */ + 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. - * Plugin is disabled by default can be turned on by setting SERIALPLUGIN_ENABLED = 1 in SerialPlugh.cpp. - * Maintained by Jm Casler (MC Hamster) : jm@casler.org - */ - SERIAL_APP = 64; + /* + * 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. + * Plugin is disabled by default can be turned on by setting SERIALPLUGIN_ENABLED = 1 in SerialPlugh.cpp. + * Maintained by Jm Casler (MC Hamster) : jm@casler.org + */ + SERIAL_APP = 64; - /* - * STORE_FORWARD_APP (Work in Progress) - * Maintained by Jm Casler (MC Hamster) : jm@casler.org - */ - STORE_FORWARD_APP = 65; + /* + * STORE_FORWARD_APP (Work in Progress) + * Maintained by Jm Casler (MC Hamster) : jm@casler.org + */ + STORE_FORWARD_APP = 65; - /* - * STORE_FORWARD_APP (Work in Progress) - * Maintained by Jm Casler (MC Hamster) : jm@casler.org - */ - RANGE_TEST_APP = 66; - - /* - * Provides a format to send and receive environmental data from the Meshtastic network. - * Maintained by Charles Crossan (crossan007) : crossan007@gmail.com - */ - ENVIRONMENTAL_MEASUREMENT_APP = 67; + /* + * STORE_FORWARD_APP (Work in Progress) + * Maintained by Jm Casler (MC Hamster) : jm@casler.org + */ + RANGE_TEST_APP = 66; - /* - * 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 - */ - ZPS_APP = 68; + /* + * Provides a format to send and receive environmental data from the Meshtastic network. + * Maintained by Charles Crossan (crossan007) : crossan007@gmail.com + */ + ENVIRONMENTAL_MEASUREMENT_APP = 67; - /* - * 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/Meshtastic-device/blob/master/bin/regen-protos.sh)) - */ - PRIVATE_APP = 256; + /* + * 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 + */ + ZPS_APP = 68; - /* - * ATAK Forwarder Plugin https://github.com/paulmandal/atak-forwarder - */ - ATAK_FORWARDER = 257; + /* + * 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/Meshtastic-device/blob/master/bin/regen-protos.sh)) + */ + PRIVATE_APP = 256; - /* - * Currently we limit port nums to no higher than this value - */ - MAX = 511; - } + /* + * ATAK Forwarder Plugin https://github.com/paulmandal/atak-forwarder + */ + ATAK_FORWARDER = 257; + + /* + * Currently we limit port nums to no higher than this value + */ + MAX = 511; +} diff --git a/radioconfig.proto b/radioconfig.proto index fa08783..566e32d 100644 --- a/radioconfig.proto +++ b/radioconfig.proto @@ -119,26 +119,26 @@ enum GpsOperation { enum GpsCoordinateFormat { /* - * GPS coordinates are displayed in the normal decimal degrees format: + * GPS coordinates are displayed in the normal decimal degrees format: * DD.DDDDDD DDD.DDDDDD */ GpsFormatDec = 0; /* - * GPS coordinates are displayed in the degrees minutes seconds format: + * 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 */ GpsFormatDMS = 1; /* - * GPS coordinates are displayed in Universal Transverse Mercator format: + * GPS coordinates are displayed in Universal Transverse Mercator format: * ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing */ GpsFormatUTM = 2; /* - * GPS coordinates are displayed in 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, + * GPS coordinates are displayed in 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 */ GpsFormatMGRS = 3; @@ -147,7 +147,7 @@ enum GpsCoordinateFormat { * GPS coordinates are displayed in Open Location Code (aka Plus Codes). */ GpsFormatOLC = 4; - + /* * GPS coordinates are displayed in 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, @@ -178,7 +178,7 @@ enum LocationSharing { } /* - * Bit field of boolean configuration options, indicating which optional + * 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) * @@ -186,35 +186,35 @@ enum LocationSharing { * leading to longer airtime and a higher risk of packet loss */ enum PositionFlags { - /* Required for compilation */ - POS_UNDEFINED = 0x0000; + /* Required for compilation */ + POS_UNDEFINED = 0x0000; - /* Include an altitude value (if available) */ - POS_ALTITUDE = 0x0001; + /* Include an altitude value (if available) */ + POS_ALTITUDE = 0x0001; - /* Altitude value is MSL */ - POS_ALT_MSL = 0x0002; + /* Altitude value is MSL */ + POS_ALT_MSL = 0x0002; - /* Include geoidal separation */ - POS_GEO_SEP = 0x0004; + /* Include geoidal separation */ + POS_GEO_SEP = 0x0004; - /* Include the DOP value ; PDOP used by default, see below */ - POS_DOP = 0x0008; + /* Include the DOP value ; PDOP used by default, see below */ + POS_DOP = 0x0008; - /* If POS_DOP set, send separate HDOP / VDOP values instead of PDOP */ - POS_HVDOP = 0x0010; + /* If POS_DOP set, send separate HDOP / VDOP values instead of PDOP */ + POS_HVDOP = 0x0010; - /* Include battery level */ - POS_BATTERY = 0x0020; + /* Include battery level */ + POS_BATTERY = 0x0020; - /* Include number of "satellites in view" */ - POS_SATINVIEW = 0x0040; + /* Include number of "satellites in view" */ + POS_SATINVIEW = 0x0040; - /* Include a sequence number incremented per packet */ - POS_SEQ_NOS = 0x0080; + /* Include a sequence number incremented per packet */ + POS_SEQ_NOS = 0x0080; - /* Include positional timestamp (from GPS solution) */ - POS_TIMESTAMP = 0x0100; + /* Include positional timestamp (from GPS solution) */ + POS_TIMESTAMP = 0x0100; } /* @@ -225,7 +225,7 @@ enum PositionFlags { message RadioConfig { /* - * see [software design](/software/other/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 { @@ -252,21 +252,21 @@ message RadioConfig { * * uint32 num_missed_to_fail = 3; */ - + /* * Power management state machine option. * 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 [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 [power management](/software/other/power.md) for details. @@ -274,35 +274,35 @@ message RadioConfig { * IMPORTANT NOTE FOR DEVICE CLIENTS: YOU MUST SEND SOME SORT OF PACKET TO THE PHONE AT LEAST THIS OFTEN OR THE DEVICE WILL DECIDE YOU ARE GONE! */ uint32 phone_timeout_secs = 6; - + /* * Power management state machine option. * 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 [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 [power management](/software/other/power.md) for details. * 0 for default of one year */ uint32 sds_secs = 9; - + /* * Power management state machine option. * See [power management](/software/other/power.md) for details. * 0 for default of 3600 */ uint32 ls_secs = 10; - + /* * Power management state machine option. * See [power management](/software/other/power.md) for details. @@ -315,7 +315,7 @@ message RadioConfig { * acquire an address via DHCP */ string wifi_ssid = 12; - + /* * If set, will be use to authenticate to the named wifi */ @@ -331,7 +331,7 @@ message RadioConfig { * The region code for my radio (US, CN, EU433, etc...) */ RegionCode region = 15; - + /* * Sets the current of the battery charger */ @@ -359,11 +359,11 @@ message RadioConfig { * The lat/lon/alt can be set by an internal GPS or with the help of the app. */ bool fixed_position = 39; - + /* * If set, this will disable the SerialConsole by not initilizing the StreamAPI */ - bool serial_disabled = 40; + bool serial_disabled = 40; /* * How our location is shared with other nodes (or the local phone) @@ -376,7 +376,7 @@ message RadioConfig { * For that see LocationSharing */ GpsOperation gps_operation = 33; - + /* * How often should we try to get GPS position (in seconds) when we are in GpsOpMobile mode? * or zero for the default of once every 30 seconds @@ -388,7 +388,7 @@ message RadioConfig { * 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. + * window. */ uint32 gps_attempt_time = 36; @@ -418,7 +418,7 @@ message RadioConfig { /* * The server to use for our MQTT global message gateway feature. - * If not set, the default server will be used + * If not set, the default server will be used */ string mqtt_server = 42; @@ -428,7 +428,7 @@ message RadioConfig { * But if this flag is set, all MQTT features will be disabled and no servers will be contacted. */ bool mqtt_disabled = 43; - + /* * How the GPS coordinates are displayed on the OLED screen. */ @@ -438,13 +438,13 @@ message RadioConfig { * 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; + 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. */ - bool debug_log_enabled = 101; + bool debug_log_enabled = 101; /* * If true, radio should not try to be smart about what packets to queue to @@ -457,7 +457,7 @@ message RadioConfig { * in ignore_incoming will have packets they send droped on receive (by router.cpp) */ repeated uint32 ignore_incoming = 103; - + /* * Preferences for the SerialPlugin * FIXME - Move this out of UserPreferences and into a section for plugin configuration. @@ -481,7 +481,7 @@ message RadioConfig { bool ext_notification_plugin_alert_bell = 131; /* - *Preferences for the RangeTestPlugin + * Preferences for the RangeTestPlugin * FIXME - Move this out of UserPreferences and into a section for plugin configuration. */ bool range_test_plugin_enabled = 132; @@ -492,8 +492,8 @@ message RadioConfig { * Preferences for the StoreForwardPlugin *FIXME - Move this out of UserPreferences and into a section for plugin configuration. (was 136) */ - bool store_forward_plugin_enabled = 148; - bool store_forward_plugin_heartbeat = 149; + bool store_forward_plugin_enabled = 148; + bool store_forward_plugin_heartbeat = 149; uint32 store_forward_plugin_records = 137; uint32 store_forward_plugin_history_return_max = 138; uint32 store_forward_plugin_history_return_window = 139; @@ -519,7 +519,7 @@ message RadioConfig { uint32 environmental_measurement_plugin_read_error_count_threshold = 142; /* - * Interval in seconds of how often we should try to send our + * Interval in seconds of how often we should try to send our * measurements to the mesh */ uint32 environmental_measurement_plugin_update_interval = 143; @@ -541,7 +541,7 @@ message RadioConfig { DHT11 = 0; DS18B20 = 1; }; - + /* * Specify the sensor type */ @@ -557,15 +557,15 @@ message RadioConfig { * (bitwise OR of PositionFlags) */ uint32 position_flags = 150; - + /* - * Circumvents the logic block for determining whether the device is powered or not. + * Circumvents the logic block for determining whether the device is powered or not. * Useful for devices with finicky ADC issues on the battery sense pins. */ bool is_always_powered = 151; - + /* - * Automatically toggles to the next page on the screen like a carousel, based the specified interval in seconds. + * 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 auto_screen_carousel_secs = 152; diff --git a/remote_hardware.proto b/remote_hardware.proto index 5dac530..f670662 100644 --- a/remote_hardware.proto +++ b/remote_hardware.proto @@ -6,7 +6,7 @@ option optimize_for = LITE_RUNTIME; option go_package = "github.com/meshtastic/gomeshproto"; /* - * An example app to show off the plugin system. This message is used for + * An example app to show off the plugin system. This message is used for * REMOTE_HARDWARE_APP PortNums. * * Also provides easy remote access to any GPIO. @@ -20,54 +20,54 @@ option go_package = "github.com/meshtastic/gomeshproto"; * (a special channel once multichannel support is included?) */ message HardwareMessage { - enum Type { - - /* - * Unset/unused - */ - UNSET = 0; - - /* - * Set gpio gpios based on gpio_mask/gpio_value - */ - 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. - */ - WATCH_GPIOS = 2; - - /* - * The gpios listed in gpio_mask have changed, the new values are listed in gpio_value - */ - GPIOS_CHANGED = 3; - - /* - * Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated - */ - READ_GPIOS = 4; - - /* - * A reply to READ_GPIOS. gpio_mask and gpio_value will be populated - */ - READ_GPIOS_REPLY = 5; - } + enum Type { /* - * What type of HardwareMessage is this? + * Unset/unused */ - Type typ = 1; + UNSET = 0; /* - * What gpios are we changing. Not used for all MessageTypes, see MessageType for details + * Set gpio gpios based on gpio_mask/gpio_value */ - uint64 gpio_mask = 2; + WRITE_GPIOS = 1; /* - * 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 + * 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. */ - uint64 gpio_value = 3; -} \ No newline at end of file + WATCH_GPIOS = 2; + + /* + * The gpios listed in gpio_mask have changed, the new values are listed in gpio_value + */ + GPIOS_CHANGED = 3; + + /* + * Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated + */ + READ_GPIOS = 4; + + /* + * A reply to READ_GPIOS. gpio_mask and gpio_value will be populated + */ + READ_GPIOS_REPLY = 5; + } + + /* + * What type of HardwareMessage is this? + */ + Type typ = 1; + + /* + * What gpios are we changing. Not used for all MessageTypes, see MessageType for details + */ + uint64 gpio_mask = 2; + + /* + * 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 gpio_value = 3; +} diff --git a/storeforward.proto b/storeforward.proto index 662aa7d..9466dcf 100644 --- a/storeforward.proto +++ b/storeforward.proto @@ -5,139 +5,134 @@ option java_outer_classname = "StoreAndForward"; option optimize_for = LITE_RUNTIME; option go_package = "github.com/meshtastic/gomeshproto"; - - - - message StoreAndForwardMessage { + /* + * 1 - 99 = From Router + * 101 - 199 = From Client + */ + enum RequestResponse { /* - * 1 - 99 = From Router - * 101 - 199 = From Client + * Unset/unused */ - enum RequestResponse { - /* - * Unset/unused - */ - UNSET = 0; + UNSET = 0; - ROUTER_ERROR = 1; + ROUTER_ERROR = 1; - ROUTER_HEARTBEAT = 2; + ROUTER_HEARTBEAT = 2; - /* - * Router has requested the client respond. This can work as a - * "are you there" message. - */ - ROUTER_PING = 3; + /* + * Router has requested the client respond. This can work as a + * "are you there" message. + */ + ROUTER_PING = 3; - /* - * The response to a "Ping" - */ - ROUTER_PONG = 4; + /* + * The response to a "Ping" + */ + ROUTER_PONG = 4; - /* - * Router is currently busy. Please try again later. - */ - ROUTER_BUSY = 5; + /* + * Router is currently busy. Please try again later. + */ + ROUTER_BUSY = 5; - CLIENT_ERROR = 101; + CLIENT_ERROR = 101; - /* - * Client has requested a replay from the router. - */ - CLIENT_HISTORY = 102; + /* + * Client has requested a replay from the router. + */ + CLIENT_HISTORY = 102; - /* - * Client has requested stats from the router. - */ - CLIENT_STATS = 103; + /* + * Client has requested stats from the router. + */ + CLIENT_STATS = 103; - /* - * Client has requested the router respond. This can work as a - * "are you there" message. - */ - CLIENT_PING = 104; + /* + * Client has requested the router respond. This can work as a + * "are you there" message. + */ + CLIENT_PING = 104; - /* - * The response to a "Ping" - */ - CLIENT_PONG = 105; + /* + * The response to a "Ping" + */ + CLIENT_PONG = 105; - MAX = 255; - } + MAX = 255; + } - message Statistics { + message Statistics { - /* - * Number of messages we have ever seen - */ - uint32 MessagesTotal = 1; + /* + * Number of messages we have ever seen + */ + uint32 MessagesTotal = 1; - /* - * Number of messages we have currently saved our history. - */ - uint32 MessagesSaved = 2; + /* + * Number of messages we have currently saved our history. + */ + uint32 MessagesSaved = 2; - /* - * Maximum number of messages we will save - */ - uint32 MessagesMax = 3; + /* + * Maximum number of messages we will save + */ + uint32 MessagesMax = 3; - /* - * Router uptime in seconds - */ - uint32 UpTime = 4; + /* + * Router uptime in seconds + */ + uint32 UpTime = 4; - /* - * Number of times any client sent a request to the S&F. - */ - uint32 Requests = 5; + /* + * Number of times any client sent a request to the S&F. + */ + uint32 Requests = 5; - /* - * Number of times the history was requested. - */ - uint32 RequestsHistory = 6; + /* + * Number of times the history was requested. + */ + uint32 RequestsHistory = 6; - /* - * Is the heartbeat enabled on the server? - */ - bool Heartbeat = 7; + /* + * Is the heartbeat enabled on the server? + */ + bool Heartbeat = 7; - /* - * Is the heartbeat enabled on the server? - */ - uint32 ReturnMax = 8; + /* + * Is the heartbeat enabled on the server? + */ + uint32 ReturnMax = 8; - /* - * Is the heartbeat enabled on the server? - */ - uint32 ReturnWindow = 9; + /* + * Is the heartbeat enabled on the server? + */ + uint32 ReturnWindow = 9; - } + } - message History { + message History { - /* - * Number of that will be sent to the client - */ - uint32 HistoryMessages = 1; + /* + * Number of that will be sent to the client + */ + uint32 HistoryMessages = 1; - /* - * The window of messages that was used to filter the history client requested - */ - uint32 Window = 2; + /* + * The window of messages that was used to filter the history client requested + */ + uint32 Window = 2; - } + } - RequestResponse rr = 1; + RequestResponse rr = 1; - Statistics stats = 2; + Statistics stats = 2; - History history = 3; + History history = 3; - -} \ No newline at end of file +}