mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +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:
parent
9692ef1ae9
commit
1990338a3f
@ -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 @@
|
||||
Subproject commit 2fecb4912dd8c97a9eee42c5dbecfb58c4aeb9ee
|
||||
Subproject commit a6687961ec328a1694916618f9160eaed555d4be
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user