kopia lustrzana https://github.com/meshtastic/protobufs
Merge branch 'meshtastic:master' into master
commit
774db7a33a
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
106
admin.proto
106
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;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
136
deviceonly.proto
136
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
246
mesh.proto
246
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
|
||||
|
|
|
|||
29
mqtt.proto
29
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
202
portnums.proto
202
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue