Changeset 4111

Show
Ignore:
Timestamp:
06/04/07 10:38:48 (6 years ago)
Author:
jgaeddert
Message:

Functional code for DepacketizerSimpleBPSK component complete; needs testing

Location:
experimental/components/DepacketizerSimpleBPSK/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • experimental/components/DepacketizerSimpleBPSK/src/DepacketizerDSP.cpp

    r4110 r4111  
    4040 
    4141    // 
    42     controlSequence = new char[NUM_CONTROL_CODES]; 
     42    controlSequence = new int[NUM_CONTROL_CODES]; 
    4343 
    4444} 
  • experimental/components/DepacketizerSimpleBPSK/src/DepacketizerDSP.h

    r4110 r4111  
    5757 
    5858    /// 
    59     char * controlSequence; 
     59    int * controlSequence; 
    6060     
    6161    /// Circular input buffer 
  • experimental/components/DepacketizerSimpleBPSK/src/DepacketizerSimpleBPSK.cpp

    r4108 r4111  
    4242    dataOut_1 = new standardInterfaces_i::realChar_u("controlOut"); 
    4343 
    44     foundSyncCode = false; 
    45     extractedControlBlock = false; 
    46     extractedDataBlock = false; 
     44    pnSyncCodeThreshold = PN_SYNC_CODE_LENGTH - 13; 
     45    operationalMode = EXTRACT_PN_SYNC_CODE; 
    4746     
    4847    //Create the thread for the writer's processing function  
     
    133132    PortTypes::CharSequence data_block_out; 
    134133    PortTypes::CharSequence control_block_out; 
     134     
     135    PortTypes::CharSequence *bits_in(NULL); 
     136     
    135137    unsigned int N;  // CORBA input block length 
    136138    unsigned int i;  // counter 
    137139 
    138140    while( true ) { 
    139         /* 
    140         foundSyncCode = false; 
    141         extractedControlBlock = false; 
    142         extractedDataBlock = false; 
    143         invertBits = false; 
    144         */ 
    145  
    146         switch ( operationalMode ) { 
    147         case EXTRACT_PN_SYNC_CODE: 
    148             // 
    149             break; 
    150         case EXTRACT_CONTROL_CODES: 
    151             // 
    152             break; 
    153         case EXTRACT_DATA_BLOCK: 
    154             // 
    155             break; 
    156         } 
    157  
    158         PortTypes::CharSequence *bits_in(NULL); 
     141 
     142        // Read input from provides port 
    159143        dataIn_0->getData(bits_in); 
    160144        N = bits_in->length(); 
    161145        DEBUG(0, DepacketizerSimpleBPSK, "got " << N << " samples") 
     146             
    162147#ifdef LOGGING 
    163148        for (i=0; i<N; i++) { 
     
    169154 
    170155 
    171         DEBUG(0, DepacketizerSimpleBPSK, "pushing " << data_block_out.length() << " data samples") 
    172         dataOut_0->pushPacket( data_block_out ); 
    173  
    174         DEBUG(0, DepacketizerSimpleBPSK, "pushing " << control_block_out.length() << " control samples") 
    175         dataOut_1->pushPacket( control_block_out ); 
     156        for (i=0; i<N; i++) { 
     157 
     158            switch ( operationalMode ) { 
     159            case EXTRACT_PN_SYNC_CODE: 
     160                // 
     161                inputBuffer.Push( (*bits_in)[i] ); 
     162                rxy = CorrelateSequence( pnSyncCode, PN_SYNC_CODE_LENGTH ); 
     163                if ( abs(rxy) > pnSyncCodeThreshold ) { 
     164                    invertBits = ( rxy < 0 ) ? true : false; 
     165                    DEBUG(0, DepacketizerSimpleBPSK, "SYNC CODE FOUND, inversion: " << invertBits) 
     166                    operationalMode = EXTRACT_CONTROL_CODES; 
     167                } 
     168                break; 
     169            case EXTRACT_CONTROL_CODES: 
     170                // 
     171                if ( numControlCodesExtracted == NUM_CONTROL_CODES ) { 
     172                    DEBUG(0, DepacketizerSimpleBPSK, "CONTROL CODES EXTRACTED"); 
     173                    DecodeControlSequence(); 
     174                    control_block_out[0] = (char) controlOutput; 
     175 
     176                    // Set mode to extract data block 
     177                    numBitsExtracted = 0; 
     178                    operationalMode = EXTRACT_DATA_BLOCK; 
     179                } else { 
     180                    if ( numBitsExtracted == PN_CONTROL_CODE_LENGTH ) { 
     181                        rxy = CorrelateSequence( pnControlCode, PN_CONTROL_CODE_LENGTH ); 
     182                        controlSequence[numControlCodesExtracted] = rxy; 
     183                        numControlCodesExtracted++; 
     184                        numBitsExtracted++; 
     185                    } else { 
     186                        inputBuffer.Push( (*bits_in)[i] ); 
     187                        numBitsExtracted++; 
     188                    } 
     189                    break; 
     190                } 
     191            case EXTRACT_DATA_BLOCK: 
     192                // 
     193                if ( numBitsExtracted < DATA_BLOCK_LENGTH ) { 
     194                    data_block_out[numBitsExtracted++] = (*bits_in)[i]; 
     195                } else { 
     196                    DEBUG(0, DepacketizerSimpleBPSK, "DATA BLOCK EXTRACTED!"); 
     197                     
     198                    DEBUG(0, DepacketizerSimpleBPSK, "pushing " << data_block_out.length() << " data samples") 
     199                    dataOut_0->pushPacket( data_block_out ); 
     200 
     201                    DEBUG(0, DepacketizerSimpleBPSK, "pushing control sample") 
     202                    dataOut_1->pushPacket( control_block_out ); 
     203 
     204                    // Reset counter variables 
     205                    numControlCodesExtracted = 0; 
     206                    numBitsExtracted = 0; 
     207                    operationalMode = EXTRACT_PN_SYNC_CODE; 
     208                } 
     209                break; 
     210            } 
     211        } 
     212 
    176213 
    177214    } 
  • experimental/components/DepacketizerSimpleBPSK/src/DepacketizerSimpleBPSK.h

    r4108 r4111  
    7777        // ----- algorithm methods ----- 
    7878 
    79         bool foundSyncCode; 
    80         bool extractedControlBlock; 
    81         bool extractedDataBlock; 
    82         bool invertBits;               ///< negative correlation indicator 
     79        unsigned int numControlCodesExtracted; 
     80        unsigned int numBitsExtracted; 
     81        int pnSyncCodeThreshold;        ///< 
     82        bool invertBits;                ///< negative correlation indicator 
    8383 
    8484        /// Operational mode 
     
    9292}; 
    9393#endif 
     94