defProperty('rxfreq', 2400e6, "Starting rx frequency") defProperty('rxstep', 10e6, "Rx frequency increments") defProperty('nfreq', 10, "Number of frequency steps") defProperty('dwell', 10, "Number of seconds at each frequency step") defGroup('rxnode', 'node1-1.grid.orbit-lab.org,node1-2.grid.orbit-lab.org,node1-19.grid.orbit-lab.org,node1-20.grid.orbit-lab.org') { |n| } onEvent(:ALL_UP) do |event| info "Give machines some time to warm up" wait 4 allGroups.uhd.u0.activate # starts uhd_daemon wait 3 group("rxnode").uhd.u0.rxrate = "8e6" # set receive chain sampling rate group("rxnode").uhd.u0.rxgain = "20" # set receive chain gain (dB) group("rxnode").uhd.u0.numbins = "128" # set size of fft group("rxnode").uhd.u0.avgwinlen = "32" # set averaging window size for each fft bin across time. group("rxnode").uhd.u0.omlfile = "spectrum.grid" # oml database filename to store fft data group("rxnode").uhd.u0.omlserver = "idb2:3003" # oml server group("rxnode").uhd.u0.record # enable recording thread (0..property.nfreq).each { |i| # set up loop cf = property.rxfreq + (property.rxstep*i) # compute next carrier frequency group("rxnode").uhd.u0.rxfreq = cf # set receive chain carrier frequency (Hz) wait property.dwell # wait for number of seconds before computing next frequency } group("rxnode").uhd.u0.stop # stop recording thread allGroups.uhd.u0.deactivate # turn off uhd_daemon info "Finish it." Experiment.done end