mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
LP-212 save time and space if PIOS_GPS_MINIMAL
This commit is contained in:
parent
fac0213987
commit
a73b7720c5
@ -66,11 +66,13 @@ const djiMessageHandler djiHandlerTable[] = {
|
|||||||
};
|
};
|
||||||
#define DJI_HANDLER_TABLE_SIZE NELEMENTS(djiHandlerTable)
|
#define DJI_HANDLER_TABLE_SIZE NELEMENTS(djiHandlerTable)
|
||||||
|
|
||||||
|
#if !defined(PIOS_GPS_MINIMAL)
|
||||||
static bool useMag = false;
|
static bool useMag = false;
|
||||||
|
|
||||||
// detected hw version
|
// detected hw version
|
||||||
uint32_t djiHwVersion = -1;
|
uint32_t djiHwVersion = -1;
|
||||||
uint32_t djiSwVersion = -1;
|
uint32_t djiSwVersion = -1;
|
||||||
|
#endif /* !defined(PIOS_GPS_MINIMAL) */
|
||||||
|
|
||||||
|
|
||||||
// parse incoming character stream for messages in DJI binary format
|
// parse incoming character stream for messages in DJI binary format
|
||||||
@ -128,11 +130,7 @@ int parse_dji_stream(uint8_t *inputBuffer, uint16_t inputBufferLength, char *par
|
|||||||
case DJI_LEN:
|
case DJI_LEN:
|
||||||
if (inputByte > sizeof(DJIPayload)) {
|
if (inputByte > sizeof(DJIPayload)) {
|
||||||
gpsRxStats->gpsRxOverflow++;
|
gpsRxStats->gpsRxOverflow++;
|
||||||
#if defined(PIOS_GPS_MINIMAL)
|
|
||||||
restartState = RESTART_NO_ERROR;
|
|
||||||
#else
|
|
||||||
restartState = RESTART_WITH_ERROR;
|
restartState = RESTART_WITH_ERROR;
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
djiPacket->header.len = inputByte;
|
djiPacket->header.len = inputByte;
|
||||||
@ -254,7 +252,11 @@ static void parse_dji_gps(struct DJIPacket *dji, GPSPositionSensorData *gpsPosit
|
|||||||
gpsVelocity.Down = (float)djiGps->velD * 0.01f;
|
gpsVelocity.Down = (float)djiGps->velD * 0.01f;
|
||||||
GPSVelocitySensorSet(&gpsVelocity);
|
GPSVelocitySensorSet(&gpsVelocity);
|
||||||
|
|
||||||
|
#if !defined(PIOS_GPS_MINIMAL)
|
||||||
gpsPosition->Groundspeed = sqrtf(gpsVelocity.North * gpsVelocity.North + gpsVelocity.East * gpsVelocity.East);
|
gpsPosition->Groundspeed = sqrtf(gpsVelocity.North * gpsVelocity.North + gpsVelocity.East * gpsVelocity.East);
|
||||||
|
#else
|
||||||
|
gpsPosition->Groundspeed = fmaxf(gpsVelocity.North, gpsVelocity.East) * 1.2f; // within 20% or so
|
||||||
|
#endif /* !defined(PIOS_GPS_MINIMAL) */
|
||||||
// don't allow a funny number like 4.87416e-06 to show up in Uavo Browser for Heading
|
// don't allow a funny number like 4.87416e-06 to show up in Uavo Browser for Heading
|
||||||
// smallest groundspeed is 0.01f from (int)1 * (float)0.01
|
// smallest groundspeed is 0.01f from (int)1 * (float)0.01
|
||||||
// so this is saying if groundspeed is zero
|
// so this is saying if groundspeed is zero
|
||||||
@ -271,10 +273,14 @@ static void parse_dji_gps(struct DJIPacket *dji, GPSPositionSensorData *gpsPosit
|
|||||||
gpsPosition->Longitude = djiGps->lon;
|
gpsPosition->Longitude = djiGps->lon;
|
||||||
gpsPosition->Satellites = djiGps->numSV;
|
gpsPosition->Satellites = djiGps->numSV;
|
||||||
gpsPosition->PDOP = djiGps->pDOP * 0.01f;
|
gpsPosition->PDOP = djiGps->pDOP * 0.01f;
|
||||||
|
#if !defined(PIOS_GPS_MINIMAL)
|
||||||
gpsPosition->HDOP = sqrtf((float)djiGps->nDOP * (float)djiGps->nDOP + (float)djiGps->eDOP * (float)djiGps->eDOP) * 0.01f;
|
gpsPosition->HDOP = sqrtf((float)djiGps->nDOP * (float)djiGps->nDOP + (float)djiGps->eDOP * (float)djiGps->eDOP) * 0.01f;
|
||||||
if (gpsPosition->HDOP > 99.99f) {
|
if (gpsPosition->HDOP > 99.99f) {
|
||||||
gpsPosition->HDOP = 99.99f;
|
gpsPosition->HDOP = 99.99f;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
gpsPosition->HDOP = MAX(djiGps->nDOP, djiGps->eDOP) * 0.01f;
|
||||||
|
#endif
|
||||||
gpsPosition->VDOP = djiGps->vDOP * 0.01f;
|
gpsPosition->VDOP = djiGps->vDOP * 0.01f;
|
||||||
if (djiGps->flags & FLAGS_GPSFIX_OK) {
|
if (djiGps->flags & FLAGS_GPSFIX_OK) {
|
||||||
gpsPosition->Status = djiGps->fixType == FIXTYPE_3D ?
|
gpsPosition->Status = djiGps->fixType == FIXTYPE_3D ?
|
||||||
@ -309,6 +315,16 @@ static void parse_dji_gps(struct DJIPacket *dji, GPSPositionSensorData *gpsPosit
|
|||||||
|
|
||||||
|
|
||||||
#if !defined(PIOS_GPS_MINIMAL)
|
#if !defined(PIOS_GPS_MINIMAL)
|
||||||
|
void dji_load_mag_settings()
|
||||||
|
{
|
||||||
|
if (auxmagsupport_get_type() == AUXMAGSETTINGS_TYPE_DJI) {
|
||||||
|
useMag = true;
|
||||||
|
} else {
|
||||||
|
useMag = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void parse_dji_mag(struct DJIPacket *dji, __attribute__((unused)) GPSPositionSensorData *gpsPosition)
|
static void parse_dji_mag(struct DJIPacket *dji, __attribute__((unused)) GPSPositionSensorData *gpsPosition)
|
||||||
{
|
{
|
||||||
if (!useMag) {
|
if (!useMag) {
|
||||||
@ -390,14 +406,4 @@ uint32_t parse_dji_message(struct DJIPacket *dji, GPSPositionSensorData *gpsPosi
|
|||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void dji_load_mag_settings()
|
|
||||||
{
|
|
||||||
if (auxmagsupport_get_type() == AUXMAGSETTINGS_TYPE_DJI) {
|
|
||||||
useMag = true;
|
|
||||||
} else {
|
|
||||||
useMag = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // PIOS_INCLUDE_GPS_DJI_PARSER
|
#endif // PIOS_INCLUDE_GPS_DJI_PARSER
|
||||||
|
Loading…
Reference in New Issue
Block a user