Changeset 5253

Show
Ignore:
Timestamp:
10/06/07 17:18:22 (6 years ago)
Author:
jgaeddert
Message:

moving code to dynamically set modulation scheme based on incoming meta data to separate method in demodulator

Location:
experimental/components/DigitalModem/trunk/DigitalModem/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • experimental/components/DigitalModem/trunk/DigitalModem/src/DigitalDemodulator.cpp

    r5039 r5253  
    3838    processing_thread->start(); 
    3939 
     40    packet_data = NULL; 
    4041} 
    4142 
     
    105106    DEBUG(3, DigitalDemodulator, "configure() invoked") 
    106107     
    107     DEBUG(3, DigitalModulator, "props length : " << props.length()); 
     108    DEBUG(3, DigitalDemodulator, "props length : " << props.length()); 
    108109 
    109110    for (unsigned int i = 0; i <props.length(); i++) { 
    110         DEBUG(3, DigitalModulator, "Property id : " << props[i].id); 
     111        DEBUG(3, DigitalDemodulator, "Property id : " << props[i].id); 
    111112 
    112113        if (strcmp(props[i].id, "DCE:df4641d3-5c25-47d4-8d0b-89a069ac0248") == 0) { 
     
    143144} 
    144145 
     146void 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 
    145202void DigitalDemodulator_i::ProcessData() 
    146203{ 
     
    150207 
    151208    PortTypes::ShortSequence *I_in(NULL), *Q_in(NULL); 
    152     standardInterfaces::MetaData *packet_data(NULL); 
     209     
    153210    unsigned int N_in(0), N_out(0); 
    154211 
     
    166223        } 
    167224 
    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(); 
    217227 
    218228        // Read input data length 
     
    243253 
    244254        dataIn_0->bufferEmptied(); 
    245         dataOut_0->pushPacket(bits_out); 
     255        dataOut_0->pushPacket(bits_out, *packet_data); 
    246256 
    247257        delete [] b; 
  • experimental/components/DigitalModem/trunk/DigitalModem/src/DigitalDemodulator.h

    r4737 r5253  
    8181    DigitalDemodulator_i(DigitalDemodulator_i&); 
    8282 
     83    /// Configure modulation scheme based on MetaData tag 
     84    void SetModulationSchemeOnMetaData(); 
     85 
    8386    /// Main signal processing method 
    8487    void ProcessData(); 
     
    9194    standardInterfaces_i::realChar_u *dataOut_0; 
    9295 
     96    standardInterfaces::MetaData *packet_data; 
    9397}; 
    9498