[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Integrate block outputting inconsistent results.
From: |
Miguel Duarte |
Subject: |
Re: [Discuss-gnuradio] Integrate block outputting inconsistent results. |
Date: |
Fri, 20 Dec 2013 12:47:27 +0000 |
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_complex*1, 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_float*1, 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