kopia lustrzana https://github.com/meshtastic/protobufs
810 wiersze
17 KiB
Protocol Buffer
810 wiersze
17 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package meshtastic;
|
|
|
|
option csharp_namespace = "Meshtastic.Protobufs";
|
|
option go_package = "github.com/meshtastic/go/generated";
|
|
option java_outer_classname = "ModuleConfigProtos";
|
|
option java_package = "com.geeksville.mesh";
|
|
option swift_prefix = "";
|
|
|
|
/*
|
|
* Module Config
|
|
*/
|
|
message ModuleConfig {
|
|
/*
|
|
* MQTT Client Config
|
|
*/
|
|
message MQTTConfig {
|
|
/*
|
|
* If a meshtastic node is able to reach the internet it will normally attempt to gateway any channels that are marked as
|
|
* is_uplink_enabled or is_downlink_enabled.
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* The server to use for our MQTT global message gateway feature.
|
|
* If not set, the default server will be used
|
|
*/
|
|
string address = 2;
|
|
|
|
/*
|
|
* MQTT username to use (most useful for a custom MQTT server).
|
|
* If using a custom server, this will be honoured even if empty.
|
|
* If using the default server, this will only be honoured if set, otherwise the device will use the default username
|
|
*/
|
|
string username = 3;
|
|
|
|
/*
|
|
* MQTT password to use (most useful for a custom MQTT server).
|
|
* If using a custom server, this will be honoured even if empty.
|
|
* If using the default server, this will only be honoured if set, otherwise the device will use the default password
|
|
*/
|
|
string password = 4;
|
|
|
|
/*
|
|
* Whether to send encrypted or decrypted packets to MQTT.
|
|
* This parameter is only honoured if you also set server
|
|
* (the default official mqtt.meshtastic.org server can handle encrypted packets)
|
|
* Decrypted packets may be useful for external systems that want to consume meshtastic packets
|
|
*/
|
|
bool encryption_enabled = 5;
|
|
|
|
/*
|
|
* Whether to send / consume json packets on MQTT
|
|
*/
|
|
bool json_enabled = 6;
|
|
|
|
/*
|
|
* If true, we attempt to establish a secure connection using TLS
|
|
*/
|
|
bool tls_enabled = 7;
|
|
|
|
/*
|
|
* The root topic to use for MQTT messages. Default is "msh".
|
|
* This is useful if you want to use a single MQTT server for multiple meshtastic networks and separate them via ACLs
|
|
*/
|
|
string root = 8;
|
|
|
|
/*
|
|
* If true, we can use the connected phone / client to proxy messages to MQTT instead of a direct connection
|
|
*/
|
|
bool proxy_to_client_enabled = 9;
|
|
|
|
/*
|
|
* If true, we will periodically report unencrypted information about our node to a map via MQTT
|
|
*/
|
|
bool map_reporting_enabled = 10;
|
|
|
|
/*
|
|
* Settings for reporting information about our node to a map via MQTT
|
|
*/
|
|
MapReportSettings map_report_settings = 11;
|
|
}
|
|
|
|
/*
|
|
* Settings for reporting unencrypted information about our node to a map via MQTT
|
|
*/
|
|
message MapReportSettings {
|
|
/*
|
|
* How often we should report our info to the map (in seconds)
|
|
*/
|
|
uint32 publish_interval_secs = 1;
|
|
|
|
/*
|
|
* Bits of precision for the location sent (default of 32 is full precision).
|
|
*/
|
|
uint32 position_precision = 2;
|
|
}
|
|
|
|
/*
|
|
* RemoteHardwareModule Config
|
|
*/
|
|
message RemoteHardwareConfig {
|
|
/*
|
|
* Whether the Module is enabled
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* Whether the Module allows consumers to read / write to pins not defined in available_pins
|
|
*/
|
|
bool allow_undefined_pin_access = 2;
|
|
|
|
/*
|
|
* Exposes the available pins to the mesh for reading and writing
|
|
*/
|
|
repeated RemoteHardwarePin available_pins = 3;
|
|
}
|
|
|
|
/*
|
|
* NeighborInfoModule Config
|
|
*/
|
|
message NeighborInfoConfig {
|
|
/*
|
|
* Whether the Module is enabled
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* Neighbor Info to the mesh
|
|
*/
|
|
uint32 update_interval = 2;
|
|
}
|
|
|
|
/*
|
|
* Detection Sensor Module Config
|
|
*/
|
|
message DetectionSensorConfig {
|
|
/*
|
|
* Whether the Module is enabled
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* Interval in seconds of how often we can send a message to the mesh when a state change is detected
|
|
*/
|
|
uint32 minimum_broadcast_secs = 2;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should send a message to the mesh with the current state regardless of changes
|
|
* When set to 0, only state changes will be broadcasted
|
|
* Works as a sort of status heartbeat for peace of mind
|
|
*/
|
|
uint32 state_broadcast_secs = 3;
|
|
/*
|
|
* Send ASCII bell with alert message
|
|
* Useful for triggering ext. notification on bell
|
|
*/
|
|
bool send_bell = 4;
|
|
|
|
/*
|
|
* Friendly name used to format message sent to mesh
|
|
* Example: A name "Motion" would result in a message "Motion detected"
|
|
* Maximum length of 20 characters
|
|
*/
|
|
string name = 5;
|
|
|
|
/*
|
|
* GPIO pin to monitor for state changes
|
|
*/
|
|
uint32 monitor_pin = 6;
|
|
|
|
/*
|
|
* Whether or not the GPIO pin state detection is triggered on HIGH (1)
|
|
* Otherwise LOW (0)
|
|
*/
|
|
bool detection_triggered_high = 7;
|
|
|
|
/*
|
|
* Whether or not use INPUT_PULLUP mode for GPIO pin
|
|
* Only applicable if the board uses pull-up resistors on the pin
|
|
*/
|
|
bool use_pullup = 8;
|
|
}
|
|
|
|
/*
|
|
* Audio Config for codec2 voice
|
|
*/
|
|
message AudioConfig {
|
|
/*
|
|
* Baudrate for codec2 voice
|
|
*/
|
|
enum Audio_Baud {
|
|
CODEC2_DEFAULT = 0;
|
|
CODEC2_3200 = 1;
|
|
CODEC2_2400 = 2;
|
|
CODEC2_1600 = 3;
|
|
CODEC2_1400 = 4;
|
|
CODEC2_1300 = 5;
|
|
CODEC2_1200 = 6;
|
|
CODEC2_700 = 7;
|
|
CODEC2_700B = 8;
|
|
}
|
|
|
|
/*
|
|
* Whether Audio is enabled
|
|
*/
|
|
bool codec2_enabled = 1;
|
|
|
|
/*
|
|
* PTT Pin
|
|
*/
|
|
uint32 ptt_pin = 2;
|
|
|
|
/*
|
|
* The audio sample rate to use for codec2
|
|
*/
|
|
Audio_Baud bitrate = 3;
|
|
|
|
/*
|
|
* I2S Word Select
|
|
*/
|
|
uint32 i2s_ws = 4;
|
|
|
|
/*
|
|
* I2S Data IN
|
|
*/
|
|
uint32 i2s_sd = 5;
|
|
|
|
/*
|
|
* I2S Data OUT
|
|
*/
|
|
uint32 i2s_din = 6;
|
|
|
|
/*
|
|
* I2S Clock
|
|
*/
|
|
uint32 i2s_sck = 7;
|
|
}
|
|
|
|
/*
|
|
* Config for the Paxcounter Module
|
|
*/
|
|
message PaxcounterConfig {
|
|
/*
|
|
* Enable the Paxcounter Module
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* metrics to the mesh
|
|
*/
|
|
|
|
uint32 paxcounter_update_interval = 2;
|
|
|
|
/*
|
|
* WiFi RSSI threshold. Defaults to -80
|
|
*/
|
|
int32 wifi_threshold = 3;
|
|
|
|
/*
|
|
* BLE RSSI threshold. Defaults to -80
|
|
*/
|
|
int32 ble_threshold = 4;
|
|
|
|
}
|
|
|
|
/*
|
|
* Serial Config
|
|
*/
|
|
message SerialConfig {
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
enum Serial_Baud {
|
|
BAUD_DEFAULT = 0;
|
|
BAUD_110 = 1;
|
|
BAUD_300 = 2;
|
|
BAUD_600 = 3;
|
|
BAUD_1200 = 4;
|
|
BAUD_2400 = 5;
|
|
BAUD_4800 = 6;
|
|
BAUD_9600 = 7;
|
|
BAUD_19200 = 8;
|
|
BAUD_38400 = 9;
|
|
BAUD_57600 = 10;
|
|
BAUD_115200 = 11;
|
|
BAUD_230400 = 12;
|
|
BAUD_460800 = 13;
|
|
BAUD_576000 = 14;
|
|
BAUD_921600 = 15;
|
|
}
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
enum Serial_Mode {
|
|
DEFAULT = 0;
|
|
SIMPLE = 1;
|
|
PROTO = 2;
|
|
TEXTMSG = 3;
|
|
NMEA = 4;
|
|
// NMEA messages specifically tailored for CalTopo
|
|
CALTOPO = 5;
|
|
// Ecowitt WS85 weather station
|
|
WS85 = 6;
|
|
}
|
|
|
|
/*
|
|
* Preferences for the SerialModule
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
bool echo = 2;
|
|
|
|
/*
|
|
* RX pin (should match Arduino gpio pin number)
|
|
*/
|
|
uint32 rxd = 3;
|
|
|
|
/*
|
|
* TX pin (should match Arduino gpio pin number)
|
|
*/
|
|
uint32 txd = 4;
|
|
|
|
/*
|
|
* Serial baud rate
|
|
*/
|
|
Serial_Baud baud = 5;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
uint32 timeout = 6;
|
|
|
|
/*
|
|
* Mode for serial module operation
|
|
*/
|
|
Serial_Mode mode = 7;
|
|
|
|
/*
|
|
* Overrides the platform's defacto Serial port instance to use with Serial module config settings
|
|
* This is currently only usable in output modes like NMEA / CalTopo and may behave strangely or not work at all in other modes
|
|
* Existing logging over the Serial Console will still be present
|
|
*/
|
|
bool override_console_serial_port = 8;
|
|
}
|
|
|
|
/*
|
|
* External Notifications Config
|
|
*/
|
|
message ExternalNotificationConfig {
|
|
/*
|
|
* Enable the ExternalNotificationModule
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* When using in On/Off mode, keep the output on for this many
|
|
* milliseconds. Default 1000ms (1 second).
|
|
*/
|
|
uint32 output_ms = 2;
|
|
|
|
/*
|
|
* Define the output pin GPIO setting Defaults to
|
|
* EXT_NOTIFY_OUT if set for the board.
|
|
* In standalone devices this pin should drive the LED to match the UI.
|
|
*/
|
|
uint32 output = 3;
|
|
|
|
/*
|
|
* Optional: Define a secondary output pin for a vibra motor
|
|
* This is used in standalone devices to match the UI.
|
|
*/
|
|
uint32 output_vibra = 8;
|
|
|
|
/*
|
|
* Optional: Define a tertiary output pin for an active buzzer
|
|
* This is used in standalone devices to to match the UI.
|
|
*/
|
|
uint32 output_buzzer = 9;
|
|
|
|
/*
|
|
* IF this is true, the 'output' Pin will be pulled active high, false
|
|
* means active low.
|
|
*/
|
|
bool active = 4;
|
|
|
|
/*
|
|
* True: Alert when a text message arrives (output)
|
|
*/
|
|
bool alert_message = 5;
|
|
|
|
/*
|
|
* True: Alert when a text message arrives (output_vibra)
|
|
*/
|
|
bool alert_message_vibra = 10;
|
|
|
|
/*
|
|
* True: Alert when a text message arrives (output_buzzer)
|
|
*/
|
|
bool alert_message_buzzer = 11;
|
|
|
|
/*
|
|
* True: Alert when the bell character is received (output)
|
|
*/
|
|
bool alert_bell = 6;
|
|
|
|
/*
|
|
* True: Alert when the bell character is received (output_vibra)
|
|
*/
|
|
bool alert_bell_vibra = 12;
|
|
|
|
/*
|
|
* True: Alert when the bell character is received (output_buzzer)
|
|
*/
|
|
bool alert_bell_buzzer = 13;
|
|
|
|
/*
|
|
* use a PWM output instead of a simple on/off output. This will ignore
|
|
* the 'output', 'output_ms' and 'active' settings and use the
|
|
* device.buzzer_gpio instead.
|
|
*/
|
|
bool use_pwm = 7;
|
|
|
|
/*
|
|
* The notification will toggle with 'output_ms' for this time of seconds.
|
|
* Default is 0 which means don't repeat at all. 60 would mean blink
|
|
* and/or beep for 60 seconds
|
|
*/
|
|
uint32 nag_timeout = 14;
|
|
|
|
/*
|
|
* When true, enables devices with native I2S audio output to use the RTTTL over speaker like a buzzer
|
|
* T-Watch S3 and T-Deck for example have this capability
|
|
*/
|
|
bool use_i2s_as_buzzer = 15;
|
|
}
|
|
|
|
/*
|
|
* Store and Forward Module Config
|
|
*/
|
|
message StoreForwardConfig {
|
|
/*
|
|
* Enable the Store and Forward Module
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
bool heartbeat = 2;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
uint32 records = 3;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
uint32 history_return_max = 4;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
uint32 history_return_window = 5;
|
|
|
|
/*
|
|
* Set to true to let this node act as a server that stores received messages and resends them upon request.
|
|
*/
|
|
bool is_server = 6;
|
|
}
|
|
|
|
/*
|
|
* Preferences for the RangeTestModule
|
|
*/
|
|
message RangeTestConfig {
|
|
/*
|
|
* Enable the Range Test Module
|
|
*/
|
|
bool enabled = 1;
|
|
|
|
/*
|
|
* Send out range test messages from this node
|
|
*/
|
|
uint32 sender = 2;
|
|
|
|
/*
|
|
* Bool value indicating that this node should save a RangeTest.csv file.
|
|
* ESP32 Only
|
|
*/
|
|
bool save = 3;
|
|
}
|
|
|
|
/*
|
|
* Configuration for both device and environment metrics
|
|
*/
|
|
message TelemetryConfig {
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* device metrics to the mesh
|
|
*/
|
|
uint32 device_update_interval = 1;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* environment measurements to the mesh
|
|
*/
|
|
|
|
uint32 environment_update_interval = 2;
|
|
|
|
/*
|
|
* Preferences for the Telemetry Module (Environment)
|
|
* Enable/Disable the telemetry measurement module measurement collection
|
|
*/
|
|
bool environment_measurement_enabled = 3;
|
|
|
|
/*
|
|
* Enable/Disable the telemetry measurement module on-device display
|
|
*/
|
|
bool environment_screen_enabled = 4;
|
|
|
|
/*
|
|
* We'll always read the sensor in Celsius, but sometimes we might want to
|
|
* display the results in Fahrenheit as a "user preference".
|
|
*/
|
|
bool environment_display_fahrenheit = 5;
|
|
|
|
/*
|
|
* Enable/Disable the air quality metrics
|
|
*/
|
|
bool air_quality_enabled = 6;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* air quality metrics to the mesh
|
|
*/
|
|
uint32 air_quality_interval = 7;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* air quality metrics to the mesh
|
|
*/
|
|
bool power_measurement_enabled = 8;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* air quality metrics to the mesh
|
|
*/
|
|
uint32 power_update_interval = 9;
|
|
|
|
/*
|
|
* Interval in seconds of how often we should try to send our
|
|
* air quality metrics to the mesh
|
|
*/
|
|
bool power_screen_enabled = 10;
|
|
}
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
message CannedMessageConfig {
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
enum InputEventChar {
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
NONE = 0;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
UP = 17;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
DOWN = 18;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
LEFT = 19;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
RIGHT = 20;
|
|
|
|
/*
|
|
* '\n'
|
|
*/
|
|
SELECT = 10;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
BACK = 27;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
CANCEL = 24;
|
|
}
|
|
|
|
/*
|
|
* Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating.
|
|
*/
|
|
bool rotary1_enabled = 1;
|
|
|
|
/*
|
|
* GPIO pin for rotary encoder A port.
|
|
*/
|
|
uint32 inputbroker_pin_a = 2;
|
|
|
|
/*
|
|
* GPIO pin for rotary encoder B port.
|
|
*/
|
|
uint32 inputbroker_pin_b = 3;
|
|
|
|
/*
|
|
* GPIO pin for rotary encoder Press port.
|
|
*/
|
|
uint32 inputbroker_pin_press = 4;
|
|
|
|
/*
|
|
* Generate input event on CW of this kind.
|
|
*/
|
|
InputEventChar inputbroker_event_cw = 5;
|
|
|
|
/*
|
|
* Generate input event on CCW of this kind.
|
|
*/
|
|
InputEventChar inputbroker_event_ccw = 6;
|
|
|
|
/*
|
|
* Generate input event on Press of this kind.
|
|
*/
|
|
InputEventChar inputbroker_event_press = 7;
|
|
|
|
/*
|
|
* Enable the Up/Down/Select input device. Can be RAK rotary encoder or 3 buttons. Uses the a/b/press definitions from inputbroker.
|
|
*/
|
|
bool updown1_enabled = 8;
|
|
|
|
/*
|
|
* Enable/disable CannedMessageModule.
|
|
*/
|
|
bool enabled = 9;
|
|
|
|
/*
|
|
* Input event origin accepted by the canned message module.
|
|
* Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any"
|
|
*/
|
|
string allow_input_source = 10;
|
|
|
|
/*
|
|
* CannedMessageModule also sends a bell character with the messages.
|
|
* ExternalNotificationModule can benefit from this feature.
|
|
*/
|
|
bool send_bell = 11;
|
|
}
|
|
|
|
/*
|
|
Ambient Lighting Module - Settings for control of onboard LEDs to allow users to adjust the brightness levels and respective color levels.
|
|
Initially created for the RAK14001 RGB LED module.
|
|
*/
|
|
message AmbientLightingConfig {
|
|
/*
|
|
* Sets LED to on or off.
|
|
*/
|
|
bool led_state = 1;
|
|
|
|
/*
|
|
* Sets the current for the LED output. Default is 10.
|
|
*/
|
|
uint32 current = 2;
|
|
|
|
/*
|
|
* Sets the red LED level. Values are 0-255.
|
|
*/
|
|
uint32 red = 3;
|
|
|
|
/*
|
|
* Sets the green LED level. Values are 0-255.
|
|
*/
|
|
uint32 green = 4;
|
|
|
|
/*
|
|
* Sets the blue LED level. Values are 0-255.
|
|
*/
|
|
uint32 blue = 5;
|
|
}
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
oneof payload_variant {
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
MQTTConfig mqtt = 1;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
SerialConfig serial = 2;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
ExternalNotificationConfig external_notification = 3;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
StoreForwardConfig store_forward = 4;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
RangeTestConfig range_test = 5;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
TelemetryConfig telemetry = 6;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
CannedMessageConfig canned_message = 7;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
AudioConfig audio = 8;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
RemoteHardwareConfig remote_hardware = 9;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
NeighborInfoConfig neighbor_info = 10;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
AmbientLightingConfig ambient_lighting = 11;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
DetectionSensorConfig detection_sensor = 12;
|
|
|
|
/*
|
|
* TODO: REPLACE
|
|
*/
|
|
PaxcounterConfig paxcounter = 13;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* A GPIO pin definition for remote hardware module
|
|
*/
|
|
message RemoteHardwarePin {
|
|
/*
|
|
* GPIO Pin number (must match Arduino)
|
|
*/
|
|
uint32 gpio_pin = 1;
|
|
|
|
/*
|
|
* Name for the GPIO pin (i.e. Front gate, mailbox, etc)
|
|
*/
|
|
string name = 2;
|
|
|
|
/*
|
|
* Type of GPIO access available to consumers on the mesh
|
|
*/
|
|
RemoteHardwarePinType type = 3;
|
|
}
|
|
|
|
enum RemoteHardwarePinType {
|
|
/*
|
|
* Unset/unused
|
|
*/
|
|
UNKNOWN = 0;
|
|
|
|
/*
|
|
* GPIO pin can be read (if it is high / low)
|
|
*/
|
|
DIGITAL_READ = 1;
|
|
|
|
/*
|
|
* GPIO pin can be written to (high / low)
|
|
*/
|
|
DIGITAL_WRITE = 2;
|
|
}
|