blob: 3006ab0f2eca0d04f0596ba3117f9e102c550a38 [file] [log] [blame]
Wyatt Heplerf9fb90f2020-09-30 18:59:33 -07001.. _module-pw_checksum:
Wyatt Hepler455b4922020-09-18 00:19:21 -07002
Wyatt Hepler3c4e5de2020-03-03 14:37:52 -08003-----------
4pw_checksum
5-----------
Armando Montanez0054a9b2020-03-13 13:06:24 -07006The ``pw_checksum`` module provides functions for calculating checksums.
Wyatt Hepler3c4e5de2020-03-03 14:37:52 -08007
Wyatt Hepler12f66a12020-09-02 15:43:02 -07008pw_checksum/crc16_ccitt.h
Wyatt Hepler3c4e5de2020-03-03 14:37:52 -08009=========================
10
11.. cpp:namespace:: pw::checksum
12
13.. cpp:var:: constexpr uint16_t kCcittCrc16DefaultInitialValue = 0xFFFF
14
15 The default initial value for the CRC16.
16
17.. cpp:function:: uint16_t CcittCrc16(span<const std::byte> data, uint16_t initial_value = kCcittCrc16DefaultInitialValue)
18
19 Calculates the CRC16 of the provided data using polynomial 0x1021, with a
20 default initial value of :cpp:expr:`0xFFFF`.
21
22 To incrementally calculate a CRC16, use the previous value as the initial
23 value.
24
25 .. code-block:: cpp
26
27 uint16_t crc = CcittCrc16(my_data);
28
29 crc = CcittCrc16(more_data, crc);
30
Zihan Chen0a7db3e2020-06-23 16:36:06 -070031pw_checksum/crc32.h
32===================
33
34.. cpp:var:: constexpr uint32_t kCrc32InitialValue = 0xFFFFFFFF
35
36 The initial value for the CRC32.
37
38.. cpp:function:: uint32_t Crc32(span<const std::byte> data)
39
40 Calculates the initial / one-time CRC32 of the provided data using polynomial
41 0x4C11DB7, with an initial value of :cpp:expr:`0xFFFFFFFF`.
42
43 .. code-block:: cpp
44
45 uint32_t crc = Crc32(my_data);
46
47.. cpp:function:: uint32_t Crc32(span<const std::byte> data, uint32_t previous_result)
48
49 Incrementally append calculation of a CRC32, need to pass in the previous
50 result.
51
52 .. code-block:: cpp
53
54 uint32_t crc = Crc32(my_data);
55 crc = Crc32(more_data, crc);
56
Wyatt Hepler3c4e5de2020-03-03 14:37:52 -080057Compatibility
58=============
59* C
60* C++17
61
62Dependencies
63============
Armando Montanez0054a9b2020-03-13 13:06:24 -070064* ``pw_span``