mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-05 23:49:00 +08:00
Removed GPS_CONFIGURE + added I2C config: please use the UCENTER module now
This commit is contained in:
@@ -581,12 +581,6 @@ void init_ap( void ) {
|
||||
/** wait 0.5s (historical :-) */
|
||||
sys_time_usleep(500000);
|
||||
|
||||
#ifdef GPS_CONFIGURE
|
||||
#ifndef SITL
|
||||
gps_configure_uart();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined DATALINK
|
||||
|
||||
#if DATALINK == XBEE
|
||||
|
||||
@@ -197,10 +197,6 @@ static bool_t gps_ubx_ucenter_autobaud(uint8_t nr)
|
||||
#define _UBX_GPS_BAUD(_u) __UBX_GPS_BAUD(_u)
|
||||
#define UBX_GPS_BAUD _UBX_GPS_BAUD(GPS_LINK)
|
||||
|
||||
#if GPS_PORT_ID == GPS_PORT_UART1 || GPS_PORT_ID == GPS_PORT_UART2
|
||||
#else
|
||||
#endif
|
||||
|
||||
#define IGNORED 0
|
||||
#define RESERVED 0
|
||||
|
||||
@@ -238,7 +234,15 @@ static bool_t user_gps_configure(uint8_t nr) {
|
||||
|
||||
// Use old baudrate to issue a baudrate change command
|
||||
gps_ubx_ucenter.reply = GPS_UBX_UCENTER_REPLY_NONE;
|
||||
UbxSend_CFG_PRT(GPS_PORT_ID, 0x0, 0x0, 0x000008D0, 38400, UBX_PROTO_MASK, UBX_PROTO_MASK, 0x0, 0x0);
|
||||
|
||||
// I2C Interface
|
||||
#if GPS_PORT_ID == GPS_PORT_DDC
|
||||
UbxSend_CFG_PRT(GPS_PORT_ID, 0x0, 0x0, GPS_I2C_SLAVE_ADDR, 0x0, UBX_PROTO_MASK, UBX_PROTO_MASK, 0x0, 0x0);
|
||||
#endif
|
||||
// UART Interface
|
||||
#if GPS_PORT_ID == GPS_PORT_UART1 || GPS_PORT_ID == GPS_PORT_UART2
|
||||
UbxSend_CFG_PRT(GPS_PORT_ID, 0x0, 0x0, 0x000008D0, 38400, UBX_PROTO_MASK, UBX_PROTO_MASK, 0x0, 0x0);
|
||||
#endif
|
||||
break;
|
||||
case 6:
|
||||
// Now the GPS baudrate should have changed
|
||||
|
||||
@@ -79,20 +79,11 @@
|
||||
|
||||
struct GpsUbx gps_ubx;
|
||||
|
||||
#ifdef GPS_CONFIGURE
|
||||
bool_t gps_configuring;
|
||||
static uint8_t gps_status_config;
|
||||
#endif
|
||||
|
||||
void gps_impl_init(void) {
|
||||
gps_ubx.status = UNINIT;
|
||||
gps_ubx.msg_available = FALSE;
|
||||
gps_ubx.error_cnt = 0;
|
||||
gps_ubx.error_last = GPS_UBX_ERR_NONE;
|
||||
#ifdef GPS_CONFIGURE
|
||||
gps_status_config = 0;
|
||||
gps_configuring = TRUE;
|
||||
#endif
|
||||
gps_ubx.have_velned = 0;
|
||||
}
|
||||
|
||||
@@ -276,117 +267,6 @@ void gps_ubx_parse( uint8_t c ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
* GPS dynamic configuration
|
||||
*
|
||||
*
|
||||
*/
|
||||
#ifdef GPS_CONFIGURE
|
||||
|
||||
#define UBX_PROTO_MASK 0x0001
|
||||
#define NMEA_PROTO_MASK 0x0002
|
||||
#define RTCM_PROTO_MASK 0x0004
|
||||
|
||||
#define GPS_PORT_DDC 0x00
|
||||
#define GPS_PORT_UART1 0x01
|
||||
#define GPS_PORT_UART2 0x02
|
||||
#define GPS_PORT_USB 0x03
|
||||
#define GPS_PORT_SPI 0x04
|
||||
|
||||
#ifndef GPS_PORT_ID
|
||||
#define GPS_PORT_ID GPS_PORT_UART1
|
||||
#endif
|
||||
|
||||
#define __UBX_GPS_BAUD(_u) _u##_BAUD
|
||||
#define _UBX_GPS_BAUD(_u) __UBX_GPS_BAUD(_u)
|
||||
#define UBX_GPS_BAUD _UBX_GPS_BAUD(GPS_LINK)
|
||||
|
||||
/* Configure the GPS baud rate using the current uart baud rate. Busy
|
||||
wait for the end of the transmit. Then, BEFORE waiting for the ACK,
|
||||
change the uart rate. */
|
||||
#if GPS_PORT_ID == GPS_PORT_UART1 || GPS_PORT_ID == GPS_PORT_UART2
|
||||
void gps_configure_uart(void) {
|
||||
#ifdef FMS_PERIODIC_FREQ
|
||||
UbxSend_CFG_PRT(GPS_PORT_ID, 0x0, 0x0, 0x000008D0, 38400, UBX_PROTO_MASK, UBX_PROTO_MASK, 0x0, 0x0);
|
||||
uint8_t loop=0;
|
||||
while (GpsUartRunning) {
|
||||
//doesn't work unless some printfs are used, so :
|
||||
if (loop<9) {
|
||||
printf("."); loop++;
|
||||
} else {
|
||||
printf("\b"); loop--;
|
||||
}
|
||||
}
|
||||
#else
|
||||
UbxSend_CFG_PRT(GPS_PORT_ID, 0x0, 0x0, 0x000008D0, UBX_GPS_BAUD, UBX_PROTO_MASK, UBX_PROTO_MASK, 0x0, 0x0);
|
||||
while (GpsUartRunning); /* FIXME */
|
||||
#endif
|
||||
|
||||
GpsUartSetBaudrate(UBX_GPS_BAUD);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if GPS_PORT_ID == GPS_PORT_DDC
|
||||
void gps_configure_uart(void) {
|
||||
UbxSend_CFG_PRT(GPS_PORT_ID, 0x0, 0x0, GPS_I2C_SLAVE_ADDR, 0x0, UBX_PROTO_MASK, UBX_PROTO_MASK, 0x0, 0x0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define IGNORED 0
|
||||
#define RESERVED 0
|
||||
|
||||
#ifdef USER_GPS_CONFIGURE
|
||||
#include USER_GPS_CONFIGURE
|
||||
#else
|
||||
static bool_t user_gps_configure(bool_t cpt) {
|
||||
switch (cpt) {
|
||||
case 0:
|
||||
//New ublox firmware v5 or higher uses CFG_NAV5 message, CFG_NAV is no longer available
|
||||
//UbxSend_CFG_NAV(NAV_DYN_AIRBORNE_2G, 3, 16, 24, 20, 5, 0, 0x3C, 0x3C, 0x14, 0x03E8 ,0x0000, 0x0, 0x17, 0x00FA, 0x00FA, 0x0064, 0x012C, 0x000F, 0x00, 0x00);
|
||||
UbxSend_CFG_NAV5(0x05, NAV5_DYN_AIRBORNE_2G, NAV5_3D_ONLY, IGNORED, IGNORED, IGNORED, IGNORED, IGNORED, IGNORED, IGNORED, IGNORED, IGNORED, RESERVED, RESERVED, RESERVED, RESERVED);
|
||||
break;
|
||||
case 1:
|
||||
UbxSend_CFG_MSG(UBX_NAV_ID, UBX_NAV_POSUTM_ID, 0, 1, 0, 0);
|
||||
break;
|
||||
case 2:
|
||||
UbxSend_CFG_MSG(UBX_NAV_ID, UBX_NAV_VELNED_ID, 0, 1, 0, 0);
|
||||
break;
|
||||
case 3:
|
||||
UbxSend_CFG_MSG(UBX_NAV_ID, UBX_NAV_STATUS_ID, 0, 1, 0, 0);
|
||||
break;
|
||||
case 4:
|
||||
UbxSend_CFG_MSG(UBX_NAV_ID, UBX_NAV_SVINFO_ID, 0, 4, 0, 0);
|
||||
break;
|
||||
case 5:
|
||||
UbxSend_CFG_MSG(UBX_NAV_ID, UBX_NAV_SOL_ID, 0, 8, 0, 0);
|
||||
break;
|
||||
case 6:
|
||||
UbxSend_CFG_SBAS(0x00, 0x00, 0x00, 0x00, 0x00);
|
||||
break;
|
||||
case 7:
|
||||
UbxSend_CFG_RATE(0x00FA, 0x0001, 0x0000);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE; /* Continue, except for the last case */
|
||||
}
|
||||
#endif // ! USER_GPS_CONFIGURE
|
||||
|
||||
/* GPS configuration. Must be called on ack message reception while
|
||||
gps_status_config < GPS_CONFIG_DONE */
|
||||
void gps_configure( void ) {
|
||||
if (gps_ubx.msg_class == UBX_ACK_ID) {
|
||||
if (gps_ubx.msg_id == UBX_ACK_ACK_ID) {
|
||||
gps_status_config++;
|
||||
}
|
||||
}
|
||||
gps_configuring = user_gps_configure(gps_status_config);
|
||||
}
|
||||
#endif /* GPS_CONFIGURE */
|
||||
|
||||
#ifdef GPS_UBX_UCENTER
|
||||
#include GPS_UBX_UCENTER
|
||||
#endif
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
#ifndef GPS_UBX_H
|
||||
#define GPS_UBX_H
|
||||
|
||||
#ifdef GPS_CONFIGURE
|
||||
#warning "Please use gps_ubx_ucenter.xml module instead"
|
||||
#endif
|
||||
|
||||
#include "mcu_periph/uart.h"
|
||||
|
||||
/** Includes macros generated from ubx.xml */
|
||||
@@ -66,18 +70,6 @@ extern struct GpsUbx gps_ubx;
|
||||
|
||||
#define GpsBuffer() GpsLink(ChAvailable())
|
||||
|
||||
#ifdef GPS_CONFIGURE
|
||||
extern bool_t gps_configuring;
|
||||
#define GpsParseOrConfigure() { \
|
||||
if (gps_configuring) \
|
||||
gps_configure(); \
|
||||
else \
|
||||
gps_ubx_read_message(); \
|
||||
}
|
||||
#else
|
||||
#define GpsParseOrConfigure() gps_ubx_read_message()
|
||||
#endif
|
||||
|
||||
#ifndef GPS_UBX_UCENTER
|
||||
#define gps_ubx_ucenter_event() {}
|
||||
#endif
|
||||
@@ -92,8 +84,8 @@ extern bool_t gps_configuring;
|
||||
ReadGpsBuffer(); \
|
||||
} \
|
||||
if (gps_ubx.msg_available) { \
|
||||
GpsParseOrConfigure(); \
|
||||
gps_ubx_ucenter_event(); \
|
||||
gps_ubx_read_message(); \
|
||||
gps_ubx_ucenter_event(); \
|
||||
if (gps_ubx.msg_class == UBX_NAV_ID && \
|
||||
(gps_ubx.msg_id == UBX_NAV_VELNED_ID || \
|
||||
(gps_ubx.msg_id == UBX_NAV_SOL_ID && \
|
||||
@@ -139,35 +131,4 @@ extern void ubxsend_cfg_rst(uint16_t, uint8_t);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* dynamic GPS configuration
|
||||
*/
|
||||
#ifdef GPS_CONFIGURE
|
||||
#define NAV_DYN_STATIONARY 1
|
||||
#define NAV_DYN_PEDESTRIAN 2
|
||||
#define NAV_DYN_AUTOMOTIVE 3
|
||||
#define NAV_DYN_SEA 4
|
||||
#define NAV_DYN_AIRBORNE_1G 5
|
||||
#define NAV_DYN_AIRBORNE_2G 6
|
||||
#define NAV_DYN_AIRBORNE_4G 7
|
||||
|
||||
#define NAV5_DYN_PORTABLE 0
|
||||
#define NAV5_DYN_FIXED 1
|
||||
#define NAV5_DYN_STATIONARY 2
|
||||
#define NAV5_DYN_PEDESTRIAN 3
|
||||
#define NAV5_DYN_AUTOMOTIVE 4
|
||||
#define NAV5_DYN_SEA 5
|
||||
#define NAV5_DYN_AIRBORNE_1G 6
|
||||
#define NAV5_DYN_AIRBORNE_2G 7
|
||||
#define NAV5_DYN_AIRBORNE_4G 8
|
||||
|
||||
#define NAV5_2D_ONLY 1
|
||||
#define NAV5_3D_ONLY 2
|
||||
#define NAV5_AUTO 3
|
||||
|
||||
extern void gps_configure(void);
|
||||
extern void gps_configure_uart(void);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* GPS_UBX_H */
|
||||
|
||||
Reference in New Issue
Block a user