meshtastic-protobuf/config.proto

602 wiersze
14 KiB
Protocol Buffer

syntax = "proto3";
option java_package = "com.geeksville.mesh";
option java_outer_classname = "ConfigProtos";
option optimize_for = LITE_RUNTIME;
option go_package = "github.com/meshtastic/gomeshproto";
message Config {
/*
* Configuration
*/
message DeviceConfig {
/*
* Defines the device's role on the Mesh network
*/
enum Role {
/*
* Client device role
*/
Client = 0;
/*
* Client Mute device role
* Same as a client except packets will not hop over this node, does not contribute to routing packets for mesh.
*/
ClientMute = 1;
/*
* Router device role.
* Mesh packets will prefer to be routed over this node. This node will not be used by client apps.
* The wifi/ble radios and the oled screen will be put to sleep.
*/
Router = 2;
/*
* Router Client device role
* Mesh packets will prefer to be routed over this node. The Router Client can be used as both a Router and an app connected Client.
*/
RouterClient = 3;
}
/*
* Sets the role of node
*/
Role role = 1;
/*
* If set, this will disable the SerialConsole by not initilizing the StreamAPI
*/
bool serial_disabled = 2;
/*
* This setting is never saved to disk, but if set, all device settings will be returned to factory defaults.
*/
bool factory_reset = 3;
/*
* 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 = 4;
/*
* NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org`
*/
string ntp_server = 5;
}
/*
* Position Config
*/
message PositionConfig {
/*
* 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 number of "satellites in view"
*/
POS_SATINVIEW = 0x0020;
/*
* Include a sequence number incremented per packet
*/
POS_SEQ_NOS = 0x0040;
/*
* Include positional timestamp (from GPS solution)
*/
POS_TIMESTAMP = 0x0080;
/*
* Include positional heading
* Intended for use with vehicle not walking speeds
* walking speeds are likely to be error prone like the compass
*/
POS_HEADING = 0x0100;
/*
* Include positional speed
* Intended for use with vehicle not walking speeds
* walking speeds are likely to be error prone like the compass
*/
POS_SPEED = 0x0200;
}
/*
* We should send our position this often (but only if it has changed significantly)
* Defaults to 15 minutes
*/
uint32 position_broadcast_secs = 1;
/*
* Disable adaptive position braoadcast, which is now the default.
*/
bool position_broadcast_smart_disabled = 2;
/*
* 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 = 3;
/*
* Should the GPS be disabled for this node?
*/
bool gps_disabled = 5;
/*
* 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 = 6;
/*
* 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 = 7;
/*
* Bit field of boolean configuration options for POSITION messages
* (bitwise OR of PositionFlags)
*/
uint32 position_flags = 10;
}
/*
* Power Config\
* See [power management](/docs/software/other/power) for additional power management state machine option details.
*/
message PowerConfig {
/*
* Sets the charge control current of devices with a battery charger that can be configured
* **TBEAM 1.1 Only**
*/
enum ChargeCurrent {
MAUnset = 0;
MA100 = 1;
MA190 = 2;
MA280 = 3;
MA360 = 4;
MA450 = 5;
MA550 = 6;
MA630 = 7;
MA700 = 8;
MA780 = 9;
MA880 = 10;
MA960 = 11;
MA1000 = 12;
MA1080 = 13;
MA1160 = 14;
MA1240 = 15;
MA1320 = 16;
}
/*
* Sets the current of the battery charger
* TBEAM 1.1 Only
*/
ChargeCurrent charge_current = 1;
/*
* 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).
* Advanced Option
*/
bool is_power_saving = 2;
/*
* If non-zero, the device will fully power off this many seconds after external power is removed.
*/
uint32 on_battery_shutdown_after_secs = 4;
/*
* 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.
* Should be set to floating point value between 2 and 4
* Fixes issues on Heltec v2
*/
float adc_multiplier_override = 6;
/*
* Wait Bluetooth Seconds
* The number of seconds for to wait before turning off BLE in No Bluetooth states
* 0 for default of 1 minute
*/
uint32 wait_bluetooth_secs = 7;
/*
* Mesh Super Deep Sleep Timeout Seconds
* While in Light Sleep if this value is exceeded we will lower into super deep sleep
* for sds_secs (default 1 year) or a button press
* 0 for default of two hours, MAXUINT for disabled
*/
uint32 mesh_sds_timeout_secs = 9;
/*
* Super Deep Sleep Seconds
* While in Light Sleep if mesh_sds_timeout_secs is exceeded we will lower into super deep sleep
* for this value (default 1 year) or a button press
* 0 for default of one year
*/
uint32 sds_secs = 10;
/*
* Light Sleep Seconds
* In light sleep the CPU is suspended, LoRa radio is on, BLE is off an GPS is on
* ESP32 Only
* 0 for default of 300
*/
uint32 ls_secs = 11;
/*
* Minimum Wake Seconds
* While in light sleep when we receive packets on the LoRa radio we will wake and handle them and stay awake in no BLE mode for this value
* 0 for default of 10 seconds
*/
uint32 min_wake_secs = 12;
}
/*
* WiFi Config
*/
message WiFiConfig {
enum WiFiMode {
/*
* This mode is used to connect to an external WiFi network
*/
Client = 0;
/*
* In this mode the node will operate as an AP (and DHCP server)
*/
AccessPoint = 1;
/*
* If set, the node AP will broadcast as a hidden SSID
*/
AccessPointHidden = 2;
}
/*
* Enable WiFi (disables Bluetooth)
*/
boolean enabled = 1;
/*
* If set, this node will try to join the specified wifi network and
* acquire an address via DHCP
*/
WiFiMode mode = 2;
/*
* If set, this node will try to join the specified wifi network and
* acquire an address via DHCP
*/
string ssid = 3;
/*
* If set, will be use to authenticate to the named wifi
*/
string psk = 4;
}
/*
* TODO: REPLACE
*/
message DisplayConfig {
/*
* 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;
/*
* Universal Transverse Mercator format:
* ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
*/
GpsFormatUTM = 2;
/*
* 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;
/*
* Open Location Code (aka Plus Codes).
*/
GpsFormatOLC = 4;
/*
* 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;
}
/*
* Number of seconds the screen stays on after pressing the user button or receiving a message
* 0 for default of one minute MAXUINT for always on
*/
uint32 screen_on_secs = 1;
/*
* How the GPS coordinates are formatted on the OLED screen.
*/
GpsCoordinateFormat gps_format = 2;
/*
* 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 = 3;
/*
* If this is set, the displayed compass will always point north. if unset, the old behaviour
* (top of display is heading direction) is used.
*/
bool compass_north_top = 4;
}
/*
* Lora Config
*/
message LoRaConfig {
enum RegionCode {
/*
* Region is not set
*/
Unset = 0;
/*
* United States
*/
US = 1;
/*
* European Union 433mhz
*/
EU433 = 2;
/*
* European Union 433mhz
*/
EU868 = 3;
/*
* China
*/
CN = 4;
/*
* Japan
*/
JP = 5;
/*
* Australia / New Zealand
*/
ANZ = 6;
/*
* Korea
*/
KR = 7;
/*
* Taiwan
*/
TW = 8;
/*
* Russia
*/
RU = 9;
/*
* India
*/
IN = 10;
/*
* New Zealand 865mhz
*/
NZ865 = 11;
/*
* Thailand
*/
TH = 12;
}
/*
* Standard predefined channel settings
* Note: these mappings must match ModemPreset Choice in the device code.
*/
enum ModemPreset {
/*
* Long Range - Fast
*/
LongFast = 0;
/*
* Long Range - Slow
*/
LongSlow = 1;
/*
* Very Long Range - Slow
*/
VLongSlow = 2;
/*
* Medium Range - Slow
*/
MedSlow = 3;
/*
* Medium Range - Fast
*/
MedFast = 4;
/*
* Short Range - Slow
*/
ShortSlow = 5;
/*
* Short Range - Fast
*/
ShortFast = 6;
}
/*
* If zero then, use default max legal continuous power (ie. something that won't
* burn out the radio hardware)
* In most cases you should use zero here.
* Units are in dBm.
*/
int32 tx_power = 1;
/*
* Either modem_config or bandwidth/spreading/coding will be specified - NOT BOTH.
* As a heuristic: If bandwidth is specified, do not use modem_config.
* Because protobufs take ZERO space when the value is zero this works out nicely.
* This value is replaced by bandwidth/spread_factor/coding_rate.
* If you'd like to experiment with other options add them to MeshRadio.cpp in the device code.
*/
ModemPreset modem_preset = 2;
/*
* Bandwidth in MHz
* Certain bandwidth numbers are 'special' and will be converted to the
* appropriate floating point value: 31 -> 31.25MHz
*/
uint32 bandwidth = 3;
/*
* A number from 7 to 12.
* Indicates number of chirps per symbol as 1<<spread_factor.
*/
uint32 spread_factor = 4;
/*
* The denominator of the coding rate.
* ie for 4/8, the value is 8. 5/8 the value is 5.
*/
uint32 coding_rate = 5;
/*
* 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 = 6;
/*
* The region code for the radio (US, CN, EU433, etc...)
*/
RegionCode region = 7;
/*
* Overrides HOPS_RELIABLE and sets the maximum number of hops. This can't be greater than 7.
* 0 for default of 3
*/
uint32 hop_limit = 8;
/*
* Disable TX from the LoRa radio. Useful for hot-swapping antennas and other tests.
* Defaults to false
*/
bool tx_disabled = 9;
/*
* 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;
}
/*
* Payload Variant
*/
oneof payloadVariant {
DeviceConfig device = 1;
PositionConfig position = 2;
PowerConfig power = 3;
WiFiConfig wifi = 4;
DisplayConfig display = 5;
LoRaConfig lora = 6;
}
}