Skip to content

Commit d550b88

Browse files
committed
tests: gnss: rtk: Add testsuite to validate RTCM3 protocol
To capture framing capabilities (only API so far). Signed-off-by: Luis Ubieda <luisf@croxel.com>
1 parent 9943a53 commit d550b88

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright (c) 2025 Croxel Inc.
2+
# Copyright (c) 2025 CogniPilot Foundation
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
cmake_minimum_required(VERSION 3.20.0)
6+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
7+
project(gnss_rtk_decoder_rtcm3_test)
8+
9+
target_sources(app PRIVATE src/main.c)

tests/subsys/gnss/rtk/rtcm3/prj.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
CONFIG_GNSS_RTK=y
2+
CONFIG_GNSS_RTK_PROTOCOL_RTCM3=y
3+
CONFIG_ZTEST=y
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright (c) 2025 Croxel Inc.
3+
* Copyright (c) 2025 CogniPilot Foundation
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
#include <zephyr/ztest.h>
9+
#include <zephyr/kernel.h>
10+
11+
#include <zephyr/gnss/rtk/decoder.h>
12+
13+
ZTEST_SUITE(rtk_decoder, NULL, NULL, NULL, NULL, NULL);
14+
15+
ZTEST(rtk_decoder, test_frame_is_detected)
16+
{
17+
uint8_t cmd_rtcm3[] = {
18+
0xD3, /* Sync byte */
19+
0x00, 0x04, /* Length: 4 bytes */
20+
0x4C, 0xE0, 0x00, 0x80, /* Payload */
21+
0xED, 0xED, 0xD6 /* CRC */
22+
};
23+
uint8_t *data;
24+
size_t data_len;
25+
26+
zassert_equal(0,
27+
gnss_rtk_decoder_frame_get(cmd_rtcm3, sizeof(cmd_rtcm3), &data, &data_len));
28+
zassert_equal_ptr(cmd_rtcm3, data);
29+
zassert_equal(sizeof(cmd_rtcm3), data_len);
30+
}
31+
32+
ZTEST(rtk_decoder, test_frame_is_detected_after_invalid_data)
33+
{
34+
uint8_t cmd_rtcm3[] = {
35+
0xFF, 0xFF,
36+
0xD3, /* Sync byte */
37+
0x00, 0x04, /* Length: 4 bytes */
38+
0x4C, 0xE0, 0x00, 0x80, /* Payload */
39+
0xED, 0xED, 0xD6 /* CRC */
40+
};
41+
uint8_t *data;
42+
size_t data_len;
43+
44+
zassert_equal(0,
45+
gnss_rtk_decoder_frame_get(cmd_rtcm3, sizeof(cmd_rtcm3), &data, &data_len));
46+
zassert_equal_ptr(&cmd_rtcm3[2], data);
47+
zassert_equal(sizeof(cmd_rtcm3) - 2, data_len);
48+
}
49+
50+
ZTEST(rtk_decoder, test_frame_with_invalid_crc_is_invalid_data)
51+
{
52+
uint8_t cmd_rtcm3[] = {0xD3, 0x00, 0x01, 0xFF, 0x00, 0x01, 0x02};
53+
uint8_t *data;
54+
size_t data_len;
55+
56+
zassert_equal(-ENOENT,
57+
gnss_rtk_decoder_frame_get(cmd_rtcm3, sizeof(cmd_rtcm3), &data, &data_len));
58+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright (c) 2025 Croxel Inc.
2+
# Copyright (c) 2025 CogniPilot Foundation
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
tests:
6+
gnss.rtk.decoder.rtcm3:
7+
tags: rtk
8+
platform_allow:
9+
- native_sim

0 commit comments

Comments
 (0)