| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							- /*
 
-  * Copyright (c) 2006-2019, RT-Thread Development Team
 
-  *
 
-  * SPDX-License-Identifier: Apache-2.0
 
-  *
 
-  * Change Logs:
 
-  * Date           Author       Notes
 
-  * 2019-04-25     tyx          the first version
 
-  */
 
- #include <rtthread.h>
 
- #include <rtdevice.h>
 
- #include <hw_crc.h>
 
- /**
 
-  * @brief           Creating CRC Context
 
-  *
 
-  * @param device    Hardware crypto device
 
-  * @param mode      Setting default mode or custom mode
 
-  *
 
-  * @return          CRC context
 
-  */
 
- struct rt_hwcrypto_ctx *rt_hwcrypto_crc_create(struct rt_hwcrypto_device *device, 
 
-                                                hwcrypto_crc_mode mode)
 
- {
 
-     struct hwcrypto_crc *crc_ctx;
 
-     crc_ctx = (struct hwcrypto_crc *)rt_hwcrypto_ctx_create(device, HWCRYPTO_TYPE_CRC, sizeof(struct hwcrypto_crc));
 
-     if (crc_ctx == RT_NULL)
 
-     {
 
-         return RT_NULL;
 
-     }
 
-     switch (mode)
 
-     {
 
-     case HWCRYPTO_CRC_CRC8:
 
-     {
 
-         struct hwcrypto_crc_cfg temp = HWCRYPTO_CRC8_CFG;
 
-         crc_ctx->crc_cfg = temp;
 
-         break;
 
-     }
 
-     case HWCRYPTO_CRC_CRC16:
 
-     {
 
-         struct hwcrypto_crc_cfg temp = HWCRYPTO_CRC16_CFG;
 
-         crc_ctx->crc_cfg = temp;
 
-         break;
 
-     }
 
-     case HWCRYPTO_CRC_CRC32:
 
-     {
 
-         struct hwcrypto_crc_cfg temp = HWCRYPTO_CRC32_CFG;
 
-         crc_ctx->crc_cfg = temp;
 
-         break;
 
-     }
 
-     case HWCRYPTO_CRC_CCITT:
 
-     {
 
-         struct hwcrypto_crc_cfg temp = HWCRYPTO_CRC_CCITT_CFG;
 
-         crc_ctx->crc_cfg = temp;
 
-         break;
 
-     }
 
-     case HWCRYPTO_CRC_DNP:
 
-     {
 
-         struct hwcrypto_crc_cfg temp = HWCRYPTO_CRC_DNP_CFG;
 
-         crc_ctx->crc_cfg = temp;
 
-         break;
 
-     }
 
-     default:
 
-         break;
 
-     }
 
-     return &crc_ctx->parent;
 
- }
 
- /**
 
-  * @brief           Destroy CRC Context
 
-  *
 
-  * @param ctx       CRC context
 
-  */
 
- void rt_hwcrypto_crc_destroy(struct rt_hwcrypto_ctx *ctx)
 
- {
 
-     rt_hwcrypto_ctx_destroy(ctx);
 
- }
 
- /**
 
-  * @brief           Processing a packet of data
 
-  *
 
-  * @param ctx       CRC context
 
-  * @param input     Data buffer to be Processed
 
-  * @param length    Data Buffer length
 
-  *
 
-  * @return          RT_EOK on success.
 
-  */
 
- rt_uint32_t rt_hwcrypto_crc_update(struct rt_hwcrypto_ctx *ctx, 
 
-                                              const rt_uint8_t *input, 
 
-                                              rt_size_t length)
 
- {
 
-     struct hwcrypto_crc *crc_ctx = (struct hwcrypto_crc *)ctx;
 
-     if (ctx && crc_ctx->ops->update)
 
-     {
 
-         return crc_ctx->ops->update(crc_ctx, input, length);
 
-     }
 
-     return 0;
 
- }
 
- /**
 
-  * @brief           CRC context configuration
 
-  *
 
-  * @param ctx       CRC context
 
-  * @param cfg       CRC config
 
-  */
 
- void rt_hwcrypto_crc_cfg(struct rt_hwcrypto_ctx *ctx, 
 
-                                    struct hwcrypto_crc_cfg *cfg)
 
- {
 
-     if (cfg)
 
-     {
 
-         ((struct hwcrypto_crc *)ctx)->crc_cfg = *cfg;
 
-     }
 
- }
 
 
  |