Initial import
This commit is contained in:
35
arphy_interleaver.c
Normal file
35
arphy_interleaver.c
Normal file
@@ -0,0 +1,35 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "../../modem/modem.h"
|
||||
|
||||
#include "../phy.h"
|
||||
#include "arphy.h"
|
||||
|
||||
interleaver_params interleaver;
|
||||
|
||||
void arphy_set_up_interleaver(interleaver_params* interleaver_parameters) {
|
||||
interleaver_parameters->net_bit_size = PHY_MAX_BLOCK_SIZE * 8; // interlaccia sempre su una pdu
|
||||
interleaver_parameters->fec_blocks_size = interleaver_parameters->net_bit_size / fec.in_bit_size;
|
||||
interleaver_parameters->symbols_size = fec.out_symbols_size * interleaver_parameters->fec_blocks_size;
|
||||
interleaver_parameters->size = (interleaver_parameters->fec_blocks_size * fec.out_bit_size); // dimensione del blocco di interleaving
|
||||
}
|
||||
|
||||
// interleaving degli indici
|
||||
|
||||
// torna indice mappato
|
||||
|
||||
uint16_t arphy_index_interleave(uint16_t in, uint8_t x, uint16_t y) {
|
||||
uint16_t out;
|
||||
out = in * (x + 1);
|
||||
out = out % (x * y);
|
||||
return out;
|
||||
}
|
||||
|
||||
// torna indice de-mappato
|
||||
|
||||
uint16_t arphy_index_deinterleave(uint16_t in, uint8_t x, uint16_t y) {
|
||||
uint16_t out;
|
||||
out = in + (in * x);
|
||||
out = out % (x * y);
|
||||
return out;
|
||||
}
|
||||
Reference in New Issue
Block a user