mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-17 05:15:25 +03:00
Make UBLOX models more configurable (#12587)
* Make UBLOX models more configurable * Add more nav model
This commit is contained in:
parent
2792d518d1
commit
aead5e5a59
7 changed files with 26 additions and 29 deletions
|
@ -205,8 +205,8 @@ static const char * const lookupTableGPSSBASMode[] = {
|
|||
"AUTO", "EGNOS", "WAAS", "MSAS", "GAGAN", "NONE"
|
||||
};
|
||||
|
||||
static const char * const lookupTableGPSUBLOXMode[] = {
|
||||
"AIRBORNE", "PEDESTRIAN", "DYNAMIC"
|
||||
static const char * const lookupTableGPSUBLOXModels[] = {
|
||||
"PORTABLE", "STATIONARY", "PEDESTRIAN", "AUTOMOTIVE", "AT_SEA", "AIRBORNE_1G", "AIRBORNE_2G", "AIRBORNE_4G"
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -534,7 +534,7 @@ const lookupTableEntry_t lookupTables[] = {
|
|||
#ifdef USE_GPS
|
||||
LOOKUP_TABLE_ENTRY(lookupTableGPSProvider),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableGPSSBASMode),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableGPSUBLOXMode),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableGPSUBLOXModels),
|
||||
#ifdef USE_GPS_RESCUE
|
||||
LOOKUP_TABLE_ENTRY(lookupTableRescueSanityType),
|
||||
LOOKUP_TABLE_ENTRY(lookupTableRescueAltitudeMode),
|
||||
|
@ -1003,7 +1003,8 @@ const clivalue_t valueTable[] = {
|
|||
{ PARAM_NAME_GPS_SBAS_MODE, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_GPS_SBAS_MODE }, PG_GPS_CONFIG, offsetof(gpsConfig_t, sbasMode) },
|
||||
{ PARAM_NAME_GPS_AUTO_CONFIG, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, autoConfig) },
|
||||
{ PARAM_NAME_GPS_AUTO_BAUD, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, autoBaud) },
|
||||
{ PARAM_NAME_GPS_UBLOX_MODE, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_GPS_UBLOX_MODE }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_ublox_mode) },
|
||||
{ PARAM_NAME_GPS_UBLOX_ACQUIRE_MODEL, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_GPS_UBLOX_MODELS }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_ublox_acquire_model) },
|
||||
{ PARAM_NAME_GPS_UBLOX_FLIGHT_MODEL, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_GPS_UBLOX_MODELS }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_ublox_flight_model) },
|
||||
{ PARAM_NAME_GPS_UBLOX_USE_GALILEO, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_ublox_use_galileo) },
|
||||
{ PARAM_NAME_GPS_SET_HOME_POINT_ONCE, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_set_home_point_once) },
|
||||
{ PARAM_NAME_GPS_USE_3D_SPEED, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_use_3d_speed) },
|
||||
|
|
|
@ -32,7 +32,7 @@ typedef enum {
|
|||
#ifdef USE_GPS
|
||||
TABLE_GPS_PROVIDER,
|
||||
TABLE_GPS_SBAS_MODE,
|
||||
TABLE_GPS_UBLOX_MODE,
|
||||
TABLE_GPS_UBLOX_MODELS,
|
||||
#endif
|
||||
#ifdef USE_GPS_RESCUE
|
||||
TABLE_GPS_RESCUE_SANITY_CHECK,
|
||||
|
|
|
@ -144,7 +144,8 @@
|
|||
#define PARAM_NAME_GPS_AUTO_CONFIG "gps_auto_config"
|
||||
#define PARAM_NAME_GPS_AUTO_BAUD "gps_auto_baud"
|
||||
#define PARAM_NAME_GPS_UBLOX_USE_GALILEO "gps_ublox_use_galileo"
|
||||
#define PARAM_NAME_GPS_UBLOX_MODE "gps_ublox_mode"
|
||||
#define PARAM_NAME_GPS_UBLOX_ACQUIRE_MODEL "gps_ublox_acquire_model"
|
||||
#define PARAM_NAME_GPS_UBLOX_FLIGHT_MODEL "gps_ublox_flight_model"
|
||||
#define PARAM_NAME_GPS_SET_HOME_POINT_ONCE "gps_set_home_point_once"
|
||||
#define PARAM_NAME_GPS_USE_3D_SPEED "gps_use_3d_speed"
|
||||
|
||||
|
|
|
@ -165,10 +165,6 @@ typedef enum {
|
|||
#define UBLOX_GNSS_ENABLE 0x1
|
||||
#define UBLOX_GNSS_DEFAULT_SIGCFGMASK 0x10000
|
||||
|
||||
#define UBLOX_DYNMODE_PEDESTRIAN 3
|
||||
#define UBLOX_DYNMODE_AIRBORNE_1G 6
|
||||
#define UBLOX_DYNMODE_AIRBORNE_4G 8
|
||||
|
||||
typedef struct ubxHeader_s {
|
||||
uint8_t preamble1;
|
||||
uint8_t preamble2;
|
||||
|
@ -484,19 +480,11 @@ static void ubloxSendPollMessage(uint8_t msg_id)
|
|||
ubloxSendMessage((const uint8_t *) &tx_buffer, 6);
|
||||
}
|
||||
|
||||
static void ubloxSendNAV5Message(bool airborne)
|
||||
static void ubloxSendNAV5Message(uint8_t model)
|
||||
{
|
||||
ubxMessage_t tx_buffer;
|
||||
tx_buffer.payload.cfg_nav5.mask = 0xFFFF;
|
||||
if (airborne) {
|
||||
#if defined(GPS_UBLOX_MODE_AIRBORNE_1G)
|
||||
tx_buffer.payload.cfg_nav5.dynModel = UBLOX_DYNMODE_AIRBORNE_1G;
|
||||
#else
|
||||
tx_buffer.payload.cfg_nav5.dynModel = UBLOX_DYNMODE_AIRBORNE_4G;
|
||||
#endif
|
||||
} else {
|
||||
tx_buffer.payload.cfg_nav5.dynModel = UBLOX_DYNMODE_PEDESTRIAN;
|
||||
}
|
||||
tx_buffer.payload.cfg_nav5.dynModel = model == 0 ? model : model+1; //no model with value 1
|
||||
tx_buffer.payload.cfg_nav5.fixMode = 3;
|
||||
tx_buffer.payload.cfg_nav5.fixedAlt = 0;
|
||||
tx_buffer.payload.cfg_nav5.fixedAltVar = 10000;
|
||||
|
@ -642,7 +630,7 @@ void gpsInitUblox(void)
|
|||
case UBLOX_INITIALIZE:
|
||||
gpsData.ubloxUsePVT = true;
|
||||
gpsData.ubloxUseSAT = true;
|
||||
ubloxSendNAV5Message(gpsConfig()->gps_ublox_mode == UBLOX_AIRBORNE);
|
||||
ubloxSendNAV5Message(gpsConfig()->gps_ublox_acquire_model);
|
||||
break;
|
||||
case UBLOX_MSG_VGS: //Disable NMEA Messages
|
||||
ubloxSetMessageRate(0xF0, 0x05, 0); // VGS: Course over ground and Ground speed
|
||||
|
@ -855,8 +843,8 @@ void gpsUpdate(timeUs_t currentTimeUs)
|
|||
}
|
||||
break;
|
||||
case UBLOX_MSG_VGS:
|
||||
if (STATE(GPS_FIX) && (gpsConfig()->gps_ublox_mode == UBLOX_DYNAMIC)) {
|
||||
ubloxSendNAV5Message(true);
|
||||
if (STATE(GPS_FIX)) {
|
||||
ubloxSendNAV5Message(gpsConfig()->gps_ublox_flight_model);
|
||||
gpsData.state_position = UBLOX_MSG_GSV;
|
||||
}
|
||||
if (isConfiguratorConnected()) {
|
||||
|
|
|
@ -56,10 +56,15 @@ typedef enum {
|
|||
#define SBAS_MODE_MAX SBAS_GAGAN
|
||||
|
||||
typedef enum {
|
||||
UBLOX_AIRBORNE = 0,
|
||||
UBLOX_PEDESTRIAN,
|
||||
UBLOX_DYNAMIC
|
||||
} ubloxMode_e;
|
||||
UBLOX_MODEL_PORTABLE = 0,
|
||||
UBLOX_MODEL_STATIONARY,
|
||||
UBLOX_MODEL_PEDESTRIAN,
|
||||
UBLOX_MODEL_AUTOMOTIVE,
|
||||
UBLOX_MODEL_AT_SEA,
|
||||
UBLOX_MODEL_AIRBORNE_1G,
|
||||
UBLOX_MODEL_AIRBORNE_2G,
|
||||
UBLOX_MODEL_AIRBORNE_4G,
|
||||
} ubloxModel_e;
|
||||
|
||||
typedef enum {
|
||||
GPS_BAUDRATE_115200 = 0,
|
||||
|
|
|
@ -36,7 +36,8 @@ PG_RESET_TEMPLATE(gpsConfig_t, gpsConfig,
|
|||
.sbasMode = SBAS_NONE,
|
||||
.autoConfig = GPS_AUTOCONFIG_ON,
|
||||
.autoBaud = GPS_AUTOBAUD_OFF,
|
||||
.gps_ublox_mode = UBLOX_AIRBORNE,
|
||||
.gps_ublox_acquire_model = UBLOX_MODEL_AIRBORNE_4G,
|
||||
.gps_ublox_flight_model = UBLOX_MODEL_AIRBORNE_4G,
|
||||
.gps_ublox_use_galileo = false,
|
||||
.gps_set_home_point_once = false,
|
||||
.gps_use_3d_speed = false,
|
||||
|
|
|
@ -30,7 +30,8 @@ typedef struct gpsConfig_s {
|
|||
uint8_t sbasMode;
|
||||
uint8_t autoConfig;
|
||||
uint8_t autoBaud;
|
||||
uint8_t gps_ublox_mode;
|
||||
uint8_t gps_ublox_acquire_model;
|
||||
uint8_t gps_ublox_flight_model;
|
||||
bool gps_ublox_use_galileo;
|
||||
bool gps_set_home_point_once;
|
||||
bool gps_use_3d_speed;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue