none
umxsdrbrick time counter

    Question

  • Hello,

    I recently played with the user mode SDR. But I could not find the code that set up the time counter.
    For example, "KeSetTimer" is used in kernel mode.  
    The following code piece comes from sdr_mac_send.cpp

    LARGE_INTEGER timeout;
    timeout.QuadPart = (LONGLONG)-10*1000*send_timeout;
    KeSetTimer(&pSendQueueManager->CleanQTimer, timeout, &pSendQueueManager->CleanQDPC);

    In this case,  re-transmit packet if the ACK responding time interval is greater than timeout. Otherwise, transmit new data and reset KeSetTimer.

    However, I could not find the similar functions when I look at the umxsdrbrick implementation. In the mac.cpp, I have seem this.

    nWaitCounter = nACKTimeout

    It looks like the code set the timeout value but did not start timer like "KeSetTimer".

    The question is: How does umxsdrbrick set timer?

    Thanks
    Muye
    Tuesday, December 03, 2013 3:40 AM

Answers

All replies

  • I have seem this post
    http://social.microsoft.com/Forums/en-US/96ffc95c-5272-41d0-9df1-e0d44283ee15/question-about-handling-timer-for-backoff-sifs-etc?forum=sora

    There is one sentence catch my attension.
    "general we set the max/min boundary for samples used in carrier sense phase to achieve time control."



    Tuesday, December 03, 2013 4:33 AM
  • If I am dealing with 802.11a code. Should I look for "TCCA11a" in cca.hpp?

    Also, what if I have an application requires strict timing. Is it achievable with Sora platform?
    For example, if I want my Sora node only transmit certain amount of time like 50 ms. 
    How can I do this kind of timing control? 

    Thanks
    • Edited by MUYE20 Tuesday, December 03, 2013 10:26 PM
    Tuesday, December 03, 2013 5:41 AM
  • You have mixed many questions in this thread, and they are overlapped with another your thread

    http://social.microsoft.com/Forums/en-US/adae789a-1e78-4e1e-86a6-d144b70869b1/value-for-ack-timeout-and-difs-in-brick-implementation?forum=sora

    Please review my answer, and reply in the proper thread about your remaining question. The more specific and detailed, the more easy for us to support you.

    • Marked as answer by MUYE20 Thursday, December 05, 2013 9:37 PM
    Wednesday, December 04, 2013 6:39 AM
    Answerer
  • Hello Qi, 

    Thanks for your reply. That answers my question. Seems like the timing control is accomplished through the carrier sense.
    Specifically, the "max_sense_count" is set to 84 in the module TCCA11a. This means if the number of sample equal to 84, then we know 4 us elapsed.
    Just wondering what is the benefit of using such design to achieve timing control.

    However, if I have application requires node only can transmit for certain amount of time like 500 us. 
    What would be the best mechanism to do timing control when the node is transmitting? Any suggestions?

    Thanks
    Muye Liu



    Wednesday, December 04, 2013 7:42 AM
  • You understanding about carrier sense is absolutely correct.

    Why using this? This is the most natural way to implement the critical timing in current baseband. If you have better method, you may kindly share with us.

    For your requirement, the straightforward solution is just preparing 500 us samples, transferring to RCB memory, then TX. The most proper solution depends on your protocol details.

    • Proposed as answer by Qi LuoEditor Wednesday, December 04, 2013 8:04 AM
    • Marked as answer by MUYE20 Thursday, December 05, 2013 9:37 PM
    Wednesday, December 04, 2013 8:03 AM
    Answerer