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 }