mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2026-07-26 10:38:52 +00:00
34 lines
610 B
C++
34 lines
610 B
C++
#include "tetra_crc.hpp"
|
|
|
|
namespace ui::external_app::tetra_rx {
|
|
|
|
uint16_t CRC::crc16_itut_bits(
|
|
const uint8_t* bits,
|
|
uint32_t n_bits,
|
|
uint16_t init) {
|
|
uint16_t crc = init;
|
|
|
|
for (uint32_t i = 0; i < n_bits; i++) {
|
|
uint8_t bit =
|
|
(bits[i >> 3] >>
|
|
(7 - (i & 7))) &
|
|
1;
|
|
|
|
crc ^= uint16_t(bit) << 15;
|
|
|
|
if (crc & 0x8000) {
|
|
crc =
|
|
(crc << 1) ^
|
|
0x1021;
|
|
} else {
|
|
crc <<= 1;
|
|
}
|
|
|
|
crc &= 0xffff;
|
|
}
|
|
|
|
return crc;
|
|
}
|
|
|
|
} // namespace ui::external_app::tetra_rx
|