mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-29 06:43:34 +08:00
gps: add generic nmea driver
This commit is contained in:
@@ -193,6 +193,7 @@
|
|||||||
#define DRV_GPS_DEVTYPE_UBX_8 0xA8
|
#define DRV_GPS_DEVTYPE_UBX_8 0xA8
|
||||||
#define DRV_GPS_DEVTYPE_UBX_9 0xA9
|
#define DRV_GPS_DEVTYPE_UBX_9 0xA9
|
||||||
#define DRV_GPS_DEVTYPE_UBX_F9P 0xAA
|
#define DRV_GPS_DEVTYPE_UBX_F9P 0xAA
|
||||||
|
#define DRV_GPS_DEVTYPE_NMEA 0xAB
|
||||||
|
|
||||||
#define DRV_GPS_DEVTYPE_SIM 0xAF
|
#define DRV_GPS_DEVTYPE_SIM 0xAF
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ px4_add_module(
|
|||||||
devices/src/rtcm.cpp
|
devices/src/rtcm.cpp
|
||||||
devices/src/emlid_reach.cpp
|
devices/src/emlid_reach.cpp
|
||||||
devices/src/femtomes.cpp
|
devices/src/femtomes.cpp
|
||||||
|
devices/src/nmea.cpp
|
||||||
MODULE_CONFIG
|
MODULE_CONFIG
|
||||||
module.yaml
|
module.yaml
|
||||||
DEPENDS
|
DEPENDS
|
||||||
|
|||||||
+1
-1
Submodule src/drivers/gps/devices updated: 6815e1d3b2...8af5336d3f
+19
-2
@@ -68,6 +68,7 @@
|
|||||||
# include "devices/src/emlid_reach.h"
|
# include "devices/src/emlid_reach.h"
|
||||||
# include "devices/src/mtk.h"
|
# include "devices/src/mtk.h"
|
||||||
# include "devices/src/femtomes.h"
|
# include "devices/src/femtomes.h"
|
||||||
|
# include "devices/src/nmea.h"
|
||||||
#endif // CONSTRAINED_FLASH
|
#endif // CONSTRAINED_FLASH
|
||||||
#include "devices/src/ubx.h"
|
#include "devices/src/ubx.h"
|
||||||
|
|
||||||
@@ -85,7 +86,8 @@ enum class gps_driver_mode_t {
|
|||||||
MTK,
|
MTK,
|
||||||
ASHTECH,
|
ASHTECH,
|
||||||
EMLIDREACH,
|
EMLIDREACH,
|
||||||
FEMTOMES
|
FEMTOMES,
|
||||||
|
NMEA
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class gps_dump_comm_mode_t : int32_t {
|
enum class gps_dump_comm_mode_t : int32_t {
|
||||||
@@ -321,6 +323,8 @@ GPS::GPS(const char *path, gps_driver_mode_t mode, GPSHelper::Interface interfac
|
|||||||
case 4: _mode = gps_driver_mode_t::EMLIDREACH; break;
|
case 4: _mode = gps_driver_mode_t::EMLIDREACH; break;
|
||||||
|
|
||||||
case 5: _mode = gps_driver_mode_t::FEMTOMES; break;
|
case 5: _mode = gps_driver_mode_t::FEMTOMES; break;
|
||||||
|
|
||||||
|
case 6: _mode = gps_driver_mode_t::NMEA; break;
|
||||||
#endif // CONSTRAINED_FLASH
|
#endif // CONSTRAINED_FLASH
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -793,6 +797,11 @@ GPS::run()
|
|||||||
_helper = new GPSDriverFemto(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info, heading_offset);
|
_helper = new GPSDriverFemto(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info, heading_offset);
|
||||||
set_device_type(DRV_GPS_DEVTYPE_FEMTOMES);
|
set_device_type(DRV_GPS_DEVTYPE_FEMTOMES);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case gps_driver_mode_t::NMEA:
|
||||||
|
_helper = new GPSDriverNMEA(&GPS::callback, this, &_report_gps_pos, _p_report_sat_info, heading_offset);
|
||||||
|
set_device_type(DRV_GPS_DEVTYPE_NMEA);
|
||||||
|
break;
|
||||||
#endif // CONSTRAINED_FLASH
|
#endif // CONSTRAINED_FLASH
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -953,6 +962,7 @@ GPS::run()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case gps_driver_mode_t::FEMTOMES:
|
case gps_driver_mode_t::FEMTOMES:
|
||||||
|
case gps_driver_mode_t::NMEA: // skip NMEA for auto-detection to avoid false positive matching
|
||||||
#endif // CONSTRAINED_FLASH
|
#endif // CONSTRAINED_FLASH
|
||||||
_mode = gps_driver_mode_t::UBX;
|
_mode = gps_driver_mode_t::UBX;
|
||||||
px4_usleep(500000); // tried all possible drivers. Wait a bit before next round
|
px4_usleep(500000); // tried all possible drivers. Wait a bit before next round
|
||||||
@@ -1009,6 +1019,10 @@ GPS::print_status()
|
|||||||
case gps_driver_mode_t::FEMTOMES:
|
case gps_driver_mode_t::FEMTOMES:
|
||||||
PX4_INFO("protocol: FEMTOMES");
|
PX4_INFO("protocol: FEMTOMES");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case gps_driver_mode_t::NMEA:
|
||||||
|
PX4_INFO("protocol: NMEA");
|
||||||
|
break;
|
||||||
#endif // CONSTRAINED_FLASH
|
#endif // CONSTRAINED_FLASH
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1175,7 +1189,7 @@ $ gps reset warm
|
|||||||
|
|
||||||
PRINT_MODULE_USAGE_PARAM_STRING('i', "uart", "spi|uart", "GPS interface", 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('j', "uart", "spi|uart", "secondary GPS interface", true);
|
||||||
PRINT_MODULE_USAGE_PARAM_STRING('p', nullptr, "ubx|mtk|ash|eml|fem", "GPS Protocol (default=auto select)", true);
|
PRINT_MODULE_USAGE_PARAM_STRING('p', nullptr, "ubx|mtk|ash|eml|fem|nmea", "GPS Protocol (default=auto select)", true);
|
||||||
|
|
||||||
PRINT_MODULE_USAGE_DEFAULT_COMMANDS();
|
PRINT_MODULE_USAGE_DEFAULT_COMMANDS();
|
||||||
PRINT_MODULE_USAGE_COMMAND_DESCR("reset", "Reset GPS device");
|
PRINT_MODULE_USAGE_COMMAND_DESCR("reset", "Reset GPS device");
|
||||||
@@ -1319,6 +1333,9 @@ GPS *GPS::instantiate(int argc, char *argv[], Instance instance)
|
|||||||
|
|
||||||
} else if (!strcmp(myoptarg, "fem")) {
|
} else if (!strcmp(myoptarg, "fem")) {
|
||||||
mode = gps_driver_mode_t::FEMTOMES;
|
mode = gps_driver_mode_t::FEMTOMES;
|
||||||
|
|
||||||
|
} else if (!strcmp(myoptarg, "nmea")) {
|
||||||
|
mode = gps_driver_mode_t::NMEA;
|
||||||
#endif // CONSTRAINED_FLASH
|
#endif // CONSTRAINED_FLASH
|
||||||
} else {
|
} else {
|
||||||
PX4_ERR("unknown protocol: %s", myoptarg);
|
PX4_ERR("unknown protocol: %s", myoptarg);
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ PARAM_DEFINE_FLOAT(GPS_YAW_OFFSET, 0.f);
|
|||||||
* @value 3 Ashtech / Trimble
|
* @value 3 Ashtech / Trimble
|
||||||
* @value 4 Emlid Reach
|
* @value 4 Emlid Reach
|
||||||
* @value 5 Femtomes
|
* @value 5 Femtomes
|
||||||
|
* @value 6 NMEA (generic)
|
||||||
*
|
*
|
||||||
* @reboot_required true
|
* @reboot_required true
|
||||||
* @group GPS
|
* @group GPS
|
||||||
@@ -148,6 +149,7 @@ PARAM_DEFINE_INT32(GPS_1_PROTOCOL, 1);
|
|||||||
* @value 3 Ashtech / Trimble
|
* @value 3 Ashtech / Trimble
|
||||||
* @value 4 Emlid Reach
|
* @value 4 Emlid Reach
|
||||||
* @value 5 Femtomes
|
* @value 5 Femtomes
|
||||||
|
* @value 6 NMEA (generic)
|
||||||
*
|
*
|
||||||
* @reboot_required true
|
* @reboot_required true
|
||||||
* @group GPS
|
* @group GPS
|
||||||
|
|||||||
Reference in New Issue
Block a user