air105_crc.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) 2022 OpenLuat & AirM2M
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy of
  5. * this software and associated documentation files (the "Software"), to deal in
  6. * the Software without restriction, including without limitation the rights to
  7. * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  8. * the Software, and to permit persons to whom the Software is furnished to do so,
  9. * subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in all
  12. * copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  16. * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  17. * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  18. * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  19. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  20. */
  21. #ifndef __AIR105_CRC_H
  22. #define __AIR105_CRC_H
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. /* Includes ------------------------------------------------------------------*/
  27. #include "air105.h"
  28. /* Exported types ------------------------------------------------------------*/
  29. typedef enum
  30. {
  31. CRC_16 = 0x01,
  32. CRC_16_Modbus = 0x02,
  33. CRC_CCITT_0xffff = 0x03,
  34. CRC_CCITT_XModem = 0x04,
  35. CRC_32 = 0x05
  36. }CRC_Param_TypeDef;
  37. typedef enum
  38. {
  39. CRC_Poly_16_1021 = 0x01,
  40. CRC_Poly_16_8005 = 0x02,
  41. CRC_Poly_32_04C11DB7 = 0x03
  42. }CRC_Poly_TypeDef;
  43. typedef enum
  44. {
  45. CRC_PolyMode_Normal = 0x01,
  46. CRC_PolyMode_Reversed = 0x02,
  47. }CRC_PolyMode_TypeDef;
  48. typedef struct
  49. {
  50. CRC_Poly_TypeDef CRC_Poly;
  51. CRC_PolyMode_TypeDef CRC_PolyMode;
  52. uint32_t CRC_Init_Value;
  53. uint32_t CRC_Xor_Value;
  54. }CRC_ConfigTypeDef;
  55. uint32_t CRC_CalcBlockCRC(uint32_t CRC_type, uint8_t *pData, uint32_t len);
  56. uint32_t CRC_Calc(CRC_ConfigTypeDef *CRC_Config, uint8_t *pData, uint32_t len);
  57. #ifdef __cplusplus
  58. }
  59. #endif
  60. #endif