Zephyr Project API
4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
checksum.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2025 Croxel Inc.
3
* Copyright (c) 2025 CogniPilot Foundation
4
*
5
* SPDX-License-Identifier: Apache-2.0
6
*/
7
8
#ifndef ZEPHYR_MODEM_UBX_CHECKSUM_
9
#define ZEPHYR_MODEM_UBX_CHECKSUM_
10
13
#define UBX_CSUM_A(...) UBX_CSUM_A_(__VA_ARGS__)
14
15
#define UBX_CSUM_A_(...) UBX_CSUM_A_I(__VA_ARGS__, \
16
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
17
18
#define UBX_CSUM_A_I(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \
19
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, ...) \
20
((a1) + (a2) + (a3) + (a4) + (a5) + (a6) + (a7) + (a8) + (a9) + (a10) + \
21
(a11) + (a12) + (a13) + (a14) + (a15) + (a16) + (a17) + (a18) + (a19) + (a20)) & 0xFF
22
23
#define UBX_CSUM_B(...) UBX_CSUM_B_(__VA_ARGS__)
24
25
#define UBX_CSUM_B_(...) UBX_CSUM_B_I(NUM_VA_ARGS(__VA_ARGS__), __VA_ARGS__, \
26
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
27
28
#define UBX_CSUM_B_I(len, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, \
29
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, ...) \
30
(((len) * a1) + ((len - 1) * a2) + ((len - 2) * a3) + ((len - 3) * a4) + \
31
((len - 4) * a5) + ((len - 5) * a6) + ((len - 6) * a7) + ((len - 7) * a8) + \
32
((len - 8) * a9) + ((len - 9) * a10) + ((len - 10) * a11) + ((len - 11) * a12) + \
33
((len - 12) * a13) + ((len - 13) * a14) + ((len - 14) * a15) + ((len - 15) * a16) + \
34
((len - 16) * a17) + ((len - 17) * a18) + ((len - 18) * a19) + ((len - 19) * a20)) & 0xFF
35
36
#define UBX_CSUM(...) UBX_CSUM_A(__VA_ARGS__), UBX_CSUM_B(__VA_ARGS__)
37
38
#endif
/* ZEPHYR_MODEM_UBX_CHECKSUM_ */
include
zephyr
modem
ubx
checksum.h
Generated on Fri Jun 6 2025 09:22:10 for Zephyr Project API by
1.9.8