Hi, Greg,

Glad to hear your voice.

In the current crc16 implementation, we have provided 3 variants. The
default crc16 semantics is CRC-16/XMODEM:

CRC-16/XMODEM:
  crc16
  crc16part
  https://github.com/apache/nuttx/blob/master/libs/libc/misc/lib_crc16.c

CRC-16/CCITT-TRUE:
  crc16ccitt
  crc16ccittpart

https://github.com/apache/nuttx/blob/master/libs/libc/misc/lib_crc16ccitt.c

CRC-16/IBM:
  crc16ibm
  crc16ibmpart
  https://github.com/apache/nuttx/blob/master/libs/libc/misc/lib_crc16ibm.c


In PR16147, I mapped the default crc16 implementation to CRC-16/IBM. NuttX
did not abandon other variants, but provided more specific interface
implementations:
https://github.com/apache/nuttx/pull/16147

CRC-16/XMODEM:
   crc16xmodem
   crc16xmodempart

CRC-16/CCITT-TRUE:
   crc16ccitt
   crc16ccittpart

CRC-16/IBM:
   crc16ibm
   crc16ibmpart

New crc16 implement, just mapping these APIs to CRC-16/IBM, developers are
free to choose which variant to use

uint16_t crc16part(FAR const uint8_t *src, size_t len, uint16_t crc16val)
{
  return crc16ibmpart(src, len, crc16val);
}

uint16_t crc16(FAR const uint8_t *src, size_t len)
{
  return crc16ibmpart(src, len, 0);
}

BRs,

Gregory Nutt <spudan...@gmail.com> 于2025年4月8日周二 09:43写道:

> > What if you need both versions at the same time?  Rather than an option
> to use one or the the other,  options to enable one or both would be more
> flexible.
>

Reply via email to