Sure. I don’t know if you need an explanation about it (since the code
is
really ugly), but if you do, I’ll gladly explain what I’m doing.
class detector(grc_wxgui.top_block_gui):
def init(self, options):
grc_wxgui.top_block_gui.init(self, title=“Detector22”)
_icon_path =
“/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png”
self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY))
##################################################
# Variables
##################################################
self.type = options[‘type’]
if self.type==“CAL”:
print
“##############################CALIBRATING##################################”
elif self.type==“THR”:
print “#############GOING THROUGH
THRESHOLD####################”
self.threshold=options[‘threshold’]
self.sensingSamples = options['sensingSamples']
self.fftSize = options['fftSize']
self.sampleRate = options['sampleRate']
self.packetSize = options['packetSize']
self.averageSize = self.sensingSamples
#options[‘averageSize’]=self.sensingSamples # SEMPRE IGUAL ATM
self.emitterGain = options[‘emitterGain’]
self.receiverGain = options[‘receiverGain’]
self.frequency = options[‘frequency’]
self.signalType = options[‘signalType’]
self.fileName = options[‘fileName’]
self.signalAmplitude = options[‘signalAmplitude’]
self.primarySignalType = options[‘primarySignal’]
##################################################
# Blocks
##################################################
self.USRP_SOURCE = uhd.usrp_source(
device_addr="serial=EBR11Y4B1",
stream_args=uhd.stream_args(
cpu_format="fc32",
channels=range(1),
),
)
self.USRP_SOURCE.set_samp_rate(self.sampleRate)
self.USRP_SOURCE.set_center_freq(self.frequency, 0)
self.USRP_SOURCE.set_gain(self.receiverGain, 0)
self.USRP_SOURCE.set_antenna("RX2", 0)
if self.signalType=="SIGNAL":
self.throttle = blocks.throttle(gr.sizeof_gr_complex*1,
self.sampleRate)
self.USRP_SINK =
uhd.usrp_sink(device_addr=“serial=EBR11Y3B1”,stream_args=uhd.stream_args(cpu_format=“fc32”,channels=range(1),),)
self.USRP_SINK.set_samp_rate(self.sampleRate)
self.USRP_SINK.set_center_freq(self.frequency, 0)
self.USRP_SINK.set_gain(self.emitterGain, 0)
self.USRP_SINK.set_antenna(“TX/RX”, 0)
if self.primarySignalType == 0:
self.primarySignal =
analog.fastnoise_source_c(analog.GR_GAUSSIAN, self.signalAmplitude, 0,
8192)
elif self.primarySignalType == 1:
self.primarySignal =
analog.sig_source_c(self.sampleRate,
analog.GR_SIN_WAVE, 1000, self.signalAmplitude,0)
elif self.primarySignalType == 2:
self.primarySignal =
analog.fastnoise_source_c(analog.GR_GAUSSIAN, self.signalAmplitude, 0,
8192)
self.options[’ = (self.signalAmplitude,
self.sampleRate/2)
self.OFDMMod =
digital.ofdm_mod(self.options,msgq_limit=4,pad_for_usrp=True)
self.DCBlocker = filter.dc_blocker_cc(16, True)
self.keepMinN = blocks.keep_m_in_n(gr.sizeof_gr_complex,
self.sensingSamples, self.packetSize, 0)
self.stream2Vector =
blocks.stream_to_vector(gr.sizeof_gr_complex1, self.fftSize)
self.FFTBlock = fft.fft_vcc(self.fftSize, True,
(window.blackmanharris(self.fftSize)), True, 1)
self.complex2MagSquared =
blocks.complex_to_mag_squared(self.fftSize)
self.integrateBlock = blocks.integrate_ff(self.sensingSamples)
self.constantForDivision = analog.sig_source_f(0,
analog.GR_CONST_WAVE, 0, 0, self.sensingSamples)
self.divideBlock = blocks.divide_ff(1)
self.vector2Stream = blocks.vector_to_stream(gr.sizeof_float1,
self.fftSize)
if self.type=="THR":
self.thresholdFloat = blocks.threshold_ff(self.threshold,
self.threshold, 0)
self.fileSink = blocks.file_sink(gr.sizeof_float*1,
str(self.fileName))
self.fileSink.set_unbuffered(False)
##################################################
# Connections
##################################################
self.connect((self.FFTBlock, 0), (self.complex2MagSquared, 0))
self.connect((self.USRP_SOURCE, 0), (self.DCBlocker, 0))
self.connect((self.complex2MagSquared, 0), (self.vector2Stream,
0))
self.connect((self.vector2Stream, 0), (self.integrateBlock, 0))
self.connect((self.integrateBlock, 0), (self.divideBlock, 0))
self.connect((self.constantForDivision, 0), (self.divideBlock,
1))
self.connect((self.DCBlocker, 0), (self.keepMinN, 0))
self.connect((self.keepMinN, 0), (self.stream2Vector, 0))
self.connect((self.stream2Vector, 0), (self.FFTBlock, 0))
if self.type=="CAL":
self.connect((self.divideBlock, 0), (self.fileSink, 0))
elif self.type=="THR":
self.connect((self.thresholdFloat, 0), (self.fileSink, 0))
self.connect((self.divideBlock, 0), (self.thresholdFloat,
0))
if(self.signalType=="SIGNAL"):
if self.primarySignalType==0 or self.primarySignalType == 1:
self.connect((self.primarySignal, 0), (self.throttle,
0))
self.connect((self.throttle, 0), (self.USRP_SINK, 0))
if self.primarySignalType==2:
self.connect((self.primarySignal, 0), (self.OFDMMod, 0))
self.connect((self.OFDMMod, 0), (self.throttle, 0))
self.connect((self.throttle, 0), (self.USRP_SINK, 0))
def get_threshold(self):
return self.threshold
def set_threshold(self, threshold):
self.threshold = threshold
def get_sensingSamples(self):
return self.sensingSamples
def set_sensingSamples(self, sensingSamples):
self.sensingSamples = sensingSamples
def get_sampleRate(self):
return self.sampleRate
def set_sampleRate(self, sampleRate):
self.sampleRate = sampleRate
self.USRP_SOURCE.set_samp_rate(self.sampleRate)
self.USRP_SINK.set_samp_rate(self.sampleRate)
def get_packetSize(self):
return self.packetSize
def set_packetSize(self, packetSize):
self.packetSize = packetSize
def get_averageSize(self):
return self.averageSize
def set_averageSize(self, averageSize):
self.averageSize = averageSize
2013/12/20 Marcus M. [email protected]