15 lines
415 B
C
15 lines
415 B
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include "pico/stdlib.h"
|
|
|
|
// Calc CRC5-USB of 11bit data
|
|
uint8_t calc_usb_crc5(uint16_t data);
|
|
// Calc CRC16-USB of array
|
|
uint16_t calc_usb_crc16(const uint8_t *data, uint16_t len);
|
|
|
|
extern const uint16_t crc16_tbl[256];
|
|
static inline uint16_t __time_critical_func(update_usb_crc16)(uint16_t crc, uint8_t data) {
|
|
crc = (crc >> 8) ^ crc16_tbl[(crc ^ data) & 0xff];
|
|
return crc;
|
|
} |