Написал патч для поддержки TRK-SFRB в текущей версии драйвера u-blox,
теперь будут работать все приемники с ublox5 и ublox6.
Получается, что единственное, что мы не поддерживаем из sirf и ublox
это sirf2 xtrack.
--- a/src/rcv/ublox.c
+++ b/src/rcv/ublox.c
@@ -49,6 +49,7 @@
#define ID_RXMSFRB 0x0211 /* ubx message id: subframe buffer */
#define ID_RXMSFRBX 0x0213 /* ubx message id: raw subframe data */
#define ID_RXMRAWX 0x0215 /* ubx message id: multi-gnss raw meas data */
+#define ID_TRKSFRB 0x0302 /* ubx message id: trace subframe buffer */
#define ID_TRKD5 0x030A /* ubx message id: trace mesurement data */
#define ID_TRKMEAS 0x0310 /* ubx message id: trace mesurement data */
#define ID_TRKSFRBX 0x030F /* ubx message id: trace subframe buffer */
@@ -874,6 +875,32 @@ static int decode_trksfrbx(raw_t *raw)
}
return 0;
}
+/* decode ubx-trk-sfrb : subframe buffer ---------------------------*/
+static int decode_trksfrb (raw_t *raw)
+{
+ int prn,sat,sys;
+ unsigned char *p=raw->buff+6;
+
+ trace(4,"decode_trksfrb : len=%d\n",raw->len);
+
+ prn=U1(p+1);
+
+ if (raw->outtype) {
+ sprintf(raw->msgtype,"UBX TRK-SFRB (%4d): prn=%3d",raw->len,
+ prn);
+ }
+ if (!(sat=satno(MINPRNSBS<=prn?SYS_SBS:SYS_GPS,prn))) {
+ trace(2,"ubx trksfrb satellite number error: prn=%d\n",prn);
+ return -1;
+ }
+ sys=satsys(sat,&prn);
+
+ switch (sys) {
+ case SYS_GPS: return decode_nav (raw,sat,2);
+ case SYS_SBS: return decode_snav(raw,sat,2);
+ }
+ return 0;
+}
/* decode ublox raw message --------------------------------------------------*/
static int decode_ubx(raw_t *raw)
{
@@ -895,6 +922,7 @@ static int decode_ubx(raw_t *raw)
case ID_NAVTIME : return decode_navtime (raw);
case ID_TRKMEAS : return decode_trkmeas (raw);
case ID_TRKD5 : return decode_trkd5 (raw);
+ case ID_TRKSFRB : return decode_trksfrb (raw);
case ID_TRKSFRBX: return decode_trksfrbx(raw);
}
if (raw->outtype) {