Fix examples and update unit test reports

pull/61/head
Pieter Robyns 2018-01-09 10:18:57 +01:00
rodzic a687cce7c5
commit 817c689f1d
12 zmienionych plików z 188 dodań i 101 usunięć

Wyświetl plik

@ -105,7 +105,7 @@
</param>
<param>
<key>value</key>
<value>sf * (1 / (2**sf / bw))</value>
<value>sf * (1 / (2**sf / float(bw)))</value>
</param>
</block>
<block>
@ -132,7 +132,7 @@
</param>
<param>
<key>value</key>
<value>125e3</value>
<value>125000</value>
</param>
</block>
<block>
@ -228,7 +228,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(376, 13)</value>
<value>(384, 12)</value>
</param>
<param>
<key>_rotation</key>
@ -267,7 +267,7 @@
</param>
<param>
<key>value</key>
<value>bw / (2**sf)</value>
<value>float(bw) / (2**sf)</value>
</param>
</block>
<block>
@ -409,10 +409,18 @@
</block>
<block>
<key>lora_lora_receiver</key>
<param>
<key>bandwidth</key>
<value>bw</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>crc</key>
<value>True</value>
</param>
<param>
<key>center_freq</key>
<value>capture_freq</value>
@ -421,17 +429,33 @@
<key>channel_list</key>
<value>[target_freq]</value>
</param>
<param>
<key>cr</key>
<value>4</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>conj</key>
<value>False</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>threshold</key>
<value>0.002</value>
<key>decimation</key>
<value>10</value>
</param>
<param>
<key>disable_channelization</key>
<value>False</value>
</param>
<param>
<key>disable_drift_correction</key>
<value>False</value>
</param>
<param>
<key>_enabled</key>
@ -439,7 +463,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(416, 164)</value>
<value>(416, 156)</value>
</param>
<param>
<key>_rotation</key>
@ -449,6 +473,10 @@
<key>id</key>
<value>lora_lora_receiver_0</value>
</param>
<param>
<key>implicit</key>
<value>False</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
@ -458,16 +486,16 @@
<value>0</value>
</param>
<param>
<key>out_samp_rate</key>
<value>1000000</value>
<key>reduced_rate</key>
<value>False</value>
</param>
<param>
<key>in_samp_rate</key>
<key>samp_rate</key>
<value>samp_rate</value>
</param>
<param>
<key>sf</key>
<value>7</value>
<value>sf</value>
</param>
</block>
<block>
@ -510,7 +538,7 @@
</param>
<param>
<key>_coordinate</key>
<value>(416, 276)</value>
<value>(416, 300)</value>
</param>
<param>
<key>_rotation</key>

Wyświetl plik

@ -3,7 +3,7 @@
##################################################
# GNU Radio Python Flow Graph
# Title: Lora Receive File
# Generated: Wed Jan 3 10:08:32 2018
# Generated: Mon Jan 8 15:44:58 2018
##################################################
if __name__ == '__main__':
@ -40,12 +40,12 @@ class lora_receive_file(grc_wxgui.top_block_gui):
##################################################
self.sf = sf = 7
self.samp_rate = samp_rate = 10e6
self.bw = bw = 125e3
self.bw = bw = 125000
self.target_freq = target_freq = 868.1e6
self.symbols_per_sec = symbols_per_sec = bw / (2**sf)
self.symbols_per_sec = symbols_per_sec = float(bw) / (2**sf)
self.firdes_tap = firdes_tap = firdes.low_pass(1, samp_rate, bw, 10000, firdes.WIN_HAMMING, 6.67)
self.capture_freq = capture_freq = 866.0e6
self.bitrate = bitrate = sf * (1 / (2**sf / bw))
self.bitrate = bitrate = sf * (1 / (2**sf / float(bw)))
##################################################
# Blocks
@ -66,7 +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, capture_freq, ([target_freq]), 7, 1000000, False, 4, True)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, capture_freq, ([target_freq]), bw, sf, False, 4, True, False, False, 10, False, False)
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)
@ -82,8 +82,9 @@ class lora_receive_file(grc_wxgui.top_block_gui):
def set_sf(self, sf):
self.sf = sf
self.set_symbols_per_sec(self.bw / (2**self.sf))
self.set_bitrate(self.sf * (1 / (2**self.sf / self.bw)))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
self.lora_lora_receiver_0.set_sf(self.sf)
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
def get_samp_rate(self):
return self.samp_rate
@ -99,9 +100,9 @@ class lora_receive_file(grc_wxgui.top_block_gui):
def set_bw(self, bw):
self.bw = bw
self.set_symbols_per_sec(self.bw / (2**self.sf))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
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)))
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
def get_target_freq(self):
return self.target_freq

Wyświetl plik

@ -22,13 +22,13 @@ class lora_receive_file_nogui(gr.top_block):
##################################################
# Variables
##################################################
self.internal_sample_rate = 1e6
self.decimation = 1
##################################################
# Blocks
##################################################
self.message_socket_sink = lora.message_socket_sink('127.0.0.1', 40868, 1)
self.lora_receiver = lora.lora_receiver(sample_rate, capture_freq, ([lc.freq]), lc.sf, self.internal_sample_rate, lc.implicit, lc.cr_num, lc.crc)
self.lora_receiver = lora.lora_receiver(sample_rate, capture_freq, ([lc.freq]), 125000, lc.sf, lc.implicit, lc.cr_num, lc.crc, reduced_rate=False, decimation=self.decimation)
self.blocks_throttle = blocks.throttle(gr.sizeof_gr_complex, sample_rate, True)
self.blocks_file_source = blocks.file_source(gr.sizeof_gr_complex, sample_file, False)

Wyświetl plik

@ -105,7 +105,7 @@
</param>
<param>
<key>value</key>
<value>sf * (1 / (2**sf / bw))</value>
<value>sf * (1 / (2**sf / float(bw)))</value>
</param>
</block>
<block>
@ -132,7 +132,7 @@
</param>
<param>
<key>value</key>
<value>125e3</value>
<value>125000</value>
</param>
</block>
<block>
@ -162,6 +162,64 @@
<value>868e6</value>
</param>
</block>
<block>
<key>variable</key>
<param>
<key>comment</key>
<value>The decimation determines the oversampling rate.
A sample rate of 1e6 and decimation of 1 equals
8 times oversampling, a decimation of 2 is 4 times
oversampling, and so on. Set higher decimation
for better performance, but worse accuracy.</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(640, 76)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>decimation</value>
</param>
<param>
<key>value</key>
<value>1</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>(384, 76)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>downlink</value>
</param>
<param>
<key>value</key>
<value>False</value>
</param>
</block>
<block>
<key>variable</key>
<param>
@ -189,36 +247,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>The internal sampling rate determines the
oversampling rate. 1e6 is 8 times oversampling,
5e5 is 4 times oversampling, and so on. Set higher
for better accuracy, but worse performance.</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
<key>_coordinate</key>
<value>(640, 76)</value>
</param>
<param>
<key>_rotation</key>
<value>0</value>
</param>
<param>
<key>id</key>
<value>internal_sampling_rate</value>
</param>
<param>
<key>value</key>
<value>5e5</value>
</param>
</block>
<block>
<key>variable</key>
<param>
@ -297,7 +325,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>value</key>
<value>bw / (2**sf)</value>
<value>float(bw) / (2**sf)</value>
</param>
</block>
<block>
@ -312,7 +340,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>_coordinate</key>
<value>(280, 77)</value>
<value>(280, 76)</value>
</param>
<param>
<key>_rotation</key>
@ -329,10 +357,18 @@ for better accuracy, but worse performance.</value>
</block>
<block>
<key>lora_lora_receiver</key>
<param>
<key>bandwidth</key>
<value>bw</value>
</param>
<param>
<key>alias</key>
<value></value>
</param>
<param>
<key>crc</key>
<value>True</value>
</param>
<param>
<key>center_freq</key>
<value>capture_freq</value>
@ -341,17 +377,33 @@ for better accuracy, but worse performance.</value>
<key>channel_list</key>
<value>[target_freq]</value>
</param>
<param>
<key>cr</key>
<value>4</value>
</param>
<param>
<key>comment</key>
<value></value>
</param>
<param>
<key>conj</key>
<value>downlink</value>
</param>
<param>
<key>affinity</key>
<value></value>
</param>
<param>
<key>threshold</key>
<value>0.002</value>
<key>decimation</key>
<value>decimation</value>
</param>
<param>
<key>disable_channelization</key>
<value>False</value>
</param>
<param>
<key>disable_drift_correction</key>
<value>False</value>
</param>
<param>
<key>_enabled</key>
@ -359,7 +411,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>_coordinate</key>
<value>(392, 172)</value>
<value>(392, 212)</value>
</param>
<param>
<key>_rotation</key>
@ -369,6 +421,10 @@ for better accuracy, but worse performance.</value>
<key>id</key>
<value>lora_lora_receiver_0</value>
</param>
<param>
<key>implicit</key>
<value>False</value>
</param>
<param>
<key>maxoutbuf</key>
<value>0</value>
@ -378,12 +434,12 @@ for better accuracy, but worse performance.</value>
<value>0</value>
</param>
<param>
<key>out_samp_rate</key>
<value>internal_sampling_rate</value>
<key>reduced_rate</key>
<value>False</value>
</param>
<param>
<key>in_samp_rate</key>
<value>samp_rate</value>
<key>samp_rate</key>
<value>1e6</value>
</param>
<param>
<key>sf</key>
@ -392,14 +448,6 @@ for better accuracy, but worse performance.</value>
</block>
<block>
<key>lora_message_socket_sink</key>
<param>
<key>loraphy</key>
<value>True</value>
</param>
<param>
<key>loratap</key>
<value>False</value>
</param>
<param>
<key>alias</key>
<value></value>
@ -418,7 +466,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>_coordinate</key>
<value>(640, 220)</value>
<value>(640, 236)</value>
</param>
<param>
<key>_rotation</key>
@ -432,6 +480,10 @@ for better accuracy, but worse performance.</value>
<key>ip</key>
<value>127.0.0.1</value>
</param>
<param>
<key>layer</key>
<value>0</value>
</param>
<param>
<key>port</key>
<value>40868</value>
@ -661,7 +713,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>_coordinate</key>
<value>(24, 140)</value>
<value>(24, 188)</value>
</param>
<param>
<key>_rotation</key>
@ -1876,7 +1928,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>_coordinate</key>
<value>(16, 340)</value>
<value>(16, 388)</value>
</param>
<param>
<key>_rotation</key>
@ -2071,7 +2123,7 @@ for better accuracy, but worse performance.</value>
</param>
<param>
<key>_coordinate</key>
<value>(392, 292)</value>
<value>(392, 340)</value>
</param>
<param>
<key>_rotation</key>

Wyświetl plik

@ -3,7 +3,7 @@
##################################################
# GNU Radio Python Flow Graph
# Title: Lora Receive Realtime
# Generated: Wed Jan 3 10:08:54 2018
# Generated: Mon Jan 8 15:32:44 2018
##################################################
if __name__ == '__main__':
@ -40,13 +40,14 @@ class lora_receive_realtime(grc_wxgui.top_block_gui):
##################################################
self.sf = sf = 11
self.samp_rate = samp_rate = 1e6
self.bw = bw = 125e3
self.bw = bw = 125000
self.target_freq = target_freq = 868.1e6
self.symbols_per_sec = symbols_per_sec = bw / (2**sf)
self.internal_sampling_rate = internal_sampling_rate = 5e5
self.symbols_per_sec = symbols_per_sec = float(bw) / (2**sf)
self.firdes_tap = firdes_tap = firdes.low_pass(1, samp_rate, bw, 10000, firdes.WIN_HAMMING, 6.67)
self.downlink = downlink = False
self.decimation = decimation = 1
self.capture_freq = capture_freq = 868e6
self.bitrate = bitrate = sf * (1 / (2**sf / bw))
self.bitrate = bitrate = sf * (1 / (2**sf / float(bw)))
##################################################
# Blocks
@ -81,7 +82,7 @@ class lora_receive_realtime(grc_wxgui.top_block_gui):
self.osmosdr_source_0.set_bandwidth(0, 0)
self.lora_message_socket_sink_0 = lora.message_socket_sink('127.0.0.1', 40868, 0)
self.lora_lora_receiver_0 = lora.lora_receiver(samp_rate, capture_freq, ([target_freq]), sf, internal_sampling_rate, False, 4, True)
self.lora_lora_receiver_0 = lora.lora_receiver(1e6, capture_freq, ([target_freq]), bw, sf, False, 4, True, False, downlink, decimation, False, False)
##################################################
# Connections
@ -95,9 +96,9 @@ 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.set_symbols_per_sec(float(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)))
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
def get_samp_rate(self):
return self.samp_rate
@ -113,9 +114,9 @@ class lora_receive_realtime(grc_wxgui.top_block_gui):
def set_bw(self, bw):
self.bw = bw
self.set_symbols_per_sec(self.bw / (2**self.sf))
self.set_symbols_per_sec(float(self.bw) / (2**self.sf))
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)))
self.set_bitrate(self.sf * (1 / (2**self.sf / float(self.bw))))
def get_target_freq(self):
return self.target_freq
@ -129,19 +130,24 @@ class lora_receive_realtime(grc_wxgui.top_block_gui):
def set_symbols_per_sec(self, symbols_per_sec):
self.symbols_per_sec = symbols_per_sec
def get_internal_sampling_rate(self):
return self.internal_sampling_rate
def set_internal_sampling_rate(self, internal_sampling_rate):
self.internal_sampling_rate = internal_sampling_rate
self.lora_lora_receiver_0.set_out_samp_rate(self.internal_sampling_rate)
def get_firdes_tap(self):
return self.firdes_tap
def set_firdes_tap(self, firdes_tap):
self.firdes_tap = firdes_tap
def get_downlink(self):
return self.downlink
def set_downlink(self, downlink):
self.downlink = downlink
def get_decimation(self):
return self.decimation
def set_decimation(self, decimation):
self.decimation = decimation
def get_capture_freq(self):
return self.capture_freq

Wyświetl plik

@ -1,6 +1,6 @@
# Test suite: 'decode_long_hackrf'
*Results on 2018-01-05 15:45:02.728810*
*Results on 2018-01-09 08:20:28.388091*
### 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off

Wyświetl plik

@ -1,6 +1,6 @@
# Test suite: 'decode_long_rtl-sdr'
*Results on 2018-01-05 15:43:46.791893*
*Results on 2018-01-09 08:19:12.473520*
### 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off

Wyświetl plik

@ -1,6 +1,6 @@
# Test suite: 'decode_long_usrp'
*Results on 2018-01-05 15:44:23.389284*
*Results on 2018-01-09 08:19:49.042810*
### 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off

Wyświetl plik

@ -1,6 +1,6 @@
# Test suite: 'short_hackrf'
*Results on 2017-12-21 08:45:09.865970*
*Results on 2018-01-09 08:29:44.926497*
### 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off

Wyświetl plik

@ -1,6 +1,6 @@
# Test suite: 'short_rtl-sdr'
*Results on 2017-12-21 08:36:30.594450*
*Results on 2018-01-09 08:21:05.747845*
### 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off

Wyświetl plik

@ -1,6 +1,6 @@
# Test suite: 'short_usrp'
*Results on 2017-12-21 08:40:33.854584*
*Results on 2018-01-09 08:25:08.965237*
### 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off

Wyświetl plik

@ -237,7 +237,7 @@ class qa_testsuite():
transmit_freq = capture_meta["lora:frequency"]
sf = capture_meta["lora:sf"]
cr = capture_meta["lora:cr"]
bw = capture_meta["lora:bw"]
bw = int(capture_meta["lora:bw"])
prlen = capture_meta["lora:prlen"]
crc = capture_meta["lora:crc"]
implicit = capture_meta["lora:implicit"]
@ -251,7 +251,7 @@ class qa_testsuite():
# Build flowgraph
tb = gr.top_block()
file_source = blocks.file_source(gr.sizeof_gr_complex, data_file, False)
lora_receiver = lora.lora_receiver(sample_rate, capture_freq, [868100000], sf, 1000000, False, 4, True)
lora_receiver = lora.lora_receiver(sample_rate, capture_freq, [868100000], bw, sf, False, 4, True, reduced_rate=False, decimation=1)
throttle = blocks.throttle(gr.sizeof_gr_complex, sample_rate, True)
message_socket_sink = lora.message_socket_sink("127.0.0.1", 40868, 2)
freq_xlating_fir_filter = filter.freq_xlating_fir_filter_ccc(1, (firdes.low_pass(1, sample_rate, 200000, 100000, firdes.WIN_HAMMING, 6.67)), frequency_offset, sample_rate)