refactor gps: use enum class for gps_driver_mode_t

This commit is contained in:
Beat Küng 2021-02-26 14:40:27 +01:00 committed by Daniel Agar
parent 09a42e7af2
commit 0f6bf6bc0e
1 changed files with 47 additions and 47 deletions

View File

@ -79,14 +79,14 @@
#define TIMEOUT_5HZ 500 //!< Timeout time in mS, 200 mS (5Hz) + 300 mS delta for error
#define RATE_MEASUREMENT_PERIOD 5000000
typedef enum {
GPS_DRIVER_MODE_NONE = 0,
GPS_DRIVER_MODE_UBX,
GPS_DRIVER_MODE_MTK,
GPS_DRIVER_MODE_ASHTECH,
GPS_DRIVER_MODE_EMLIDREACH,
GPS_DRIVER_MODE_FEMTOMES
} gps_driver_mode_t;
enum class gps_driver_mode_t {
None = 0,
UBX,
MTK,
ASHTECH,
EMLIDREACH,
FEMTOMES
};
enum class gps_dump_comm_mode_t : int32_t {
Disabled = 0,
@ -303,7 +303,7 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac
set_device_bus_type(device::Device::DeviceBusType::DeviceBusType_SPI);
}
if (_mode == GPS_DRIVER_MODE_NONE) {
if (_mode == gps_driver_mode_t::None) {
// use parameter to select mode if not provided via CLI
char protocol_param_name[16];
snprintf(protocol_param_name, sizeof(protocol_param_name), "GPS_%i_PROTOCOL", (int)_instance + 1);
@ -311,19 +311,19 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac
param_get(param_find(protocol_param_name), &protocol);
switch (protocol) {
case 1: _mode = GPS_DRIVER_MODE_UBX; break;
case 1: _mode = gps_driver_mode_t::UBX; break;
#ifndef CONSTRAINED_FLASH
case 2: _mode = GPS_DRIVER_MODE_MTK; break;
case 2: _mode = gps_driver_mode_t::MTK; break;
case 3: _mode = GPS_DRIVER_MODE_ASHTECH; break;
case 3: _mode = gps_driver_mode_t::ASHTECH; break;
case 4: _mode = GPS_DRIVER_MODE_EMLIDREACH; break;
case 4: _mode = gps_driver_mode_t::EMLIDREACH; break;
#endif // CONSTRAINED_FLASH
}
}
_mode_auto = _mode == GPS_DRIVER_MODE_NONE;
_mode_auto = _mode == gps_driver_mode_t::None;
}
GPS::~GPS()
@ -761,33 +761,33 @@ GPS::run()
}
switch (_mode) {
case GPS_DRIVER_MODE_NONE:
_mode = GPS_DRIVER_MODE_UBX;
case gps_driver_mode_t::None:
_mode = gps_driver_mode_t::UBX;
/* FALLTHROUGH */
case GPS_DRIVER_MODE_UBX:
case gps_driver_mode_t::UBX:
_helper = new GPSDriverUBX(_interface, &GPS::callback, this, &_report_gps_pos, _p_report_sat_info,
gps_ubx_dynmodel, heading_offset, ubx_mode);
set_device_type(DRV_GPS_DEVTYPE_UBX);
break;
#ifndef CONSTRAINED_FLASH
case GPS_DRIVER_MODE_MTK:
case gps_driver_mode_t::MTK:
_helper = new GPSDriverMTK(&GPS::callback, this, &_report_gps_pos);
set_device_type(DRV_GPS_DEVTYPE_MTK);
break;
case GPS_DRIVER_MODE_ASHTECH:
case gps_driver_mode_t::ASHTECH:
_helper = new GPSDriverAshtech(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info, heading_offset);
set_device_type(DRV_GPS_DEVTYPE_ASHTECH);
break;
case GPS_DRIVER_MODE_EMLIDREACH:
case gps_driver_mode_t::EMLIDREACH:
_helper = new GPSDriverEmlidReach(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info);
set_device_type(DRV_GPS_DEVTYPE_EMLID_REACH);
break;
case GPS_DRIVER_MODE_FEMTOMES:
case gps_driver_mode_t::FEMTOMES:
_helper = new GPSDriverFemto(&GPS::callback, this, &_report_gps_pos/*, _p_report_sat_info*/);
set_device_type(DRV_GPS_DEVTYPE_FEMTOMES);
break;
@ -815,7 +815,7 @@ GPS::run()
_report_gps_pos.heading = NAN;
_report_gps_pos.heading_offset = heading_offset;
if (_mode == GPS_DRIVER_MODE_UBX) {
if (_mode == gps_driver_mode_t::UBX) {
/* GPS is obviously detected successfully, reset statistics */
_helper->resetUpdateRates();
@ -894,19 +894,19 @@ GPS::run()
// const char *mode_str = "unknown";
//
// switch (_mode) {
// case GPS_DRIVER_MODE_UBX:
// case gps_driver_mode_t::UBX:
// mode_str = "UBX";
// break;
//
// case GPS_DRIVER_MODE_MTK:
// case gps_driver_mode_t::MTK:
// mode_str = "MTK";
// break;
//
// case GPS_DRIVER_MODE_ASHTECH:
// case gps_driver_mode_t::ASHTECH:
// mode_str = "ASHTECH";
// break;
//
// case GPS_DRIVER_MODE_EMLIDREACH:
// case gps_driver_mode_t::EMLIDREACH:
// mode_str = "EMLID REACH";
// break;
//
@ -933,26 +933,26 @@ GPS::run()
if (_mode_auto) {
switch (_mode) {
case GPS_DRIVER_MODE_UBX:
case gps_driver_mode_t::UBX:
#ifndef CONSTRAINED_FLASH
_mode = GPS_DRIVER_MODE_MTK;
_mode = gps_driver_mode_t::MTK;
break;
case GPS_DRIVER_MODE_MTK:
_mode = GPS_DRIVER_MODE_ASHTECH;
case gps_driver_mode_t::MTK:
_mode = gps_driver_mode_t::ASHTECH;
break;
case GPS_DRIVER_MODE_ASHTECH:
_mode = GPS_DRIVER_MODE_EMLIDREACH;
case gps_driver_mode_t::ASHTECH:
_mode = gps_driver_mode_t::EMLIDREACH;
break;
case GPS_DRIVER_MODE_EMLIDREACH:
_mode = GPS_DRIVER_MODE_FEMTOMES;
case gps_driver_mode_t::EMLIDREACH:
_mode = gps_driver_mode_t::FEMTOMES;
break;
case GPS_DRIVER_MODE_FEMTOMES:
case gps_driver_mode_t::FEMTOMES:
#endif // CONSTRAINED_FLASH
_mode = GPS_DRIVER_MODE_UBX;
_mode = gps_driver_mode_t::UBX;
px4_usleep(500000); // tried all possible drivers. Wait a bit before next round
break;
@ -987,24 +987,24 @@ GPS::print_status()
// GPS Mode
switch (_mode) {
case GPS_DRIVER_MODE_UBX:
case gps_driver_mode_t::UBX:
PX4_INFO("protocol: UBX");
break;
#ifndef CONSTRAINED_FLASH
case GPS_DRIVER_MODE_MTK:
case gps_driver_mode_t::MTK:
PX4_INFO("protocol: MTK");
break;
case GPS_DRIVER_MODE_ASHTECH:
case gps_driver_mode_t::ASHTECH:
PX4_INFO("protocol: ASHTECH");
break;
case GPS_DRIVER_MODE_EMLIDREACH:
case gps_driver_mode_t::EMLIDREACH:
PX4_INFO("protocol: EMLIDREACH");
break;
case GPS_DRIVER_MODE_FEMTOMES:
case gps_driver_mode_t::FEMTOMES:
PX4_INFO("protocol: FEMTOMES");
break;
#endif // CONSTRAINED_FLASH
@ -1242,7 +1242,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
bool enable_sat_info = false;
GPSHelper::Interface interface = GPSHelper::Interface::UART;
GPSHelper::Interface interface_secondary = GPSHelper::Interface::UART;
gps_driver_mode_t mode = GPS_DRIVER_MODE_NONE;
gps_driver_mode_t mode = gps_driver_mode_t::None;
bool error_flag = false;
int myoptind = 1;
@ -1304,19 +1304,19 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
case 'p':
if (!strcmp(myoptarg, "ubx")) {
mode = GPS_DRIVER_MODE_UBX;
mode = gps_driver_mode_t::UBX;
#ifndef CONSTRAINED_FLASH
} else if (!strcmp(myoptarg, "mtk")) {
mode = GPS_DRIVER_MODE_MTK;
mode = gps_driver_mode_t::MTK;
} else if (!strcmp(myoptarg, "ash")) {
mode = GPS_DRIVER_MODE_ASHTECH;
mode = gps_driver_mode_t::ASHTECH;
} else if (!strcmp(myoptarg, "eml")) {
mode = GPS_DRIVER_MODE_EMLIDREACH;
mode = gps_driver_mode_t::EMLIDREACH;
} else if (!strcmp(myoptarg, "fem")) {
mode = GPS_DRIVER_MODE_FEMTOMES;
mode = gps_driver_mode_t::FEMTOMES;
#endif // CONSTRAINED_FLASH
} else {
PX4_ERR("unknown protocol: %s", myoptarg);