diff --git a/meshtastic/config.options b/meshtastic/config.options index 3f6d81c9..a0f0c987 100644 --- a/meshtastic/config.options +++ b/meshtastic/config.options @@ -2,6 +2,7 @@ *DeviceConfig.tzdef max_size:65 *DeviceConfig.buzzer_mode int_size:8 +*PositionConfig.gps_profile int_size:8 *NetworkConfig.wifi_ssid max_size:33 *NetworkConfig.wifi_psk max_size:65 diff --git a/meshtastic/config.proto b/meshtastic/config.proto index 321bbb24..a9d9ebcd 100644 --- a/meshtastic/config.proto +++ b/meshtastic/config.proto @@ -266,66 +266,67 @@ message Config { * 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 + * DEPRECATED in favor of GpsProfile */ enum PositionFlags { /* * Required for compilation */ - UNSET = 0x0000; + UNSET = 0x0000 [deprecated = true]; /* * Include an altitude value (if available) */ - ALTITUDE = 0x0001; + ALTITUDE = 0x0001 [deprecated = true]; /* * Altitude value is MSL */ - ALTITUDE_MSL = 0x0002; + ALTITUDE_MSL = 0x0002 [deprecated = true]; /* * Include geoidal separation */ - GEOIDAL_SEPARATION = 0x0004; + GEOIDAL_SEPARATION = 0x0004 [deprecated = true]; /* * Include the DOP value ; PDOP used by default, see below */ - DOP = 0x0008; + DOP = 0x0008 [deprecated = true]; /* * If POS_DOP set, send separate HDOP / VDOP values instead of PDOP */ - HVDOP = 0x0010; + HVDOP = 0x0010 [deprecated = true]; /* * Include number of "satellites in view" */ - SATINVIEW = 0x0020; + SATINVIEW = 0x0020 [deprecated = true]; /* * Include a sequence number incremented per packet */ - SEQ_NO = 0x0040; + SEQ_NO = 0x0040 [deprecated = true]; /* * Include positional timestamp (from GPS solution) */ - TIMESTAMP = 0x0080; + TIMESTAMP = 0x0080 [deprecated = true]; /* * Include positional heading * Intended for use with vehicle not walking speeds * walking speeds are likely to be error prone like the compass */ - HEADING = 0x0100; + HEADING = 0x0100 [deprecated = true]; /* * Include positional speed * Intended for use with vehicle not walking speeds * walking speeds are likely to be error prone like the compass */ - SPEED = 0x0200; + SPEED = 0x0200 [deprecated = true]; } enum GpsMode { @@ -345,6 +346,39 @@ message Config { NOT_PRESENT = 2; } + /* + * A plain language label that users of GPS select based on their intended activity. + * We use this to make selections from the variety of GPS Settings, including: + * GPS Update Interval, Position Broadcast Interval, Smart Broadcast Min Interval, + * Smart Broadcast Min Distance, and Position Flags. The firmware also modifies the + * GPS hardware configuration to take advantage of advanced features for each case. + * The firmware may also discard erroneous positions based on movement determined to + * be physically impossible. + */ + enum GpsProfile { + /* + * Profile not set, user will make their own decisions. + */ + MANUAL = 0; + + /* + * This node does not move. + * We automatically apply this to all routers, router_lates, + * and any node with manually set lat/lon. + */ + FIXED_POSITION = 1; + + /* + * Hikers, runners, walkers. + */ + PEDESTRIAN = 2; + + /* + * Cars, motorbikes. + */ + VEHICLE = 3; + } + /* * We should send our position this often (but only if it has changed significantly) * Defaults to 15 minutes @@ -383,8 +417,9 @@ message Config { /* * Bit field of boolean configuration options for POSITION messages * (bitwise OR of PositionFlags) + * DEPRECATED in favour of GPS Profile */ - uint32 position_flags = 7; + uint32 position_flags = 7 [deprecated = true]; /* * (Re)define GPS_RX_PIN for your board. @@ -415,6 +450,11 @@ message Config { * Set where GPS is enabled, disabled, or not present */ GpsMode gps_mode = 13; + + /* + * A pre-tuned mode of operation for the GPS based on use-case. + */ + GpsProfile gps_profile = 14; } /*