none
Question about "SoraFetchXMMSignalBlock"

    Question

  • The doc SDKRef give the reference SoraFetchXMMSignalBlock as:

    __inline HRESULT  

    SoraXMMFetchSignalBlock( 
                IN PRX_BLOCK       pScanPoint,  
                IN const FLAG      *fWorkIndicator,  
                IN USHORT             uRetries,  
                OUT FLAG           *  fReachEnd); 
    If I set parameter "uRetries=4000", but the XMM has got the 28 samples before 4000 retries for example 1000 retries.  The thread will wait for the exact 4000 or break the retries?
    Wednesday, October 27, 2010 12:37 PM

Answers

  • Hi,

    Yes. uRetries sets the max waiting loops. The function will return if enough samples are collected, or no new samples occur until reaching this max. Then an error code will be returned.

    - Kun

    • Marked as answer by Kun TanOwner Sunday, October 31, 2010 8:59 AM
    Sunday, October 31, 2010 4:38 AM
    Owner

All replies

  • Hi,

    Yes. uRetries sets the max waiting loops. The function will return if enough samples are collected, or no new samples occur until reaching this max. Then an error code will be returned.

    - Kun

    • Marked as answer by Kun TanOwner Sunday, October 31, 2010 8:59 AM
    Sunday, October 31, 2010 4:38 AM
    Owner
  • Thank you for replying. I'll try to use this function to guarantee receiving synchronization.
    Monday, November 01, 2010 7:47 AM
  • Hi,

    Yes. uRetries sets the max waiting loops. The function will return if enough samples are collected, or no new samples occur until reaching this max. Then an error code will be returned.

    - Kun

    I tried to use  the function SoraFetchXMMSignalBlock , but there is still  a question. For example, I want to get 1000*28  receiving samples. 

    First, I use "SoraURadioMapRxBuffer" and "SoraGetRadioCurrentScanPoint" to get scan point .

    Then, I  use a loop  to get samples as :

      while(samplecounter<1000)

    {

         hr = SoraFetchXMMSignalBlock(pRxBlock,NULL,40000,&fReachEnd);

           if(hr == S_OK)
          {
            pRxBlock = (PRX_BLOCK) SoraGetRadioNextScanPoint ( & SampleStream, (PUCHAR) pRxBlock );  
            samplecounter++;
          }

       //

             code  for store pRxBlock 

       // 

      SoraSetRadioCurrentScanPoint(&SampleStream, (PUCHAR)pRxBlock);

    }

    I find that the time for receiving this 1000*28 samples will last much more time. I don't know if I used these functions right?

    Tuesday, November 02, 2010 5:53 AM
  • This is correct. what do you mean by saying "much more"
    Tuesday, November 02, 2010 7:18 AM
    Moderator
  • Are you sure the radio is working? Or the hardware is actually feeding your memory with data?
    Tuesday, November 02, 2010 9:27 AM
    Owner
  • For example, we can calctulate the time for receiving 1000*28 sample as: t = (1000*28)/(44M)=0.64ms. But I use above code to receive 1000*28 may last 2 min or more. Moreover, among the debuging information,  I find that most time hr returns the value  "E_FETCH_SIGNAL_HW_TIMEOUT". Only a little number of  times hr returns  S_OK.

    Thursday, November 04, 2010 2:48 AM
  • Beacuse I use the user mode, maybe I can't use the function "SORA_HW_ENABLE_RX". So I use the dut tools "dut.exe  rx " to  set the radion receiving. And I use "dut.exe dump" to test if the buffer is feeding with data. "SoraFetchXMMSignalBlock" can't distinguish the "real signal" or noise, right? 
    Thursday, November 04, 2010 2:55 AM