mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
OP-1434 - Add support for OP custom sentences on flight board
This commit is contained in:
parent
55557ecd60
commit
397bfdc08b
@ -40,7 +40,7 @@
|
||||
#include "gpssettings.h"
|
||||
#include "taskinfo.h"
|
||||
#include "hwsettings.h"
|
||||
|
||||
#include "auxmagsensor.h"
|
||||
#include "WorldMagModel.h"
|
||||
#include "CoordinateConversions.h"
|
||||
|
||||
@ -153,6 +153,8 @@ int32_t GPSInitialize(void)
|
||||
GPSTimeInitialize();
|
||||
GPSSatellitesInitialize();
|
||||
HomeLocationInitialize();
|
||||
AuxMagSensorInitialize();
|
||||
GPSExtendedStatusInitialize();
|
||||
updateSettings();
|
||||
|
||||
#else
|
||||
|
@ -293,6 +293,30 @@ void parse_ubx_nav_pvt(struct UBX_NAV_PVT *pvt, GPSPositionSensorData *GpsPositi
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void parse_ubx_op_sys(struct UBX_OP_SYSINFO *sysinfo)
|
||||
{
|
||||
GPSExtendedStatusData data;
|
||||
|
||||
data.FlightTime = sysinfo->flightTime;
|
||||
data.HeapRemaining = sysinfo->HeapRemaining;
|
||||
data.IRQStackRemaining = sysinfo->IRQStackRemaining;
|
||||
data.SysModStackRemaining = sysinfo->SystemModStackRemaining;
|
||||
data.Options = sysinfo->options;
|
||||
data.Status = GPSEXTENDEDSTATUS_STATUS_GPSV9;
|
||||
GPSExtendedStatusSet(&data);
|
||||
}
|
||||
void parse_ubx_op_mag(struct UBX_OP_MAG *mag)
|
||||
{
|
||||
AuxMagSensorData data;
|
||||
|
||||
data.x = mag->x;
|
||||
data.y = mag->y;
|
||||
data.z = mag->z;
|
||||
data.Status = mag->Status;
|
||||
AuxMagSensorSet(&data);
|
||||
}
|
||||
|
||||
#if !defined(PIOS_GPS_MINIMAL)
|
||||
void parse_ubx_nav_timeutc(struct UBX_NAV_TIMEUTC *timeutc)
|
||||
{
|
||||
@ -401,6 +425,16 @@ uint32_t parse_ubx_message(struct UBXPacket *ubx, GPSPositionSensorData *GpsPosi
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case UBX_CLASS_OP_CUST:
|
||||
switch (ubx->header.id) {
|
||||
case UBX_ID_SYS:
|
||||
parse_ubx_op_sys(&ubx->payload.op_sysinfo);
|
||||
break;
|
||||
case UBX_ID_MAG:
|
||||
parse_ubx_op_mag(&ubx->payload.op_mag);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (msgtracker.msg_received == ALL_RECEIVED) {
|
||||
|
@ -32,6 +32,8 @@
|
||||
#define UBX_H
|
||||
#include "openpilot.h"
|
||||
#include "gpspositionsensor.h"
|
||||
#include "gpsextendedstatus.h"
|
||||
#include "auxmagsensor.h"
|
||||
#include "GPS.h"
|
||||
|
||||
|
||||
@ -41,7 +43,8 @@
|
||||
// From u-blox6 receiver protocol specification
|
||||
|
||||
// Messages classes
|
||||
#define UBX_CLASS_NAV 0x01
|
||||
#define UBX_CLASS_NAV 0x01
|
||||
#define UBX_CLASS_OP_CUST 0x99
|
||||
|
||||
// Message IDs
|
||||
#define UBX_ID_POSLLH 0x02
|
||||
@ -53,6 +56,8 @@
|
||||
#define UBX_ID_SVINFO 0x30
|
||||
#define UBX_ID_PVT 0x07
|
||||
|
||||
#define UBX_ID_SYS 0x01
|
||||
#define UBX_ID_MAG 0x02
|
||||
// private structures
|
||||
|
||||
// Geodetic Position Solution
|
||||
@ -245,6 +250,23 @@ struct UBX_NAV_SVINFO {
|
||||
struct UBX_NAV_SVINFO_SV sv[MAX_SVS]; // Repeated 'numCh' times
|
||||
};
|
||||
|
||||
// OP custom messages
|
||||
struct UBX_OP_SYSINFO {
|
||||
uint32_t flightTime;
|
||||
uint32_t HeapRemaining;
|
||||
uint16_t IRQStackRemaining;
|
||||
uint16_t SystemModStackRemaining;
|
||||
uint16_t options;
|
||||
};
|
||||
|
||||
// OP custom messages
|
||||
struct UBX_OP_MAG {
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
uint16_t z;
|
||||
uint16_t Status;
|
||||
};
|
||||
|
||||
typedef union {
|
||||
uint8_t payload[0];
|
||||
struct UBX_NAV_POSLLH nav_posllh;
|
||||
@ -257,6 +279,8 @@ typedef union {
|
||||
struct UBX_NAV_TIMEUTC nav_timeutc;
|
||||
struct UBX_NAV_SVINFO nav_svinfo;
|
||||
#endif
|
||||
struct UBX_OP_SYSINFO op_sysinfo;
|
||||
struct UBX_OP_MAG op_mag;
|
||||
} UBXPayload;
|
||||
|
||||
struct UBXHeader {
|
||||
|
Loading…
x
Reference in New Issue
Block a user