2015-01-20 17:49:01 +01:00
|
|
|
// Part of dump1090, a Mode S message decoder for RTLSDR devices.
|
2015-01-20 00:41:26 +01:00
|
|
|
//
|
2015-01-20 17:49:01 +01:00
|
|
|
// crc.h: Mode S checksum prototypes.
|
2015-01-20 00:41:26 +01:00
|
|
|
//
|
2015-01-20 17:49:01 +01:00
|
|
|
// Copyright (c) 2014,2015 Oliver Jowett <oliver@mutability.co.uk>
|
2015-01-20 00:41:26 +01:00
|
|
|
//
|
2017-06-15 19:16:51 +02:00
|
|
|
// This file is free software: you may copy, redistribute and/or modify it
|
2015-01-20 17:49:01 +01:00
|
|
|
// under the terms of the GNU General Public License as published by the
|
2017-06-15 19:16:51 +02:00
|
|
|
// Free Software Foundation, either version 2 of the License, or (at your
|
|
|
|
// option) any later version.
|
2015-01-20 00:41:26 +01:00
|
|
|
//
|
2017-06-15 19:16:51 +02:00
|
|
|
// This file is distributed in the hope that it will be useful, but
|
|
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2015-01-20 17:49:01 +01:00
|
|
|
// General Public License for more details.
|
2015-01-20 00:41:26 +01:00
|
|
|
//
|
2017-06-15 19:16:51 +02:00
|
|
|
// You should have received a copy of the GNU General Public License
|
2015-01-20 17:49:01 +01:00
|
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2015-01-20 00:41:26 +01:00
|
|
|
|
|
|
|
#ifndef DUMP1090_CRC_H
|
|
|
|
#define DUMP1090_CRC_H
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2015-01-21 00:04:05 +01:00
|
|
|
// Global max for fixable bit erros
|
|
|
|
#define MODES_MAX_BITERRORS 2
|
|
|
|
|
|
|
|
struct errorinfo {
|
|
|
|
uint32_t syndrome; // CRC syndrome
|
|
|
|
int errors; // number of errors
|
|
|
|
int8_t bit[MODES_MAX_BITERRORS]; // bit positions to fix (-1 = no bit)
|
|
|
|
};
|
|
|
|
|
|
|
|
void modesChecksumInit(int fixBits);
|
|
|
|
uint32_t modesChecksum(uint8_t *msg, int bitlen);
|
|
|
|
struct errorinfo *modesChecksumDiagnose(uint32_t syndrome, int bitlen);
|
|
|
|
void modesChecksumFix(uint8_t *msg, struct errorinfo *info);
|
2015-01-20 00:41:26 +01:00
|
|
|
|
|
|
|
#endif
|