Changeset 4746

Show
Ignore:
Timestamp:
08/16/07 21:38:14 (7 years ago)
Author:
jgaeddert
Message:

fixing ModulateSequence method in DigitalModem, adding autotests

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

Legend:

Unmodified
Added
Removed
  • experimental/components/DigitalModem/trunk/DigitalModem/atsrc/DigitalModulator_testsuite.h

    r4745 r4746  
    7575 
    7676    void test_ModulateBPSK() { 
     77        char b[2] = {BIT0, BIT1}; 
     78        short * I_out = new short[2]; 
     79        short * Q_out = new short[2]; 
     80 
     81        SetModulationScheme( SigProc::BPSK ); 
     82        ModulateSequence( b, 2, I_out, Q_out ); 
     83         
     84        TS_ASSERT_EQUALS( I_out[0], -BPSK_LEVEL ); 
     85        TS_ASSERT_EQUALS( Q_out[0],  0          ); 
     86         
     87        TS_ASSERT_EQUALS( I_out[1],  BPSK_LEVEL ); 
     88        TS_ASSERT_EQUALS( Q_out[1],  0          ); 
     89         
     90        delete [] I_out; 
     91        delete [] Q_out; 
    7792    } 
    7893 
    7994    void test_ModulateQPSK() { 
     95        char b[8] = {BIT0, BIT0, 
     96                     BIT0, BIT1, 
     97                     BIT1, BIT0, 
     98                     BIT1, BIT1}; 
     99                      
     100        short * I_out = new short[4]; 
     101        short * Q_out = new short[4]; 
     102 
     103        SetModulationScheme( SigProc::QPSK ); 
     104        ModulateSequence( b, 8, I_out, Q_out ); 
     105         
     106        TS_ASSERT_EQUALS( I_out[0],  QPSK_LEVEL ); 
     107        TS_ASSERT_EQUALS( Q_out[0],  QPSK_LEVEL ); 
     108         
     109        TS_ASSERT_EQUALS( I_out[1],  QPSK_LEVEL ); 
     110        TS_ASSERT_EQUALS( Q_out[1], -QPSK_LEVEL ); 
     111         
     112        TS_ASSERT_EQUALS( I_out[2], -QPSK_LEVEL ); 
     113        TS_ASSERT_EQUALS( Q_out[2],  QPSK_LEVEL ); 
     114         
     115        TS_ASSERT_EQUALS( I_out[3], -QPSK_LEVEL ); 
     116        TS_ASSERT_EQUALS( Q_out[3], -QPSK_LEVEL ); 
     117         
     118        delete [] I_out; 
     119        delete [] Q_out; 
     120 
    80121    } 
    81122 
    82123    void test_Modulate8PSK() { 
     124        char b[24] = {BIT0, BIT0, BIT0, 
     125                      BIT0, BIT0, BIT1, 
     126                      BIT0, BIT1, BIT0, 
     127                      BIT0, BIT1, BIT1, 
     128                      BIT1, BIT0, BIT0, 
     129                      BIT1, BIT0, BIT1, 
     130                      BIT1, BIT1, BIT0, 
     131                      BIT1, BIT1, BIT1}; 
     132         
     133        short * I_out = new short[8]; 
     134        short * Q_out = new short[8]; 
     135 
     136        SetModulationScheme( SigProc::PSK8 ); 
     137        ModulateSequence(b, 24, I_out, Q_out); 
     138 
     139        TS_ASSERT_EQUALS( I_out[0],  PSK8_LEVEL_2 ); 
     140        TS_ASSERT_EQUALS( Q_out[0],  0            ); 
     141         
     142        TS_ASSERT_EQUALS( I_out[1],  PSK8_LEVEL_1 ); 
     143        TS_ASSERT_EQUALS( Q_out[1],  PSK8_LEVEL_1 ); 
     144         
     145        TS_ASSERT_EQUALS( I_out[2],  PSK8_LEVEL_1 ); 
     146        TS_ASSERT_EQUALS( Q_out[2], -PSK8_LEVEL_1 ); 
     147         
     148        TS_ASSERT_EQUALS( I_out[3],  0            ); 
     149        TS_ASSERT_EQUALS( Q_out[3], -PSK8_LEVEL_2 ); 
     150         
     151        TS_ASSERT_EQUALS( I_out[4], -PSK8_LEVEL_1 ); 
     152        TS_ASSERT_EQUALS( Q_out[4],  PSK8_LEVEL_1 ); 
     153         
     154        TS_ASSERT_EQUALS( I_out[5],  0            ); 
     155        TS_ASSERT_EQUALS( Q_out[5],  PSK8_LEVEL_2 ); 
     156         
     157        TS_ASSERT_EQUALS( I_out[6], -PSK8_LEVEL_2 ); 
     158        TS_ASSERT_EQUALS( Q_out[6],  0            ); 
     159         
     160        TS_ASSERT_EQUALS( I_out[7], -PSK8_LEVEL_1 ); 
     161        TS_ASSERT_EQUALS( Q_out[7], -PSK8_LEVEL_1 ); 
     162         
     163        delete [] I_out; 
     164        delete [] Q_out; 
     165 
    83166    } 
    84167 
  • experimental/components/DigitalModem/trunk/DigitalModem/src/DigitalModem.cpp

    r4745 r4746  
    125125        throw 0; 
    126126    } else { 
    127         for (unsigned int i=0; i<N_in; i++) { 
    128             ConvertBitsToSymbol(bits_in, s); 
     127        for (unsigned int i=0; j<N_in; i++) { 
     128            ConvertBitsToSymbol(bits_in+j, s); 
    129129            Modulate(s, I_out[i], Q_out[i]); 
    130130            j += bitsPerSymbol;