Hi, I am wondering what is the best way to perform frequency hopping in gnuradio on an *architectural* level.
I have a frequency vector [ f1 , f2 , f3 ]. GRC should tune the TX to f1, f2, f3, f1, f2, ... and the RX to 2*f1, 2*f2, 2*f3, 2*f1, 2*f2, ... Denote the time interval for each frequency as Tf and a complete sweep as Tsweep=3*Tf with Tf = Tsettle + Tvalid. During each Tvalid, the TX sends modulated data and waits for a modulated response. After processing (filtering, clock recovery, decimation etc) the response consists of N (e.g. N=100) bits. After each Tsweep, the three responses acquired for each frequency (i.e. 3x100 bits) should be passed to the next block at a rate 1/Tsweep. What is the best way to implement this in GRC reusing as many standard blocks from GRC as possible? - Is it a good idea to use "Message Strobe" to generate a message to change frequency for the USRP Source/Sink blocks at a rate 1/Tf? - Is it a better idea to change a python variable "center_freq"? - What is the best way to update such a python variable? - Is it a good idea to create Signal Source Saw Tooth and use "Probe Signal"? - Is it a good idea to use the "lo_locked" sensor or just make "Tsettle" big enough? How to use "lo_locked" from within Gnuradio? - What is the best way to combine the results for each frequency into one item that is passed at a rate 1/Tsweep? - Is it a good idea to use "Stream to Vector"? - How do I ensure that for each frequency, exactly the same number of output samples are generated? Thanks, Luke PS: This sounds like something fairly trivial but 99% GRC examples are using a straight-forward data stream flow. I worked through the tutorials but they really only touch on this point briefly. Now I need to dynamically change the behavior of the signal flow over time while ensuring that everything stays time-aligned properly and to combine data from very different points in time into a single data point.