Merge branch 'meshtastic:master' into master

pull/49/head^2
Jm Casler 2021-12-02 16:42:12 -08:00 zatwierdzone przez GitHub
commit 774db7a33a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
14 zmienionych plików z 592 dodań i 574 usunięć

20
.protolint.yml 100644
Wyświetl plik

@ -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

Wyświetl plik

@ -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
* 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

Wyświetl plik

@ -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;
}
}
/*
* 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;
}
}

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;
}
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;
}

Wyświetl plik

@ -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;
}
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;
}
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;
}

Wyświetl plik

@ -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;
}
}