Some final tweaks to increase accuracy and detection rate

pull/61/head
Pieter Robyns 2017-08-29 13:39:12 +02:00
rodzic 25aa382bad
commit 3d4be66836
8 zmienionych plików z 69 dodań i 316 usunięć

Wyświetl plik

@ -1,132 +0,0 @@
#!/usr/bin/env python2
# coding=utf8
import collections
import os.path
import re
from gnuradio import gr, blocks
from gnuradio import uhd
import osmosdr
import lora
LoRaReceiver = collections.namedtuple('LoRaReceiver', ['name', 'available'])
class LoRaReceiveAll:
def __init__(self, receiver, spreadingFactor = 7, samp_rate = 1e6, capture_freq = 868.0e6, target_freq = 868.1e6, center_offset = 0, threshold = 0.01):
##################################################
# Variables #
##################################################
self.target_freq = target_freq
self.sf = spreadingFactor # 6 7 8 12
self.samp_rate = samp_rate
self.capture_freq = capture_freq
self.bw = 125e3
#self.symbols_per_sec = self.bw / (2**self.sf)
self.offset = -(self.capture_freq - self.target_freq)
#self.bitrate = self.sf * (1 / (2**self.sf / self.bw ))
# self.crc = True
# self.pwr = 1
# self.codingRate = codingRate # 4/5 4/6 4/7
self.threshold = threshold
# For FFT, determine Center Frequency Offset first, then set here.
# For RN2483, usually -14.1e3
self.center_offset = center_offset
##################################################
# Blocks #
##################################################
self.tb = gr.top_block ()
self.source = receiver
self.lora_lora_receiver_0 = lora.lora_receiver(self.samp_rate, self.capture_freq, ([868.1e6]), self.sf, self.samp_rate, self.threshold)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, self.samp_rate, True)
self.freq_xlating_fir_filter_0 = filter.freq_xlating_fir_filter_ccc(1, (firdes.low_pass(1, self.samp_rate, 200000, 50000)), self.center_offset, self.samp_rate)
self.tb.connect( (self.source, 0), (self.blocks_throttle_0, 0))
self.tb.connect( (self.blocks_throttle_0, 0), (self.freq_xlating_fir_filter_0, 0))
self.tb.connect( (self.freq_xlating_fir_filter_0, 0), (self.lora_lora_receiver_0, 0))
def start(self):
# self.tb.Start(True)
# self.tb.Wait()
self.tb.run()
self.tb = None
if __name__ == '__main__':
receivers = [ LoRaReceiver("OsmoSDR/RTL-SDR/HackRF", True),
LoRaReceiver("NI USRP" , True),
LoRaReceiver("Filesource" , True) ]
print("Configure settings:")
while True:
sf = int(input(" SF: "))
if sf in range(6, 13):
break
target_freq = 868.1e6
samp_rate = 1e6
capture_freq = 868.0e6
center_offset = 0
print("Available sources:")
for i, r in enumerate(receivers):
if r.available:
print(" {0: 2d}: {1:s}".format(i, r.name))
while True:
choice = int(input("Please enter the number for your desired receiver: "))
if (choice in range(0, len(receivers))) and receivers[choice].available:
break
receiver = None
if choice == 0:
# Osmo SDR, RTL-SDR, HackRF
receiver = osmosdr.source( args="numchan=" + str(1) + " " + '' )
receiver.set_sample_rate(samp_rate)
receiver.set_center_freq(capture_freq, 0)
receiver.set_freq_corr(0, 0)
receiver.set_dc_offset_mode(0, 0)
receiver.set_iq_balance_mode(0, 0)
receiver.set_gain_mode(False, 0)
receiver.set_gain(10, 0)
receiver.set_if_gain(20, 0)
receiver.set_bb_gain(20, 0)
receiver.set_antenna('', 0)
receiver.set_bandwidth(0, 0)
elif choice == 1:
# USRP
address = ""
# while True:
# address = input("Please specify the USRP's IP address: ")
# if re.fullmatch(ur"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", address) is not None:
# break
receiver = uhd.usrp_source(
",".join((address, "")),
uhd.stream_args(
cpu_format="fc32",
channels=range(1),
),
)
receiver.set_samp_rate(samp_rate)
receiver.set_center_freq(capture_freq, 0)
receiver.set_gain(32, 0)
receiver.set_antenna('RX2', 0)
elif choice == 2:
# File
while True:
inputFile = raw_input("Please specify an input file with IQ data: ")
if len(inputFile) > 0 and os.path.isfile(inputFile):
break
receiver = blocks.file_source(gr.sizeof_gr_complex*1, inputFile, False) # Repeat input: True/False
if receiver is None:
print("Warning: No receiver set!")
exit()
sdr = LoRaReceiveAll(receiver, sf, samp_rate, capture_freq, target_freq, center_offset)
sdr.start()

Wyświetl plik

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.10'?>
<?grc format='1' created='3.7.11'?>
<flow_graph>
<timestamp>Tue Apr 12 11:23:34 2016</timestamp>
<block>
@ -162,65 +162,6 @@
<value>866.0e6</value>
</param>
</block>
<block>
<key>variable_slider</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>converver</key>
<value>int_converter</value>
</param>
<param>
<key>value</key>
<value>-95</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(976, 16)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>grid_pos</key>
<value></value>
</param>
<param>
<key>id</key>
<value>finetune</value>
</param>
<param>
<key>label</key>
<value></value>
</param>
<param>
<key>max</key>
<value>150</value>
</param>
<param>
<key>min</key>
<value>-150</value>
</param>
<param>
<key>notebook</key>
<value></value>
</param>
<param>
<key>num_steps</key>
<value>300</value>
</param>
<param>
<key>style</key>
<value>wx.SL_HORIZONTAL</value>
</param>
</block>
<block>
<key>variable</key>
<param>
@ -248,33 +189,6 @@
<value>firdes.low_pass(1, samp_rate, bw, 10000, firdes.WIN_HAMMING, 6.67)</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(376, 77)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>offset</value>
</param>
<param>
<key>value</key>
<value>-(capture_freq - target_freq)</value>
</param>
</block>
<block>
<key>variable</key>
<param>
@ -499,6 +413,14 @@
<key>alias</key>
<value></value>
</param>
<param>
<key>center_freq</key>
<value>capture_freq</value>
</param>
<param>
<key>channel_list</key>
<value>[target_freq]</value>
</param>
<param>
<key>comment</key>
<value></value>
@ -515,10 +437,6 @@
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>freq</key>
<value>capture_freq</value>
</param>
<param>
<key>_coordinate</key>
<value>(424, 168)</value>
@ -539,10 +457,6 @@
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>offset</key>
<value>offset</value>
</param>
<param>
<key>out_samp_rate</key>
<value>1000000</value>

Wyświetl plik

@ -3,7 +3,7 @@
##################################################
# GNU Radio Python Flow Graph
# Title: Lora Receive File
# Generated: Fri Jul 28 10:52:21 2017
# Generated: Tue Aug 29 13:32:47 2017
##################################################
if __name__ == '__main__':
@ -24,7 +24,6 @@ from gnuradio.eng_option import eng_option
from gnuradio.fft import window
from gnuradio.filter import firdes
from gnuradio.wxgui import fftsink2
from gnuradio.wxgui import forms
from grc_gnuradio import wxgui as grc_wxgui
from optparse import OptionParser
import lora
@ -39,15 +38,13 @@ class lora_receive_file(grc_wxgui.top_block_gui):
##################################################
# Variables
##################################################
self.target_freq = target_freq = 868.1e6
self.sf = sf = 7
self.samp_rate = samp_rate = 10e6
self.capture_freq = capture_freq = 866.0e6
self.bw = bw = 125e3
self.target_freq = target_freq = 868.1e6
self.symbols_per_sec = symbols_per_sec = bw / (2**sf)
self.offset = offset = -(capture_freq - target_freq)
self.firdes_tap = firdes_tap = firdes.low_pass(1, samp_rate, bw, 10000, firdes.WIN_HAMMING, 6.67)
self.finetune = finetune = -95
self.capture_freq = capture_freq = 866.0e6
self.bitrate = bitrate = sf * (1 / (2**sf / bw))
##################################################
@ -69,30 +66,7 @@ class lora_receive_file(grc_wxgui.top_block_gui):
peak_hold=False,
)
self.Add(self.wxgui_fftsink2_1.win)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, 868e6, ([868.1e6]), 7, 1000000, 0.01)
_finetune_sizer = wx.BoxSizer(wx.VERTICAL)
self._finetune_text_box = forms.text_box(
parent=self.GetWin(),
sizer=_finetune_sizer,
value=self.finetune,
callback=self.set_finetune,
label='finetune',
converter=forms.int_converter(),
proportion=0,
)
self._finetune_slider = forms.slider(
parent=self.GetWin(),
sizer=_finetune_sizer,
value=self.finetune,
callback=self.set_finetune,
minimum=-150,
maximum=150,
num_steps=300,
style=wx.SL_HORIZONTAL,
cast=int,
proportion=1,
)
self.Add(_finetune_sizer)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, capture_freq, ([target_freq]), 7, 1000000, 0.01)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True)
self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, 'counting_cr4_sf7.cfile', True)
@ -103,13 +77,6 @@ class lora_receive_file(grc_wxgui.top_block_gui):
self.connect((self.blocks_throttle_0, 0), (self.lora_lora_receiver_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.wxgui_fftsink2_1, 0))
def get_target_freq(self):
return self.target_freq
def set_target_freq(self, target_freq):
self.target_freq = target_freq
self.set_offset(-(self.capture_freq - self.target_freq))
def get_sf(self):
return self.sf
@ -127,14 +94,6 @@ class lora_receive_file(grc_wxgui.top_block_gui):
self.set_firdes_tap(firdes.low_pass(1, self.samp_rate, self.bw, 10000, firdes.WIN_HAMMING, 6.67))
self.blocks_throttle_0.set_sample_rate(self.samp_rate)
def get_capture_freq(self):
return self.capture_freq
def set_capture_freq(self, capture_freq):
self.capture_freq = capture_freq
self.wxgui_fftsink2_1.set_baseband_freq(self.capture_freq)
self.set_offset(-(self.capture_freq - self.target_freq))
def get_bw(self):
return self.bw
@ -144,31 +103,30 @@ class lora_receive_file(grc_wxgui.top_block_gui):
self.set_firdes_tap(firdes.low_pass(1, self.samp_rate, self.bw, 10000, firdes.WIN_HAMMING, 6.67))
self.set_bitrate(self.sf * (1 / (2**self.sf / self.bw)))
def get_target_freq(self):
return self.target_freq
def set_target_freq(self, target_freq):
self.target_freq = target_freq
def get_symbols_per_sec(self):
return self.symbols_per_sec
def set_symbols_per_sec(self, symbols_per_sec):
self.symbols_per_sec = symbols_per_sec
def get_offset(self):
return self.offset
def set_offset(self, offset):
self.offset = offset
def get_firdes_tap(self):
return self.firdes_tap
def set_firdes_tap(self, firdes_tap):
self.firdes_tap = firdes_tap
def get_finetune(self):
return self.finetune
def get_capture_freq(self):
return self.capture_freq
def set_finetune(self, finetune):
self.finetune = finetune
self._finetune_slider.set_value(self.finetune)
self._finetune_text_box.set_value(self.finetune)
def set_capture_freq(self, capture_freq):
self.capture_freq = capture_freq
self.wxgui_fftsink2_1.set_baseband_freq(self.capture_freq)
def get_bitrate(self):
return self.bitrate

Wyświetl plik

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<?grc format='1' created='3.7.10'?>
<?grc format='1' created='3.7.11'?>
<flow_graph>
<timestamp>Tue Apr 12 11:23:34 2016</timestamp>
<block>
@ -389,6 +389,14 @@
<key>alias</key>
<value></value>
</param>
<param>
<key>center_freq</key>
<value>capture_freq</value>
</param>
<param>
<key>channel_list</key>
<value>[target_freq]</value>
</param>
<param>
<key>comment</key>
<value></value>
@ -398,12 +406,12 @@
<value></value>
</param>
<param>
<key>_enabled</key>
<value>1</value>
<key>threshold</key>
<value>0.01</value>
</param>
<param>
<key>freq</key>
<value>capture_freq</value>
<key>_enabled</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
@ -418,12 +426,16 @@
<value>lora_lora_receiver_0</value>
</param>
<param>
<key>offset</key>
<value>offset</value>
<key>maxoutbuf</key>
<value>0</value>
</param>
<param>
<key>realtime</key>
<value>True</value>
<key>minoutbuf</key>
<value>0</value>
</param>
<param>
<key>out_samp_rate</key>
<value>500000</value>
</param>
<param>
<key>in_samp_rate</key>
@ -431,7 +443,7 @@
</param>
<param>
<key>sf</key>
<value>7</value>
<value>sf</value>
</param>
</block>
<block>

Wyświetl plik

@ -3,7 +3,7 @@
##################################################
# GNU Radio Python Flow Graph
# Title: Lora Receive Realtime
# Generated: Fri Jul 28 10:53:04 2017
# Generated: Tue Aug 29 13:37:16 2017
##################################################
if __name__ == '__main__':
@ -81,7 +81,7 @@ class lora_receive_realtime(grc_wxgui.top_block_gui):
self.uhd_usrp_source_0.set_center_freq(capture_freq, 0)
self.uhd_usrp_source_0.set_gain(15, 0)
self.uhd_usrp_source_0.set_antenna('RX2', 0)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, 868e6, ([868.1e6]), 7, 1000000, 0.01)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, capture_freq, ([target_freq]), sf, 500000, 0.01)
_finetune_sizer = wx.BoxSizer(wx.VERTICAL)
self._finetune_text_box = forms.text_box(
parent=self.GetWin(),
@ -125,6 +125,7 @@ class lora_receive_realtime(grc_wxgui.top_block_gui):
def set_sf(self, sf):
self.sf = sf
self.set_symbols_per_sec(self.bw / (2**self.sf))
self.lora_lora_receiver_0.set_sf(self.sf)
self.set_bitrate(self.sf * (1 / (2**self.sf / self.bw)))
def get_samp_rate(self):

Wyświetl plik

@ -1,13 +1,13 @@
-------- Test Results on 2017-08-29 11:56:30 ---------
-------- Test Results on 2017-08-29 13:31:30 ---------
Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10
Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
=> Total passed: 67 out of 70 (95.71%)
=> Total passed: 69 out of 70 (98.57%)
Test serie 1: [u'11 11 11'] * 1
Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
@ -32,12 +32,12 @@ Test serie 2: [u'11 11 11'] * 5
Test serie 3: [u'aa aa aa aa'] * 3
Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 3 (100.00%)
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 3 out of 3 (100.00%)
Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 3 out of 3 (100.00%)
Test 26 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
Test 27 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 3 out of 3 (100.00%)
Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
=> Total passed: 20 out of 21 (95.24%)
=> Total passed: 21 out of 21 (100.00%)
Test serie 4: [u'ff ff ff ff'] * 1
Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
@ -51,13 +51,13 @@ Test serie 4: [u'ff ff ff ff'] * 1
Test serie 5: [u'ff ff ff ff'] * 10
Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 10 ( 50.00%)
Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
Test 38 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
=> Total passed: 53 out of 70 (75.71%)
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
=> Total passed: 55 out of 70 (78.57%)
Test serie 6: [u'55 55 55 55'] * 3
Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
@ -73,11 +73,11 @@ Test serie 7: [u'55 55 55 55'] * 10
Test 50 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 51 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 52 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
Test 54 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 55 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 56 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
=> Total passed: 70 out of 70 (100.00%)
=> Total passed: 69 out of 70 (98.57%)
Test serie 8: [u'88 88 88 88'] * 1
Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
@ -95,20 +95,20 @@ Test serie 9: [u'88 88 88 88'] * 5
Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 5 out of 5 (100.00%)
Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 5 out of 5 (100.00%)
Test 68 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
Test 69 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
Test 69 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 5 out of 5 (100.00%)
Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
=> Total passed: 19 out of 35 (54.29%)
=> Total passed: 20 out of 35 (57.14%)
Test serie 10: [u'88 88 88 88'] * 10
Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 10 out of 10 (100.00%)
Test 75 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
Test 76 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
Test 76 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
=> Total passed: 36 out of 70 (51.43%)
=> Total passed: 37 out of 70 (52.86%)
====== Total passed: 338 out of 413 (81.84%) ======
====== Total passed: 344 out of 413 (83.29%) ======

Wyświetl plik

@ -43,7 +43,7 @@ namespace gr {
gr::io_signature::make(channel_list.size(), channel_list.size(), sizeof(gr_complex))),
d_cfo(0.0)
{
d_lpf = gr::filter::firdes::low_pass(1.0, out_samp_rate, 125000, 10000, gr::filter::firdes::WIN_HAMMING, 6.67);
d_lpf = gr::filter::firdes::low_pass(1.0, out_samp_rate, 62500+15000, 10000, gr::filter::firdes::WIN_HAMMING, 6.67);
d_freq_offset = channel_list[0] - center_freq;
d_xlating_fir_filter = gr::filter::freq_xlating_fir_filter_ccf::make(1, d_lpf, d_freq_offset, out_samp_rate);
d_controller = gr::lora::controller::make((void*)this);

Wyświetl plik

@ -86,7 +86,7 @@ class qa_BasicTest_XML (gr_unittest.TestCase):
# For FFT, determine Center Frequency Offset first, then set here.
# For RN2483, usually -14.1e3
self.center_offset = 40000
self.center_offset = 0
self.inputFile = "./"
@ -221,7 +221,7 @@ class qa_BasicTest_XML (gr_unittest.TestCase):
self.lora_lora_receiver_0 = lora.lora_receiver(self.samp_rate, self.capture_freq, [868100000], self.sf, self.samp_rate, self.threshold)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, self.samp_rate, True)
self.blocks_message_socket_sink_0 = lora.message_socket_sink()
self.freq_xlating_fir_filter_0 = filter.freq_xlating_fir_filter_ccc(1, (firdes.low_pass(1, self.samp_rate, 100000, 100000, firdes.WIN_HAMMING, 6.67)), self.center_offset, self.samp_rate)
self.freq_xlating_fir_filter_0 = filter.freq_xlating_fir_filter_ccc(1, (firdes.low_pass(1, self.samp_rate, 200000, 100000, firdes.WIN_HAMMING, 6.67)), self.center_offset, self.samp_rate)
self.tb.connect( (self.file_source, 0), (self.blocks_throttle_0, 0))
self.tb.connect( (self.blocks_throttle_0, 0), (self.freq_xlating_fir_filter_0, 0))