Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //this is the loop over all data words!
- //checking data[i+1], so max. index is one lower than array size (??)
- for (int i = 0; i < (SRAM_WORDSIZE-1) ; i++)
- {
- std::cout << "Processing data word: " << i << std::endl;
- if (data[i] == 0)
- {
- std::cout << "Found data==0" << std::endl;
- zero_counter++;
- }
- else
- {
- //reset zero counter
- zero_counter = 0;
- std::cout << "Trying TRIGGER_WORD_MACRO" << std::endl;
- if( TRIGGER_WORD_MACRO(data[i]) )
- {
- std::cout << "TRIGGER_WORD_MACRO worked!" << std::endl;
- //decode Triggernumber
- t_trigger_number = TRIGGER_NUMBER_MACRO2(data[i], data[i+1])%TLU_TRIGGER_AMOUNT;
- std::cout << "Decoded trigger number: " << t_trigger_number << std::endl;
- //INIT lastTriggerNumber
- if(lastTriggerNumber == -1)
- {
- lastTriggerNumber = t_trigger_number-1;
- }
- // The TLU returns only 15 bit numbers, so we have to be aware of a restart
- if (recieved_trigger[index] == -1)
- {
- multiplier = 0;
- }
- else
- {
- multiplier = recieved_trigger[index]/TLU_TRIGGER_AMOUNT;
- }
- //increase multiplier only when close to the end of the trigger range
- if(
- (t_trigger_number < (recieved_trigger[index]%TLU_TRIGGER_AMOUNT)) &&
- ((recieved_trigger[index]%TLU_TRIGGER_AMOUNT)>(TLU_TRIGGER_AMOUNT - 50))
- )
- {
- multiplier++;
- recieved_trigger[index] = (multiplier*TLU_TRIGGER_AMOUNT)+t_trigger_number;
- }
- else if (t_trigger_number > (recieved_trigger[index]%TLU_TRIGGER_AMOUNT))
- {
- recieved_trigger[index] = (multiplier*TLU_TRIGGER_AMOUNT)+t_trigger_number;
- }
- //increase i by 1, because trigger number is split into two words
- i++;
- lastDataIndex = i;
- }
- }
- // break loop if there are sufficient zeros
- if (zero_counter>max_zero)
- {
- //TODO: Give out error
- if(STEP_DEBUG) std::cout << "zero_counter>" << max_zero<<" -> exiting trigger finder loop, halting at: word index i=" << i << std::endl;
- break;
- }
- } //loop over data words
Advertisement
Add Comment
Please, Sign In to add comment