Skip to content

Commit

Permalink
UBLOX Full Power mode + default STATIONARY model (betaflight#12659)
Browse files Browse the repository at this point in the history
  • Loading branch information
ASDosjani authored and davidbitton committed Feb 5, 2024
1 parent f36c3a6 commit 9957f39
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 4 deletions.
3 changes: 2 additions & 1 deletion src/main/cli/settings.c
Expand Up @@ -1006,6 +1006,7 @@ const clivalue_t valueTable[] = {
{ 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_UBLOX_FULL_POWER, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, gps_ublox_full_power) },
{ 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) },
{ PARAM_NAME_GPS_SBAS_INTEGRITY, VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_GPS_CONFIG, offsetof(gpsConfig_t, sbas_integrity) },
Expand Down Expand Up @@ -1152,7 +1153,7 @@ const clivalue_t valueTable[] = {
#endif

#ifdef USE_INTEGRATED_YAW_CONTROL
{ PARAM_NAME_USE_INTEGRATED_YAW, VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, .config.lookup = {TABLE_OFF_ON }, PG_PID_PROFILE, offsetof(pidProfile_t, use_integrated_yaw) },
{ PARAM_NAME_USE_INTEGRATED_YAW, VAR_UINT8 | PROFILE_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_PID_PROFILE, offsetof(pidProfile_t, use_integrated_yaw) },
{ "integrated_yaw_relax", VAR_UINT8 | PROFILE_VALUE, .config.minmaxUnsigned = { 0, 255 }, PG_PID_PROFILE, offsetof(pidProfile_t, integrated_yaw_relax) },
#endif

Expand Down
1 change: 1 addition & 0 deletions src/main/fc/parameter_names.h
Expand Up @@ -144,6 +144,7 @@
#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_FULL_POWER "gps_ublox_full_power"
#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"
Expand Down
27 changes: 25 additions & 2 deletions src/main/io/gps.c
Expand Up @@ -152,6 +152,7 @@ typedef enum {
MSG_CFG_SET_RATE = 0x01,
MSG_CFG_SBAS = 0x16,
MSG_CFG_NAV_SETTINGS = 0x24,
MSG_CFG_PMS = 0x86,
MSG_CFG_GNSS = 0x3E
} ubxProtocolBytes_e;

Expand Down Expand Up @@ -214,6 +215,14 @@ typedef struct ubxCfgGnss_s {
ubxConfigblock_t configblocks[7];
} ubxCfgGnss_t;

typedef struct ubxCfgPms_s {
uint8_t version;
uint8_t powerSetupValue;
uint16_t period;
uint16_t onTime;
uint8_t reserved1[2];
} ubxCfgPms_t;

typedef struct ubxCfgNav5_s {
uint16_t mask;
uint8_t dynModel;
Expand Down Expand Up @@ -243,6 +252,7 @@ typedef union ubxPayload_s {
ubxCfgNav5_t cfg_nav5;
ubxCfgSbas_t cfg_sbas;
ubxCfgGnss_t cfg_gnss;
ubxCfgPms_t cfg_pms;
} ubxPayload_t;

typedef struct ubxMessage_s {
Expand All @@ -266,7 +276,8 @@ typedef enum {
UBLOX_MSG_DOP, // 12. MSG_DOP
UBLOX_SET_NAV_RATE, // 13. set GPS sample rate
UBLOX_SET_SBAS, // 14. Sets SBAS
UBLOX_MSG_CFG_GNSS // 15. For not SBAS or GALILEO otherwise GPS_STATE_REVEIVING_DATA
UBLOX_SET_PMS, // 15. Sets Power Mode
UBLOX_MSG_CFG_GNSS // 16. For not SBAS or GALILEO otherwise GPS_STATE_REVEIVING_DATA
} ubloxStatePosition_e;

#endif // USE_GPS_UBLOX
Expand Down Expand Up @@ -510,7 +521,16 @@ static void ubloxSendNAV5Message(uint8_t model)

ubloxSendConfigMessage(&tx_buffer, MSG_CFG_NAV_SETTINGS, sizeof(ubxCfgNav5_t));
}

static void ubloxSendPowerMode(void)
{
ubxMessage_t tx_buffer;
tx_buffer.payload.cfg_pms.powerSetupValue = !gpsConfig()->gps_ublox_full_power;
tx_buffer.payload.cfg_pms.period = 0;
tx_buffer.payload.cfg_pms.onTime = 0;
tx_buffer.payload.cfg_pms.reserved1[0] = 0;
tx_buffer.payload.cfg_pms.reserved1[1] = 0;
ubloxSendConfigMessage(&tx_buffer, MSG_CFG_PMS, sizeof(ubxCfgPms_t));
}
static void ubloxSetMessageRate(uint8_t messageClass, uint8_t messageID, uint8_t rate)
{
ubxMessage_t tx_buffer;
Expand Down Expand Up @@ -694,6 +714,9 @@ void gpsInitUblox(void)
case UBLOX_SET_SBAS:
ubloxSetSbas();
break;
case UBLOX_SET_PMS:
ubloxSendPowerMode();
break;
case UBLOX_MSG_CFG_GNSS:
if ((gpsConfig()->sbasMode == SBAS_NONE) || (gpsConfig()->gps_ublox_use_galileo)) {
ubloxSendPollMessage(MSG_CFG_GNSS);
Expand Down
3 changes: 2 additions & 1 deletion src/main/pg/gps.c
Expand Up @@ -36,9 +36,10 @@ PG_RESET_TEMPLATE(gpsConfig_t, gpsConfig,
.sbasMode = SBAS_NONE,
.autoConfig = GPS_AUTOCONFIG_ON,
.autoBaud = GPS_AUTOBAUD_OFF,
.gps_ublox_acquire_model = UBLOX_MODEL_AIRBORNE_4G,
.gps_ublox_acquire_model = UBLOX_MODEL_STATIONARY,
.gps_ublox_flight_model = UBLOX_MODEL_AIRBORNE_4G,
.gps_ublox_use_galileo = false,
.gps_ublox_full_power = true,
.gps_set_home_point_once = false,
.gps_use_3d_speed = false,
.sbas_integrity = false,
Expand Down
1 change: 1 addition & 0 deletions src/main/pg/gps.h
Expand Up @@ -33,6 +33,7 @@ typedef struct gpsConfig_s {
uint8_t gps_ublox_acquire_model;
uint8_t gps_ublox_flight_model;
bool gps_ublox_use_galileo;
bool gps_ublox_full_power;
bool gps_set_home_point_once;
bool gps_use_3d_speed;
bool sbas_integrity;
Expand Down

0 comments on commit 9957f39

Please sign in to comment.