LCOV - code coverage report
Current view: top level - zephyr/modem/ubx - checksum.h Coverage Total Hit
Test: new.info Lines: 12.5 % 8 1
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       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              : 
      11              : /** Macrobatics to compute UBX checksum at compile time */
      12              : 
      13            1 : #define UBX_CSUM_A(...) UBX_CSUM_A_(__VA_ARGS__)
      14              : 
      15            0 : #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            0 :                      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            0 : #define UBX_CSUM_B(...) UBX_CSUM_B_(__VA_ARGS__)
      24              : 
      25            0 : #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            0 :                      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            0 : #define UBX_CSUM(...) UBX_CSUM_A(__VA_ARGS__), UBX_CSUM_B(__VA_ARGS__)
      37              : 
      38              : #endif /* ZEPHYR_MODEM_UBX_CHECKSUM_ */
        

Generated by: LCOV version 2.0-1