mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-22 06:14:14 +08:00
gps: Support for Emlid Reach
Support Emlid Reach in ERB format, including autodetect Reported-by: Bastien Auneau <bastien.auneau@while-true.fr>
This commit is contained in:
@@ -44,6 +44,7 @@ px4_add_module(
|
||||
devices/src/ashtech.cpp
|
||||
devices/src/ubx.cpp
|
||||
devices/src/rtcm.cpp
|
||||
devices/src/emlid_reach.cpp
|
||||
MODULE_CONFIG
|
||||
module.yaml
|
||||
DEPENDS
|
||||
|
||||
+1
-1
Submodule src/drivers/gps/devices updated: 2fecb4912d...a6687961ec
+23
-2
@@ -86,6 +86,7 @@
|
||||
#include "devices/src/ubx.h"
|
||||
#include "devices/src/mtk.h"
|
||||
#include "devices/src/ashtech.h"
|
||||
#include "devices/src/emlid_reach.h"
|
||||
|
||||
#ifdef __PX4_LINUX
|
||||
#include <linux/spi/spidev.h>
|
||||
@@ -98,7 +99,8 @@ typedef enum {
|
||||
GPS_DRIVER_MODE_NONE = 0,
|
||||
GPS_DRIVER_MODE_UBX,
|
||||
GPS_DRIVER_MODE_MTK,
|
||||
GPS_DRIVER_MODE_ASHTECH
|
||||
GPS_DRIVER_MODE_ASHTECH,
|
||||
GPS_DRIVER_MODE_EMLIDREACH
|
||||
} gps_driver_mode_t;
|
||||
|
||||
/* struct for dynamic allocation of satellite info data */
|
||||
@@ -720,6 +722,10 @@ GPS::run()
|
||||
_helper = new GPSDriverAshtech(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info, heading_offset);
|
||||
break;
|
||||
|
||||
case GPS_DRIVER_MODE_EMLIDREACH:
|
||||
_helper = new GPSDriverEmlidReach(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -782,6 +788,10 @@ GPS::run()
|
||||
// mode_str = "ASHTECH";
|
||||
// break;
|
||||
//
|
||||
// case GPS_DRIVER_MODE_EMLIDREACH:
|
||||
// mode_str = "EMLID REACH";
|
||||
// break;
|
||||
//
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
@@ -809,6 +819,10 @@ GPS::run()
|
||||
break;
|
||||
|
||||
case GPS_DRIVER_MODE_ASHTECH:
|
||||
_mode = GPS_DRIVER_MODE_EMLIDREACH;
|
||||
break;
|
||||
|
||||
case GPS_DRIVER_MODE_EMLIDREACH:
|
||||
_mode = GPS_DRIVER_MODE_UBX;
|
||||
px4_usleep(500000); // tried all possible drivers. Wait a bit before next round
|
||||
break;
|
||||
@@ -877,6 +891,10 @@ GPS::print_status()
|
||||
PX4_INFO("protocol: ASHTECH");
|
||||
break;
|
||||
|
||||
case GPS_DRIVER_MODE_EMLIDREACH:
|
||||
PX4_INFO("protocol: EMLIDREACH");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -976,7 +994,7 @@ gps start -d /dev/ttyS3 -e /dev/ttyS4
|
||||
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('p', nullptr, "ubx|mtk|ash", "GPS Protocol (default=auto select)", true);
|
||||
PRINT_MODULE_USAGE_PARAM_STRING('p', nullptr, "ubx|mtk|ash|eml", "GPS Protocol (default=auto select)", true);
|
||||
|
||||
PRINT_MODULE_USAGE_DEFAULT_COMMANDS();
|
||||
|
||||
@@ -1107,6 +1125,9 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
||||
} else if (!strcmp(myoptarg, "ash")) {
|
||||
mode = GPS_DRIVER_MODE_ASHTECH;
|
||||
|
||||
} else if (!strcmp(myoptarg, "eml")) {
|
||||
mode = GPS_DRIVER_MODE_EMLIDREACH;
|
||||
|
||||
} else {
|
||||
PX4_ERR("unknown interface: %s", myoptarg);
|
||||
error_flag = true;
|
||||
|
||||
Reference in New Issue
Block a user