37 lines
1.1 KiB
C
37 lines
1.1 KiB
C
#ifndef HADAMARD_H
|
|
#define HADAMARD_H
|
|
|
|
// FEC
|
|
#define MAX_FEC_INPUT_SIZE 8U
|
|
#define MAX_FEC_OUTPUT_SIZE 128U // (2^(MAX_FEC_INPUT_SIZE-1)) non fa
|
|
#define MAX_FEC_PER_BLOCK 4U
|
|
|
|
#define ARPHY_FEC_TYPE_NONE 0
|
|
#define ARPHY_FEC_TYPE_HADAMARD 1
|
|
#define ARPHY_FEC_TYPE_MAX 1
|
|
|
|
#define ARPHY_FEC_INPUT_SIZE_NIBBLE 0
|
|
#define ARPHY_FEC_INPUT_SIZE_BYTE 1
|
|
|
|
|
|
typedef struct {
|
|
uint8_t type; ///< algoritmo di FEC
|
|
uint8_t in_bit_size; ///< net data size in bits
|
|
uint8_t out_bit_size; ///< code size in bits
|
|
uint8_t out_symbols_size; ///< code size in symbols
|
|
uint8_t hamming_distance; ///<
|
|
uint8_t sqrsum; // fattore qualita
|
|
} block_code;
|
|
|
|
extern block_code fec;
|
|
|
|
// buffer per FEC
|
|
extern int16_t tx_FHT_Buffer[MAX_FEC_OUTPUT_SIZE], rx_FHT_Buffer[MAX_FEC_OUTPUT_SIZE];
|
|
|
|
void arphy_set_up_FEC(block_code* fec_params);
|
|
void arphy_FEC_encode(uint8_t Chunk, uint8_t ChunkSize, int16_t *DataBuffer);
|
|
uint8_t arphy_FEC_decode(int16_t *DataMatrix);
|
|
void FastHadamardTransform(int16_t *Data, uint8_t fec_size);
|
|
void InverseFastHadamardTransform(int16_t *Data, uint8_t fec_size);
|
|
|
|
#endif /* HADAMARD_H */ |