diff options
Diffstat (limited to 'gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc')
-rw-r--r-- | gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc | 262 |
1 files changed, 261 insertions, 1 deletions
diff --git a/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc b/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc index e3fb039c50..4ceefa1503 100644 --- a/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc +++ b/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2015,2016 Free Software Foundation, Inc. + * Copyright 2015-2017 Free Software Foundation, Inc. * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -1721,6 +1721,264 @@ namespace gr { m_64apsk[62] = gr_complex( 7.0, -7.0); m_64apsk[63] = gr_complex( 7.0, 7.0); break; + case MOD_256QAM: + m_256apsk[0] = gr_complex( 1.0, 1.0); + m_256apsk[1] = gr_complex( 1.0, -1.0); + m_256apsk[2] = gr_complex( -3.0, 1.0); + m_256apsk[3] = gr_complex( 1.0, 3.0); + m_256apsk[4] = gr_complex( 1.0, 5.0); + m_256apsk[5] = gr_complex( 5.0, -1.0); + m_256apsk[6] = gr_complex( -7.0, 1.0); + m_256apsk[7] = gr_complex( 1.0, 7.0); + m_256apsk[8] = gr_complex( 1.0, 9.0); + m_256apsk[9] = gr_complex( 9.0, -1.0); + m_256apsk[10] = gr_complex( -11.0, 1.0); + m_256apsk[11] = gr_complex( 1.0, 11.0); + m_256apsk[12] = gr_complex( 1.0, 13.0); + m_256apsk[13] = gr_complex( 13.0, -1.0); + m_256apsk[14] = gr_complex( -15.0, 1.0); + m_256apsk[15] = gr_complex( 1.0, 15.0); + m_256apsk[16] = gr_complex( -1.0, 1.0); + m_256apsk[17] = gr_complex( -1.0, -1.0); + m_256apsk[18] = gr_complex( -1.0, -3.0); + m_256apsk[19] = gr_complex( 3.0, -1.0); + m_256apsk[20] = gr_complex( -5.0, 1.0); + m_256apsk[21] = gr_complex( -1.0, -5.0); + m_256apsk[22] = gr_complex( -1.0, -7.0); + m_256apsk[23] = gr_complex( 7.0, -1.0); + m_256apsk[24] = gr_complex( -9.0, 1.0); + m_256apsk[25] = gr_complex( -1.0, -9.0); + m_256apsk[26] = gr_complex( -1.0, -11.0); + m_256apsk[27] = gr_complex( 11.0, -1.0); + m_256apsk[28] = gr_complex( -13.0, 1.0); + m_256apsk[29] = gr_complex( -1.0, -13.0); + m_256apsk[30] = gr_complex( -1.0, -15.0); + m_256apsk[31] = gr_complex( 15.0, -1.0); + m_256apsk[32] = gr_complex( 1.0, -3.0); + m_256apsk[33] = gr_complex( -3.0, -1.0); + m_256apsk[34] = gr_complex( -3.0, -3.0); + m_256apsk[35] = gr_complex( -3.0, 3.0); + m_256apsk[36] = gr_complex( 5.0, -3.0); + m_256apsk[37] = gr_complex( -3.0, -5.0); + m_256apsk[38] = gr_complex( -3.0, -7.0); + m_256apsk[39] = gr_complex( -7.0, 3.0); + m_256apsk[40] = gr_complex( 9.0, -3.0); + m_256apsk[41] = gr_complex( -3.0, -9.0); + m_256apsk[42] = gr_complex( -3.0, -11.0); + m_256apsk[43] = gr_complex( -11.0, 3.0); + m_256apsk[44] = gr_complex( 13.0, -3.0); + m_256apsk[45] = gr_complex( -3.0, -13.0); + m_256apsk[46] = gr_complex( -3.0, -15.0); + m_256apsk[47] = gr_complex( -15.0, 3.0); + m_256apsk[48] = gr_complex( 3.0, 1.0); + m_256apsk[49] = gr_complex( -1.0, 3.0); + m_256apsk[50] = gr_complex( 3.0, -3.0); + m_256apsk[51] = gr_complex( 3.0, 3.0); + m_256apsk[52] = gr_complex( 3.0, 5.0); + m_256apsk[53] = gr_complex( -5.0, 3.0); + m_256apsk[54] = gr_complex( 7.0, -3.0); + m_256apsk[55] = gr_complex( 3.0, 7.0); + m_256apsk[56] = gr_complex( 3.0, 9.0); + m_256apsk[57] = gr_complex( -9.0, 3.0); + m_256apsk[58] = gr_complex( 11.0, -3.0); + m_256apsk[59] = gr_complex( 3.0, 11.0); + m_256apsk[60] = gr_complex( 3.0, 13.0); + m_256apsk[61] = gr_complex( -13.0, 3.0); + m_256apsk[62] = gr_complex( 15.0, -3.0); + m_256apsk[63] = gr_complex( 3.0, 15.0); + m_256apsk[64] = gr_complex( 5.0, 1.0); + m_256apsk[65] = gr_complex( 1.0, -5.0); + m_256apsk[66] = gr_complex( -3.0, 5.0); + m_256apsk[67] = gr_complex( 5.0, 3.0); + m_256apsk[68] = gr_complex( 5.0, 5.0); + m_256apsk[69] = gr_complex( 5.0, -5.0); + m_256apsk[70] = gr_complex( -7.0, 5.0); + m_256apsk[71] = gr_complex( 5.0, 7.0); + m_256apsk[72] = gr_complex( 5.0, 9.0); + m_256apsk[73] = gr_complex( 9.0, -5.0); + m_256apsk[74] = gr_complex( -11.0, 5.0); + m_256apsk[75] = gr_complex( 5.0, 11.0); + m_256apsk[76] = gr_complex( 5.0, 13.0); + m_256apsk[77] = gr_complex( 13.0, -5.0); + m_256apsk[78] = gr_complex( -15.0, 5.0); + m_256apsk[79] = gr_complex( 5.0, 15.0); + m_256apsk[80] = gr_complex( -1.0, 5.0); + m_256apsk[81] = gr_complex( -5.0, -1.0); + m_256apsk[82] = gr_complex( -5.0, -3.0); + m_256apsk[83] = gr_complex( 3.0, -5.0); + m_256apsk[84] = gr_complex( -5.0, 5.0); + m_256apsk[85] = gr_complex( -5.0, -5.0); + m_256apsk[86] = gr_complex( -5.0, -7.0); + m_256apsk[87] = gr_complex( 7.0, -5.0); + m_256apsk[88] = gr_complex( -9.0, 5.0); + m_256apsk[89] = gr_complex( -5.0, -9.0); + m_256apsk[90] = gr_complex( -5.0, -11.0); + m_256apsk[91] = gr_complex( 11.0, -5.0); + m_256apsk[92] = gr_complex( -13.0, 5.0); + m_256apsk[93] = gr_complex( -5.0, -13.0); + m_256apsk[94] = gr_complex( -5.0, -15.0); + m_256apsk[95] = gr_complex( 15.0, -5.0); + m_256apsk[96] = gr_complex( 1.0, -7.0); + m_256apsk[97] = gr_complex( -7.0, -1.0); + m_256apsk[98] = gr_complex( -7.0, -3.0); + m_256apsk[99] = gr_complex( -3.0, 7.0); + m_256apsk[100] = gr_complex( 5.0, -7.0); + m_256apsk[101] = gr_complex( -7.0, -5.0); + m_256apsk[102] = gr_complex( -7.0, -7.0); + m_256apsk[103] = gr_complex( -7.0, 7.0); + m_256apsk[104] = gr_complex( 9.0, -7.0); + m_256apsk[105] = gr_complex( -7.0, -9.0); + m_256apsk[106] = gr_complex( -7.0, -11.0); + m_256apsk[107] = gr_complex(-11.0, 7.0); + m_256apsk[108] = gr_complex( 13.0, -7.0); + m_256apsk[109] = gr_complex( -7.0, -13.0); + m_256apsk[110] = gr_complex( -7.0, -15.0); + m_256apsk[111] = gr_complex(-15.0, 7.0); + m_256apsk[112] = gr_complex( 7.0, 1.0); + m_256apsk[113] = gr_complex( -1.0, 7.0); + m_256apsk[114] = gr_complex( 3.0, -7.0); + m_256apsk[115] = gr_complex( 7.0, 3.0); + m_256apsk[116] = gr_complex( 7.0, 5.0); + m_256apsk[117] = gr_complex( -5.0, 7.0); + m_256apsk[118] = gr_complex( 7.0, -7.0); + m_256apsk[119] = gr_complex( 7.0, 7.0); + m_256apsk[120] = gr_complex( 7.0, 9.0); + m_256apsk[121] = gr_complex( -9.0, 7.0); + m_256apsk[122] = gr_complex( 11.0, -7.0); + m_256apsk[123] = gr_complex( 7.0, 11.0); + m_256apsk[124] = gr_complex( 7.0, 13.0); + m_256apsk[125] = gr_complex(-13.0, 7.0); + m_256apsk[126] = gr_complex( 15.0, -7.0); + m_256apsk[127] = gr_complex( 7.0, 15.0); + m_256apsk[128] = gr_complex( 9.0, 1.0); + m_256apsk[129] = gr_complex( 1.0, -9.0); + m_256apsk[130] = gr_complex( -3.0, 9.0); + m_256apsk[131] = gr_complex( 9.0, 3.0); + m_256apsk[132] = gr_complex( 9.0, 5.0); + m_256apsk[133] = gr_complex( 5.0, -9.0); + m_256apsk[134] = gr_complex( -7.0, 9.0); + m_256apsk[135] = gr_complex( 9.0, 7.0); + m_256apsk[136] = gr_complex( 9.0, 9.0); + m_256apsk[137] = gr_complex( 9.0, -9.0); + m_256apsk[138] = gr_complex(-11.0, 9.0); + m_256apsk[139] = gr_complex( 9.0, 11.0); + m_256apsk[140] = gr_complex( 9.0, 13.0); + m_256apsk[141] = gr_complex( 13.0, -9.0); + m_256apsk[142] = gr_complex(-15.0, 9.0); + m_256apsk[143] = gr_complex( 9.0, 15.0); + m_256apsk[144] = gr_complex( -1.0, 9.0); + m_256apsk[145] = gr_complex( -9.0, -1.0); + m_256apsk[146] = gr_complex( -9.0, -3.0); + m_256apsk[147] = gr_complex( 3.0, -9.0); + m_256apsk[148] = gr_complex( -5.0, 9.0); + m_256apsk[149] = gr_complex( -9.0, -5.0); + m_256apsk[150] = gr_complex( -9.0, -7.0); + m_256apsk[151] = gr_complex( 7.0, -9.0); + m_256apsk[152] = gr_complex( -9.0, 9.0); + m_256apsk[153] = gr_complex( -9.0, -9.0); + m_256apsk[154] = gr_complex( -9.0, -11.0); + m_256apsk[155] = gr_complex( 11.0, -9.0); + m_256apsk[156] = gr_complex(-13.0, 9.0); + m_256apsk[157] = gr_complex( -9.0, -13.0); + m_256apsk[158] = gr_complex( -9.0, -15.0); + m_256apsk[159] = gr_complex( 15.0, -9.0); + m_256apsk[160] = gr_complex( 1.0, -11.0); + m_256apsk[161] = gr_complex(-11.0, -1.0); + m_256apsk[162] = gr_complex(-11.0, -3.0); + m_256apsk[163] = gr_complex( -3.0, 11.0); + m_256apsk[164] = gr_complex( 5.0, -11.0); + m_256apsk[165] = gr_complex(-11.0, -5.0); + m_256apsk[166] = gr_complex(-11.0, -7.0); + m_256apsk[167] = gr_complex( -7.0, 11.0); + m_256apsk[168] = gr_complex( 9.0, -11.0); + m_256apsk[169] = gr_complex(-11.0, -9.0); + m_256apsk[170] = gr_complex(-11.0, -11.0); + m_256apsk[171] = gr_complex(-11.0, 11.0); + m_256apsk[172] = gr_complex( 13.0, -11.0); + m_256apsk[173] = gr_complex(-11.0, -13.0); + m_256apsk[174] = gr_complex(-11.0, -15.0); + m_256apsk[175] = gr_complex(-15.0, 11.0); + m_256apsk[176] = gr_complex( 11.0, 1.0); + m_256apsk[177] = gr_complex( -1.0, 11.0); + m_256apsk[178] = gr_complex( 3.0, -11.0); + m_256apsk[179] = gr_complex( 11.0, 3.0); + m_256apsk[180] = gr_complex( 11.0, 5.0); + m_256apsk[181] = gr_complex( -5.0, 11.0); + m_256apsk[182] = gr_complex( 7.0, -11.0); + m_256apsk[183] = gr_complex( 11.0, 7.0); + m_256apsk[184] = gr_complex( 11.0, 9.0); + m_256apsk[185] = gr_complex( -9.0, 11.0); + m_256apsk[186] = gr_complex( 11.0, -11.0); + m_256apsk[187] = gr_complex( 11.0, 11.0); + m_256apsk[188] = gr_complex( 11.0, 13.0); + m_256apsk[189] = gr_complex(-13.0, 11.0); + m_256apsk[190] = gr_complex( 15.0, -11.0); + m_256apsk[191] = gr_complex( 11.0, 15.0); + m_256apsk[192] = gr_complex( 13.0, 1.0); + m_256apsk[193] = gr_complex( 1.0, -13.0); + m_256apsk[194] = gr_complex( -3.0, 13.0); + m_256apsk[195] = gr_complex( 13.0, 3.0); + m_256apsk[196] = gr_complex( 13.0, 5.0); + m_256apsk[197] = gr_complex( 5.0, -13.0); + m_256apsk[198] = gr_complex( -7.0, 13.0); + m_256apsk[199] = gr_complex( 13.0, 7.0); + m_256apsk[200] = gr_complex( 13.0, 9.0); + m_256apsk[201] = gr_complex( 9.0, -13.0); + m_256apsk[202] = gr_complex(-11.0, 13.0); + m_256apsk[203] = gr_complex( 13.0, 11.0); + m_256apsk[204] = gr_complex( 13.0, 13.0); + m_256apsk[205] = gr_complex( 13.0, -13.0); + m_256apsk[206] = gr_complex(-15.0, 13.0); + m_256apsk[207] = gr_complex( 13.0, 15.0); + m_256apsk[208] = gr_complex( -1.0, 13.0); + m_256apsk[209] = gr_complex(-13.0, -1.0); + m_256apsk[210] = gr_complex(-13.0, -3.0); + m_256apsk[211] = gr_complex( 3.0, -13.0); + m_256apsk[212] = gr_complex( -5.0, 13.0); + m_256apsk[213] = gr_complex(-13.0, -5.0); + m_256apsk[214] = gr_complex(-13.0, -7.0); + m_256apsk[215] = gr_complex( 7.0, -13.0); + m_256apsk[216] = gr_complex( -9.0, 13.0); + m_256apsk[217] = gr_complex(-13.0, -9.0); + m_256apsk[218] = gr_complex(-13.0, -11.0); + m_256apsk[219] = gr_complex( 11.0, -13.0); + m_256apsk[220] = gr_complex(-13.0, 13.0); + m_256apsk[221] = gr_complex(-13.0, -13.0); + m_256apsk[222] = gr_complex(-13.0, -15.0); + m_256apsk[223] = gr_complex( 15.0, -13.0); + m_256apsk[224] = gr_complex( 1.0, -15.0); + m_256apsk[225] = gr_complex(-15.0, -1.0); + m_256apsk[226] = gr_complex(-15.0, -3.0); + m_256apsk[227] = gr_complex( -3.0, 15.0); + m_256apsk[228] = gr_complex( 5.0, -15.0); + m_256apsk[229] = gr_complex(-15.0, -5.0); + m_256apsk[230] = gr_complex(-15.0, -7.0); + m_256apsk[231] = gr_complex( -7.0, 15.0); + m_256apsk[232] = gr_complex( 9.0, -15.0); + m_256apsk[233] = gr_complex(-15.0, -9.0); + m_256apsk[234] = gr_complex(-15.0, -11.0); + m_256apsk[235] = gr_complex(-11.0, 15.0); + m_256apsk[236] = gr_complex( 13.0, -15.0); + m_256apsk[237] = gr_complex(-15.0, -13.0); + m_256apsk[238] = gr_complex(-15.0, -15.0); + m_256apsk[239] = gr_complex(-15.0, 15.0); + m_256apsk[240] = gr_complex( 15.0, 1.0); + m_256apsk[241] = gr_complex( -1.0, 15.0); + m_256apsk[242] = gr_complex( 3.0, -15.0); + m_256apsk[243] = gr_complex( 15.0, 3.0); + m_256apsk[244] = gr_complex( 15.0, 5.0); + m_256apsk[245] = gr_complex( -5.0, 15.0); + m_256apsk[246] = gr_complex( 7.0, -15.0); + m_256apsk[247] = gr_complex( 15.0, 7.0); + m_256apsk[248] = gr_complex( 15.0, 9.0); + m_256apsk[249] = gr_complex( -9.0, 15.0); + m_256apsk[250] = gr_complex( 11.0, -15.0); + m_256apsk[251] = gr_complex( 15.0, 11.0); + m_256apsk[252] = gr_complex( 15.0, 13.0); + m_256apsk[253] = gr_complex(-13.0, 15.0); + m_256apsk[254] = gr_complex( 15.0, -15.0); + m_256apsk[255] = gr_complex( 15.0, 15.0); + break; case MOD_8VSB: m_8psk[0] = gr_complex(-7.0 + 1.25, 0.0); m_8psk[1] = gr_complex(-5.0 + 1.25, 0.0); @@ -1828,6 +2086,7 @@ namespace gr { } break; case MOD_256APSK: + case MOD_256QAM: for (int i = 0; i < noutput_items; i++) { index = *in++; *out++ = m_256apsk[index & 0xff]; @@ -1901,6 +2160,7 @@ namespace gr { } break; case MOD_256APSK: + case MOD_256QAM: for (int i = 0; i < noutput_items / 2; i++) { index = *in++; *out++ = m_256apsk[index & 0xff]; |