diff --git a/src/main/config/config.c b/src/main/config/config.c index d74942f94c..87d039c07f 100755 --- a/src/main/config/config.c +++ b/src/main/config/config.c @@ -506,7 +506,7 @@ static void resetConf(void) masterConfig.gpsConfig.sbasMode = SBAS_AUTO; masterConfig.gpsConfig.autoConfig = GPS_AUTOCONFIG_ON; masterConfig.gpsConfig.autoBaud = GPS_AUTOBAUD_ON; - masterConfig.gpsConfig.navModel = GPS_MODEL_LOW_G; + masterConfig.gpsConfig.dynModel = GPS_DYNMODEL_AIR_1G; #endif #ifdef NAV diff --git a/src/main/io/gps.h b/src/main/io/gps.h index e739954b54..ff0f3237f1 100644 --- a/src/main/io/gps.h +++ b/src/main/io/gps.h @@ -38,7 +38,8 @@ typedef enum { SBAS_EGNOS, SBAS_WAAS, SBAS_MSAS, - SBAS_GAGAN + SBAS_GAGAN, + SBAS_NONE } sbasMode_e; #define SBAS_MODE_MAX SBAS_GAGAN @@ -63,9 +64,10 @@ typedef enum { } gpsAutoBaud_e; typedef enum { - GPS_MODEL_LOW_G = 0, - GPS_MODEL_HIGH_G, -} gpsNavModel_e; + GPS_DYNMODEL_PEDESTRIAN = 0, + GPS_DYNMODEL_AIR_1G, + GPS_DYNMODEL_AIR_4G, +} gpsDynModel_e; typedef enum { GPS_NO_FIX = 0, @@ -80,7 +82,7 @@ typedef struct gpsConfig_s { sbasMode_e sbasMode; gpsAutoConfig_e autoConfig; gpsAutoBaud_e autoBaud; - gpsNavModel_e navModel; + gpsDynModel_e dynModel; } gpsConfig_t; typedef struct gpsCoordinateDDDMMmmmm_s { diff --git a/src/main/io/gps_ublox.c b/src/main/io/gps_ublox.c index aad0e4f344..79550efc8f 100755 --- a/src/main/io/gps_ublox.c +++ b/src/main/io/gps_ublox.c @@ -135,18 +135,17 @@ static const uint8_t ubloxInit_RATE_10Hz[] = { #define UBLOX_SBAS_MESSAGE_LENGTH 16 typedef struct ubloxSbas_s { - sbasMode_e mode; uint8_t message[UBLOX_SBAS_MESSAGE_LENGTH]; } ubloxSbas_t; // Note: these must be defined in the same order is sbasMode_e since no lookup table is used. static const ubloxSbas_t ubloxSbas[] = { - // NOTE this could be optimized to save a few bytes of flash space since the same prefix is used for each command. - { SBAS_AUTO, { 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xE5}}, - { SBAS_EGNOS, { 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x07, 0x03, 0x00, 0x51, 0x08, 0x00, 0x00, 0x8A, 0x41}}, - { SBAS_WAAS, { 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x07, 0x03, 0x00, 0x04, 0xE0, 0x04, 0x00, 0x19, 0x9D}}, - { SBAS_MSAS, { 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x07, 0x03, 0x00, 0x00, 0x02, 0x02, 0x00, 0x35, 0xEF}}, - { SBAS_GAGAN, { 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x07, 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0xB2, 0xE8}} + {{ /* SBAS_AUTO */ 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC9 }}, + {{ /* SBAS_EGNOS */ 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x03, 0x03, 0x00, 0x51, 0x08, 0x00, 0x00, 0x86, 0x25 }}, + {{ /* SBAS_WAAS */ 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x03, 0x03, 0x00, 0x04, 0xE0, 0x04, 0x00, 0x15, 0x81 }}, + {{ /* SBAS_MSAS */ 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x02, 0x02, 0x00, 0x31, 0xD3 }}, + {{ /* SBAS_GAGAN */ 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x03, 0x03, 0x03, 0x00, 0x80, 0x01, 0x00, 0x00, 0xAE, 0xCC }}, + {{ /* SBAS_NONE */ 0xB5, 0x62, 0x06, 0x16, 0x08, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC1 }}, }; // UBX support @@ -561,11 +560,18 @@ static bool gpsConfigure(void) { switch (gpsState.autoConfigStep) { case 0: // NAV5 - if (gpsState.gpsConfig->navModel == GPS_MODEL_HIGH_G) - ubxTransmitAutoConfigCommands(ubloxInit_NAV5_Airborne4G, sizeof(ubloxInit_NAV5_Airborne4G)); - else - ubxTransmitAutoConfigCommands(ubloxInit_NAV5_Airborne1G, sizeof(ubloxInit_NAV5_Airborne1G)); - + switch (gpsState.gpsConfig->dynModel) { + case GPS_DYNMODEL_PEDESTRIAN: + ubxTransmitAutoConfigCommands(ubloxInit_NAV5_Pedestrian, sizeof(ubloxInit_NAV5_Pedestrian)); + break; + case GPS_DYNMODEL_AIR_1G: // Default to this + default: + ubxTransmitAutoConfigCommands(ubloxInit_NAV5_Airborne1G, sizeof(ubloxInit_NAV5_Airborne1G)); + break; + case GPS_DYNMODEL_AIR_4G: + ubxTransmitAutoConfigCommands(ubloxInit_NAV5_Airborne4G, sizeof(ubloxInit_NAV5_Airborne4G)); + break; + } break; case 1: // NAVX5 - skip diff --git a/src/main/io/serial_cli.c b/src/main/io/serial_cli.c index decbc428c2..19ea8bece6 100644 --- a/src/main/io/serial_cli.c +++ b/src/main/io/serial_cli.c @@ -338,11 +338,11 @@ static const char * const lookupTableGPSProvider[] = { }; static const char * const lookupTableGPSSBASMode[] = { - "AUTO", "EGNOS", "WAAS", "MSAS", "GAGAN" + "AUTO", "EGNOS", "WAAS", "MSAS", "GAGAN", "NONE" }; static const char * const lookupTableGpsModel[] = { - "LOW_G", "HIGH_G" + "PEDESTRIAN", "AIR_1G", "AIR_4G" }; #endif @@ -412,7 +412,7 @@ typedef enum { #ifdef GPS TABLE_GPS_PROVIDER, TABLE_GPS_SBAS_MODE, - TABLE_GPS_NAV_MODEL, + TABLE_GPS_DYN_MODEL, #endif #ifdef BLACKBOX TABLE_BLACKBOX_DEVICE, @@ -541,7 +541,7 @@ const clivalue_t valueTable[] = { #ifdef GPS { "gps_provider", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gpsConfig.provider, .config.lookup = { TABLE_GPS_PROVIDER }, 0 }, { "gps_sbas_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gpsConfig.sbasMode, .config.lookup = { TABLE_GPS_SBAS_MODE }, 0 }, - { "gps_nav_model", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gpsConfig.navModel, .config.lookup = { TABLE_GPS_NAV_MODEL }, 0 }, + { "gps_dyn_model", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gpsConfig.dynModel, .config.lookup = { TABLE_GPS_DYN_MODEL }, 0 }, { "gps_auto_config", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gpsConfig.autoConfig, .config.lookup = { TABLE_OFF_ON }, 0 }, { "gps_auto_baud", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gpsConfig.autoBaud, .config.lookup = { TABLE_OFF_ON }, 0 }, #endif