Adding NAVIC support
NAVIC constellation support added. Change-Id: I30a61f53089177d4e02b617dc9b785c13e2ef6ee CRs-Fixed: 2399619
This commit is contained in:
parent
c08365ad60
commit
331c6d9893
7 changed files with 177 additions and 57 deletions
|
@ -209,6 +209,9 @@ void convertGnssConstellationType(GnssSvType& in, V2_0::GnssConstellationType& o
|
|||
case GNSS_SV_TYPE_GALILEO:
|
||||
out = V2_0::GnssConstellationType::GALILEO;
|
||||
break;
|
||||
case GNSS_SV_TYPE_NAVIC:
|
||||
out = V2_0::GnssConstellationType::IRNSS;
|
||||
break;
|
||||
case GNSS_SV_TYPE_UNKNOWN:
|
||||
default:
|
||||
out = V2_0::GnssConstellationType::UNKNOWN;
|
||||
|
|
|
@ -382,16 +382,19 @@ public:
|
|||
uint32_t mBdsXtraAge;
|
||||
uint32_t mGalXtraAge;
|
||||
uint32_t mQzssXtraAge;
|
||||
uint32_t mNavicXtraAge;
|
||||
uint32_t mGpsXtraValid;
|
||||
uint32_t mGloXtraValid;
|
||||
uint64_t mBdsXtraValid;
|
||||
uint64_t mGalXtraValid;
|
||||
uint8_t mQzssXtraValid;
|
||||
uint32_t mNavicXtraValid;
|
||||
};
|
||||
|
||||
class SystemStatusPQWP3parser : public SystemStatusNmeaBase
|
||||
{
|
||||
private:
|
||||
// todo: update for navic once available
|
||||
enum
|
||||
{
|
||||
eTalker = 0,
|
||||
|
@ -418,11 +421,13 @@ public:
|
|||
inline uint32_t getBdsXtraAge() { return mP3.mBdsXtraAge; }
|
||||
inline uint32_t getGalXtraAge() { return mP3.mGalXtraAge; }
|
||||
inline uint32_t getQzssXtraAge() { return mP3.mQzssXtraAge; }
|
||||
inline uint32_t getNavicXtraAge() { return mP3.mNavicXtraAge; }
|
||||
inline uint32_t getGpsXtraValid() { return mP3.mGpsXtraValid; }
|
||||
inline uint32_t getGloXtraValid() { return mP3.mGloXtraValid; }
|
||||
inline uint64_t getBdsXtraValid() { return mP3.mBdsXtraValid; }
|
||||
inline uint64_t getGalXtraValid() { return mP3.mGalXtraValid; }
|
||||
inline uint8_t getQzssXtraValid() { return mP3.mQzssXtraValid; }
|
||||
inline uint32_t getNavicXtraValid() { return mP3.mNavicXtraValid; }
|
||||
|
||||
SystemStatusPQWP3parser(const char *str_in, uint32_t len_in)
|
||||
: SystemStatusNmeaBase(str_in, len_in)
|
||||
|
@ -431,6 +436,7 @@ public:
|
|||
return;
|
||||
}
|
||||
memset(&mP3, 0, sizeof(mP3));
|
||||
// todo: update for navic once available
|
||||
mP3.mXtraValidMask = strtol(mField[eXtraValidMask].c_str(), NULL, 16);
|
||||
mP3.mGpsXtraAge = atoi(mField[eGpsXtraAge].c_str());
|
||||
mP3.mGloXtraAge = atoi(mField[eGloXtraAge].c_str());
|
||||
|
@ -511,21 +517,25 @@ public:
|
|||
uint64_t mBdsUnknownMask;
|
||||
uint64_t mGalUnknownMask;
|
||||
uint8_t mQzssUnknownMask;
|
||||
uint32_t mNavicUnknownMask;
|
||||
uint32_t mGpsGoodMask;
|
||||
uint32_t mGloGoodMask;
|
||||
uint64_t mBdsGoodMask;
|
||||
uint64_t mGalGoodMask;
|
||||
uint8_t mQzssGoodMask;
|
||||
uint32_t mNavicGoodMask;
|
||||
uint32_t mGpsBadMask;
|
||||
uint32_t mGloBadMask;
|
||||
uint64_t mBdsBadMask;
|
||||
uint64_t mGalBadMask;
|
||||
uint8_t mQzssBadMask;
|
||||
uint32_t mNavicBadMask;
|
||||
};
|
||||
|
||||
class SystemStatusPQWP5parser : public SystemStatusNmeaBase
|
||||
{
|
||||
private:
|
||||
// todo: update for navic once available
|
||||
enum
|
||||
{
|
||||
eTalker = 0,
|
||||
|
@ -555,16 +565,19 @@ public:
|
|||
inline uint64_t getBdsUnknownMask() { return mP5.mBdsUnknownMask; }
|
||||
inline uint64_t getGalUnknownMask() { return mP5.mGalUnknownMask; }
|
||||
inline uint8_t getQzssUnknownMask() { return mP5.mQzssUnknownMask; }
|
||||
inline uint32_t getNavicUnknownMask() { return mP5.mNavicUnknownMask; }
|
||||
inline uint32_t getGpsGoodMask() { return mP5.mGpsGoodMask; }
|
||||
inline uint32_t getGloGoodMask() { return mP5.mGloGoodMask; }
|
||||
inline uint64_t getBdsGoodMask() { return mP5.mBdsGoodMask; }
|
||||
inline uint64_t getGalGoodMask() { return mP5.mGalGoodMask; }
|
||||
inline uint8_t getQzssGoodMask() { return mP5.mQzssGoodMask; }
|
||||
inline uint32_t getNavicGoodMask() { return mP5.mNavicGoodMask; }
|
||||
inline uint32_t getGpsBadMask() { return mP5.mGpsBadMask; }
|
||||
inline uint32_t getGloBadMask() { return mP5.mGloBadMask; }
|
||||
inline uint64_t getBdsBadMask() { return mP5.mBdsBadMask; }
|
||||
inline uint64_t getGalBadMask() { return mP5.mGalBadMask; }
|
||||
inline uint8_t getQzssBadMask() { return mP5.mQzssBadMask; }
|
||||
inline uint32_t getNavicBadMask() { return mP5.mNavicBadMask; }
|
||||
|
||||
SystemStatusPQWP5parser(const char *str_in, uint32_t len_in)
|
||||
: SystemStatusNmeaBase(str_in, len_in)
|
||||
|
@ -573,6 +586,7 @@ public:
|
|||
return;
|
||||
}
|
||||
memset(&mP5, 0, sizeof(mP5));
|
||||
// todo: update for navic once available
|
||||
mP5.mGpsUnknownMask = strtol(mField[eGpsUnknownMask].c_str(), NULL, 16);
|
||||
mP5.mGloUnknownMask = strtol(mField[eGloUnknownMask].c_str(), NULL, 16);
|
||||
mP5.mBdsUnknownMask = strtol(mField[eBdsUnknownMask].c_str(), NULL, 16);
|
||||
|
@ -971,11 +985,13 @@ SystemStatusXtra::SystemStatusXtra(const SystemStatusPQWP3& nmea) :
|
|||
mBdsXtraAge(nmea.mBdsXtraAge),
|
||||
mGalXtraAge(nmea.mGalXtraAge),
|
||||
mQzssXtraAge(nmea.mQzssXtraAge),
|
||||
mNavicXtraAge(nmea.mNavicXtraAge),
|
||||
mGpsXtraValid(nmea.mGpsXtraValid),
|
||||
mGloXtraValid(nmea.mGloXtraValid),
|
||||
mBdsXtraValid(nmea.mBdsXtraValid),
|
||||
mGalXtraValid(nmea.mGalXtraValid),
|
||||
mQzssXtraValid(nmea.mQzssXtraValid)
|
||||
mQzssXtraValid(nmea.mQzssXtraValid),
|
||||
mNavicXtraValid(nmea.mNavicXtraValid)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -987,11 +1003,13 @@ bool SystemStatusXtra::equals(const SystemStatusXtra& peer)
|
|||
(mBdsXtraAge != peer.mBdsXtraAge) ||
|
||||
(mGalXtraAge != peer.mGalXtraAge) ||
|
||||
(mQzssXtraAge != peer.mQzssXtraAge) ||
|
||||
(mNavicXtraAge != peer.mNavicXtraAge) ||
|
||||
(mGpsXtraValid != peer.mGpsXtraValid) ||
|
||||
(mGloXtraValid != peer.mGloXtraValid) ||
|
||||
(mBdsXtraValid != peer.mBdsXtraValid) ||
|
||||
(mGalXtraValid != peer.mGalXtraValid) ||
|
||||
(mQzssXtraValid != peer.mQzssXtraValid)) {
|
||||
(mQzssXtraValid != peer.mQzssXtraValid) ||
|
||||
(mNavicXtraValid != peer.mNavicXtraValid)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -1060,16 +1078,19 @@ SystemStatusSvHealth::SystemStatusSvHealth(const SystemStatusPQWP5& nmea) :
|
|||
mBdsUnknownMask(nmea.mBdsUnknownMask),
|
||||
mGalUnknownMask(nmea.mGalUnknownMask),
|
||||
mQzssUnknownMask(nmea.mQzssUnknownMask),
|
||||
mNavicUnknownMask(nmea.mNavicUnknownMask),
|
||||
mGpsGoodMask(nmea.mGpsGoodMask),
|
||||
mGloGoodMask(nmea.mGloGoodMask),
|
||||
mBdsGoodMask(nmea.mBdsGoodMask),
|
||||
mGalGoodMask(nmea.mGalGoodMask),
|
||||
mQzssGoodMask(nmea.mQzssGoodMask),
|
||||
mNavicGoodMask(nmea.mNavicGoodMask),
|
||||
mGpsBadMask(nmea.mGpsBadMask),
|
||||
mGloBadMask(nmea.mGloBadMask),
|
||||
mBdsBadMask(nmea.mBdsBadMask),
|
||||
mGalBadMask(nmea.mGalBadMask),
|
||||
mQzssBadMask(nmea.mQzssBadMask)
|
||||
mQzssBadMask(nmea.mQzssBadMask),
|
||||
mNavicBadMask(nmea.mNavicBadMask)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -44,20 +44,22 @@
|
|||
|
||||
#include <gps_extended_c.h>
|
||||
|
||||
#define GPS_MIN (1) //1-32
|
||||
#define SBAS_MIN (33)
|
||||
#define GLO_MIN (65) //65-88
|
||||
#define QZSS_MIN (193) //193-197
|
||||
#define BDS_MIN (201) //201-237
|
||||
#define GAL_MIN (301) //301-336
|
||||
#define GPS_MIN (1) //1-32
|
||||
#define SBAS_MIN (33)
|
||||
#define GLO_MIN (65) //65-88
|
||||
#define QZSS_MIN (193) //193-197
|
||||
#define BDS_MIN (201) //201-237
|
||||
#define GAL_MIN (301) //301-336
|
||||
#define NAVIC_MIN (401) //401-414
|
||||
|
||||
#define GPS_NUM (32)
|
||||
#define SBAS_NUM (32)
|
||||
#define GLO_NUM (24)
|
||||
#define QZSS_NUM (5)
|
||||
#define BDS_NUM (37)
|
||||
#define GAL_NUM (36)
|
||||
#define SV_ALL_NUM (GPS_NUM+GLO_NUM+QZSS_NUM+BDS_NUM+GAL_NUM) //=134
|
||||
#define GPS_NUM (32)
|
||||
#define SBAS_NUM (32)
|
||||
#define GLO_NUM (24)
|
||||
#define QZSS_NUM (5)
|
||||
#define BDS_NUM (37)
|
||||
#define GAL_NUM (36)
|
||||
#define NAVIC_NUM (14)
|
||||
#define SV_ALL_NUM (GPS_NUM+GLO_NUM+QZSS_NUM+BDS_NUM+GAL_NUM+NAVIC_NUM) //=148
|
||||
|
||||
namespace loc_core
|
||||
{
|
||||
|
@ -258,11 +260,13 @@ public:
|
|||
uint32_t mBdsXtraAge;
|
||||
uint32_t mGalXtraAge;
|
||||
uint32_t mQzssXtraAge;
|
||||
uint32_t mNavicXtraAge;
|
||||
uint32_t mGpsXtraValid;
|
||||
uint32_t mGloXtraValid;
|
||||
uint64_t mBdsXtraValid;
|
||||
uint64_t mGalXtraValid;
|
||||
uint8_t mQzssXtraValid;
|
||||
uint32_t mNavicXtraValid;
|
||||
inline SystemStatusXtra() :
|
||||
mXtraValidMask(0),
|
||||
mGpsXtraAge(0),
|
||||
|
@ -270,11 +274,13 @@ public:
|
|||
mBdsXtraAge(0),
|
||||
mGalXtraAge(0),
|
||||
mQzssXtraAge(0),
|
||||
mNavicXtraAge(0),
|
||||
mGpsXtraValid(0),
|
||||
mGloXtraValid(0),
|
||||
mBdsXtraValid(0ULL),
|
||||
mGalXtraValid(0ULL),
|
||||
mQzssXtraValid(0) {}
|
||||
mQzssXtraValid(0),
|
||||
mNavicXtraValid(0) {}
|
||||
inline SystemStatusXtra(const SystemStatusPQWP3& nmea);
|
||||
bool equals(const SystemStatusXtra& peer);
|
||||
void dump(void);
|
||||
|
@ -309,32 +315,38 @@ public:
|
|||
uint64_t mBdsUnknownMask;
|
||||
uint64_t mGalUnknownMask;
|
||||
uint8_t mQzssUnknownMask;
|
||||
uint32_t mNavicUnknownMask;
|
||||
uint32_t mGpsGoodMask;
|
||||
uint32_t mGloGoodMask;
|
||||
uint64_t mBdsGoodMask;
|
||||
uint64_t mGalGoodMask;
|
||||
uint8_t mQzssGoodMask;
|
||||
uint32_t mNavicGoodMask;
|
||||
uint32_t mGpsBadMask;
|
||||
uint32_t mGloBadMask;
|
||||
uint64_t mBdsBadMask;
|
||||
uint64_t mGalBadMask;
|
||||
uint8_t mQzssBadMask;
|
||||
uint32_t mNavicBadMask;
|
||||
inline SystemStatusSvHealth() :
|
||||
mGpsUnknownMask(0),
|
||||
mGloUnknownMask(0),
|
||||
mBdsUnknownMask(0ULL),
|
||||
mGalUnknownMask(0ULL),
|
||||
mQzssUnknownMask(0),
|
||||
mNavicUnknownMask(0),
|
||||
mGpsGoodMask(0),
|
||||
mGloGoodMask(0),
|
||||
mBdsGoodMask(0ULL),
|
||||
mGalGoodMask(0ULL),
|
||||
mQzssGoodMask(0),
|
||||
mNavicGoodMask(0),
|
||||
mGpsBadMask(0),
|
||||
mGloBadMask(0),
|
||||
mBdsBadMask(0ULL),
|
||||
mGalBadMask(0ULL),
|
||||
mQzssBadMask(0) {}
|
||||
mQzssBadMask(0),
|
||||
mNavicBadMask(0) {}
|
||||
inline SystemStatusSvHealth(const SystemStatusPQWP5& nmea);
|
||||
bool equals(const SystemStatusSvHealth& peer);
|
||||
void dump(void);
|
||||
|
|
|
@ -3364,6 +3364,11 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
|
|||
// SV id passed to here by LocApi is 1-based.
|
||||
svNotify.gnssSvs[i].svId += (QZSS_SV_PRN_MIN - 1);
|
||||
break;
|
||||
case GNSS_SV_TYPE_NAVIC:
|
||||
if (mGnssSvIdUsedInPosAvail) {
|
||||
svUsedIdMask = mGnssSvIdUsedInPosition.navic_sv_used_ids_mask;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
svUsedIdMask = 0;
|
||||
break;
|
||||
|
@ -4384,6 +4389,19 @@ void GnssAdapter::convertSatelliteInfo(std::vector<GnssDebugSatelliteInfo>& out,
|
|||
server_perdiction_age = (float)(in.mXtra.back().mGalXtraAge);
|
||||
}
|
||||
break;
|
||||
case GNSS_SV_TYPE_NAVIC:
|
||||
svid_min = GNSS_BUGREPORT_NAVIC_MIN;
|
||||
svid_num = NAVIC_NUM;
|
||||
svid_idx = GPS_NUM+GLO_NUM+QZSS_NUM+BDS_NUM+GAL_NUM;
|
||||
if (!in.mSvHealth.empty()) {
|
||||
eph_health_good_mask = in.mSvHealth.back().mNavicGoodMask;
|
||||
eph_health_bad_mask = in.mSvHealth.back().mNavicBadMask;
|
||||
}
|
||||
if (!in.mXtra.empty()) {
|
||||
server_perdiction_available_mask = in.mXtra.back().mNavicXtraValid;
|
||||
server_perdiction_age = (float)(in.mXtra.back().mNavicXtraAge);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
@ -4541,6 +4559,7 @@ bool GnssAdapter::getDebugReport(GnssDebugReport& r)
|
|||
convertSatelliteInfo(r.mSatelliteInfo, GNSS_SV_TYPE_QZSS, reports);
|
||||
convertSatelliteInfo(r.mSatelliteInfo, GNSS_SV_TYPE_BEIDOU, reports);
|
||||
convertSatelliteInfo(r.mSatelliteInfo, GNSS_SV_TYPE_GALILEO, reports);
|
||||
convertSatelliteInfo(r.mSatelliteInfo, GNSS_SV_TYPE_NAVIC, reports);
|
||||
LOC_LOGV("getDebugReport - satellite=%zu", r.mSatelliteInfo.size());
|
||||
|
||||
return true;
|
||||
|
|
|
@ -41,12 +41,13 @@
|
|||
#define GNSS_MEASUREMENTS_MAX (128)
|
||||
#define GNSS_UTC_TIME_OFFSET (3657)
|
||||
|
||||
#define GNSS_BUGREPORT_GPS_MIN (1)
|
||||
#define GNSS_BUGREPORT_SBAS_MIN (120)
|
||||
#define GNSS_BUGREPORT_GLO_MIN (1)
|
||||
#define GNSS_BUGREPORT_QZSS_MIN (193)
|
||||
#define GNSS_BUGREPORT_BDS_MIN (1)
|
||||
#define GNSS_BUGREPORT_GAL_MIN (1)
|
||||
#define GNSS_BUGREPORT_GPS_MIN (1)
|
||||
#define GNSS_BUGREPORT_SBAS_MIN (120)
|
||||
#define GNSS_BUGREPORT_GLO_MIN (1)
|
||||
#define GNSS_BUGREPORT_QZSS_MIN (193)
|
||||
#define GNSS_BUGREPORT_BDS_MIN (1)
|
||||
#define GNSS_BUGREPORT_GAL_MIN (1)
|
||||
#define GNSS_BUGREPORT_NAVIC_MIN (1)
|
||||
|
||||
#define GNSS_MAX_NAME_LENGTH (8)
|
||||
|
||||
|
@ -349,6 +350,7 @@ typedef enum {
|
|||
GNSS_SV_TYPE_QZSS,
|
||||
GNSS_SV_TYPE_BEIDOU,
|
||||
GNSS_SV_TYPE_GALILEO,
|
||||
GNSS_SV_TYPE_NAVIC,
|
||||
} GnssSvType;
|
||||
|
||||
typedef enum {
|
||||
|
@ -518,6 +520,7 @@ typedef enum {
|
|||
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT = (1<<2),
|
||||
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT = (1<<3),
|
||||
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT = (1<<4),
|
||||
GNSS_AIDING_DATA_SV_TYPE_NAVIC_BIT = (1<<5),
|
||||
} GnssAidingDataSvTypeBits;
|
||||
|
||||
/* Gnss constellation type mask */
|
||||
|
@ -528,13 +531,15 @@ typedef enum {
|
|||
GNSS_CONSTELLATION_TYPE_QZSS_BIT = (1<<2),
|
||||
GNSS_CONSTELLATION_TYPE_BEIDOU_BIT = (1<<3),
|
||||
GNSS_CONSTELLATION_TYPE_GALILEO_BIT = (1<<4),
|
||||
GNSS_CONSTELLATION_TYPE_SBAS_BIT = (1<<5)
|
||||
GNSS_CONSTELLATION_TYPE_SBAS_BIT = (1<<5),
|
||||
GNSS_CONSTELLATION_TYPE_NAVIC_BIT = (1<<6)
|
||||
} GnssConstellationTypeBits;
|
||||
|
||||
#define GNSS_CONSTELLATION_TYPE_MASK_ALL\
|
||||
(GNSS_CONSTELLATION_TYPE_GPS_BIT | GNSS_CONSTELLATION_TYPE_GLONASS_BIT |\
|
||||
GNSS_CONSTELLATION_TYPE_QZSS_BIT | GNSS_CONSTELLATION_TYPE_BEIDOU_BIT |\
|
||||
GNSS_CONSTELLATION_TYPE_GALILEO_BIT | GNSS_CONSTELLATION_TYPE_SBAS_BIT)
|
||||
GNSS_CONSTELLATION_TYPE_GALILEO_BIT | GNSS_CONSTELLATION_TYPE_SBAS_BIT |\
|
||||
GNSS_CONSTELLATION_TYPE_NAVIC_BIT)
|
||||
|
||||
/** GNSS Signal Type and RF Band */
|
||||
typedef uint32_t GnssSignalTypeMask;
|
||||
|
@ -574,7 +579,9 @@ typedef enum {
|
|||
/** QZSS L5 RF Band */
|
||||
GNSS_SIGNAL_QZSS_L5 = (1<<16),
|
||||
/** SBAS L1 RF Band */
|
||||
GNSS_SIGNAL_SBAS_L1 = (1<<17)
|
||||
GNSS_SIGNAL_SBAS_L1 = (1<<17),
|
||||
/** NAVIC L5 RF Band */
|
||||
GNSS_SIGNAL_NAVIC_L5 = (1<<18)
|
||||
} GnssSignalTypeBits;
|
||||
|
||||
#define GNSS_SIGNAL_TYPE_MASK_ALL\
|
||||
|
@ -583,7 +590,8 @@ typedef enum {
|
|||
GNSS_SIGNAL_GALILEO_E1 | GNSS_SIGNAL_GALILEO_E5A | GNSS_SIGNAL_GALILEO_E5B |\
|
||||
GNSS_SIGNAL_BEIDOU_B1I | GNSS_SIGNAL_BEIDOU_B1C | GNSS_SIGNAL_BEIDOU_B2I|\
|
||||
GNSS_SIGNAL_BEIDOU_B2AI | GNSS_SIGNAL_QZSS_L1CA | GNSS_SIGNAL_QZSS_L1S |\
|
||||
GNSS_SIGNAL_QZSS_L2| GNSS_SIGNAL_QZSS_L5 | GNSS_SIGNAL_SBAS_L1)
|
||||
GNSS_SIGNAL_QZSS_L2| GNSS_SIGNAL_QZSS_L5 | GNSS_SIGNAL_SBAS_L1 |\
|
||||
GNSS_SIGNAL_NAVIC_L5)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -599,7 +607,9 @@ typedef enum
|
|||
/**< GLONASS satellite. */
|
||||
GNSS_LOC_SV_SYSTEM_BDS = 5,
|
||||
/**< BDS satellite. */
|
||||
GNSS_LOC_SV_SYSTEM_QZSS = 6
|
||||
GNSS_LOC_SV_SYSTEM_QZSS = 6,
|
||||
/**< QZSS satellite. */
|
||||
GNSS_LOC_SV_SYSTEM_NAVIC = 7
|
||||
/**< QZSS satellite. */
|
||||
} Gnss_LocSvSystemEnumType;
|
||||
|
||||
|
@ -622,7 +632,8 @@ typedef enum {
|
|||
GNSS_LOC_SIGNAL_TYPE_QZSS_L2C_L = 15, /**< QZSS L2C_L RF Band */
|
||||
GNSS_LOC_SIGNAL_TYPE_QZSS_L5_Q = 16, /**< QZSS L5_Q RF Band */
|
||||
GNSS_LOC_SIGNAL_TYPE_SBAS_L1_CA = 17, /**< SBAS L1_CA RF Band */
|
||||
GNSS_LOC_MAX_NUMBER_OF_SIGNAL_TYPES = 18 /**< Maximum number of signal types */
|
||||
GNSS_LOC_SIGNAL_TYPE_NAVIC_L5 = 18, /**< NAVIC L5 RF Band */
|
||||
GNSS_LOC_MAX_NUMBER_OF_SIGNAL_TYPES = 19 /**< Maximum number of signal types */
|
||||
} Gnss_LocSignalEnumType;
|
||||
|
||||
typedef uint64_t GnssDataMask;
|
||||
|
@ -799,6 +810,7 @@ typedef struct {
|
|||
uint64_t galSvUsedIdsMask;
|
||||
uint64_t bdsSvUsedIdsMask;
|
||||
uint64_t qzssSvUsedIdsMask;
|
||||
uint64_t navicSvUsedIdsMask;
|
||||
} GnssLocationSvUsedInPosition;
|
||||
|
||||
typedef struct {
|
||||
|
@ -812,7 +824,8 @@ typedef struct {
|
|||
For SBAS: 120 to 151
|
||||
For QZSS-L1CA:193 to 197
|
||||
For BDS: 201 to 237
|
||||
For GAL: 301 to 336 */
|
||||
For GAL: 301 to 336
|
||||
For NAVIC: 401 to 414 */
|
||||
uint16_t gnssSvId;
|
||||
} GnssMeasUsageInfo;
|
||||
|
||||
|
@ -907,7 +920,8 @@ typedef union {
|
|||
GnssSystemTimeStructType galSystemTime;
|
||||
GnssSystemTimeStructType bdsSystemTime;
|
||||
GnssSystemTimeStructType qzssSystemTime;
|
||||
GnssGloTimeStructType gloSystemTime;
|
||||
GnssGloTimeStructType gloSystemTime;
|
||||
GnssSystemTimeStructType navicSystemTime;
|
||||
} SystemTimeStructUnion;
|
||||
/** Time applicability of PVT report */
|
||||
typedef struct {
|
||||
|
|
|
@ -434,6 +434,8 @@ typedef uint32_t GnssAdditionalSystemInfoMask;
|
|||
#define BDS_SV_PRN_MAX 235
|
||||
#define GAL_SV_PRN_MIN 301
|
||||
#define GAL_SV_PRN_MAX 336
|
||||
#define NAVIC_SV_PRN_MIN 401
|
||||
#define NAVIC_SV_PRN_MAX 414
|
||||
|
||||
typedef uint32_t LocPosTechMask;
|
||||
#define LOC_POS_TECH_MASK_DEFAULT ((LocPosTechMask)0x00000000)
|
||||
|
@ -467,6 +469,7 @@ typedef struct {
|
|||
uint64_t gal_sv_used_ids_mask;
|
||||
uint64_t bds_sv_used_ids_mask;
|
||||
uint64_t qzss_sv_used_ids_mask;
|
||||
uint64_t navic_sv_used_ids_mask;
|
||||
} GnssSvUsedInPosition;
|
||||
|
||||
typedef struct {
|
||||
|
@ -594,6 +597,8 @@ typedef uint32_t GnssSignalTypeMask;
|
|||
#define GNSS_SIGNAL_QZSS_L5 ((GnssSignalTypeMask)0x00010000ul)
|
||||
/** SBAS L1 RF Band */
|
||||
#define GNSS_SIGNAL_SBAS_L1 ((GnssSignalTypeMask)0x00020000ul)
|
||||
/** NAVIC L5 RF Band */
|
||||
#define GNSS_SIGNAL_NAVIC_L5 ((GnssSignalTypeMask)0x00040000ul)
|
||||
|
||||
typedef uint16_t GnssMeasUsageStatusBitMask;
|
||||
/** Used in fix */
|
||||
|
@ -1352,26 +1357,32 @@ typedef struct
|
|||
|
||||
|
||||
typedef uint64_t GpsSvMeasHeaderFlags;
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_LEAP_SECOND 0x00000001
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_CLOCK_FREQ 0x00000002
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_AP_TIMESTAMP 0x00000004
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_GLO_INTER_SYSTEM_BIAS 0x00000008
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_BDS_INTER_SYSTEM_BIAS 0x00000010
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_GAL_INTER_SYSTEM_BIAS 0x00000020
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_GLO_INTER_SYSTEM_BIAS 0x00000040
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_GLO_INTER_SYSTEM_BIAS 0x00000080
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_BDS_INTER_SYSTEM_BIAS 0x00000100
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_SYSTEM_TIME 0x00000200
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_SYSTEM_TIME 0x00000400
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_SYSTEM_TIME 0x00000800
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_QZSS_SYSTEM_TIME 0x00001000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GLO_SYSTEM_TIME 0x00002000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_SYSTEM_TIME_EXT 0x00004000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_SYSTEM_TIME_EXT 0x00008000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_SYSTEM_TIME_EXT 0x00010000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_QZSS_SYSTEM_TIME_EXT 0x00020000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPSL1L5_TIME_BIAS 0x00040000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GALE1E5A_TIME_BIAS 0x00080000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_LEAP_SECOND 0x00000001
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_CLOCK_FREQ 0x00000002
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_AP_TIMESTAMP 0x00000004
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_GLO_INTER_SYSTEM_BIAS 0x00000008
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_BDS_INTER_SYSTEM_BIAS 0x00000010
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_GAL_INTER_SYSTEM_BIAS 0x00000020
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_GLO_INTER_SYSTEM_BIAS 0x00000040
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_GLO_INTER_SYSTEM_BIAS 0x00000080
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_BDS_INTER_SYSTEM_BIAS 0x00000100
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_SYSTEM_TIME 0x00000200
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_SYSTEM_TIME 0x00000400
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_SYSTEM_TIME 0x00000800
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_QZSS_SYSTEM_TIME 0x00001000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GLO_SYSTEM_TIME 0x00002000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_SYSTEM_TIME_EXT 0x00004000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_SYSTEM_TIME_EXT 0x00008000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_SYSTEM_TIME_EXT 0x00010000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_QZSS_SYSTEM_TIME_EXT 0x00020000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPSL1L5_TIME_BIAS 0x00040000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GALE1E5A_TIME_BIAS 0x00080000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GPS_NAVIC_INTER_SYSTEM_BIAS 0x00100000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GAL_NAVIC_INTER_SYSTEM_BIAS 0x00200000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_GLO_NAVIC_INTER_SYSTEM_BIAS 0x00400000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_BDS_NAVIC_INTER_SYSTEM_BIAS 0x00800000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_NAVIC_SYSTEM_TIME 0x01000000
|
||||
#define GNSS_SV_MEAS_HEADER_HAS_NAVIC_SYSTEM_TIME_EXT 0x02000000
|
||||
|
||||
|
||||
|
||||
|
@ -1393,6 +1404,10 @@ typedef struct
|
|||
Gnss_InterSystemBiasStructType bdsGloInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType galGloInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType galBdsInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType gpsNavicInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType galNavicInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType gloNavicInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType bdsNavicInterSystemBias;
|
||||
Gnss_InterSystemBiasStructType gpsL1L5TimeBias;
|
||||
Gnss_InterSystemBiasStructType galE1E5aTimeBias;
|
||||
|
||||
|
@ -1400,6 +1415,7 @@ typedef struct
|
|||
GnssSystemTimeStructType galSystemTime;
|
||||
GnssSystemTimeStructType bdsSystemTime;
|
||||
GnssSystemTimeStructType qzssSystemTime;
|
||||
GnssSystemTimeStructType navicSystemTime;
|
||||
GnssGloTimeStructType gloSystemTime;
|
||||
|
||||
/** GPS system RTC time information. */
|
||||
|
@ -1410,6 +1426,8 @@ typedef struct
|
|||
Gnss_LocGnssTimeExtStructType bdsSystemTimeExt;
|
||||
/** QZSS system RTC time information. */
|
||||
Gnss_LocGnssTimeExtStructType qzssSystemTimeExt;
|
||||
/** NAVIC system RTC time information. */
|
||||
Gnss_LocGnssTimeExtStructType navicSystemTimeExt;
|
||||
|
||||
} GnssSvMeasurementHeader;
|
||||
|
||||
|
@ -2025,10 +2043,11 @@ typedef struct
|
|||
/* Mask indicating enabled or disabled constellations */
|
||||
typedef uint64_t GnssSvTypesMask;
|
||||
typedef enum {
|
||||
GNSS_SV_TYPES_MASK_GLO_BIT = (1<<0),
|
||||
GNSS_SV_TYPES_MASK_BDS_BIT = (1<<1),
|
||||
GNSS_SV_TYPES_MASK_QZSS_BIT = (1<<2),
|
||||
GNSS_SV_TYPES_MASK_GAL_BIT = (1<<3),
|
||||
GNSS_SV_TYPES_MASK_GLO_BIT = (1<<0),
|
||||
GNSS_SV_TYPES_MASK_BDS_BIT = (1<<1),
|
||||
GNSS_SV_TYPES_MASK_QZSS_BIT = (1<<2),
|
||||
GNSS_SV_TYPES_MASK_GAL_BIT = (1<<3),
|
||||
GNSS_SV_TYPES_MASK_NAVIC_BIT = (1<<4),
|
||||
} GnssSvTypesMaskBits;
|
||||
|
||||
/* This SV Type config is injected directly to GNSS Adapter
|
||||
|
|
|
@ -123,6 +123,7 @@ typedef struct loc_sv_cache_info_s
|
|||
uint32_t gal_used_mask;
|
||||
uint32_t qzss_used_mask;
|
||||
uint32_t bds_used_mask;
|
||||
uint32_t navic_used_mask;
|
||||
uint32_t gps_l1_count;
|
||||
uint32_t gps_l5_count;
|
||||
uint32_t glo_g1_count;
|
||||
|
@ -133,6 +134,7 @@ typedef struct loc_sv_cache_info_s
|
|||
uint32_t qzss_l5_count;
|
||||
uint32_t bds_b1_count;
|
||||
uint32_t bds_b2_count;
|
||||
uint32_t navic_l5_count;
|
||||
float hdop;
|
||||
float pdop;
|
||||
float vdop;
|
||||
|
@ -324,6 +326,9 @@ static uint32_t convert_signalType_to_signalId(GnssSignalTypeMask signalType)
|
|||
case GNSS_SIGNAL_BEIDOU_B2AI:
|
||||
signalId = SIGNAL_ID_BDS_B2A;
|
||||
break;
|
||||
case GNSS_SIGNAL_NAVIC_L5:
|
||||
signalId = SIGNAL_ID_NAVIC_L5SPS;
|
||||
break;
|
||||
default:
|
||||
signalId = SIGNAL_ID_ALL_SIGNALS;
|
||||
}
|
||||
|
@ -418,6 +423,16 @@ static loc_nmea_sv_meta* loc_nmea_sv_meta_init(loc_nmea_sv_meta& sv_meta,
|
|||
sv_meta.svCount = sv_cache_info.bds_b2_count;
|
||||
}
|
||||
break;
|
||||
case GNSS_SV_TYPE_NAVIC:
|
||||
sv_meta.talker[0] = 'G';
|
||||
sv_meta.talker[1] = 'I';
|
||||
sv_meta.mask = sv_cache_info.navic_used_mask;
|
||||
// NAVIC SV ids are from 401-414. So keep svIdOffset 0
|
||||
sv_meta.systemId = SYSTEM_ID_NAVIC;
|
||||
if (GNSS_SIGNAL_NAVIC_L5 == signalType) {
|
||||
sv_meta.svCount = sv_cache_info.navic_l5_count;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOC_LOGE("NMEA Error unknow constellation type: %d", svType);
|
||||
return NULL;
|
||||
|
@ -428,7 +443,8 @@ static loc_nmea_sv_meta* loc_nmea_sv_meta_init(loc_nmea_sv_meta& sv_meta,
|
|||
(sv_cache_info.glo_used_mask ? 1 : 0) +
|
||||
(sv_cache_info.gal_used_mask ? 1 : 0) +
|
||||
(sv_cache_info.qzss_used_mask ? 1 : 0) +
|
||||
(sv_cache_info.bds_used_mask ? 1 : 0) > 1)
|
||||
(sv_cache_info.bds_used_mask ? 1 : 0) +
|
||||
(sv_cache_info.navic_used_mask ? 1 : 0) > 1)
|
||||
{
|
||||
// If GPS, GLONASS, Galileo, QZSS, BDS etc. are combined
|
||||
// to obtain the reported position solution,
|
||||
|
@ -701,6 +717,9 @@ static void loc_nmea_generate_GSV(const GnssSvNotification &svNotify,
|
|||
case GNSS_SV_TYPE_SBAS:
|
||||
signalType = GNSS_SIGNAL_SBAS_L1;
|
||||
break;
|
||||
case GNSS_SV_TYPE_NAVIC:
|
||||
signalType = GNSS_SIGNAL_NAVIC_L5;
|
||||
break;
|
||||
default:
|
||||
LOC_LOGE("NMEA Error unknow constellation type: %d",
|
||||
svNotify.gnssSvs[svNumber - 1].type);
|
||||
|
@ -1815,6 +1834,19 @@ void loc_nmea_generate_sv(const GnssSvNotification &svNotify,
|
|||
sv_cache_info.bds_b1_count++;
|
||||
}
|
||||
}
|
||||
else if (GNSS_SV_TYPE_NAVIC == svNotify.gnssSvs[svNumber - 1].type)
|
||||
{
|
||||
// cache the used in fix mask, as it will be needed to send $PQGSA
|
||||
// during the position report
|
||||
if (GNSS_SV_OPTIONS_USED_IN_FIX_BIT ==
|
||||
(svNotify.gnssSvs[svNumber - 1].gnssSvOptionsMask &
|
||||
GNSS_SV_OPTIONS_USED_IN_FIX_BIT))
|
||||
{
|
||||
sv_cache_info.navic_used_mask |= (1 << (svNotify.gnssSvs[svNumber - 1].svId - 1));
|
||||
}
|
||||
// GNSS_SIGNAL_NAVIC_L5 is the only signal type for NAVIC
|
||||
sv_cache_info.navic_l5_count++;
|
||||
}
|
||||
}
|
||||
|
||||
loc_nmea_sv_meta sv_meta;
|
||||
|
|
Loading…
Reference in a new issue