Hello
With the inpiration of this thread (viewtopic.php?p=6789), I've been able to implement a fast frequency hopping TX. I am scheduling frequency retune and transmit small burst.
First chalenge was the limitation of the retune queue of 16 , I kept a circular reference of each timestamp I retune.
When a BLADERF_ERR_QUEUE_FULL occur while scheduling the next frequency retune, I can not just sleep a little and try again, the result is broken.
Instead I get_timestamp:
- get_timestamp from the device
- I compare with the first element of the circular list.
- If current timestamp is before the first in the list, retry
- else: bladerf_schedule_retune
I get the timestamp again and again until the current is after the first element. At this point, it is telling us that there are less than 15 scheduled retune requests. Or maybe the queue is empty...
Every time we are looking for the timestamp, it is adding delay. This delay is not fixed and there is a chance a longer delay occured and the scheduling won't be syncronized. I suspect it has happenned here:
Is there another way in python to schedule retune without having to get timestamp ?
In this example, I add a 2500 timestamps after the schedule retune and I schedule the next retune by adding 10692 to the timestamp. 10692/2500 = 4.2768
With this screenshot, I measured 100 pixels for the first 2500 timestamp, the schedule of the next retune is 10692 timestamp later, it should be approx. 428 pixels later.
Why the next retune does not happen at the timestamp I asked for ?