kopia lustrzana https://github.com/meshtastic/protobufs
Merge branch 'meshtastic:master' into location
commit
89804a800d
|
@ -1,23 +1,4 @@
|
|||
syntax = "proto3";
|
||||
/*
|
||||
* Meshtastic protobufs
|
||||
*
|
||||
* For more information on protobufs (and tools to use them with the language of your choice) see
|
||||
* https://developers.google.com/protocol-buffers/docs/proto3
|
||||
*
|
||||
* We are not placing any of these defs inside a package, because if you do the
|
||||
* resulting nanopb version is super verbose package mesh.
|
||||
*
|
||||
* Protobuf build instructions:
|
||||
*
|
||||
* To build java classes for reading writing:
|
||||
* protoc -I=. --java_out /tmp mesh.proto
|
||||
*
|
||||
* To generate Nanopb c code:
|
||||
* /home/kevinh/packages/nanopb-0.4.0-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.0
|
||||
*/
|
||||
|
||||
option java_package = "com.geeksville.mesh";
|
||||
option java_outer_classname = "CannedMessageConfigProtos";
|
||||
|
|
|
@ -1,23 +1,4 @@
|
|||
syntax = "proto3";
|
||||
/*
|
||||
* Meshtastic protobufs
|
||||
*
|
||||
* For more information on protobufs (and tools to use them with the language of your choice) see
|
||||
* https://developers.google.com/protocol-buffers/docs/proto3
|
||||
*
|
||||
* We are not placing any of these defs inside a package, because if you do the
|
||||
* resulting nanopb version is super verbose package mesh.
|
||||
*
|
||||
* Protobuf build instructions:
|
||||
*
|
||||
* To build java classes for reading writing:
|
||||
* protoc -I=. --java_out /tmp mesh.proto
|
||||
*
|
||||
* To generate Nanopb c code:
|
||||
* /home/kevinh/packages/nanopb-0.4.0-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.0
|
||||
*/
|
||||
|
||||
option java_package = "com.geeksville.mesh";
|
||||
|
||||
|
@ -43,7 +24,6 @@ option java_outer_classname = "ChannelProtos";
|
|||
* users COULD type in a channel name and be able to talk.
|
||||
* Y is a lower case letter from a-z that represents the channel 'speed' settings
|
||||
* (for some future definition of speed)
|
||||
*
|
||||
* FIXME: Add description of multi-channel support and how primary vs secondary channels are used.
|
||||
* FIXME: explain how apps use channels for security.
|
||||
* explain how remote settings and remote gpio are managed as an example
|
||||
|
@ -210,12 +190,10 @@ message Channel {
|
|||
|
||||
/*
|
||||
* How this channel is being used (or not).
|
||||
*
|
||||
* Note: this field is an enum to give us options for the future.
|
||||
* In particular, someday we might make a 'SCANNING' option.
|
||||
* SCANNING channels could have different frequencies and the radio would
|
||||
* occasionally check that freq to see if anything is being transmitted.
|
||||
*
|
||||
* For devices that have multiple physical radios attached, we could keep multiple PRIMARY/SCANNING channels active at once to allow
|
||||
* cross band routing as needed.
|
||||
* If a device has only a single radio (the common case) only one channel can be PRIMARY at a time
|
||||
|
|
48
mesh.proto
48
mesh.proto
|
@ -1,23 +1,4 @@
|
|||
syntax = "proto3";
|
||||
/*
|
||||
* Meshtastic protobufs
|
||||
*
|
||||
* For more information on protobufs (and tools to use them with the language of your choice) see
|
||||
* https://developers.google.com/protocol-buffers/docs/proto3
|
||||
*
|
||||
* We are not placing any of these defs inside a package, because if you do the
|
||||
* resulting nanopb version is super verbose package mesh.
|
||||
*
|
||||
* Protobuf build instructions:
|
||||
*
|
||||
* To build java classes for reading writing:
|
||||
* protoc -I=. --java_out /tmp mesh.proto
|
||||
*
|
||||
* To generate Nanopb c code:
|
||||
* /home/kevinh/packages/nanopb-0.4.0-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.0
|
||||
*/
|
||||
|
||||
option java_package = "com.geeksville.mesh";
|
||||
option optimize_for = LITE_RUNTIME;
|
||||
|
@ -43,17 +24,6 @@ message Position {
|
|||
*/
|
||||
sfixed32 longitude_i = 2;
|
||||
|
||||
/*
|
||||
* TODO: REMOTE/INTEGRATE
|
||||
* This is a special 'small' position update for lat/lon.
|
||||
* It encodes a signed 16 bit latitude in the upper 2 bytes, and a signed longitude in the lower 16 bits.
|
||||
* It is not currently implemented, but can be added in an automatically backwards compatible way later.
|
||||
* Note: ONLY microlatlon OR latitude_i, longitude_i are populated in any particular position.
|
||||
* A microdelta is always relative to the last received full position.
|
||||
*
|
||||
* fixed32 microlatlon = 3;
|
||||
*/
|
||||
|
||||
/*
|
||||
* In meters above MSL (but see issue #359)
|
||||
*/
|
||||
|
@ -195,7 +165,6 @@ message Position {
|
|||
|
||||
/*
|
||||
* Ground speed in m/s and True North TRACK in 1/100 degrees
|
||||
*
|
||||
* Clarification of terms:
|
||||
* - "track" is the direction of motion (measured in horizontal plane)
|
||||
* - "heading" is where the fuselage points (measured in horizontal plane)
|
||||
|
@ -456,24 +425,20 @@ enum Team {
|
|||
* Broadcast when a newly powered mesh node wants to find a node num it can use
|
||||
* Sent from the phone over bluetooth to set the user id for the owner of this node.
|
||||
* Also sent from nodes to each other when a new node signs on (so all clients can have this info)
|
||||
*
|
||||
* The algorithm is as follows:
|
||||
* when a node starts up, it broadcasts their user and the normal flow is for all
|
||||
* other nodes to reply with their User as well (so the new node can build its nodedb)
|
||||
* If a node ever receives a User (not just the first broadcast) message where
|
||||
* the sender node number equals our node number, that indicates a collision has
|
||||
* occurred and the following steps should happen:
|
||||
*
|
||||
* If the receiving node (that was already in the mesh)'s macaddr is LOWER than the
|
||||
* new User who just tried to sign in: it gets to keep its nodenum.
|
||||
* We send a broadcast message of OUR User (we use a broadcast so that the other node can
|
||||
* receive our message, considering we have the same id - it also serves to let
|
||||
* observers correct their nodedb) - this case is rare so it should be okay.
|
||||
*
|
||||
* If any node receives a User where the macaddr is GTE than their local macaddr,
|
||||
* they have been vetoed and should pick a new random nodenum (filtering against
|
||||
* whatever it knows about the nodedb) and rebroadcast their User.
|
||||
*
|
||||
* A few nodenums are reserved and will never be requested:
|
||||
* 0xff - broadcast
|
||||
* 0 through 3 - for future use
|
||||
|
@ -760,11 +725,8 @@ message MeshPacket {
|
|||
* This field is never sent over the air, it is only used internally inside of a local device node.
|
||||
* API clients (either on the local node or connected directly to the node)
|
||||
* can set this parameter if necessary.
|
||||
*
|
||||
* (values must be <= 127 to keep protobuf field to one byte in size.
|
||||
*
|
||||
* Detailed background on this field:
|
||||
*
|
||||
* I noticed a funny side effect of lora being so slow: Usually when making
|
||||
* a protocol there isn’t much need to use message priority to change the order
|
||||
* of transmission (because interfaces are fairly fast).
|
||||
|
@ -773,7 +735,6 @@ message MeshPacket {
|
|||
* In the case of meshtastic that means we want to send protocol acks as soon as possible
|
||||
* (to prevent unneeded retransmissions), we want routing messages to be sent next,
|
||||
* then messages marked as reliable and finally ‘background’ packets like periodic position updates.
|
||||
*
|
||||
* So I bit the bullet and implemented a new (internal - not sent over the air)
|
||||
* field in MeshPacket called ‘priority’.
|
||||
* And the transmission queue in the router object is now a priority queue.
|
||||
|
@ -976,16 +937,12 @@ enum Constants {
|
|||
|
||||
/*
|
||||
* The bluetooth to device link:
|
||||
*
|
||||
* Old BTLE protocol docs from TODO, merge in above and make real docs...
|
||||
*
|
||||
* use protocol buffers, and NanoPB
|
||||
*
|
||||
* messages from device to phone:
|
||||
* POSITION_UPDATE (..., time)
|
||||
* TEXT_RECEIVED(from, text, time)
|
||||
* OPAQUE_RECEIVED(from, payload, time) (for signal messages or other applications)
|
||||
*
|
||||
* messages from phone to device:
|
||||
* SET_MYID(id, human readable long, human readable short) (send down the unique ID
|
||||
* string used for this node, a human readable string shown for that id, and a very
|
||||
|
@ -994,7 +951,6 @@ enum Constants {
|
|||
* nodes() (returns list of nodes, with full info, last time seen, loc, battery
|
||||
* level etc) SET_CONFIG (switches device to a new set of radio params and
|
||||
* preshared key, drops all existing nodes, force our node to rejoin this new group)
|
||||
*
|
||||
* Full information about a node on the mesh
|
||||
*/
|
||||
message NodeInfo {
|
||||
|
@ -1053,14 +1009,13 @@ message NodeInfo {
|
|||
*/
|
||||
fixed32 last_heard = 5;
|
||||
/*
|
||||
* The latest telemetry data for the node.
|
||||
* The latest device telemetry data for the node.
|
||||
*/
|
||||
Telemetry telemetry = 6;
|
||||
}
|
||||
|
||||
/*
|
||||
* Error codes for critical errors
|
||||
*
|
||||
* The device might report these fault codes on the screen.
|
||||
* If you encounter a fault code, please post on the meshtastic.discourse.group
|
||||
* and we'll try to help.
|
||||
|
@ -1243,7 +1198,6 @@ 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
|
||||
* 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,
|
||||
|
|
|
@ -28,7 +28,6 @@ message ManufacturingData {
|
|||
/*
|
||||
* This code is written during manfacturing time and allows users to confirm that
|
||||
* the initial manufacturing tests succeeded.
|
||||
*
|
||||
* 0 means no test performed.
|
||||
* 1 means all tests passed
|
||||
* negative numbers indicate particular error codes
|
||||
|
|
|
@ -8,19 +8,14 @@ option go_package = "github.com/meshtastic/gomeshproto";
|
|||
/*
|
||||
* For any new 'apps' that run on the device or via sister apps on phones/PCs they should pick and use a
|
||||
* unique 'portnum' for their application.
|
||||
*
|
||||
* If you are making a new app using meshtastic, please send in a pull request to add your 'portnum' to this
|
||||
* master table.
|
||||
* PortNums should be assigned in the following range:
|
||||
*
|
||||
* 0-63 Core Meshtastic use, do not use for third party apps
|
||||
* 64-127 Registered 3rd party apps, send in a pull request that adds a new entry to portnums.proto to register your application
|
||||
* 256-511 Use one of these portnums for your private applications that you don't want to register publically
|
||||
*
|
||||
* All other values are reserved.
|
||||
*
|
||||
* Note: This was formerly a Type enum named 'typ' with the same id #
|
||||
*
|
||||
* We have change to this 'portnum' based scheme for specifying app handlers for particular payloads.
|
||||
* This change is backwards compatible by treating the legacy OPAQUE/CLEAR_TEXT values identically.
|
||||
*/
|
||||
|
|
|
@ -1,23 +1,4 @@
|
|||
syntax = "proto3";
|
||||
/*
|
||||
* Meshtastic protobufs
|
||||
*
|
||||
* For more information on protobufs (and tools to use them with the language of your choice) see
|
||||
* https://developers.google.com/protocol-buffers/docs/proto3
|
||||
*
|
||||
* We are not placing any of these defs inside a package, because if you do the
|
||||
* resulting nanopb version is super verbose package mesh.
|
||||
*
|
||||
* Protobuf build instructions:
|
||||
*
|
||||
* To build java classes for reading writing:
|
||||
* protoc -I=. --java_out /tmp mesh.proto
|
||||
*
|
||||
* To generate Nanopb c code:
|
||||
* /home/kevinh/packages/nanopb-0.4.0-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.0
|
||||
*/
|
||||
|
||||
option java_package = "com.geeksville.mesh";
|
||||
option java_outer_classname = "RadioConfigProtos";
|
||||
|
@ -26,10 +7,8 @@ option go_package = "github.com/meshtastic/gomeshproto";
|
|||
|
||||
/*
|
||||
* The frequency/regulatory region the user has selected.
|
||||
*
|
||||
* Note: In 1.0 builds (which must still be supported by the android app for a
|
||||
* long time) this field will be unpopulated.
|
||||
*
|
||||
* If firmware is ever upgraded from an old 1.0ish build, the old
|
||||
* MyNodeInfo.region string will be used to set UserPreferences.region and the
|
||||
* old value will be no longer set.
|
||||
|
@ -106,7 +85,6 @@ enum RegionCode {
|
|||
* Defines the device's role on the Mesh network
|
||||
* unset
|
||||
* Behave normally.
|
||||
*
|
||||
* Router
|
||||
* Functions as a router
|
||||
*/
|
||||
|
@ -263,7 +241,6 @@ enum GpsCoordinateFormat {
|
|||
* Bit field of boolean configuration options, indicating which optional
|
||||
* fields to include when assembling POSITION messages
|
||||
* Longitude and latitude are always included (also time if GPS-synced)
|
||||
*
|
||||
* NOTE: the more fields are included, the larger the message will be -
|
||||
* leading to longer airtime and a higher risk of packet loss
|
||||
*/
|
||||
|
@ -396,7 +373,6 @@ message RadioConfig {
|
|||
/*
|
||||
* If we miss this many owner messages from a node, we declare the node
|
||||
* offline (defaults to 3 - to allow for some lost packets) (FIXME not yet used)
|
||||
*
|
||||
* uint32 num_missed_to_fail = 3;
|
||||
TODO: REMOVE/INTEGRATE
|
||||
*/
|
||||
|
@ -741,42 +717,42 @@ message RadioConfig {
|
|||
reserved 136;
|
||||
|
||||
/*
|
||||
* Preferences for the Teletry Module
|
||||
* Preferences for the Telemetry Module (Environment)
|
||||
* FIXME - Move this out of UserPreferences and into a section for module configuration.
|
||||
* Enable/Disable the telemetry measurement module measurement collection
|
||||
*/
|
||||
bool telemetry_module_measurement_enabled = 140;
|
||||
bool telemetry_module_environment_measurement_enabled = 140;
|
||||
|
||||
/*
|
||||
* Enable/Disable the telemetry measurement module on-device display
|
||||
*/
|
||||
bool telemetry_module_screen_enabled = 141;
|
||||
bool telemetry_module_environment_screen_enabled = 141;
|
||||
|
||||
/*
|
||||
* Sometimes sensor reads can fail.
|
||||
* If this happens, we will retry a configurable number of attempts,
|
||||
* each attempt will be delayed by the minimum required refresh rate for that sensor
|
||||
*/
|
||||
uint32 telemetry_module_read_error_count_threshold = 142;
|
||||
uint32 telemetry_module_environment_read_error_count_threshold = 142;
|
||||
|
||||
/*
|
||||
* Interval in seconds of how often we should try to send our
|
||||
* measurements to the mesh
|
||||
*/
|
||||
uint32 telemetry_module_update_interval = 143;
|
||||
uint32 telemetry_module_device_update_interval = 143;
|
||||
|
||||
/*
|
||||
* Sometimes we can end up with more than read_error_count_threshold failures.
|
||||
* In this case, we will stop trying to read from the sensor for a while.
|
||||
* Wait this long until trying to read from the sensor again
|
||||
*/
|
||||
uint32 telemetry_module_recovery_interval = 144;
|
||||
uint32 telemetry_module_environment_recovery_interval = 144;
|
||||
|
||||
/*
|
||||
* We'll always read the sensor in Celsius, but sometimes we might want to
|
||||
* display the results in Fahrenheit as a "user preference".
|
||||
*/
|
||||
bool telemetry_module_display_fahrenheit = 145;
|
||||
bool telemetry_module_environment_display_fahrenheit = 145;
|
||||
|
||||
/*
|
||||
* TODO: REPLACE
|
||||
|
@ -835,12 +811,12 @@ message RadioConfig {
|
|||
/*
|
||||
* Specify the sensor type
|
||||
*/
|
||||
TelemetrySensorType telemetry_module_sensor_type = 146;
|
||||
TelemetrySensorType telemetry_module_environment_sensor_type = 146;
|
||||
|
||||
/*
|
||||
* Specify the peferred GPIO Pin for sensor readings
|
||||
*/
|
||||
uint32 telemetry_module_sensor_pin = 147;
|
||||
uint32 telemetry_module_environment_sensor_pin = 147;
|
||||
|
||||
/*
|
||||
* Bit field of boolean configuration options for POSITION messages
|
||||
|
@ -862,13 +838,11 @@ message RadioConfig {
|
|||
|
||||
/*
|
||||
* If non-zero, the device will fully power off this many seconds after external power is removed.
|
||||
*
|
||||
*/
|
||||
uint32 on_battery_shutdown_after_secs = 153;
|
||||
|
||||
/*
|
||||
* Overrides HOPS_RELIABLE and sets the maximum number of hops. This can't be greater than 7.
|
||||
*
|
||||
*/
|
||||
uint32 hop_limit = 154;
|
||||
|
||||
|
@ -968,6 +942,12 @@ message RadioConfig {
|
|||
* Overrides the ADC_MULTIPLIER defined in variant for battery voltage calculation.
|
||||
*/
|
||||
float adc_multiplier_override = 175;
|
||||
|
||||
/*
|
||||
* Interval in seconds of how often we should try to send our
|
||||
* environent measurements to the mesh
|
||||
*/
|
||||
uint32 telemetry_module_environment_update_interval = 177;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -8,12 +8,9 @@ option go_package = "github.com/meshtastic/gomeshproto";
|
|||
/*
|
||||
* An example app to show off the module system. This message is used for
|
||||
* REMOTE_HARDWARE_APP PortNums.
|
||||
*
|
||||
* Also provides easy remote access to any GPIO.
|
||||
*
|
||||
* In the future other remote hardware operations can be added based on user interest
|
||||
* (i.e. serial output, spi/i2c input/output).
|
||||
*
|
||||
* FIXME - currently this feature is turned on by default which is dangerous
|
||||
* because no security yet (beyond the channel mechanism).
|
||||
* It should be off by default and then protected based on some TBD mechanism
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# options for nanopb
|
||||
# https://jpa.kapsi.fi/nanopb/docs/reference.html#proto-file-options
|
||||
|
||||
|
127
telemetry.proto
127
telemetry.proto
|
@ -1,11 +1,75 @@
|
|||
syntax = "proto3";
|
||||
|
||||
option java_package = "com.geeksville.mesh";
|
||||
option optimize_for = LITE_RUNTIME;
|
||||
option go_package = "github.com/meshtastic/gomeshproto";
|
||||
|
||||
option java_outer_classname = "TelemetryProtos";
|
||||
|
||||
/*
|
||||
* TODO: REPLACE
|
||||
* Key native device metrics such as battery level
|
||||
*/
|
||||
message DeviceMetrics {
|
||||
/*
|
||||
* 1-100 (0 means powered)
|
||||
*/
|
||||
uint32 battery_level = 1;
|
||||
|
||||
/*
|
||||
* Voltage measured
|
||||
*/
|
||||
float voltage = 2;
|
||||
|
||||
/*
|
||||
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
||||
*/
|
||||
float channel_utilization = 3;
|
||||
|
||||
/*
|
||||
* Percent of airtime for transmission used within the last hour.
|
||||
*/
|
||||
float air_util_tx = 4;
|
||||
}
|
||||
|
||||
/*
|
||||
* Weather station or other environmental metrics
|
||||
*/
|
||||
message EnvironmentMetrics {
|
||||
/*
|
||||
* Temperature measured
|
||||
*/
|
||||
float temperature = 1;
|
||||
|
||||
/*
|
||||
* Relative humidity percent measured
|
||||
*/
|
||||
float relative_humidity = 2;
|
||||
|
||||
/*
|
||||
* Barometric pressure in hPA measured
|
||||
*/
|
||||
float barometric_pressure = 3;
|
||||
|
||||
/*
|
||||
* Gas resistance in mOhm measured
|
||||
*/
|
||||
float gas_resistance = 4;
|
||||
|
||||
/*
|
||||
* Voltage measured
|
||||
*/
|
||||
float voltage = 5;
|
||||
|
||||
/*
|
||||
* Current measured
|
||||
*/
|
||||
float current = 6;
|
||||
}
|
||||
|
||||
/*
|
||||
* Types of Measurements the telemetry module is equipped to handle
|
||||
*/
|
||||
message Telemetry {
|
||||
|
||||
/*
|
||||
* This is usually not sent over the mesh (to save space), but it is sent
|
||||
* from the phone so that the local device can set its RTC If it is sent over
|
||||
|
@ -15,54 +79,15 @@ message Telemetry {
|
|||
*/
|
||||
fixed32 time = 1;
|
||||
|
||||
/*
|
||||
* 1-100 (0 means powered)
|
||||
*/
|
||||
uint32 battery_level = 2;
|
||||
oneof variant {
|
||||
/*
|
||||
* Key native device metrics such as battery level
|
||||
*/
|
||||
DeviceMetrics device_metrics = 2;
|
||||
|
||||
/*
|
||||
* Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
|
||||
*/
|
||||
float channel_utilization = 3;
|
||||
|
||||
/*
|
||||
* Percent of airtime for transmission used within the last hour.
|
||||
*/
|
||||
float air_util_tx = 4;
|
||||
|
||||
/*
|
||||
* This is sent by node only if it a router and if hop_limit is set to 0
|
||||
* and is not being sent as a reliable message.
|
||||
*/
|
||||
bool router_heartbeat = 5;
|
||||
|
||||
/*
|
||||
* Temperature measured
|
||||
*/
|
||||
float temperature = 6;
|
||||
|
||||
/*
|
||||
* Relative humidity percent measured
|
||||
*/
|
||||
float relative_humidity = 7;
|
||||
|
||||
/*
|
||||
* Barometric pressure in hPA measured
|
||||
*/
|
||||
float barometric_pressure = 8;
|
||||
|
||||
/*
|
||||
* Gas resistance in mOhm measured
|
||||
*/
|
||||
float gas_resistance = 9;
|
||||
|
||||
/*
|
||||
* Voltage measured
|
||||
*/
|
||||
float voltage = 10;
|
||||
|
||||
/*
|
||||
* Current measured
|
||||
*/
|
||||
float current = 11;
|
||||
/*
|
||||
* Weather station or other environmental metrics
|
||||
*/
|
||||
EnvironmentMetrics environment_metrics = 3;
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue