tbisanz

Untitled

Oct 23rd, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1.         //this is the loop over all data words!
  2.         //checking data[i+1], so max. index is one lower than array size (??)
  3.         for (int i = 0; i < (SRAM_WORDSIZE-1) ; i++)
  4.         {  
  5.         std::cout << "Processing data word: " << i << std::endl;
  6.        
  7.             if (data[i] == 0)
  8.             {
  9.                 std::cout << "Found data==0" << std::endl;
  10.                 zero_counter++;
  11.             }
  12.             else
  13.             {
  14.                 //reset zero counter
  15.                 zero_counter = 0;
  16.  
  17.                 std::cout << "Trying TRIGGER_WORD_MACRO" << std::endl;
  18.                 if( TRIGGER_WORD_MACRO(data[i]) )
  19.                 {
  20.                     std::cout << "TRIGGER_WORD_MACRO worked!" << std::endl;
  21.                                    
  22.                     //decode Triggernumber
  23.                     t_trigger_number = TRIGGER_NUMBER_MACRO2(data[i], data[i+1])%TLU_TRIGGER_AMOUNT;
  24.  
  25.                     std::cout << "Decoded trigger number: " << t_trigger_number << std::endl;
  26.                    
  27.                     //INIT lastTriggerNumber
  28.                     if(lastTriggerNumber == -1)
  29.                     {
  30.                          lastTriggerNumber = t_trigger_number-1;
  31.                     }
  32.  
  33.                     // The TLU returns only 15 bit numbers, so we have to be aware of a restart
  34.                     if (recieved_trigger[index] == -1)
  35.                     {
  36.                          multiplier = 0;
  37.                     }
  38.                     else
  39.                     {
  40.                         multiplier = recieved_trigger[index]/TLU_TRIGGER_AMOUNT;
  41.                     }
  42.  
  43.                     //increase multiplier only when close to the end of the trigger range
  44.                     if(
  45.                         (t_trigger_number < (recieved_trigger[index]%TLU_TRIGGER_AMOUNT)) &&
  46.                         ((recieved_trigger[index]%TLU_TRIGGER_AMOUNT)>(TLU_TRIGGER_AMOUNT - 50))
  47.                       )
  48.                     {
  49.                         multiplier++;
  50.                         recieved_trigger[index] = (multiplier*TLU_TRIGGER_AMOUNT)+t_trigger_number;
  51.                     }
  52.                     else if (t_trigger_number > (recieved_trigger[index]%TLU_TRIGGER_AMOUNT))
  53.                     {
  54.                         recieved_trigger[index] = (multiplier*TLU_TRIGGER_AMOUNT)+t_trigger_number;
  55.                     }
  56.                        
  57.                     //increase i by 1, because trigger number is split into two words
  58.                     i++;
  59.                     lastDataIndex = i;
  60.                 }
  61.             }
  62.  
  63.             // break loop if there are sufficient zeros
  64.             if (zero_counter>max_zero)
  65.             {
  66.                 //TODO: Give out error
  67.                 if(STEP_DEBUG) std::cout << "zero_counter>" << max_zero<<" -> exiting trigger finder loop, halting at: word index i=" << i << std::endl;
  68.                 break;
  69.             }
  70.         } //loop over data words
Advertisement
Add Comment
Please, Sign In to add comment