Jay,
Thanks for checking out pre-cog. I'm not sure what "algorithm" you'd
call it, or if calling it an "algorithm" might be giving the
implementation more credit than it deserves, but here is the basic MO
of the FHSS blocks:
1. All I/O is to/from the FHSS_hier implementations is done with
message passing - currently of gr-extras variety. Someday, with
Johnathan Corgan's help this may get converted to the new message
passing API in gnuradio.
2. The TX blocks read the rx sample stream from the USRP, pull off
stream tags, and count samples to maintain an awareness of the
USRP time. It tracks this time, and when a target time elapses,
the block issues a tuning command via XML_RPT, and a timed burst
via tagged sample packets in a stream. After each time, we set the
next time we want to transmit. In reality, the act of issuing the
tune command and sending a burst happens some time (1-5 ms) before
the actual burst occurs. The frequencies are provided to the
block as a parameter - comma delimited text.
3. On the receive side, the FHSS simply tunes the USRP to the first
frequency of the frequency list. It waits here until it receives
a valid packet - then it uses a similar process to (2) to start
hopping in lock step.
This was a basic demo of how to use stream tags and message passing to
integrate control functions in a GRC flowgraph. There's a lot of
potential improvements - its slow, it could be converted to C++, etc.
Once you've got the basics up and running, I do invite contributions
to pre-cog or gnuradio.
I've attached files for an FHSS transceiver, but I'd start off with
the simplex examples in the repo.
-John
On Sat, Jun 8, 2013 at 8:42 AM, Jay Prakash
<address@hidden <mailto:address@hidden>>
wrote:
I am working on hopping frequency data transfer for PU (RX-TX).
I need to have both rx tx aware of which channel to communicate
with in each hop.
I read about FHSS implementation in PRECOG.
Which algorithm is being used there to synchronize them?
Can I get a brief code walk through?
Jay Prakash