21 if (c >=
'0' && c <=
'9')
23 if (c >=
'A' && c <=
'F')
25 if (c >=
'a' && c <=
'f')
31 p->ck_a = (uint8_t)(
p->ck_a +
byte);
32 p->ck_b = (uint8_t)(
p->ck_b +
p->ck_a);
50 }
else if (
byte == 0xB5) {
66 }
else if (
byte ==
'$') {
83 p->hex_hi = (uint8_t)v;
90 if (v < 0 || (uint8_t)((
p->hex_hi << 4) | v) !=
p->xor_sum) {
101 p->ck_a =
p->ck_b = 0;
127 p->length = (uint16_t)(
p->length | (uint16_t)(
byte << 8));
133 p->ubx_len =
p->length;
140 p->ubx_payload[
p->count] =
byte;
141 if (++
p->count ==
p->length)
146 if (
byte !=
p->ck_a) {
154 if (
byte !=
p->ck_b) {
uint8_t byte
Minimal Arduino.h stub for native unit tests.
static void reject(gnss_frame_parser_t *p)
static void fletcher(gnss_frame_parser_t *p, uint8_t byte)
static int hex_value(uint8_t c)
gnss_frame_kind_t gnss_frame_feed(gnss_frame_parser_t *p, uint8_t byte)
static void start(gnss_frame_parser_t *p, uint8_t byte)
void gnss_frame_init(gnss_frame_parser_t *parser)
#define GNSS_FRAME_UBX_MAX_PAYLOAD
#define GNSS_FRAME_NMEA_MAX_BODY
#define GNSS_FRAME_UBX_CAPTURE