/ src / usb_crc.h
usb_crc.h
 1  #pragma once
 2  
 3  #include <stdint.h>
 4  #include "pico/stdlib.h"
 5  
 6  // Calc CRC5-USB of 11bit data
 7  uint8_t calc_usb_crc5(uint16_t data);
 8  // Calc CRC16-USB of array
 9  uint16_t calc_usb_crc16(const uint8_t *data, uint16_t len);
10  
11  extern const uint16_t crc16_tbl[256];
12  static inline uint16_t __time_critical_func(update_usb_crc16)(uint16_t crc, uint8_t data) {
13    crc = (crc >> 8) ^ crc16_tbl[(crc ^ data) & 0xff];
14    return crc;
15  }