Skip to content
This repository was archived by the owner on Apr 13, 2021. It is now read-only.

Commit 432250e

Browse files
committed
Add QZSS support
1 parent 4a26c59 commit 432250e

File tree

6 files changed

+75
-13
lines changed

6 files changed

+75
-13
lines changed

include/libswiftnav/signal.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717

1818
#define NUM_SATS_GPS 32
1919
#define NUM_SATS_SBAS 22
20-
#define NUM_SATS (NUM_SATS_GPS + NUM_SATS_SBAS)
20+
#define NUM_SATS_QZSS 5
21+
#define NUM_SATS (NUM_SATS_GPS + NUM_SATS_SBAS + NUM_SATS_QZSS)
2122

2223
enum constellation {
2324
CONSTELLATION_GPS,
2425
CONSTELLATION_SBAS,
26+
CONSTELLATION_QZSS,
2527
CONSTELLATION_COUNT,
2628
};
2729

@@ -32,6 +34,7 @@ enum band {
3234

3335
#define GPS_FIRST_PRN 1
3436
#define SBAS_FIRST_PRN 120
37+
#define QZSS_FIRST_PRN 193
3538

3639
#define SID_STR_LEN_MAX 16
3740

@@ -80,4 +83,3 @@ gnss_signal_t sid_from_index(u32 i);
8083
u32 sid_to_index(gnss_signal_t sid);
8184

8285
#endif /* LIBSWIFTNAV_SIGNAL_H */
83-

python/swiftnav/signal.pxd

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,9 @@ from libcpp cimport bool
1212

1313
cdef extern from "libswiftnav/signal.h":
1414
enum:
15-
GPS_L1_SATS
16-
WAAS_SATS
17-
EGNOS_SATS
18-
GAGAN_SATS
19-
MSAS_SATS
20-
SDCM_SATS
21-
SBAS_SATS
22-
ALL_SATS
2315
CONSTELLATION_GPS
2416
CONSTELLATION_SBAS
17+
CONSTELLATION_QZSS
2518
BAND_L1
2619

2720
ctypedef struct gnss_signal_t:

src/almanac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ void calc_sat_state_almanac(const almanac_t* alm, double t, s16 week,
176176
{
177177
switch(alm->sid.constellation) {
178178
case CONSTELLATION_GPS:
179+
case CONSTELLATION_QZSS:
179180
gps_calc_sat_state_almanac(alm, t, week, pos, vel);
180181
break;
181182
case CONSTELLATION_SBAS:
@@ -241,4 +242,3 @@ double calc_sat_doppler_almanac(const almanac_t* alm, double t, s16 week,
241242
}
242243

243244
/** \} */
244-

src/ephemeris.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,7 @@ bool ephemeris_equal(const ephemeris_t *a, const ephemeris_t *b)
468468

469469
switch (a->sid.constellation) {
470470
case CONSTELLATION_GPS:
471+
case CONSTELLATION_QZSS:
471472
return ephemeris_kepler_equal(&a->kepler, &b->kepler);
472473
case CONSTELLATION_SBAS:
473474
return ephemeris_xyz_equal(&a->xyz, &b->xyz);
@@ -476,4 +477,3 @@ bool ephemeris_equal(const ephemeris_t *a, const ephemeris_t *b)
476477
return false;
477478
}
478479
}
479-

src/prns.c

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
static const u8 gps_ca_codes[][128];
1818
static const u8 sbas_ca_codes[][128];
19+
static const u8 qzss_ca_codes[][128];
1920

2021
/** \defgroup prns Spreading Codes
2122
*
@@ -44,6 +45,9 @@ const u8* ca_code(gnss_signal_t sid)
4445
case CONSTELLATION_SBAS:
4546
assert(sid.sat - SBAS_FIRST_PRN < NUM_SATS_SBAS);
4647
return sbas_ca_codes[sid.sat - SBAS_FIRST_PRN];
48+
case CONSTELLATION_QZSS:
49+
assert(sid.sat - QZSS_FIRST_PRN < NUM_SATS_QZSS);
50+
return qzss_ca_codes[sid.sat - QZSS_FIRST_PRN];
4751
default:
4852
assert("unsupported constellation");
4953
}
@@ -557,3 +561,49 @@ static const u8 sbas_ca_codes[NUM_SATS_SBAS][128] = {
557561
0xA3,0x24,0xB3,0x35,0x07,0x0E,0x45,0x50,0x67,0xBD,0x77,0xAE,0x06,0x54,0x7B,0x66}
558562
};
559563

564+
static const u8 qzss_ca_codes[NUM_SATS_QZSS][128] = {
565+
{0x75,0xC3,0x02,0x81,0x09,0x62,0x80,0x42,0xAC,0xFF,0x2B,0xFE,0x06,0x96,0xEF,0x02,
566+
0xBF,0x02,0x18,0x5C,0x5E,0x7C,0x47,0xC8,0x75,0x24,0x56,0x6F,0xBC,0xC2,0xBF,0x6E,
567+
0x19,0xC8,0x0F,0x8E,0x02,0x39,0x47,0x52,0x02,0xF0,0xF6,0xD6,0xD5,0x3D,0xD6,0xE4,
568+
0xE3,0x5D,0xBD,0x6E,0xA0,0x36,0x39,0x5D,0xF7,0xAA,0x79,0x68,0x08,0xF9,0xD6,0xA7,
569+
0xA2,0x6E,0x13,0x13,0xB5,0x89,0x2F,0x90,0x3F,0x65,0xE8,0x93,0x8F,0x74,0x19,0x87,
570+
0xB9,0xA4,0x75,0x69,0x72,0xAB,0xC6,0x69,0x4E,0xF5,0x7F,0xBA,0xFD,0x40,0x4A,0xCB,
571+
0x4E,0x4B,0x4A,0x06,0x93,0x64,0x80,0xC1,0xD9,0xA2,0xA2,0x02,0x82,0x85,0xD4,0xB9,
572+
0xD2,0x93,0xB1,0x54,0xF4,0xC2,0xEE,0x78,0x43,0x4C,0xB3,0x9C,0xF7,0x2B,0xF7,0xA8},
573+
574+
{0x1E,0x2E,0x85,0x9C,0xEF,0xE5,0xC0,0x7B,0x34,0xB7,0x6D,0xDE,0x34,0xB5,0x44,0xA5,
575+
0x90,0xC7,0x34,0xBB,0x48,0x21,0x23,0x69,0x43,0x4B,0x11,0x65,0x2D,0x82,0x3D,0x48,
576+
0x6F,0x9E,0xD0,0xCC,0xD5,0x59,0xF7,0x57,0xDF,0x01,0x06,0x51,0x2E,0xBA,0x70,0xBC,
577+
0x5A,0x0D,0x7B,0x86,0x1C,0xBB,0x0E,0x45,0xCC,0xDC,0xC9,0xD6,0x6B,0x36,0x36,0xDF,
578+
0x29,0x1D,0x7E,0x5C,0x26,0xC1,0x34,0x6F,0x12,0x4E,0x3C,0x8C,0xDA,0xD4,0xBE,0xF5,
579+
0xA3,0x97,0x9A,0x00,0x97,0xB5,0x02,0xD4,0xB4,0xBE,0x1B,0xA0,0x75,0x11,0x1D,0x3E,
580+
0xAF,0xFF,0x03,0x37,0xCF,0x2A,0x82,0x94,0x9F,0x64,0xF1,0x00,0x31,0xA2,0x33,0xF2,
581+
0x50,0xE8,0x18,0x1D,0x23,0xFF,0x81,0x62,0x96,0xC2,0xFB,0x61,0x69,0x27,0xC4,0xFC},
582+
583+
{0x06,0x15,0xF3,0x2C,0x51,0x86,0x0F,0x9B,0x4C,0x3C,0x1E,0xB3,0x7B,0x26,0x0C,0xBE,
584+
0x6F,0xEA,0x1F,0x6F,0x57,0x74,0x83,0xCE,0x31,0x51,0x22,0x8A,0x44,0x67,0x23,0x8C,
585+
0xD2,0x64,0x9B,0xA8,0xCF,0xD1,0xA6,0x00,0x2A,0xE0,0xB2,0x18,0x1F,0xE6,0x3E,0xBE,
586+
0x0F,0x4B,0xBD,0xD5,0x1E,0x08,0x29,0xA2,0x87,0x5E,0xB2,0x7F,0x22,0xE1,0x0B,0xB0,
587+
0x33,0xC8,0xF0,0x14,0xDB,0x5F,0x38,0x5C,0x46,0x99,0xE7,0x82,0xE1,0x19,0xB0,0x75,
588+
0xD0,0xA7,0x0A,0x8C,0xD7,0xD1,0x45,0x83,0xFA,0xE1,0x91,0xF9,0xBB,0x3D,0xA7,0xF7,
589+
0xED,0x93,0xDD,0xB9,0xDA,0x08,0x03,0x90,0xD3,0x88,0x5C,0xBE,0xB4,0x0C,0xF2,0x92,
590+
0x5B,0x53,0xFB,0xFC,0x2C,0x08,0x8E,0x2E,0x27,0xB0,0x5A,0xEC,0xB8,0x5E,0xDE,0x92},
591+
592+
{0x4E,0xB5,0xB2,0x3F,0x6A,0xAD,0x60,0x3A,0x27,0x8C,0x46,0xB1,0x95,0xDE,0xF4,0xFD,
593+
0x92,0x29,0xCC,0x43,0x0B,0xDC,0xE0,0xBA,0x6F,0x17,0xB9,0x06,0x59,0xDC,0x7B,0xD3,
594+
0xE3,0x83,0x6B,0x94,0x8A,0x68,0x10,0xA7,0xE3,0x44,0xBF,0xE7,0x89,0x73,0xD4,0xB1,
595+
0xA5,0x9B,0xEE,0x6C,0x13,0x11,0xDE,0x16,0x75,0xD1,0xD0,0x21,0xDF,0xC4,0xB9,0xBD,
596+
0x77,0xE0,0x5B,0xEE,0x2B,0x85,0x1C,0xC4,0xE8,0xBE,0xE6,0xA8,0x42,0x7A,0x99,0xF4,
597+
0x89,0x34,0xF9,0x29,0x16,0xEC,0x91,0x27,0x11,0x7F,0x26,0x74,0xD1,0xFA,0x83,0x89,
598+
0x22,0x95,0xC4,0x13,0xB1,0xE5,0x84,0x8D,0x35,0x0F,0x1C,0x87,0x2C,0x44,0xB4,0xB2,
599+
0x69,0x70,0x50,0x5B,0x03,0xCD,0xA2,0xC9,0x31,0xED,0x3E,0x4D,0x8E,0x31,0x99,0x98},
600+
601+
{0xA7,0xC5,0xFD,0x4A,0x43,0x97,0x87,0x97,0xC4,0xD6,0xF7,0x78,0x8A,0x6D,0x35,0x7B,
602+
0xF8,0xB3,0x37,0x22,0xCC,0xA5,0x41,0x6A,0x61,0x71,0xAB,0x17,0xD1,0xD0,0xF3,0x39,
603+
0x0A,0x48,0x9A,0xDF,0xB3,0xAD,0x87,0xFE,0xCB,0x09,0x24,0x36,0x4B,0xD7,0x84,0x91,
604+
0x2C,0x06,0x7B,0xDB,0xC3,0xA4,0x06,0x3A,0x74,0xA6,0xAC,0x5D,0xFE,0x3A,0x58,0x54,
605+
0xE1,0xCE,0x0F,0xDF,0x91,0xAA,0x3F,0x89,0x2E,0xB0,0x3B,0x04,0x6D,0xE2,0x6A,0x0C,
606+
0x97,0x16,0x25,0xF2,0x45,0x08,0x43,0x21,0xEE,0xB4,0x6C,0x81,0xD6,0x2F,0xEB,0xA0,
607+
0xFE,0x13,0x48,0xE8,0x6B,0x9C,0xC3,0x3C,0x1A,0x71,0x8E,0x5E,0x2A,0xE6,0xA0,0xE7,
608+
0x94,0x08,0x3D,0x49,0x4F,0x9A,0xB1,0x49,0xA4,0xBC,0x8F,0xD9,0x4E,0x9D,0x50,0x60}
609+
};

src/signal.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ typedef struct {
2525

2626
static const char * constellation_strs[CONSTELLATION_COUNT] = {
2727
[CONSTELLATION_GPS] = "GPS",
28-
[CONSTELLATION_SBAS] = "SBAS"
28+
[CONSTELLATION_SBAS] = "SBAS",
29+
[CONSTELLATION_QZSS] = "QZSS"
2930
};
3031

3132
static const char * band_strs[BAND_COUNT] = {
@@ -36,8 +37,10 @@ static const char * unknown_str = "?";
3637

3738
static u16 sat_get_gps(u32 local_index);
3839
static u16 sat_get_sbas(u32 local_index);
40+
static u16 sat_get_qzss(u32 local_index);
3941
static u32 local_index_get_gps(u16 sat);
4042
static u32 local_index_get_sbas(u16 sat);
43+
static u32 local_index_get_qzss(u16 sat);
4144

4245
static const sat_group_t sat_groups[CONSTELLATION_COUNT] = {
4346
[CONSTELLATION_GPS] = {
@@ -47,6 +50,10 @@ static const sat_group_t sat_groups[CONSTELLATION_COUNT] = {
4750
[CONSTELLATION_SBAS] = {
4851
CONSTELLATION_SBAS, BAND_L1, NUM_SATS_SBAS,
4952
sat_get_sbas, local_index_get_sbas
53+
},
54+
[CONSTELLATION_QZSS] = {
55+
CONSTELLATION_QZSS, BAND_L1, NUM_SATS_QZSS,
56+
sat_get_qzss, local_index_get_qzss
5057
}
5158
};
5259

@@ -60,6 +67,11 @@ static u16 sat_get_sbas(u32 local_index)
6067
return local_index + SBAS_FIRST_PRN;
6168
}
6269

70+
static u16 sat_get_qzss(u32 local_index)
71+
{
72+
return local_index + QZSS_FIRST_PRN;
73+
}
74+
6375
static u32 local_index_get_gps(u16 sat)
6476
{
6577
return sat - GPS_FIRST_PRN;
@@ -70,6 +82,11 @@ static u32 local_index_get_sbas(u16 sat)
7082
return sat - SBAS_FIRST_PRN;
7183
}
7284

85+
static u32 local_index_get_qzss(u16 sat)
86+
{
87+
return sat - QZSS_FIRST_PRN;
88+
}
89+
7390
int sid_to_string(char *s, int n, gnss_signal_t sid)
7491
{
7592
const char *constellation_str = (sid.constellation < CONSTELLATION_COUNT) ?

0 commit comments

Comments
 (0)