kopia lustrzana https://github.com/M17-Project/M17_Implementations
add CRC calculation and check
rodzic
b3bc53f346
commit
06b110cc73
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef CRC_H
|
||||
#define CRC_H
|
||||
|
||||
uint16_t CRC_M17(const uint8_t *in, const uint16_t len);
|
||||
|
||||
#endif
|
Ładowanie…
Reference in New Issue