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

Commit 2bfe208

Browse files
committed
Clean up bit length lookup
1 parent 37490e5 commit 2bfe208

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

src/bit_sync.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,15 @@
2222
#define BITSYNC_THRES 22
2323

2424
/* Bit lengths for different constellations. Bounded by BIT_LENGTH_MAX */
25-
#define BIT_LENGTH_GPS_L1 20
26-
#define BIT_LENGTH_SBAS_L1 2
25+
#define BIT_LENGTH_GPS_L1CA 20
26+
#define BIT_LENGTH_SBAS_L1CA 2
27+
28+
/* Table of bit lengths for each code type */
29+
static const u8 bit_length_table[CODE_COUNT] = {
30+
[CODE_GPS_L1CA] = BIT_LENGTH_GPS_L1CA,
31+
[CODE_GPS_L2CM] = 0,
32+
[CODE_SBAS_L1CA] = BIT_LENGTH_SBAS_L1CA
33+
};
2734

2835
static void histogram_update(bit_sync_t *b, s32 corr_prompt_real);
2936

@@ -39,20 +46,16 @@ static void histogram_update(bit_sync_t *b, s32 corr_prompt_real);
3946
*/
4047
void bit_sync_init(bit_sync_t *b, gnss_signal_t sid)
4148
{
49+
assert(sid_valid(sid));
4250
memset(b, 0, sizeof(bit_sync_t));
4351
b->bit_phase_ref = BITSYNC_UNSYNCED;
4452

45-
assert(sid.code == CODE_GPS_L1CA || sid.code == CODE_SBAS_L1CA);
46-
switch (sid.code) {
47-
case CODE_GPS_L1CA:
48-
b->bit_length = BIT_LENGTH_GPS_L1;
49-
break;
50-
case CODE_SBAS_L1CA:
51-
b->bit_length = BIT_LENGTH_SBAS_L1;
52-
break;
53-
default:
54-
assert("unsupported code");
53+
u8 bit_length = bit_length_table[sid.code];
54+
if (bit_length == 0) {
55+
assert(!"Unsupported code type");
56+
bit_length = 1;
5557
}
58+
b->bit_length = bit_length;
5659
}
5760

5861
/** Update bit sync and get bit integration output

0 commit comments

Comments
 (0)