cleanup: include/: move crc.h to sys/crc.h
move crc.h to sys/crc.h and create a shim for backward-compatibility. No functional changes to the headers. A warning in the shim can be controlled with CONFIG_COMPAT_INCLUDES. Related to #16539 Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
parent
bd977d06f8
commit
4e48e87fd2
12 changed files with 198 additions and 183 deletions
177
include/crc.h
177
include/crc.h
|
@ -1,182 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 Workaround GmbH.
|
* Copyright (c) 2019 Intel Corporation
|
||||||
* Copyright (c) 2017 Intel Corporation.
|
|
||||||
* Copyright (c) 2017 Nordic Semiconductor ASA
|
|
||||||
* Copyright (c) 2015 Runtime Inc
|
|
||||||
* Copyright (c) 2018 Google LLC.
|
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
/** @file
|
|
||||||
* @brief CRC computation function
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef ZEPHYR_INCLUDE_CRC_H_
|
#ifndef ZEPHYR_INCLUDE_CRC_H_
|
||||||
#define ZEPHYR_INCLUDE_CRC_H_
|
#define ZEPHYR_INCLUDE_CRC_H_
|
||||||
|
|
||||||
#include <zephyr/types.h>
|
#ifndef CONFIG_COMPAT_INCLUDES
|
||||||
#include <stdbool.h>
|
#warning "This header file has moved, include <sys/crc.h> instead."
|
||||||
#include <stddef.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initial value expected to be used at the beginning of the crc8_ccitt
|
#include <sys/crc.h>
|
||||||
* computation.
|
|
||||||
*/
|
|
||||||
#define CRC8_CCITT_INITIAL_VALUE 0xFF
|
|
||||||
|
|
||||||
/**
|
#endif /* ZEPHYR_INCLUDE_CRC_H_ */
|
||||||
* @defgroup checksum Checksum
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup crc CRC
|
|
||||||
* @ingroup checksum
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Generic function for computing CRC 16
|
|
||||||
*
|
|
||||||
* Compute CRC 16 by passing in the address of the input, the input length
|
|
||||||
* and polynomial used in addition to the initial value.
|
|
||||||
*
|
|
||||||
* @param src Input bytes for the computation
|
|
||||||
* @param len Length of the input in bytes
|
|
||||||
* @param polynomial The polynomial to use omitting the leading x^16
|
|
||||||
* coefficient
|
|
||||||
* @param initial_value Initial value for the CRC computation
|
|
||||||
* @param pad Adds padding with zeros at the end of input bytes
|
|
||||||
*
|
|
||||||
* @return The computed CRC16 value
|
|
||||||
*/
|
|
||||||
u16_t crc16(const u8_t *src, size_t len, u16_t polynomial,
|
|
||||||
u16_t initial_value, bool pad);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compute the CRC-16/CCITT checksum of a buffer.
|
|
||||||
*
|
|
||||||
* See ITU-T Recommendation V.41 (November 1988). Uses 0x1021 as the
|
|
||||||
* polynomial, reflects the input, and reflects the output.
|
|
||||||
*
|
|
||||||
* To calculate the CRC across non-contiguous blocks use the return
|
|
||||||
* value from block N-1 as the seed for block N.
|
|
||||||
*
|
|
||||||
* For CRC-16/CCITT, use 0 as the initial seed. Other checksums in
|
|
||||||
* the same family can be calculated by changing the seed and/or
|
|
||||||
* XORing the final value. Examples include:
|
|
||||||
*
|
|
||||||
* - X-25 (used in PPP): seed=0xffff, xor=0xffff, residual=0xf0b8
|
|
||||||
*
|
|
||||||
* @note API changed in Zephyr 1.11.
|
|
||||||
*
|
|
||||||
* @param seed Value to seed the CRC with
|
|
||||||
* @param src Input bytes for the computation
|
|
||||||
* @param len Length of the input in bytes
|
|
||||||
*
|
|
||||||
* @return The computed CRC16 value
|
|
||||||
*/
|
|
||||||
u16_t crc16_ccitt(u16_t seed, const u8_t *src, size_t len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compute the CRC-16/XMODEM checksum of a buffer.
|
|
||||||
*
|
|
||||||
* The MSB first version of ITU-T Recommendation V.41 (November 1988).
|
|
||||||
* Uses 0x1021 as the polynomial with no reflection.
|
|
||||||
*
|
|
||||||
* To calculate the CRC across non-contiguous blocks use the return
|
|
||||||
* value from block N-1 as the seed for block N.
|
|
||||||
*
|
|
||||||
* For CRC-16/XMODEM, use 0 as the initial seed. Other checksums in
|
|
||||||
* the same family can be calculated by changing the seed and/or
|
|
||||||
* XORing the final value. Examples include:
|
|
||||||
*
|
|
||||||
* - CCIITT-FALSE: seed=0xffff
|
|
||||||
* - GSM: seed=0, xorout=0xffff, residue=0x1d0f
|
|
||||||
*
|
|
||||||
* @param seed Value to seed the CRC with
|
|
||||||
* @param src Input bytes for the computation
|
|
||||||
* @param len Length of the input in bytes
|
|
||||||
*
|
|
||||||
* @return The computed CRC16 value
|
|
||||||
*/
|
|
||||||
u16_t crc16_itu_t(u16_t seed, const u8_t *src, size_t len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compute ANSI variant of CRC 16
|
|
||||||
*
|
|
||||||
* ANSI variant of CRC 16 is using 0x8005 as its polynomial with the initial
|
|
||||||
* value set to 0xffff.
|
|
||||||
*
|
|
||||||
* @param src Input bytes for the computation
|
|
||||||
* @param len Length of the input in bytes
|
|
||||||
*
|
|
||||||
* @return The computed CRC16 value
|
|
||||||
*/
|
|
||||||
static inline u16_t crc16_ansi(const u8_t *src, size_t len)
|
|
||||||
{
|
|
||||||
return crc16(src, len, 0x8005, 0xffff, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Generate IEEE conform CRC32 checksum.
|
|
||||||
*
|
|
||||||
* @param *data Pointer to data on which the CRC should be calculated.
|
|
||||||
* @param len Data length.
|
|
||||||
*
|
|
||||||
* @return CRC32 value.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
u32_t crc32_ieee(const u8_t *data, size_t len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Update an IEEE conforming CRC32 checksum.
|
|
||||||
*
|
|
||||||
* @param crc CRC32 checksum that needs to be updated.
|
|
||||||
* @param *data Pointer to data on which the CRC should be calculated.
|
|
||||||
* @param len Data length.
|
|
||||||
*
|
|
||||||
* @return CRC32 value.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
u32_t crc32_ieee_update(u32_t crc, const u8_t *data, size_t len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compute CCITT variant of CRC 8
|
|
||||||
*
|
|
||||||
* Normal CCITT variant of CRC 8 is using 0x07.
|
|
||||||
*
|
|
||||||
* @param initial_value Initial value for the CRC computation
|
|
||||||
* @param buf Input bytes for the computation
|
|
||||||
* @param len Length of the input in bytes
|
|
||||||
*
|
|
||||||
* @return The computed CRC8 value
|
|
||||||
*/
|
|
||||||
u8_t crc8_ccitt(u8_t initial_value, const void *buf, size_t len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compute the CRC-7 checksum of a buffer.
|
|
||||||
*
|
|
||||||
* See JESD84-A441. Used by the MMC protocol. Uses 0x09 as the
|
|
||||||
* polynomial with no reflection. The CRC is left
|
|
||||||
* justified, so bit 7 of the result is bit 6 of the CRC.
|
|
||||||
*
|
|
||||||
* @param seed Value to seed the CRC with
|
|
||||||
* @param src Input bytes for the computation
|
|
||||||
* @param len Length of the input in bytes
|
|
||||||
*
|
|
||||||
* @return The computed CRC7 value
|
|
||||||
*/
|
|
||||||
u8_t crc7_be(u8_t seed, const u8_t *src, size_t len);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
182
include/sys/crc.h
Normal file
182
include/sys/crc.h
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018 Workaround GmbH.
|
||||||
|
* Copyright (c) 2017 Intel Corporation.
|
||||||
|
* Copyright (c) 2017 Nordic Semiconductor ASA
|
||||||
|
* Copyright (c) 2015 Runtime Inc
|
||||||
|
* Copyright (c) 2018 Google LLC.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
/** @file
|
||||||
|
* @brief CRC computation function
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ZEPHYR_INCLUDE_SYS_CRC_H_
|
||||||
|
#define ZEPHYR_INCLUDE_SYS_CRC_H_
|
||||||
|
|
||||||
|
#include <zephyr/types.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Initial value expected to be used at the beginning of the crc8_ccitt
|
||||||
|
* computation.
|
||||||
|
*/
|
||||||
|
#define CRC8_CCITT_INITIAL_VALUE 0xFF
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup checksum Checksum
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup crc CRC
|
||||||
|
* @ingroup checksum
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Generic function for computing CRC 16
|
||||||
|
*
|
||||||
|
* Compute CRC 16 by passing in the address of the input, the input length
|
||||||
|
* and polynomial used in addition to the initial value.
|
||||||
|
*
|
||||||
|
* @param src Input bytes for the computation
|
||||||
|
* @param len Length of the input in bytes
|
||||||
|
* @param polynomial The polynomial to use omitting the leading x^16
|
||||||
|
* coefficient
|
||||||
|
* @param initial_value Initial value for the CRC computation
|
||||||
|
* @param pad Adds padding with zeros at the end of input bytes
|
||||||
|
*
|
||||||
|
* @return The computed CRC16 value
|
||||||
|
*/
|
||||||
|
u16_t crc16(const u8_t *src, size_t len, u16_t polynomial,
|
||||||
|
u16_t initial_value, bool pad);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compute the CRC-16/CCITT checksum of a buffer.
|
||||||
|
*
|
||||||
|
* See ITU-T Recommendation V.41 (November 1988). Uses 0x1021 as the
|
||||||
|
* polynomial, reflects the input, and reflects the output.
|
||||||
|
*
|
||||||
|
* To calculate the CRC across non-contiguous blocks use the return
|
||||||
|
* value from block N-1 as the seed for block N.
|
||||||
|
*
|
||||||
|
* For CRC-16/CCITT, use 0 as the initial seed. Other checksums in
|
||||||
|
* the same family can be calculated by changing the seed and/or
|
||||||
|
* XORing the final value. Examples include:
|
||||||
|
*
|
||||||
|
* - X-25 (used in PPP): seed=0xffff, xor=0xffff, residual=0xf0b8
|
||||||
|
*
|
||||||
|
* @note API changed in Zephyr 1.11.
|
||||||
|
*
|
||||||
|
* @param seed Value to seed the CRC with
|
||||||
|
* @param src Input bytes for the computation
|
||||||
|
* @param len Length of the input in bytes
|
||||||
|
*
|
||||||
|
* @return The computed CRC16 value
|
||||||
|
*/
|
||||||
|
u16_t crc16_ccitt(u16_t seed, const u8_t *src, size_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compute the CRC-16/XMODEM checksum of a buffer.
|
||||||
|
*
|
||||||
|
* The MSB first version of ITU-T Recommendation V.41 (November 1988).
|
||||||
|
* Uses 0x1021 as the polynomial with no reflection.
|
||||||
|
*
|
||||||
|
* To calculate the CRC across non-contiguous blocks use the return
|
||||||
|
* value from block N-1 as the seed for block N.
|
||||||
|
*
|
||||||
|
* For CRC-16/XMODEM, use 0 as the initial seed. Other checksums in
|
||||||
|
* the same family can be calculated by changing the seed and/or
|
||||||
|
* XORing the final value. Examples include:
|
||||||
|
*
|
||||||
|
* - CCIITT-FALSE: seed=0xffff
|
||||||
|
* - GSM: seed=0, xorout=0xffff, residue=0x1d0f
|
||||||
|
*
|
||||||
|
* @param seed Value to seed the CRC with
|
||||||
|
* @param src Input bytes for the computation
|
||||||
|
* @param len Length of the input in bytes
|
||||||
|
*
|
||||||
|
* @return The computed CRC16 value
|
||||||
|
*/
|
||||||
|
u16_t crc16_itu_t(u16_t seed, const u8_t *src, size_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compute ANSI variant of CRC 16
|
||||||
|
*
|
||||||
|
* ANSI variant of CRC 16 is using 0x8005 as its polynomial with the initial
|
||||||
|
* value set to 0xffff.
|
||||||
|
*
|
||||||
|
* @param src Input bytes for the computation
|
||||||
|
* @param len Length of the input in bytes
|
||||||
|
*
|
||||||
|
* @return The computed CRC16 value
|
||||||
|
*/
|
||||||
|
static inline u16_t crc16_ansi(const u8_t *src, size_t len)
|
||||||
|
{
|
||||||
|
return crc16(src, len, 0x8005, 0xffff, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Generate IEEE conform CRC32 checksum.
|
||||||
|
*
|
||||||
|
* @param *data Pointer to data on which the CRC should be calculated.
|
||||||
|
* @param len Data length.
|
||||||
|
*
|
||||||
|
* @return CRC32 value.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
u32_t crc32_ieee(const u8_t *data, size_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Update an IEEE conforming CRC32 checksum.
|
||||||
|
*
|
||||||
|
* @param crc CRC32 checksum that needs to be updated.
|
||||||
|
* @param *data Pointer to data on which the CRC should be calculated.
|
||||||
|
* @param len Data length.
|
||||||
|
*
|
||||||
|
* @return CRC32 value.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
u32_t crc32_ieee_update(u32_t crc, const u8_t *data, size_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compute CCITT variant of CRC 8
|
||||||
|
*
|
||||||
|
* Normal CCITT variant of CRC 8 is using 0x07.
|
||||||
|
*
|
||||||
|
* @param initial_value Initial value for the CRC computation
|
||||||
|
* @param buf Input bytes for the computation
|
||||||
|
* @param len Length of the input in bytes
|
||||||
|
*
|
||||||
|
* @return The computed CRC8 value
|
||||||
|
*/
|
||||||
|
u8_t crc8_ccitt(u8_t initial_value, const void *buf, size_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Compute the CRC-7 checksum of a buffer.
|
||||||
|
*
|
||||||
|
* See JESD84-A441. Used by the MMC protocol. Uses 0x09 as the
|
||||||
|
* polynomial with no reflection. The CRC is left
|
||||||
|
* justified, so bit 7 of the result is bit 6 of the CRC.
|
||||||
|
*
|
||||||
|
* @param seed Value to seed the CRC with
|
||||||
|
* @param src Input bytes for the computation
|
||||||
|
* @param len Length of the input in bytes
|
||||||
|
*
|
||||||
|
* @return The computed CRC7 value
|
||||||
|
*/
|
||||||
|
u8_t crc7_be(u8_t seed, const u8_t *src, size_t len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
|
@ -4,7 +4,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
u16_t crc16(const u8_t *src, size_t len, u16_t polynomial,
|
u16_t crc16(const u8_t *src, size_t len, u16_t polynomial,
|
||||||
u16_t initial_value, bool pad)
|
u16_t initial_value, bool pad)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
u32_t crc32_ieee(const u8_t *data, size_t len)
|
u32_t crc32_ieee(const u8_t *data, size_t len)
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
u8_t crc7_be(u8_t seed, const u8_t *src, size_t len)
|
u8_t crc7_be(u8_t seed, const u8_t *src, size_t len)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
static const u8_t crc8_ccitt_small_table[16] = {
|
static const u8_t crc8_ccitt_small_table[16] = {
|
||||||
0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15,
|
0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15,
|
||||||
|
|
|
@ -12,7 +12,7 @@ LOG_MODULE_REGISTER(sdhc, CONFIG_DISK_LOG_LEVEL);
|
||||||
#include <gpio.h>
|
#include <gpio.h>
|
||||||
#include <misc/byteorder.h>
|
#include <misc/byteorder.h>
|
||||||
#include <spi.h>
|
#include <spi.h>
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
#define SDHC_SECTOR_SIZE 512
|
#define SDHC_SECTOR_SIZE 512
|
||||||
#define SDHC_CMD_SIZE 6
|
#define SDHC_CMD_SIZE 6
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
#include <fs/fcb.h>
|
#include <fs/fcb.h>
|
||||||
#include "fcb_priv.h"
|
#include "fcb_priv.h"
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#include <init.h>
|
#include <init.h>
|
||||||
#include <flash.h>
|
#include <flash.h>
|
||||||
#include <fs/fs.h>
|
#include <fs/fs.h>
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
#include <misc/__assert.h>
|
#include <misc/__assert.h>
|
||||||
#include <misc/printk.h>
|
#include <misc/printk.h>
|
||||||
#include <nffs/os.h>
|
#include <nffs/os.h>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <fs/nvs.h>
|
#include <fs/nvs.h>
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
#include "nvs_priv.h"
|
#include "nvs_priv.h"
|
||||||
|
|
||||||
#include <logging/log.h>
|
#include <logging/log.h>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
#include <misc/byteorder.h>
|
#include <misc/byteorder.h>
|
||||||
#include <net/buf.h>
|
#include <net/buf.h>
|
||||||
#include <sys/base64.h>
|
#include <sys/base64.h>
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
#include <kernel.h>
|
#include <kernel.h>
|
||||||
#include <net/buf.h>
|
#include <net/buf.h>
|
||||||
#include <misc/byteorder.h>
|
#include <misc/byteorder.h>
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
#include <crc.h>
|
#include <sys/crc.h>
|
||||||
|
|
||||||
#include <gpio.h>
|
#include <gpio.h>
|
||||||
#include <led_strip.h>
|
#include <led_strip.h>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue