|
|
|
@ -117,7 +117,7 @@ public:
@@ -117,7 +117,7 @@ public:
|
|
|
|
|
Count |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interface, bool enable_sat_info, Instance instance, |
|
|
|
|
GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interface, Instance instance, |
|
|
|
|
unsigned configured_baudrate); |
|
|
|
|
~GPS() override; |
|
|
|
|
|
|
|
|
@ -279,8 +279,8 @@ px4::atomic<GPS *> GPS::_secondary_instance{nullptr};
@@ -279,8 +279,8 @@ px4::atomic<GPS *> GPS::_secondary_instance{nullptr};
|
|
|
|
|
extern "C" __EXPORT int gps_main(int argc, char *argv[]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interface, bool enable_sat_info, |
|
|
|
|
Instance instance, unsigned configured_baudrate) : |
|
|
|
|
GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interface, Instance instance, |
|
|
|
|
unsigned configured_baudrate) : |
|
|
|
|
Device(MODULE_NAME), |
|
|
|
|
_configured_baudrate(configured_baudrate), |
|
|
|
|
_mode(mode), |
|
|
|
@ -295,6 +295,9 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac
@@ -295,6 +295,9 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac
|
|
|
|
|
_report_gps_pos.heading = NAN; |
|
|
|
|
_report_gps_pos.heading_offset = NAN; |
|
|
|
|
|
|
|
|
|
int32_t enable_sat_info = 0; |
|
|
|
|
param_get(param_find("GPS_SAT_INFO"), &enable_sat_info); |
|
|
|
|
|
|
|
|
|
/* create satellite info data object if requested */ |
|
|
|
|
if (enable_sat_info) { |
|
|
|
|
_sat_info = new GPS_Sat_Info(); |
|
|
|
@ -1254,8 +1257,6 @@ $ gps reset warm
@@ -1254,8 +1257,6 @@ $ gps reset warm
|
|
|
|
|
PRINT_MODULE_USAGE_PARAM_STRING('e', nullptr, "<file:dev>", "Optional secondary GPS device", true); |
|
|
|
|
PRINT_MODULE_USAGE_PARAM_INT('g', 0, 0, 3000000, "Baudrate (secondary GPS, can also be p:<param_name>)", true); |
|
|
|
|
|
|
|
|
|
PRINT_MODULE_USAGE_PARAM_FLAG('s', "Enable publication of satellite info", true); |
|
|
|
|
|
|
|
|
|
PRINT_MODULE_USAGE_PARAM_STRING('i', "uart", "spi|uart", "GPS interface", true); |
|
|
|
|
PRINT_MODULE_USAGE_PARAM_STRING('j', "uart", "spi|uart", "secondary GPS interface", true); |
|
|
|
|
PRINT_MODULE_USAGE_PARAM_STRING('p', nullptr, "ubx|mtk|ash|eml|fem|nmea", "GPS Protocol (default=auto select)", true); |
|
|
|
@ -1324,7 +1325,6 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
@@ -1324,7 +1325,6 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
|
|
|
|
const char *device_name_secondary = nullptr; |
|
|
|
|
int baudrate_main = 0; |
|
|
|
|
int baudrate_secondary = 0; |
|
|
|
|
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_t::None; |
|
|
|
@ -1334,7 +1334,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
@@ -1334,7 +1334,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
|
|
|
|
int ch; |
|
|
|
|
const char *myoptarg = nullptr; |
|
|
|
|
|
|
|
|
|
while ((ch = px4_getopt(argc, argv, "b:d:e:g:si:j:p:", &myoptind, &myoptarg)) != EOF) { |
|
|
|
|
while ((ch = px4_getopt(argc, argv, "b:d:e:g:i:j:p:", &myoptind, &myoptarg)) != EOF) { |
|
|
|
|
switch (ch) { |
|
|
|
|
case 'b': |
|
|
|
|
if (px4_get_parameter_value(myoptarg, baudrate_main) != 0) { |
|
|
|
@ -1357,10 +1357,6 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
@@ -1357,10 +1357,6 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
|
|
|
|
device_name_secondary = myoptarg; |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 's': |
|
|
|
|
enable_sat_info = true; |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'i': |
|
|
|
|
if (!strcmp(myoptarg, "spi")) { |
|
|
|
|
interface = GPSHelper::Interface::SPI; |
|
|
|
@ -1430,7 +1426,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
@@ -1430,7 +1426,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
|
|
|
|
GPS *gps = nullptr; |
|
|
|
|
if (instance == Instance::Main) { |
|
|
|
|
if (device_name && (access(device_name, R_OK|W_OK) == 0)) { |
|
|
|
|
gps = new GPS(device_name, mode, interface, enable_sat_info, instance, baudrate_main); |
|
|
|
|
gps = new GPS(device_name, mode, interface, instance, baudrate_main); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
PX4_ERR("invalid device (-d) %s", device_name ? device_name : ""); |
|
|
|
@ -1453,7 +1449,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
@@ -1453,7 +1449,7 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
|
|
|
|
} |
|
|
|
|
} else { // secondary instance
|
|
|
|
|
if (device_name_secondary && (access(device_name_secondary, R_OK|W_OK) == 0)) { |
|
|
|
|
gps = new GPS(device_name_secondary, mode, interface_secondary, enable_sat_info, instance, baudrate_secondary); |
|
|
|
|
gps = new GPS(device_name_secondary, mode, interface_secondary, instance, baudrate_secondary); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
PX4_ERR("invalid secondary device (-g) %s", device_name_secondary ? device_name_secondary : ""); |
|
|
|
|