32 int modulated_sample_count = data.size();
33 std::vector<double> data_mod_buffer;
40 data_mod_buffer = std::vector<double>(modulated_sample_count * 2, 0);
41 for(
int x = 0; x < modulated_sample_count; x++)
43 bpsk.
encode((
const char *)&data[x], &data_mod_buffer[x*2]);
53 modulated_sample_count /= 2;
54 data_mod_buffer = std::vector<double>(modulated_sample_count * 2, 0);
55 for(
int x = 0; x < modulated_sample_count; x++)
57 qpsk.
encode((
const char *)&data[x*2], &data_mod_buffer[x*2]);
58 qpsk.
encode((
const char *)&data[x*2+1], &data_mod_buffer[x*2+1]);
68 modulated_sample_count /= 4;
69 data_mod_buffer = std::vector<double>(modulated_sample_count * 2, 0);
70 for(
int x = 0; x < modulated_sample_count; x++)
72 qam16.
encode((
const char *)&data[x*4], &data_mod_buffer[x*2]);
73 qam16.
encode((
const char *)&data[x*4+2], &data_mod_buffer[x*2+1]);
83 modulated_sample_count /= 6;
84 data_mod_buffer = std::vector<double>(modulated_sample_count * 2, 0);
85 for(
int x = 0; x < modulated_sample_count; x++)
87 qam64.
encode((
const char *)&data[x*6], &data_mod_buffer[x*2]);
88 qam64.
encode((
const char *)&data[x*6+3], &data_mod_buffer[x*2+1]);
95 std::vector<std::complex<double> > modulated_data(data_mod_buffer.size() / 2);
96 memcpy(&modulated_data[0], &data_mod_buffer[0], modulated_data.size() *
sizeof(std::complex<double>));
97 return modulated_data;
113 int coded_bit_count = data.size();
114 std::vector<unsigned char>data_demodulated(coded_bit_count * rp.
bpsc, 0);
121 for(
int s = 0; s < coded_bit_count; s++)
122 bpsk.
decode(data[s].real(), &data_demodulated[s]);
130 for(
int s = 0; s < coded_bit_count; s++)
132 qpsk.
decode(data[s].real(), &data_demodulated[s*2]);
133 qpsk.
decode(data[s].imag(), &data_demodulated[s*2+1]);
142 for(
int s = 0; s < coded_bit_count; s++)
144 qam16.
decode(data[s].real(), &data_demodulated[s*4]);
145 qam16.
decode(data[s].imag(), &data_demodulated[s*4+2]);
154 for(
int s = 0; s < coded_bit_count; s++)
156 qam64.
decode(data[s].real(), &data_demodulated[s*6]);
157 qam64.
decode(data[s].imag(), &data_demodulated[s*6+3]);
163 return data_demodulated;