Wyatt Hepler | f9fb90f | 2020-09-30 18:59:33 -0700 | [diff] [blame] | 1 | .. _module-pw_checksum: |
Wyatt Hepler | 455b492 | 2020-09-18 00:19:21 -0700 | [diff] [blame] | 2 | |
Wyatt Hepler | 3c4e5de | 2020-03-03 14:37:52 -0800 | [diff] [blame] | 3 | ----------- |
| 4 | pw_checksum |
| 5 | ----------- |
Armando Montanez | 0054a9b | 2020-03-13 13:06:24 -0700 | [diff] [blame] | 6 | The ``pw_checksum`` module provides functions for calculating checksums. |
Wyatt Hepler | 3c4e5de | 2020-03-03 14:37:52 -0800 | [diff] [blame] | 7 | |
Wyatt Hepler | 12f66a1 | 2020-09-02 15:43:02 -0700 | [diff] [blame] | 8 | pw_checksum/crc16_ccitt.h |
Wyatt Hepler | 3c4e5de | 2020-03-03 14:37:52 -0800 | [diff] [blame] | 9 | ========================= |
| 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 Chen | 0a7db3e | 2020-06-23 16:36:06 -0700 | [diff] [blame] | 31 | pw_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 Hepler | 3c4e5de | 2020-03-03 14:37:52 -0800 | [diff] [blame] | 57 | Compatibility |
| 58 | ============= |
| 59 | * C |
| 60 | * C++17 |
| 61 | |
| 62 | Dependencies |
| 63 | ============ |
Armando Montanez | 0054a9b | 2020-03-13 13:06:24 -0700 | [diff] [blame] | 64 | * ``pw_span`` |