| | 146 | void DigitalDemodulator_i::SetModulationSchemeOnMetaData() |
| | 147 | { |
| | 148 | switch (packet_data->modulation_scheme.scheme) { |
| | 149 | case standardInterfaces::ModulationScheme::UNKNOWN: |
| | 150 | // Meta data has not been configured; do not change modulation scheme |
| | 151 | return; |
| | 152 | case standardInterfaces::ModulationScheme::PSK: |
| | 153 | switch (packet_data->modulation_scheme.M) { |
| | 154 | case 2: |
| | 155 | SetModulationScheme(SigProc::BPSK); |
| | 156 | DEBUG(5, DigitalDemodulator, "Demod set to BPSK"); |
| | 157 | break; |
| | 158 | case 4: |
| | 159 | SetModulationScheme(SigProc::QPSK); |
| | 160 | DEBUG(5, DigitalDemodulator, "Demod set to QPSK"); |
| | 161 | break; |
| | 162 | case 8: |
| | 163 | SetModulationScheme(SigProc::PSK8); |
| | 164 | DEBUG(5, DigitalDemodulator, "Demod set to 8PSK"); |
| | 165 | break; |
| | 166 | default: |
| | 167 | std::cerr << "DigitalDemodulator-metadata: Unsupported PSK modulation depth" << std::endl; |
| | 168 | throw 0; |
| | 169 | } |
| | 170 | break; |
| | 171 | case standardInterfaces::ModulationScheme::QAM: |
| | 172 | switch (packet_data->modulation_scheme.M) { |
| | 173 | case 4: |
| | 174 | SetModulationScheme(SigProc::QAM4); |
| | 175 | DEBUG(5, DigitalDemodulator, "Demod set to 4-QAM"); |
| | 176 | break; |
| | 177 | case 16: |
| | 178 | SetModulationScheme(SigProc::QAM16); |
| | 179 | DEBUG(5, DigitalDemodulator, "Demod set to 16QAM"); |
| | 180 | break; |
| | 181 | default: |
| | 182 | std::cerr << "DigitalDemodulator-metadata: Unsupported QAM modulation depth" << std::endl; |
| | 183 | throw 0; |
| | 184 | } |
| | 185 | break; |
| | 186 | case standardInterfaces::ModulationScheme::PAM: |
| | 187 | switch (packet_data->modulation_scheme.M) { |
| | 188 | case 4: |
| | 189 | SetModulationScheme(SigProc::PAM4); |
| | 190 | DEBUG(5, DigitalDemodulator, "Demod set to 4PAM"); |
| | 191 | break; |
| | 192 | default: |
| | 193 | std::cerr << "DigitalDemodulator-metadata: Unsupported PAM modulation depth" << std::endl; |
| | 194 | throw 0; |
| | 195 | } |
| | 196 | break; |
| | 197 | default:; |
| | 198 | } |
| | 199 | } |
| | 200 | |
| | 201 | |
| 168 | | switch (packet_data->modulation_scheme.scheme) { |
| 169 | | case standardInterfaces::ModulationScheme::PSK: |
| 170 | | switch (packet_data->modulation_scheme.M) { |
| 171 | | case 2: |
| 172 | | SetModulationScheme(SigProc::BPSK); |
| 173 | | DEBUG(5, DigitalModulator, "Demod set to BPSK"); |
| 174 | | break; |
| 175 | | case 4: |
| 176 | | SetModulationScheme(SigProc::QPSK); |
| 177 | | DEBUG(5, DigitalModulator, "Demod set to QPSK"); |
| 178 | | break; |
| 179 | | case 8: |
| 180 | | SetModulationScheme(SigProc::PSK8); |
| 181 | | DEBUG(5, DigitalModulator, "Demod set to 8PSK"); |
| 182 | | break; |
| 183 | | default: |
| 184 | | std::cerr << "DigitalDemodulator-metadata: Unsupported PSK modulation depth" << std::endl; |
| 185 | | throw 0; |
| 186 | | } |
| 187 | | break; |
| 188 | | case standardInterfaces::ModulationScheme::QAM: |
| 189 | | switch (packet_data->modulation_scheme.M) { |
| 190 | | case 4: |
| 191 | | SetModulationScheme(SigProc::QPSK); |
| 192 | | DEBUG(5, DigitalModulator, "Demod set to QPSK (4QAM)"); |
| 193 | | break; |
| 194 | | case 16: |
| 195 | | SetModulationScheme(SigProc::QAM16); |
| 196 | | DEBUG(5, DigitalModulator, "Demod set to 16QAM"); |
| 197 | | break; |
| 198 | | default: |
| 199 | | std::cerr << "DigitalDemodulator-metadata: Unsupported QAM modulation depth" << std::endl; |
| 200 | | throw 0; |
| 201 | | } |
| 202 | | break; |
| 203 | | case standardInterfaces::ModulationScheme::PAM: |
| 204 | | switch (packet_data->modulation_scheme.M) { |
| 205 | | case 4: |
| 206 | | SetModulationScheme(SigProc::PAM4); |
| 207 | | DEBUG(5, DigitalModulator, "Demod set to 4PAM"); |
| 208 | | break; |
| 209 | | default: |
| 210 | | std::cerr << "DigitalDemodulator-metadata: Unsupported PAM modulation depth" << std::endl; |
| 211 | | throw 0; |
| 212 | | } |
| 213 | | break; |
| 214 | | case standardInterfaces::ModulationScheme::UNKNOWN: |
| 215 | | default:; |
| 216 | | } |
| | 225 | // Set the modulation scheme based on the meta data tag |
| | 226 | SetModulationSchemeOnMetaData(); |