/* decode skytraq subframe buffer --------------------------------------------*/ static int decode_stqsfrb(raw_t *raw) { int prn,sat,sys,id; unsigned char *p=raw->buff+4; trace(4,"decode_stqsfrb: len=%d\n",raw->len); if (raw->len<40) { trace(2,"stq subframe length error: len=%d\n",raw->len); return -1; } prn=U1(p+1); if (prn>MAXPRNGPS) prn+=MINPRNSBS-38; if (!(sat=satno(MINPRNSBS<=prn?SYS_SBS:SYS_GPS,prn))) { trace(2,"stq subframe satellite number error: prn=%d\n",prn); return -1; } sys=satsys(sat,&prn); if (sys==SYS_GPS) { id=save_subfrm(sat,raw); if (id==3) return decode_ephem(sat,raw); if (id==4) return decode_alm1 (sat,raw); if (id==5) return decode_alm2 (sat,raw); return 0; } return 0; }
/* decode ublox rxm-sfrb: subframe buffer ------------------------------------*/ static int decode_rxmsfrb(raw_t *raw) { unsigned int words[10]; int i,prn,sat,sys,id; unsigned char *p=raw->buff+6; trace(4,"decode_rxmsfrb: len=%d\n",raw->len); if (raw->len<42) { trace(2,"ubx rxmsfrb length error: len=%d\n",raw->len); return -1; } prn=U1(p+1); if (!(sat=satno(MINPRNSBS<=prn?SYS_SBS:SYS_GPS,prn))) { trace(2,"ubx rxmsfrb satellite number error: prn=%d\n",prn); return -1; } sys=satsys(sat,&prn); if (sys==SYS_GPS) { id=save_subfrm(sat,raw); if (id==3) return decode_ephem(sat,raw); if (id==4) return decode_alm1 (sat,raw); if (id==5) return decode_alm2 (sat,raw); return 0; } else if (sys==SYS_SBS) { for (i=0,p+=2;i<10;i++,p+=4) words[i]=U4(p); return sbsdecodemsg(raw->time,prn,words,&raw->sbsmsg)?3:0; } return 0; }
/* decode skytraq subframe buffer --------------------------------------------*/ static int decode_stqsfrb(raw_t *raw) { int prn,sat,id; unsigned char *p=raw->buff+4; trace(4,"decode_stqsfrb: len=%d\n",raw->len); if (raw->len<40) { trace(2,"stq subframe length error: len=%d\n",raw->len); return -1; } prn=U1(p+1); if (!(sat=satno(SYS_GPS,prn))) { trace(2,"stq subframe satellite number error: prn=%d\n",prn); return -1; } id=save_subfrm(sat,raw); if (id==3) return decode_ephem(sat,raw); if (id==4) return decode_alm1 (sat,raw); if (id==5) return decode_alm2 (sat,raw); return 0; }