1 /** 2 * Copyright (c) 2015 - 2017, Nordic Semiconductor ASA 3 * 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without modification, 7 * are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice, this 10 * list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form, except as embedded into a Nordic 13 * Semiconductor ASA integrated circuit in a product or a software update for 14 * such product, must reproduce the above copyright notice, this list of 15 * conditions and the following disclaimer in the documentation and/or other 16 * materials provided with the distribution. 17 * 18 * 3. Neither the name of Nordic Semiconductor ASA nor the names of its 19 * contributors may be used to endorse or promote products derived from this 20 * software without specific prior written permission. 21 * 22 * 4. This software, with or without modification, must only be used with a 23 * Nordic Semiconductor ASA integrated circuit. 24 * 25 * 5. Any software provided in binary form under this license must not be reverse 26 * engineered, decompiled, modified and/or disassembled. 27 * 28 * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS 29 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 30 * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE 31 * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE 32 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 33 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 34 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 37 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 38 * 39 */ 40 /** @file 41 * 42 * @defgroup crc32 CRC32 compute 43 * @{ 44 * @ingroup hci_transport 45 * 46 * @brief This module implements the CRC-32 calculation in the blocks. 47 */ 48 49 #ifndef CRC32_H__ 50 #define CRC32_H__ 51 52 #include <stdint.h> 53 54 #ifdef __cplusplus 55 extern "C" 56 { 57 #endif 58 59 /**@brief Function for calculating CRC-32 in blocks. 60 * 61 * Feed each consecutive data block into this function, along with the current value of p_crc as 62 * returned by the previous call of this function. The first call of this function should pass NULL 63 * as the initial value of the crc in p_crc. 64 * 65 * @param[in] p_data The input data block for computation. 66 * @param[in] size The size of the input data block in bytes. 67 * @param[in] p_crc The previous calculated CRC-32 value or NULL if first call. 68 * 69 * @return The updated CRC-32 value, based on the input supplied. 70 */ 71 uint32_t util_crc32_compute(uint8_t const *p_data, uint32_t size, uint32_t const *p_crc); 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif // CRC32_H__ 78 79 /** @} */ 80