#include #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; }