2022-05-01 04:41:22 +00:00
|
|
|
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 {
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
message DeviceConfig {
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* Defines the device's role on the Mesh network
|
|
|
|
* unset
|
|
|
|
* Behave normally.
|
|
|
|
* Router
|
|
|
|
* Functions as a router
|
|
|
|
*/
|
|
|
|
enum Role {
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Client device role
|
|
|
|
*/
|
|
|
|
Client = 0;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ClientMute device role
|
|
|
|
* This is like the client but packets will not hop over this node. Would be
|
|
|
|
* useful if you want to save power by not contributing to the mesh.
|
|
|
|
*/
|
|
|
|
ClientMute = 1;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Router device role.
|
|
|
|
* Uses an agressive algirithem for the flood networking so packets will
|
|
|
|
* prefer to be routed over this node. Also assume that this will be generally
|
|
|
|
* unattended and so will turn off the wifi/ble radio as well as the oled screen.
|
|
|
|
*/
|
|
|
|
Router = 2;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* RouterClient device role
|
|
|
|
* Uses an agressive algirithem for the flood networking so packets will
|
|
|
|
* prefer to be routed over this node. Similiar power management as a regular
|
|
|
|
* client, so the RouterClient can be used as both a Router and a Client. Useful
|
|
|
|
* as a well placed base station that you could also use to send messages.
|
|
|
|
*/
|
|
|
|
RouterClient = 3;
|
|
|
|
|
|
|
|
}
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* Sets the role of node
|
|
|
|
*/
|
|
|
|
Role role = 1;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* If set, this will disable the SerialConsole by not initilizing the StreamAPI
|
|
|
|
*/
|
|
|
|
bool serial_disabled = 2;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* 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 = 3;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* 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;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-11 08:29:36 +00:00
|
|
|
/*
|
|
|
|
* NTP server to use if WiFi is conneced, defaults to `0.pool.ntp.org`
|
|
|
|
*/
|
|
|
|
string ntp_server = 5;
|
|
|
|
|
2022-05-01 04:41:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
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"
|
|
|
|
*/
|
2022-05-13 00:40:46 +00:00
|
|
|
POS_SATINVIEW = 0x0020;
|
2022-05-07 07:48:51 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Include a sequence number incremented per packet
|
|
|
|
*/
|
2022-05-13 00:40:46 +00:00
|
|
|
POS_SEQ_NOS = 0x0040;
|
2022-05-07 07:48:51 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Include positional timestamp (from GPS solution)
|
|
|
|
*/
|
2022-05-13 00:40:46 +00:00
|
|
|
POS_TIMESTAMP = 0x0080;
|
2022-05-07 07:48:51 +00:00
|
|
|
}
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* We should send our position this often (but only if it has changed significantly)
|
|
|
|
* Defaults to 15 minutes
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
uint32 position_broadcast_secs = 1;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-02 00:19:54 +00:00
|
|
|
/*
|
2022-05-21 18:47:04 +00:00
|
|
|
* Disable adaptive position braoadcast, which is now the default.
|
2022-05-02 00:19:54 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
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;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-02 00:19:54 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* 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;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 = 8;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 = 9;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* Bit field of boolean configuration options for POSITION messages
|
|
|
|
* (bitwise OR of PositionFlags)
|
|
|
|
*/
|
|
|
|
uint32 position_flags = 10;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
message PowerConfig {
|
2022-05-07 03:32:29 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* 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.
|
2022-05-07 03:32:29 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
enum ChargeCurrent {
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MAUnset = 0;
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MA100 = 1;
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MA190 = 2;
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MA280 = 3;
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MA360 = 4;
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MA450 = 5;
|
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
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;
|
2022-05-07 03:32:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* Sets the current of the battery charger
|
2022-05-07 03:32:29 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
ChargeCurrent charge_current = 1;
|
2022-05-07 03:32:29 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* 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).
|
2022-05-07 03:32:29 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
bool is_low_power = 2;
|
2022-05-07 03:32:29 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* 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.
|
2022-05-07 03:32:29 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
bool is_always_powered = 3;
|
2022-05-07 03:32:29 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
|
2022-05-07 03:32:29 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* If non-zero, the device will fully power off this many seconds after external power is removed.
|
|
|
|
*/
|
|
|
|
uint32 on_battery_shutdown_after_secs = 4;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* If set to true, enable power saving features of the esp32
|
|
|
|
*/
|
|
|
|
bool is_power_saving = 5;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 = 6;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Power management state machine option.
|
|
|
|
* See [power management](/docs/software/other/power) for details.
|
|
|
|
* 0 for default of 1 minute
|
|
|
|
*/
|
|
|
|
uint32 wait_bluetooth_secs = 7;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 = 8;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 = 9;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Power management state machine option.
|
|
|
|
* See [power management](/docs/software/other/power) for details.
|
|
|
|
* 0 for default of one year
|
|
|
|
*/
|
|
|
|
uint32 sds_secs = 10;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Power management state machine option.
|
|
|
|
* See [power management](/docs/software/other/power) for details.
|
|
|
|
* 0 for default of 3600
|
|
|
|
*/
|
|
|
|
uint32 ls_secs = 11;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Power management state machine option.
|
|
|
|
* See [power management](/docs/software/other/power) for details.
|
|
|
|
* 0 for default of 10 seconds
|
2022-05-07 03:32:29 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
uint32 min_wake_secs = 12;
|
2022-05-07 03:32:29 +00:00
|
|
|
|
2022-05-01 04:41:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
message WiFiConfig {
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* If set, this node will try to join the specified wifi network and
|
|
|
|
* acquire an address via DHCP
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
string ssid = 1;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* If set, will be use to authenticate to the named wifi
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
string psk = 2;
|
2022-05-07 07:48:51 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* If set, the node will operate as an AP (and DHCP server), otherwise it
|
|
|
|
* will be a station
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
bool ap_mode = 3;
|
2022-05-22 00:03:09 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* If set, the node AP will broadcast as a hidden SSID
|
|
|
|
*/
|
|
|
|
bool ap_hidden = 4;
|
2022-05-07 07:48:51 +00:00
|
|
|
}
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
message DisplayConfig {
|
2022-05-01 04:41:22 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* How the GPS coordinates are displayed on the OLED screen.
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
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;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* 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;
|
2022-05-01 04:41:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* Power management state machine option.
|
|
|
|
* See [power management](/docs/software/other/power) for details.
|
|
|
|
* 0 for default of one minute
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
uint32 screen_on_secs = 1;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* How the GPS coordinates are displayed on the OLED screen.
|
|
|
|
*/
|
|
|
|
GpsCoordinateFormat gps_format = 2;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* 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.
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
uint32 auto_screen_carousel_secs = 3;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
}
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
message LoRaConfig {
|
2022-05-01 04:41:22 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* 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.
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
enum RegionCode {
|
|
|
|
|
2022-05-01 19:22:54 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
Unset = 0;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
US = 1;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
EU433 = 2;
|
|
|
|
|
2022-05-01 19:22:54 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
EU868 = 3;
|
|
|
|
|
2022-05-01 19:22:54 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
CN = 4;
|
2022-05-01 19:22:54 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
JP = 5;
|
2022-05-01 19:22:54 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
ANZ = 6;
|
2022-05-01 19:22:54 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
KR = 7;
|
2022-05-01 19:22:54 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
TW = 8;
|
2022-05-01 19:22:54 +00:00
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
RU = 9;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-01 19:22:54 +00:00
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
IN = 10;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
NZ865 = 11;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
2022-05-07 07:48:51 +00:00
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
TH = 12;
|
2022-05-01 04:41:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
2022-05-07 07:48:51 +00:00
|
|
|
* Standard predefined channel settings
|
2022-05-07 09:28:54 +00:00
|
|
|
* Note: these mappings must match ModemPreset Choice in the device code.
|
2022-05-01 04:41:22 +00:00
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
enum ModemPreset {
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-27 18:44:07 +00:00
|
|
|
LongFast = 0;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
LongSlow = 1;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-27 18:44:07 +00:00
|
|
|
VLongSlow = 2;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MidSlow = 3;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
MidFast = 4;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
ShortSlow = 5;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 07:48:51 +00:00
|
|
|
ShortFast = 6;
|
2022-05-01 04:41:22 +00:00
|
|
|
}
|
2022-05-07 07:48:51 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* 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;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Note: This is the 'old' mechanism for specifying channel parameters.
|
|
|
|
* 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.
|
|
|
|
*/
|
2022-05-07 09:28:54 +00:00
|
|
|
ModemPreset modem_preset = 2;
|
2022-05-07 07:48:51 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 my 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.
|
|
|
|
*/
|
|
|
|
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;
|
|
|
|
|
2022-05-01 04:41:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
|
|
|
oneof payloadVariant {
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
DeviceConfig device = 1;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
PositionConfig position = 2;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
PowerConfig power = 3;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
WiFiConfig wifi = 4;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
DisplayConfig display = 5;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO: REPLACE
|
|
|
|
*/
|
2022-05-07 09:11:01 +00:00
|
|
|
LoRaConfig lora = 6;
|
2022-05-01 04:41:22 +00:00
|
|
|
|
|
|
|
}
|
2022-05-27 18:44:07 +00:00
|
|
|
}
|