kopia lustrzana https://github.com/rpp0/gr-lora
Some final tweaks to increase accuracy and detection rate
rodzic
25aa382bad
commit
3d4be66836
|
@ -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()
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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%) ======
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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))
|
||||
|
|
Ładowanie…
Reference in New Issue