add CRC calculation and check

pull/1/head
Wojciech Kaczmarski 2022-12-19 11:34:08 +01:00 zatwierdzone przez GitHub
rodzic b3bc53f346
commit 06b110cc73
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 34 dodań i 2 usunięć

Wyświetl plik

@ -1,2 +1,5 @@
m17-decoder-sym: m17-decoder-sym.c golay.c viterbi.c
gcc -O2 -lm m17-decoder-sym.c golay.c viterbi.c -o m17-decoder-sym
m17-decoder-sym: m17-decoder-sym.c golay.c viterbi.c crc.c
gcc -O2 -lm m17-decoder-sym.c golay.c viterbi.c crc.c -o m17-decoder-sym
clean:
rm m17-decoder-sym

Wyświetl plik

@ -0,0 +1,23 @@
#include <string.h>
#include <stdint.h>
#include "crc.h"
const uint16_t M17_CRC_POLY = 0x5935;
uint16_t CRC_M17(const uint8_t *in, const uint16_t len)
{
uint32_t crc=0xFFFF; //init val
for(uint16_t i=0; i<len; i++)
{
crc^=in[i]<<8;
for(uint8_t j=0; j<8; j++)
{
crc<<=1;
if(crc&0x10000)
crc=(crc^M17_CRC_POLY)&0xFFFF;
}
}
return crc&(0xFFFF);
}

Wyświetl plik

@ -0,0 +1,6 @@
#ifndef CRC_H
#define CRC_H
uint16_t CRC_M17(const uint8_t *in, const uint16_t len);
#endif