12 fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, #c); \
18 v->
itow_ms = 100000U + t / 1000U;
22 v->
lat_e7 = 378719000 + (int32_t)(t / 1000U);
24 v->
hmsl_mm = 120000 + (int32_t)(t / 100U);
37static void record(
void* ctx, uint8_t type,
const void* data, uint8_t len) {
43 memcpy(&s->
last, data, len);
55 memset(
r, 0,
sizeof(*
r));
59 r->core.sink.ctx = &
r->sink;
65 for (;
r->now <
until;
r->now += 1000U) {
77 CHECK(
r.core.detected_baud == 9600);
78 CHECK(
r.core.baud == 115200 &&
r.module.module_baud == 115200);
79 CHECK(
r.module.baud_changes == 1 &&
r.module.acks == 1);
80 CHECK(!
r.module.nmea_on &&
r.module.pvt_on);
81 CHECK(
r.module.rate_ms == 100 &&
r.module.dynmodel == 8);
82 CHECK(
r.sink.n >= 95 &&
r.sink.n <= 100);
85 truth(
r.sink.last.t_us, &want);
86 CHECK(
r.sink.last.fix_type == 3 &&
r.sink.last.num_sv == 9);
98 CHECK(
r.core.detected_baud == 115200);
99 CHECK(
r.module.baud_changes == 0);
106 r.module.nak_next =
true;
117 unsigned before =
r.sink.n;
118 r.module.mute =
true;
124 CHECK(
r.sink.n > before + 50);
133 CHECK(
r.sink.last.pps_us == 5999123U);
142 puts(
"gnss_core: all tests passed");
void fake_gnss_power_cycle(fake_gnss_t *f, uint32_t now_us)
size_t fake_gnss_emit(fake_gnss_t *f, uint32_t now_us, uint8_t *out, size_t cap)
gnss_io_t fake_gnss_io(fake_gnss_t *f)
void fake_gnss_init(fake_gnss_t *f, uint32_t baud, fake_gnss_truth_t truth)
void gnss_core_feed(gnss_core_t *c, const uint8_t *bytes, size_t n, uint32_t now_us)
void gnss_core_set_pps(gnss_core_t *c, uint32_t edge_us)
void gnss_core_init(gnss_core_t *c, uint32_t now_us)
void gnss_core_poll(gnss_core_t *c, uint32_t now_us)
*brief user defined string literal for JSON values *sa std::size_t n
static uint32_t until(uint32_t now, uint32_t t)
static void rig(rig_t *r, uint32_t module_baud)
static void truth(uint32_t t, ubx_pvt_t *v)
static void test_warm_module_at_115200_needs_no_baud_change(void)
static void test_pps_is_stamped(void)
static void test_nak_restarts_and_recovers(void)
static void test_silence_then_power_cycle_reconfigures(void)
static void record(void *ctx, uint8_t type, const void *data, uint8_t len)
static void test_cold_start_at_9600_reaches_10hz(void)