1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-26 17:55:30 +03:00

UBLOX Full Power mode + default STATIONARY model (#12659)

This commit is contained in:
ASDosjani 2023-04-14 20:40:22 +02:00 committed by GitHub
parent 3bfbac4aa8
commit a0d009c4df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 4 deletions

View file

@ -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) },

View file

@ -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"

View file

@ -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;
@ -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;
@ -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 {
@ -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
@ -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;
@ -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);

View file

@ -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,

View file

@ -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;