kopia lustrzana https://github.com/meshtastic/protobufs
303 wiersze
6.8 KiB
Protocol Buffer
303 wiersze
6.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package meshtastic;
|
|
|
|
import "meshtastic/channel.proto";
|
|
import "meshtastic/localonly.proto";
|
|
import "meshtastic/mesh.proto";
|
|
import "meshtastic/telemetry.proto";
|
|
import "meshtastic/config.proto";
|
|
import "nanopb.proto";
|
|
|
|
option csharp_namespace = "Meshtastic.Protobufs";
|
|
option go_package = "github.com/meshtastic/go/generated";
|
|
option java_outer_classname = "DeviceOnly";
|
|
option java_package = "com.geeksville.mesh";
|
|
option swift_prefix = "";
|
|
option (nanopb_fileopt).include = "<vector>";
|
|
|
|
|
|
/*
|
|
* Position with static location information only for NodeDBLite
|
|
*/
|
|
message PositionLite {
|
|
/*
|
|
* The new preferred location encoding, multiply by 1e-7 to get degrees
|
|
* in floating point
|
|
*/
|
|
sfixed32 latitude_i = 1;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
sfixed32 longitude_i = 2;
|
|
|
|
/*
|
|
* In meters above MSL (but see issue #359)
|
|
*/
|
|
int32 altitude = 3;
|
|
|
|
/*
|
|
* 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
|
|
* the mesh (because there are devices on the mesh without GPS), it will only
|
|
* be sent by devices which has a hardware GPS clock.
|
|
* seconds since 1970
|
|
*/
|
|
fixed32 time = 4;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
Position.LocSource location_source = 5;
|
|
}
|
|
|
|
message UserLite {
|
|
/*
|
|
* This is the addr of the radio.
|
|
*/
|
|
bytes macaddr = 1 [deprecated = true];
|
|
|
|
/*
|
|
* A full name for this user, i.e. "Kevin Hester"
|
|
*/
|
|
string long_name = 2;
|
|
|
|
/*
|
|
* A VERY short name, ideally two characters.
|
|
* Suitable for a tiny OLED screen
|
|
*/
|
|
string short_name = 3;
|
|
|
|
/*
|
|
* 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 = 4;
|
|
|
|
/*
|
|
* 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 = 5;
|
|
|
|
/*
|
|
* Indicates that the user's role in the mesh
|
|
*/
|
|
Config.DeviceConfig.Role role = 6;
|
|
|
|
/*
|
|
* The public key of the user's device.
|
|
* This is sent out to other nodes on the mesh to allow them to compute a shared secret key.
|
|
*/
|
|
bytes public_key = 7;
|
|
}
|
|
|
|
message NodeInfoLite {
|
|
/*
|
|
* The node number
|
|
*/
|
|
uint32 num = 1;
|
|
|
|
/*
|
|
* The user info for this node
|
|
*/
|
|
UserLite user = 2;
|
|
|
|
/*
|
|
* This position data. Note: before 1.2.14 we would also store the last time we've heard from this node in position.time, that is no longer true.
|
|
* Position.time now indicates the last time we received a POSITION from that node.
|
|
*/
|
|
PositionLite position = 3;
|
|
|
|
/*
|
|
* Returns the Signal-to-noise ratio (SNR) of the last received message,
|
|
* as measured by the receiver. Return SNR of the last received message in dB
|
|
*/
|
|
float snr = 4;
|
|
|
|
/*
|
|
* Set to indicate the last time we received a packet from this node
|
|
*/
|
|
fixed32 last_heard = 5;
|
|
/*
|
|
* The latest device metrics for the node.
|
|
*/
|
|
DeviceMetrics device_metrics = 6;
|
|
|
|
/*
|
|
* local channel index we heard that node on. Only populated if its not the default channel.
|
|
*/
|
|
uint32 channel = 7;
|
|
|
|
/*
|
|
* True if we witnessed the node over MQTT instead of LoRA transport
|
|
*/
|
|
bool via_mqtt = 8;
|
|
|
|
/*
|
|
* Number of hops away from us this node is (0 if adjacent)
|
|
*/
|
|
optional uint32 hops_away = 9;
|
|
|
|
/*
|
|
* True if node is in our favorites list
|
|
* Persists between NodeDB internal clean ups
|
|
*/
|
|
bool is_favorite = 10;
|
|
}
|
|
|
|
/*
|
|
* Font sizes for the device screen
|
|
*/
|
|
enum ScreenFonts {
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
FONT_SMALL = 0;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
FONT_MEDIUM = 1;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
FONT_LARGE = 2;
|
|
}
|
|
|
|
|
|
/*
|
|
* This message is never sent over the wire, but it is used for serializing DB
|
|
* state to flash in the device code
|
|
* FIXME, since we write this each time we enter deep sleep (and have infinite
|
|
* flash) it would be better to use some sort of append only data structure for
|
|
* the receive queue and use the preferences store for the other stuff
|
|
*/
|
|
message DeviceState {
|
|
/*
|
|
* Read only settings/info about this node
|
|
*/
|
|
MyNodeInfo my_node = 2;
|
|
|
|
/*
|
|
* My owner info
|
|
*/
|
|
User owner = 3;
|
|
|
|
/*
|
|
* 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.
|
|
* Deprecated in 2.3.1
|
|
*/
|
|
bool no_save = 9 [deprecated = true];
|
|
|
|
/*
|
|
* Some GPS receivers seem to have bogus settings from the factory, so we always do one factory reset.
|
|
*/
|
|
bool did_gps_reset = 11;
|
|
|
|
/*
|
|
* We keep the last received waypoint stored in the device flash,
|
|
* so we can show it on the screen.
|
|
* Might be null
|
|
*/
|
|
MeshPacket rx_waypoint = 12;
|
|
|
|
/*
|
|
* The mesh's nodes with their available gpio pins for RemoteHardware module
|
|
*/
|
|
repeated NodeRemoteHardwarePin node_remote_hardware_pins = 13;
|
|
|
|
/*
|
|
* New lite version of NodeDB to decrease memory footprint
|
|
*/
|
|
repeated NodeInfoLite node_db_lite = 14 [(nanopb).callback_datatype = "std::vector<meshtastic_NodeInfoLite>"];
|
|
}
|
|
|
|
/*
|
|
* The on-disk saved channels
|
|
*/
|
|
message ChannelFile {
|
|
/*
|
|
* The channels our node knows about
|
|
*/
|
|
repeated Channel channels = 1;
|
|
|
|
/*
|
|
* 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 = 2;
|
|
}
|
|
|
|
/*
|
|
* This can be used for customizing the firmware distribution. If populated,
|
|
* show a secondary bootup screen with custom logo and text for 2.5 seconds.
|
|
*/
|
|
message OEMStore {
|
|
/*
|
|
* The Logo width in Px
|
|
*/
|
|
uint32 oem_icon_width = 1;
|
|
|
|
/*
|
|
* The Logo height in Px
|
|
*/
|
|
uint32 oem_icon_height = 2;
|
|
|
|
/*
|
|
* The Logo in XBM bytechar format
|
|
*/
|
|
bytes oem_icon_bits = 3;
|
|
|
|
/*
|
|
* Use this font for the OEM text.
|
|
*/
|
|
ScreenFonts oem_font = 4;
|
|
|
|
/*
|
|
* Use this font for the OEM text.
|
|
*/
|
|
string oem_text = 5;
|
|
|
|
/*
|
|
* The default device encryption key, 16 or 32 byte
|
|
*/
|
|
bytes oem_aes_key = 6;
|
|
|
|
/*
|
|
* A Preset LocalConfig to apply during factory reset
|
|
*/
|
|
LocalConfig oem_local_config = 7;
|
|
|
|
/*
|
|
* A Preset LocalModuleConfig to apply during factory reset
|
|
*/
|
|
LocalModuleConfig oem_local_module_config = 8;
|
|
}
|