meshtastic-protobuf/radioconfig.proto

985 wiersze
22 KiB
Protocol Buffer

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";
option optimize_for = LITE_RUNTIME;
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.
*/
enum RegionCode {
/*
* TODO: REPLACE
*/
Unset = 0;
/*
* TODO: REPLACE
*/
US = 1;
/*
* TODO: REPLACE
*/
EU433 = 2;
/*
* TODO: REPLACE
*/
EU868 = 3;
/*
* TODO: REPLACE
*/
CN = 4;
/*
* TODO: REPLACE
*/
JP = 5;
/*
* TODO: REPLACE
*/
ANZ = 6;
/*
* TODO: REPLACE
*/
KR = 7;
/*
* TODO: REPLACE
*/
TW = 8;
/*
* TODO: REPLACE
*/
RU = 9;
/*
* TODO: REPLACE
*/
IN = 10;
/*
* TODO: REPLACE
*/
NZ865 = 11;
/*
* TODO: REPLACE
*/
TH = 12;
}
/*
* Defines the device's role on the Mesh network
* unset
* Behave normally.
*
* Router
* Functions as a router
*/
enum Role {
/*
* Default device role
*/
Default = 0;
/*
* Router device role
*/
Router = 1;
}
/*
* Sets the charge control current of devices with a battery charger that can be
* configured. This is passed into the axp power management chip like on the tbeam.
*/
enum ChargeCurrent {
/*
* TODO: REPLACE
*/
MAUnset = 0;
/*
* TODO: REPLACE
*/
MA100 = 1;
/*
* TODO: REPLACE
*/
MA190 = 2;
/*
* TODO: REPLACE
*/
MA280 = 3;
/*
* TODO: REPLACE
*/
MA360 = 4;
/*
* TODO: REPLACE
*/
MA450 = 5;
/*
* TODO: REPLACE
*/
MA550 = 6;
/*
* TODO: REPLACE
*/
MA630 = 7;
/*
* TODO: REPLACE
*/
MA700 = 8;
/*
* TODO: REPLACE
*/
MA780 = 9;
/*
* TODO: REPLACE
*/
MA880 = 10;
/*
* TODO: REPLACE
*/
MA960 = 11;
/*
* TODO: REPLACE
*/
MA1000 = 12;
/*
* TODO: REPLACE
*/
MA1080 = 13;
/*
* TODO: REPLACE
*/
MA1160 = 14;
/*
* TODO: REPLACE
*/
MA1240 = 15;
/*
* TODO: REPLACE
*/
MA1320 = 16;
}
/*
* How the GPS coordinates are displayed on the OLED screen.
*/
enum GpsCoordinateFormat {
/*
* 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:
* 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:
* 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,
* E is easting, N is northing
*/
GpsFormatMGRS = 3;
/*
* 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,
* N is the northing
*/
GpsFormatOSGR = 5;
}
/*
* 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
*/
enum PositionFlags {
/*
* Required for compilation
*/
POS_UNDEFINED = 0x0000;
/*
* Include an altitude value (if available)
*/
POS_ALTITUDE = 0x0001;
/*
* Altitude value is MSL
*/
POS_ALT_MSL = 0x0002;
/*
* Include geoidal separation
*/
POS_GEO_SEP = 0x0004;
/*
* 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;
/*
* Include battery level
*/
POS_BATTERY = 0x0020;
/*
* Include number of "satellites in view"
*/
POS_SATINVIEW = 0x0040;
/*
* Include a sequence number incremented per packet
*/
POS_SEQ_NOS = 0x0080;
/*
* Include positional timestamp (from GPS solution)
*/
POS_TIMESTAMP = 0x0100;
}
/*
* TODO: REPLACE
*/
enum InputEventChar {
/*
* TODO: REPLACE
*/
KEY_NONE = 0;
/*
* TODO: REPLACE
*/
KEY_UP = 17;
/*
* TODO: REPLACE
*/
KEY_DOWN = 18;
/*
* TODO: REPLACE
*/
KEY_LEFT = 19;
/*
* TODO: REPLACE
*/
KEY_RIGHT = 20;
/*
* '\n'
*/
KEY_SELECT = 10;
/*
* TODO: REPLACE
*/
KEY_BACK = 27;
/*
* TODO: REPLACE
*/
KEY_CANCEL = 24;
}
/*
* The entire set of user settable/readable settings for our radio device.
* Includes both the current channel settings and any preferences the user has
* set for behavior of their node
*/
message RadioConfig {
/*
* See [software design](/docs/software/other/sw-design) for more information on these preferences
*/
message UserPreferences {
/*
* We should send our position this often (but only if it has changed significantly)
* Defaults to 15 minutes
*/
uint32 position_broadcast_secs = 1;
/*
* We should send our position this often (but only if it has changed significantly)
*/
bool position_broadcast_smart_disabled = 17;
/*
* Send our owner info at least this often (also we always send once at boot - to rejoin the mesh)
*/
uint32 send_owner_interval = 2;
/*
* 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
*/
/*
* Power management state machine option.
* See [power management](/docs/software/other/power) for details.
* 0 for default of 1 minute
*/
uint32 wait_bluetooth_secs = 4;
/*
* Power management state machine option.
* See [power management](/docs/software/other/power) for details.
* 0 for default of one minute
*/
uint32 screen_on_secs = 5;
/*
* Power management state machine option.
* See [power management](/docs/software/other/power) for details.
* 0 for default of 15 minutes
* 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](/docs/software/other/power) 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](/docs/software/other/power) 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](/docs/software/other/power) for details.
* 0 for default of one year
*/
uint32 sds_secs = 9;
/*
* Power management state machine option.
* See [power management](/docs/software/other/power) for details.
* 0 for default of 3600
*/
uint32 ls_secs = 10;
/*
* Power management state machine option.
* See [power management](/docs/software/other/power) for details.
* 0 for default of 10 seconds
*/
uint32 min_wake_secs = 11;
/*
* If set, this node will try to join the specified wifi network and
* acquire an address via DHCP
*/
string wifi_ssid = 12;
/*
* If set, will be use to authenticate to the named wifi
*/
string wifi_password = 13;
/*
* If set, the node will operate as an AP (and DHCP server), otherwise it
* will be a station
*/
bool wifi_ap_mode = 14;
/*
* The region code for my radio (US, CN, EU433, etc...)
*/
RegionCode region = 15;
/*
* Sets the current of the battery charger
*/
ChargeCurrent charge_current = 16;
/*
* Sets the role of node
*/
Role role = 18;
/*
* If set, we are powered from a low-current source (i.e. solar), so even if it looks like we have power flowing in
* we should try to minimize power consumption as much as possible.
* YOU DO NOT NEED TO SET THIS IF YOU'VE set is_router (it is implied in that case).
*/
bool is_low_power = 38;
/*
* If set, this node is at a fixed position.
* We will generate GPS position updates at the regular interval, but use whatever the last lat/lon/alt we have for the node.
* 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;
/*
* Should we disbale location sharing with other nodes (or the local phone)
*/
bool location_share_disabled = 32;
/*
* Should the GPS be disabled for this node?
*/
bool gps_disabled = 33;
/*
* How often should we try to get GPS position (in seconds)
* or zero for the default of once every 30 seconds
* or a very large value (maxint) to update only once at boot.
*/
uint32 gps_update_interval = 34;
/*
* 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.
*/
uint32 gps_attempt_time = 36;
/*
* Shall we accept 2D GPS fixes? By default, only 3D fixes are accepted
* (during a 2D fix, altitude values are unreliable and will be excluded)
*/
bool gps_accept_2d = 45;
/*
* GPS maximum DOP accepted (dilution of precision)
* Set a rejection threshold for GPS readings based on their precision,
* relative to the GPS rated accuracy (which is typically ~3m)
* Solutions above this value will be treated as retryable errors!
* Useful range is between 1 - 64 (3m - <~200m)
* By default (if zero), accept all GPS readings
*/
uint32 gps_max_dop = 46;
/*
* This parameter is for advanced users with advanced test equipment, we do not recommend most users use it.
* A frequency offset that is added to to the calculated band center frequency.
* Used to correct for crystal calibration errors.
*/
float frequency_offset = 41;
/*
* The server to use for our MQTT global message gateway feature.
* If not set, the default server will be used
*/
string mqtt_server = 42;
/*
* 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.
* 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.
*/
GpsCoordinateFormat gps_format = 44;
/*
* 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;
/*
* 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;
/*
* If true, radio should not try to be smart about what packets to queue to
* the phone
* bool keep_all_packets = 101;
* If true, we will try to capture all the packets sent on the mesh, not just the ones destined to our node.
* bool promiscuous_mode = 102;
* For testing it is useful sometimes to force a node to never listen to
* particular other nodes (simulating radio out of range). All nodenums listed
* in ignore_incoming will have packets they send droped on receive (by router.cpp)
*/
repeated uint32 ignore_incoming = 103;
/*
* Preferences for the SerialModule
* FIXME - Move this out of UserPreferences and into a section for module configuration.
*/
bool serial_module_enabled = 120;
/*
* TODO: REPLACE
*/
bool serial_module_echo = 121;
/*
* TODO: REPLACE
*/
uint32 serial_module_rxd = 122;
/*
* TODO: REPLACE
*/
uint32 serial_module_txd = 123;
/*
* TODO: REPLACE
*/
enum Serial_Baud {
BAUD_Default = 0;
BAUD_2400 = 1;
BAUD_4800 = 2;
BAUD_9600 = 3;
BAUD_19200 = 4;
BAUD_38400 = 5;
BAUD_57600 = 6;
BAUD_115200 = 7;
BAUD_230400 = 8;
BAUD_460800 = 9;
BAUD_576000 = 10;
BAUD_921600 = 11;
};
/*
* TODO: REPLACE
*/
Serial_Baud serial_module_baud = 176;
/*
* TODO: REPLACE
*/
uint32 serial_module_timeout = 124;
/*
* TODO: REPLACE
*/
enum Serial_Mode {
MODE_Default = 0;
MODE_SIMPLE = 1;
MODE_PROTO = 2;
};
/*
* TODO: REPLACE
*/
Serial_Mode serial_module_mode = 125;
/*
* Preferences for the ExternalNotificationModule
* FIXME - Move this out of UserPreferences and into a section for module configuration.
*/
bool ext_notification_module_enabled = 126;
/*
* TODO: REPLACE
*/
uint32 ext_notification_module_output_ms = 127;
/*
* TODO: REPLACE
*/
uint32 ext_notification_module_output = 128;
/*
* TODO: REPLACE
*/
bool ext_notification_module_active = 129;
/*
* TODO: REPLACE
*/
bool ext_notification_module_alert_message = 130;
/*
* TODO: REPLACE
*/
bool ext_notification_module_alert_bell = 131;
/*
* Preferences for the RangeTestModule
* FIXME - Move this out of UserPreferences and into a section for module configuration.
*/
bool range_test_module_enabled = 132;
/*
* TODO: REPLACE
*/
uint32 range_test_module_sender = 133;
/*
* TODO: REPLACE
*/
bool range_test_module_save = 134;
/*
* Preferences for the StoreForwardModule
*FIXME - Move this out of UserPreferences and into a section for module configuration. (was 136)
*/
bool store_forward_module_enabled = 148;
/*
* TODO: REPLACE
*/
bool store_forward_module_heartbeat = 149;
/*
* TODO: REPLACE
*/
uint32 store_forward_module_records = 137;
/*
* TODO: REPLACE
*/
uint32 store_forward_module_history_return_max = 138;
/*
* TODO: REPLACE
*/
uint32 store_forward_module_history_return_window = 139;
/*
* TODO: REPLACE
*/
reserved 136;
/*
* 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_environment_measurement_enabled = 140;
/*
* Enable/Disable the telemetry measurement module on-device display
*/
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_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_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;
/*
* 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;
/*
* TODO: REPLACE
*/
enum TelemetrySensorType {
/*
* No external telemetry sensor
*/
None = 0;
/*
* TODO: REPLACE
*/
DHT11 = 1;
/*
* TODO: REPLACE
*/
DS18B20 = 2;
/*
* TODO: REPLACE
*/
DHT12 = 3;
/*
* TODO: REPLACE
*/
DHT21 = 4;
/*
* TODO: REPLACE
*/
DHT22 = 5;
/*
* TODO: REPLACE
*/
BME280 = 6;
/*
* TODO: REPLACE
*/
BME680 = 7;
/*
* TODO: REPLACE
*/
MCP9808 = 8;
/*
* TODO: REPLACE
*/
SHTC3 = 9;
};
/*
* Specify the sensor type
*/
TelemetrySensorType telemetry_module_sensor_type = 146;
/*
* Specify the peferred GPIO Pin for sensor readings
*/
uint32 telemetry_module_sensor_pin = 147;
/*
* Bit field of boolean configuration options for POSITION messages
* (bitwise OR of PositionFlags)
*/
uint32 position_flags = 150;
/*
* 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.
* Potentially useful for devices without user buttons.
*/
uint32 auto_screen_carousel_secs = 152;
/*
* 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;
/*
* 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 mqtt_username = 155;
/*
* 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 mqtt_password = 156;
/*
* Disable TX from the LoRa radio. Useful for hot-swapping antennas and other tests.
* Defaults to false
*/
bool is_lora_tx_disabled = 157;
/*
* If set to true, enable power saving features of the esp32
*/
bool is_power_saving = 158;
/*
* Enable the rotary encoder #1. This is a 'dumb' encoder sending pulses on both A and B pins while rotating.
*/
bool rotary1_enabled = 160;
/*
* GPIO pin for rotary encoder A port.
*/
uint32 inputbroker_pin_a = 161;
/*
* GPIO pin for rotary encoder B port.
*/
uint32 inputbroker_pin_b = 162;
/*
* GPIO pin for rotary encoder Press port.
*/
uint32 inputbroker_pin_press = 163;
/*
* Generate input event on CW of this kind.
*/
InputEventChar inputbroker_event_cw = 164;
/*
* Generate input event on CCW of this kind.
*/
InputEventChar inputbroker_event_ccw = 165;
/*
* Generate input event on Press of this kind.
*/
InputEventChar inputbroker_event_press = 166;
/*
* 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 = 167;
/*
* Enable/disable CannedMessageModule.
*/
bool canned_message_module_enabled = 170;
/*
* Input event origin accepted by the canned message module.
* Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any"
*/
string canned_message_module_allow_input_source = 171;
/*
* CannedMessageModule also sends a bell character with the messages.
* ExternalNotificationModule can benefit from this feature.
*/
bool canned_message_module_send_bell = 173;
/*
* Whether to send encrypted or decrypted packets to MQTT.
* This parameter is only honoured if you also set mqtt_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 mqtt_encryption_enabled = 174;
/*
* Ratio of voltage divider for battery pin eg. 3.20 (R1=100k, R2=220k)
* 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 = 176;
}
/*
* TODO: REPLACE
*/
UserPreferences preferences = 1;
}