ft8_lib/ft8/ldpc.h
2019-11-22 13:45:42 +02:00

29 lines
859 B
C++

#pragma once
#include "constants.h"
namespace ft8 {
class BPDecoderState {
public:
void reset();
int iterate(const float codeword[], uint8_t plain[]);
private:
float tov[ft8::N][3];
float toc[ft8::M][7];
};
// codeword is 174 log-likelihoods.
// plain is a return value, 174 ints, to be 0 or 1.
// iters is how hard to try.
// n_errors == 0 means success.
void ldpc_decode(const float codeword[], int max_iters, uint8_t plain[], int *n_errors);
void bp_decode(const float codeword[], int max_iters, uint8_t plain[], int *n_errors);
// Packs a string of bits each represented as a zero/non-zero byte in plain[],
// as a string of packed bits starting from the MSB of the first byte of packed[]
void pack_bits(const uint8_t plain[], int num_bits, uint8_t packed[]);
}