kopia lustrzana https://github.com/rpp0/gr-lora
Detection and Sync improvements
+ Added header with debug macros + Added warning for SF 6: the samples are actually wrapped around to SF 12 ~ Unwrapped some function calls to liquid-dsp::liquid_unwrap_phase ~ Simplified some more code ~ Rewrote sliding_norm_cross_correlate_upchirp: Now we detect a falling edge and do a correlation from there to test the sync rate. Also added code that can perform a perfect overlay shift to the ideal chirp (but this leaves the falling edge inside the window) ~ Rewrote find_preamble_start_fast: Now detects the start of the preamble by looking for for absolute complex values above a threshold ~ Fixed ids in qa_BasicTest_Data.xml ~ qa_BasicTest.log contains test runs showing the improvements in passing tests. + Added createWhiteningValues.py to generate a sample with zeros and append the whitening sequence to a file so it can be averaged (untested). This uses lora-whitening-sequencer. ~ Added zero padding to whitening sequences in tables.hpull/27/head
rodzic
53af2322b0
commit
5f01ddeaf1
|
|
@ -151,7 +151,6 @@ class Examplify:
|
|||
|
||||
f.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
e = Examplify(6, "4/7", './lora-samples/', 'hackrf')
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
#!/usr/bin/python2
|
||||
import collections
|
||||
import os
|
||||
from loranode import RN2483Controller
|
||||
|
||||
from ../_examplify.py import Examplify
|
||||
|
||||
import lora, pmt, osmosdr
|
||||
from gnuradio import gr, blocks
|
||||
|
||||
class ReceiveWhitening:
|
||||
def __init__(self, sf = 7, output_file = './test_out.csv'):
|
||||
self.target_freq = 868.1e6
|
||||
self.sf = sf
|
||||
self.samp_rate = 1e6
|
||||
self.capture_freq = 868.0e6
|
||||
self.offset = -(self.capture_freq - self.target_freq)
|
||||
|
||||
self.inputFile = './'
|
||||
self.outputFile = output_file
|
||||
self.tempFile = '/tmp/whitening_out'
|
||||
|
||||
self.tb = None
|
||||
|
||||
def captureSequence(self, inputFile):
|
||||
self.inputFile = inputFile
|
||||
|
||||
if os.path.isfile(self.inputFile):
|
||||
self.tb = gr.top_block()
|
||||
|
||||
self.file_source = blocks.file_source(gr.sizeof_gr_complex*1, self.inputFile, False) # Repeat input: True/False
|
||||
self.lora_lora_receiver_0 = lora.lora_receiver(self.samp_rate, self.capture_freq, self.offset, self.sf, self.samp_rate)
|
||||
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, self.samp_rate, True)
|
||||
|
||||
self.tb.connect( (self.file_source, 0), (self.blocks_throttle_0, 0))
|
||||
self.tb.connect( (self.blocks_throttle_0, 0), (self.lora_lora_receiver_0, 0))
|
||||
|
||||
self.tb.run()
|
||||
|
||||
self.tb = None
|
||||
|
||||
if os.path.isfile(self.tempFile):
|
||||
if os.path.isfile(self.outputFile):
|
||||
inf = open(self.tempFile, 'r')
|
||||
seq = inf.read()
|
||||
print(seq)
|
||||
out = open(self.outputFile, 'a')
|
||||
out.write(seq)
|
||||
out.close()
|
||||
inf.close()
|
||||
else:
|
||||
raise Exception("[ReceiveWhitening] Outputfile '" + self.outputFile + "' does not exist!")
|
||||
else:
|
||||
raise Exception("[ReceiveWhitening] Tempfile '" + self.tempFile + "' does not exist!")
|
||||
else:
|
||||
raise Exception("[ReceiveWhitening] Inputfile '" + self.inputFile + "' does not exist!")
|
||||
|
||||
if __name__ == '__main__':
|
||||
ofile = 'tmp/tmp_whitening.cfile'
|
||||
|
||||
examplifr = Examplify(7, "4/7")
|
||||
whitening = ReceiveWhitening(7, './test_out.csv')
|
||||
|
||||
examplifr.transmitToFile(["00000000000"] * 10, ofile)
|
||||
whitening.captureSequence(ofile)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# Uses lora-whitening-sequencer from:
|
||||
# https://github.com/Wosser1sProductions/gr-lora-whitening-sequencer
|
||||
|
||||
./lora-whitening-sequencer -sf 7 -in ./test_out.csv
|
||||
|
|
@ -116,3 +116,583 @@ Test serie 10: [u'88 88 88 88'] * 10
|
|||
|
||||
====== Total passed: 75 out of 413 (18.16%) ======
|
||||
Ran 1 test in 612.239s
|
||||
|
||||
|
||||
-------- Test Results on 2017-02-27 15:38:54 ---------
|
||||
Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10
|
||||
Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%) +1
|
||||
Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 6 out of 10 ( 60.00%) +3
|
||||
Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) +4
|
||||
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%) +5
|
||||
=> Total passed: 27 out of 70 (38.57%)
|
||||
|
||||
Test serie 1: [u'11 11 11'] * 1
|
||||
Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 9 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 10 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 11 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 12 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) +1
|
||||
Test 13 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 14 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) +1
|
||||
=> Total passed: 4 out of 7 (57.14%)
|
||||
|
||||
Test serie 2: [u'11 11 11'] * 5
|
||||
Test 15 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 5 ( 60.00%)
|
||||
Test 16 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) +2
|
||||
Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 19 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) +3
|
||||
Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 21 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) +4
|
||||
=> Total passed: 13 out of 35 (37.14%)
|
||||
|
||||
Test serie 3: [u'aa aa aa aa'] * 3
|
||||
Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%) +1
|
||||
Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 3 (100.00%) +2
|
||||
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 26 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%) +2
|
||||
Test 27 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) +2
|
||||
=> Total passed: 10 out of 21 (47.62%)
|
||||
|
||||
Test serie 4: [u'ff ff ff ff'] * 1
|
||||
Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%) +1
|
||||
Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) -1
|
||||
Test 31 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 32 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 33 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 34 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 35 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 2 out of 7 (28.57%)
|
||||
|
||||
Test serie 5: [u'ff ff ff ff'] * 10
|
||||
Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) +6
|
||||
Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 6 out of 10 ( 60.00%) +1
|
||||
Test 38 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 9 out of 10 ( 90.00%) +6
|
||||
=> Total passed: 23 out of 70 (32.86%)
|
||||
|
||||
Test serie 6: [u'55 55 55 55'] * 3
|
||||
Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) -2
|
||||
Test 44 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 3 ( 33.33%)
|
||||
Test 45 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 46 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 47 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%) +1
|
||||
Test 48 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 49 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%) +3
|
||||
=> Total passed: 9 out of 21 (42.86%)
|
||||
|
||||
Test serie 7: [u'55 55 55 55'] * 10
|
||||
Test 50 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) +6
|
||||
Test 51 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) +4
|
||||
Test 52 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 54 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) +3
|
||||
Test 55 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 56 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) +7
|
||||
=> Total passed: 34 out of 70 (48.57%)
|
||||
|
||||
Test serie 8: [u'88 88 88 88'] * 1
|
||||
Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 58 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%) -1
|
||||
Test 59 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 60 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 61 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 62 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 2 out of 7 (28.57%)
|
||||
|
||||
Test serie 9: [u'88 88 88 88'] * 5
|
||||
Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%) +2
|
||||
Test 65 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 5 (100.00%) +3
|
||||
Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%) -1
|
||||
Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.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 0 out of 5 ( 0.00%)
|
||||
Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%) +4
|
||||
=> Total passed: 14 out of 35 (40.00%)
|
||||
|
||||
Test serie 10: [u'88 88 88 88'] * 10
|
||||
Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%) +1
|
||||
Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 8 out of 10 ( 80.00%) +6
|
||||
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.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 0 out of 10 ( 0.00%)
|
||||
Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%) +6
|
||||
=> Total passed: 24 out of 70 (34.29%)
|
||||
|
||||
|
||||
====== Total passed: 162 out of 413 (39.23%) ======
|
||||
Ran 1 test in 490.191s
|
||||
|
||||
-------- Test Results on 2017-03-06 11:41:54 ---------
|
||||
Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10
|
||||
Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%)
|
||||
=> Total passed: 24 out of 70 (34.29%)
|
||||
|
||||
Test serie 1: [u'11 11 11'] * 1
|
||||
Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 9 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 10 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 11 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 12 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 13 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 14 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
=> Total passed: 3 out of 7 (42.86%)
|
||||
|
||||
Test serie 2: [u'11 11 11'] * 5
|
||||
Test 15 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
Test 16 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 19 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 5 ( 40.00%)
|
||||
Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 21 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
=> Total passed: 4 out of 35 (11.43%)
|
||||
|
||||
Test serie 3: [u'aa aa aa aa'] * 3
|
||||
Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 3 ( 33.33%)
|
||||
Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 26 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 27 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 3 ( 33.33%)
|
||||
=> Total passed: 7 out of 21 (33.33%)
|
||||
|
||||
Test serie 4: [u'ff ff ff ff'] * 1
|
||||
Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 31 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 32 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 33 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 34 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 35 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 1 out of 7 (14.29%)
|
||||
|
||||
Test serie 5: [u'ff ff ff ff'] * 10
|
||||
Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
|
||||
Test 38 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%)
|
||||
=> Total passed: 19 out of 70 (27.14%)
|
||||
|
||||
Test serie 6: [u'55 55 55 55'] * 3
|
||||
Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
Test 44 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 45 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 46 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 47 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 48 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 49 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
=> Total passed: 7 out of 21 (33.33%)
|
||||
|
||||
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 6 out of 10 ( 60.00%)
|
||||
Test 52 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 54 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 3 out of 10 ( 30.00%)
|
||||
Test 55 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 56 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 10 ( 30.00%)
|
||||
=> Total passed: 22 out of 70 (31.43%)
|
||||
|
||||
Test serie 8: [u'88 88 88 88'] * 1
|
||||
Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 58 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 59 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 60 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 61 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 62 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 1 out of 7 (14.29%)
|
||||
|
||||
Test serie 9: [u'88 88 88 88'] * 5
|
||||
Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 2 out of 5 ( 40.00%)
|
||||
Test 65 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.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 0 out of 5 ( 0.00%)
|
||||
Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 5 ( 60.00%)
|
||||
=> Total passed: 9 out of 35 (25.71%)
|
||||
|
||||
Test serie 10: [u'88 88 88 88'] * 10
|
||||
Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.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 0 out of 10 ( 0.00%)
|
||||
Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
|
||||
=> Total passed: 21 out of 70 (30.00%)
|
||||
|
||||
|
||||
====== Total passed: 118 out of 413 (28.57%) ======
|
||||
Ran 1 test in 349.914s
|
||||
|
||||
|
||||
-------- Test Results on 2017-03-06 14:41:02 ---------
|
||||
Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10
|
||||
Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
|
||||
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%)
|
||||
=> Total passed: 25 out of 70 (35.71%)
|
||||
|
||||
Test serie 1: [u'11 11 11'] * 1
|
||||
Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 9 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 10 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 11 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 12 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 13 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 14 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 4 out of 7 (57.14%)
|
||||
|
||||
Test serie 2: [u'11 11 11'] * 5
|
||||
Test 15 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 16 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 5 (100.00%)
|
||||
Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 19 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 21 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
=> Total passed: 17 out of 35 (48.57%)
|
||||
|
||||
Test serie 3: [u'aa aa aa aa'] * 3
|
||||
Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 3 ( 33.33%)
|
||||
Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 26 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 27 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
=> Total passed: 9 out of 21 (42.86%)
|
||||
|
||||
Test serie 4: [u'ff ff ff ff'] * 1
|
||||
Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 31 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 32 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 33 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 34 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 35 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 2 out of 7 (28.57%)
|
||||
|
||||
Test serie 5: [u'ff ff ff ff'] * 10
|
||||
Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.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 0 out of 10 ( 0.00%)
|
||||
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
|
||||
=> Total passed: 25 out of 70 (35.71%)
|
||||
|
||||
Test serie 6: [u'55 55 55 55'] * 3
|
||||
Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
Test 44 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 3 ( 33.33%)
|
||||
Test 45 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 46 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 47 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 48 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 49 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
=> Total passed: 9 out of 21 (42.86%)
|
||||
|
||||
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 9 out of 10 ( 90.00%)
|
||||
Test 52 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 54 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 5 out of 10 ( 50.00%)
|
||||
Test 55 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 56 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
=> Total passed: 31 out of 70 (44.29%)
|
||||
|
||||
Test serie 8: [u'88 88 88 88'] * 1
|
||||
Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 58 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 59 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 60 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 61 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 62 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 1 out of 7 (14.29%)
|
||||
|
||||
Test serie 9: [u'88 88 88 88'] * 5
|
||||
Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 2 out of 5 ( 40.00%)
|
||||
Test 65 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.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 0 out of 5 ( 0.00%)
|
||||
Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%)
|
||||
=> Total passed: 12 out of 35 (34.29%)
|
||||
|
||||
Test serie 10: [u'88 88 88 88'] * 10
|
||||
Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
|
||||
Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.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 0 out of 10 ( 0.00%)
|
||||
Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 10 out of 10 (100.00%)
|
||||
=> Total passed: 25 out of 70 (35.71%)
|
||||
|
||||
|
||||
====== Total passed: 160 out of 413 (38.74%) ======
|
||||
Ran 1 test in 405.855s
|
||||
|
||||
|
||||
-------- Test Results on 2017-03-08 16:50:19 ---------
|
||||
Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10
|
||||
Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 10 ( 30.00%)
|
||||
Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 10 ( 50.00%)
|
||||
=> Total passed: 22 out of 70 (31.43%)
|
||||
|
||||
Test serie 1: [u'11 11 11'] * 1
|
||||
Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 9 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 10 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 11 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 12 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 13 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 14 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 4 out of 7 (57.14%)
|
||||
|
||||
Test serie 2: [u'11 11 11'] * 5
|
||||
Test 15 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 5 ( 60.00%)
|
||||
Test 16 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 19 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 21 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
=> Total passed: 12 out of 35 (34.29%)
|
||||
|
||||
Test serie 3: [u'aa aa aa aa'] * 3
|
||||
Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 26 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 27 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
=> Total passed: 7 out of 21 (33.33%)
|
||||
|
||||
Test serie 4: [u'ff ff ff ff'] * 1
|
||||
Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 31 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 32 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 33 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 34 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 35 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 3 out of 7 (42.86%)
|
||||
|
||||
Test serie 5: [u'ff ff ff ff'] * 10
|
||||
Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
|
||||
Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 10 ( 50.00%)
|
||||
Test 38 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
=> Total passed: 20 out of 70 (28.57%)
|
||||
|
||||
Test serie 6: [u'55 55 55 55'] * 3
|
||||
Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 44 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 45 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 46 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 47 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 48 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 49 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
=> Total passed: 9 out of 21 (42.86%)
|
||||
|
||||
Test serie 7: [u'55 55 55 55'] * 10
|
||||
Test 50 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
|
||||
Test 51 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 5 out of 10 ( 50.00%)
|
||||
Test 52 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 54 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
|
||||
Test 55 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 56 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
=> Total passed: 29 out of 70 (41.43%)
|
||||
|
||||
Test serie 8: [u'88 88 88 88'] * 1
|
||||
Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 58 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 59 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 60 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 61 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 62 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 3 out of 7 (42.86%)
|
||||
|
||||
Test serie 9: [u'88 88 88 88'] * 5
|
||||
Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%)
|
||||
Test 65 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.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 0 out of 5 ( 0.00%)
|
||||
Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%)
|
||||
=> Total passed: 15 out of 35 (42.86%)
|
||||
|
||||
Test serie 10: [u'88 88 88 88'] * 10
|
||||
Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%)
|
||||
Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
|
||||
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.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 0 out of 10 ( 0.00%)
|
||||
Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
=> Total passed: 18 out of 70 (25.71%)
|
||||
|
||||
|
||||
====== Total passed: 142 out of 413 (34.38%) ======
|
||||
Ran 1 test in 278.433s
|
||||
|
||||
|
||||
-------- Test Results on 2017-03-09 17:06:45 ---------
|
||||
Test serie 0: [u'01 23 45 67 89 ab cd ef'] * 10
|
||||
Test 1 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 2 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 8 out of 10 ( 80.00%)
|
||||
Test 3 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 4 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 5 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 6 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 7 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
|
||||
=> Total passed: 31 out of 70 (44.29%)
|
||||
|
||||
Test serie 1: [u'11 11 11'] * 1
|
||||
Test 8 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 9 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 10 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 11 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 12 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 13 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 14 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 3 out of 7 (42.86%)
|
||||
|
||||
Test serie 2: [u'11 11 11'] * 5
|
||||
Test 15 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
Test 16 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 5 ( 60.00%)
|
||||
Test 17 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 18 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 19 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 20 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.00%)
|
||||
Test 21 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 5 (100.00%)
|
||||
=> Total passed: 13 out of 35 (37.14%)
|
||||
|
||||
Test serie 3: [u'aa aa aa aa'] * 3
|
||||
Test 22 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 23 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 24 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 25 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.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 0 out of 3 ( 0.00%)
|
||||
Test 28 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
=> Total passed: 10 out of 21 (47.62%)
|
||||
|
||||
Test serie 4: [u'ff ff ff ff'] * 1
|
||||
Test 29 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 30 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 31 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 32 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 33 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 34 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 35 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 3 out of 7 (42.86%)
|
||||
|
||||
Test serie 5: [u'ff ff ff ff'] * 10
|
||||
Test 36 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 37 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 9 out of 10 ( 90.00%)
|
||||
Test 38 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 39 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 40 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 41 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 42 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
=> Total passed: 23 out of 70 (32.86%)
|
||||
|
||||
Test serie 6: [u'55 55 55 55'] * 3
|
||||
Test 43 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
Test 44 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 3 out of 3 (100.00%)
|
||||
Test 45 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 46 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 47 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
Test 48 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 3 ( 0.00%)
|
||||
Test 49 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 2 out of 3 ( 66.67%)
|
||||
=> Total passed: 10 out of 21 (47.62%)
|
||||
|
||||
Test serie 7: [u'55 55 55 55'] * 10
|
||||
Test 50 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
Test 51 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 6 out of 10 ( 60.00%)
|
||||
Test 52 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 53 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 54 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 55 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 56 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 6 out of 10 ( 60.00%)
|
||||
=> Total passed: 23 out of 70 (32.86%)
|
||||
|
||||
Test serie 8: [u'88 88 88 88'] * 1
|
||||
Test 57 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 58 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
Test 59 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 60 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 61 :: cr4-7 bw125 sf7 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 62 :: cr4-6 bw125 sf6 crc1 pwr1 :: passed 0 out of 1 ( 0.00%)
|
||||
Test 63 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 1 out of 1 (100.00%)
|
||||
=> Total passed: 3 out of 7 (42.86%)
|
||||
|
||||
Test serie 9: [u'88 88 88 88'] * 5
|
||||
Test 64 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 3 out of 5 ( 60.00%)
|
||||
Test 65 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 4 out of 5 ( 80.00%)
|
||||
Test 66 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 1 out of 5 ( 20.00%)
|
||||
Test 67 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 5 ( 0.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 0 out of 5 ( 0.00%)
|
||||
Test 70 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 3 out of 5 ( 60.00%)
|
||||
=> Total passed: 11 out of 35 (31.43%)
|
||||
|
||||
Test serie 10: [u'88 88 88 88'] * 10
|
||||
Test 71 :: cr4-5 bw125 sf7 crc1 pwr1 :: passed 4 out of 10 ( 40.00%)
|
||||
Test 72 :: cr4-5 bw125 sf8 crc1 pwr1 :: passed 7 out of 10 ( 70.00%)
|
||||
Test 73 :: cr4-5 bw125 sf12 crc1 pwr1 :: passed 0 out of 10 ( 0.00%)
|
||||
Test 74 :: cr4-7 bw125 sf6 crc1 pwr1 :: passed 0 out of 10 ( 0.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 0 out of 10 ( 0.00%)
|
||||
Test 77 :: cr4-6 bw125 sf7 crc1 pwr1 :: passed 5 out of 10 ( 50.00%)
|
||||
=> Total passed: 16 out of 70 (22.86%)
|
||||
|
||||
|
||||
====== Total passed: 146 out of 413 (35.35%) ======
|
||||
Ran 1 test in 278.635s
|
||||
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>1</expected-times>
|
||||
</TEST>
|
||||
<TEST id="61">
|
||||
<TEST id="64">
|
||||
<file>./examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>7</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -512,7 +512,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="62">
|
||||
<TEST id="65">
|
||||
<file>./examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>8</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -520,7 +520,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="63">
|
||||
<TEST id="66">
|
||||
<file>./examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>12</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -528,7 +528,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="64">
|
||||
<TEST id="67">
|
||||
<file>./examples/lora-samples/hackrf_cr4-7_bw125_sf6_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>6</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -536,7 +536,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="65">
|
||||
<TEST id="68">
|
||||
<file>./examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>7</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -544,7 +544,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="66">
|
||||
<TEST id="69">
|
||||
<file>./examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>6</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -552,7 +552,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="67">
|
||||
<TEST id="70">
|
||||
<file>./examples/lora-samples/hackrf_cr4-6_bw125_sf7_crc1_pwr1_009.cfile</file>
|
||||
<spreading-factor>7</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -560,7 +560,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>5</expected-times>
|
||||
</TEST>
|
||||
<TEST id="68">
|
||||
<TEST id="71">
|
||||
<file>./examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>7</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -568,7 +568,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>10</expected-times>
|
||||
</TEST>
|
||||
<TEST id="69">
|
||||
<TEST id="72">
|
||||
<file>./examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>8</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -576,7 +576,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>10</expected-times>
|
||||
</TEST>
|
||||
<TEST id="70">
|
||||
<TEST id="73">
|
||||
<file>./examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>12</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -584,7 +584,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>10</expected-times>
|
||||
</TEST>
|
||||
<TEST id="71">
|
||||
<TEST id="74">
|
||||
<file>./examples/lora-samples/hackrf_cr4-7_bw125_sf6_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>6</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -592,7 +592,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>10</expected-times>
|
||||
</TEST>
|
||||
<TEST id="72">
|
||||
<TEST id="75">
|
||||
<file>./examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>7</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -600,7 +600,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>10</expected-times>
|
||||
</TEST>
|
||||
<TEST id="73">
|
||||
<TEST id="76">
|
||||
<file>./examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>6</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
@ -608,7 +608,7 @@
|
|||
<expected-data-only>88 88 88 88</expected-data-only>
|
||||
<expected-times>10</expected-times>
|
||||
</TEST>
|
||||
<TEST id="74">
|
||||
<TEST id="77">
|
||||
<file>./examples/lora-samples/hackrf_cr4-6_bw125_sf7_crc1_pwr1_010.cfile</file>
|
||||
<spreading-factor>7</spreading-factor>
|
||||
<expected-data-all />
|
||||
|
|
|
|||
|
|
@ -690,8 +690,7 @@ namespace gr {
|
|||
* \ingroup lora
|
||||
*
|
||||
*/
|
||||
class LORA_API decoder : virtual public gr::sync_block
|
||||
{
|
||||
class LORA_API decoder : virtual public gr::sync_block {
|
||||
public:
|
||||
typedef boost::shared_ptr<decoder> sptr;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
#ifndef DBUGR_HPP
|
||||
#define DBUGR_HPP
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "utilities.h"
|
||||
|
||||
#undef NDEBUG
|
||||
//#define NDEBUG
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define DBGR_PAUSE(MSG)
|
||||
#define DBGR_WRITE_SIGNAL(IDEAL_SIG_FP, SAMPLE_SIG_FP, WINDOW, OFFSET, MIN, MAX, FULL, PAUSE, MSG)
|
||||
#else
|
||||
#define DBGR_PAUSE(MSG) system("read -rsp $'" #MSG "\nPress any key to continue...\n' -n 1 key")
|
||||
|
||||
#define DBGR_QUICK_TO_FILE(FILEPATH, APPEND, DATA, SIZE, FORMAT) \
|
||||
do { \
|
||||
int32_t DBGR_j; \
|
||||
char DBGR_buf[20]; \
|
||||
std::ofstream DBGR_out_file; \
|
||||
DBGR_out_file.open(FILEPATH, std::ios::out | (APPEND ? std::ios::app : std::ios::out )); \
|
||||
\
|
||||
for (DBGR_j = 0; DBGR_j < int32_t(SIZE); DBGR_j++) { \
|
||||
sprintf(DBGR_buf, FORMAT, DATA[DBGR_j]); \
|
||||
DBGR_out_file.write(DBGR_buf, strlen(DBGR_buf)); \
|
||||
} \
|
||||
\
|
||||
if (APPEND) DBGR_out_file.write("\n", sizeof(char)); \
|
||||
\
|
||||
} while(0) \
|
||||
|
||||
#define DBGR_WRITE_SIGNAL(IDEAL_SIG_FP, SAMPLE_SIG_FP, WINDOW, OFFSET, MIN, MAX, FULL, PAUSE, MSG) \
|
||||
do { \
|
||||
int32_t DBGR_j; \
|
||||
char DBGR_buf[20]; \
|
||||
const char DBGR_delim[] = "-----------------------------------------------------------------\n\0"; \
|
||||
std::ofstream DBGR_out_file; \
|
||||
DBGR_out_file.open("/tmp/DBGR.txt", std::ios::out); \
|
||||
\
|
||||
\
|
||||
printf("DBGR_Ideal\n"); \
|
||||
for (DBGR_j = 0; DBGR_j < int32_t(WINDOW); DBGR_j++) { \
|
||||
sprintf(DBGR_buf, "%f\n", IDEAL_SIG_FP[DBGR_j]); \
|
||||
DBGR_out_file.write(DBGR_buf, strlen(DBGR_buf)); \
|
||||
} DBGR_out_file.write(DBGR_delim, strlen(DBGR_delim)); \
|
||||
\
|
||||
printf("%s", DBGR_delim); \
|
||||
\
|
||||
printf("DBGR_Before\n"); \
|
||||
for (DBGR_j = 0; DBGR_j < int32_t(WINDOW); DBGR_j++) { \
|
||||
sprintf(DBGR_buf, "%f\n", gr::lora::clamp(SAMPLE_SIG_FP[DBGR_j], -0.5f, 0.5f)); \
|
||||
DBGR_out_file.write(DBGR_buf, strlen(DBGR_buf)); \
|
||||
} DBGR_out_file.write(DBGR_delim, strlen(DBGR_delim)); \
|
||||
\
|
||||
printf("%s", DBGR_delim); \
|
||||
\
|
||||
printf("DBGR_After %d of %d in %d\n", MIN, MAX, WINDOW); \
|
||||
for (DBGR_j = OFFSET; DBGR_j < int32_t(OFFSET > 0 ? WINDOW : MAX); DBGR_j++) { \
|
||||
sprintf(DBGR_buf, "%f\n", gr::lora::clamp(*(SAMPLE_SIG_FP + DBGR_j), -0.5f, 0.5f)); \
|
||||
DBGR_out_file.write(DBGR_buf, strlen(DBGR_buf)); \
|
||||
} DBGR_out_file.write(DBGR_delim, strlen(DBGR_delim)); \
|
||||
\
|
||||
printf("%s", DBGR_delim); \
|
||||
\
|
||||
/*if (FULL) { \
|
||||
printf("DBGR_Full\n"); \
|
||||
for (DBGR_j = 0; DBGR_j < WINDOW; DBGR_j++) { \
|
||||
sprintf(buf, "%f\n\0", SAMPLE_SIG_FP[DBGR_j]); \
|
||||
DBGR_out_file.write(DBGR_buf, strlen(DBGR_buf)); \
|
||||
} DBGR_out_file.write(DBGR_delim, strlen(DBGR_delim)); \
|
||||
printf("%s", DBGR_delim); \
|
||||
}*/ \
|
||||
\
|
||||
printf("DBGR_End\n"); \
|
||||
DBGR_out_file.close(); \
|
||||
if(PAUSE) DBGR_PAUSE(MSG); \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#endif // DBUGR_HPP
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
#include <gnuradio/expj.h>
|
||||
#include <liquid/liquid.h>
|
||||
#include <numeric>
|
||||
#include <algorithm>
|
||||
#include "decoder_impl.h"
|
||||
#include "tables.h"
|
||||
#include "utilities.h"
|
||||
|
|
@ -34,7 +35,8 @@
|
|||
//#define CFO_CORRECT 1 /// Correct shift fft estimation
|
||||
|
||||
|
||||
#undef NDEBUG /// Debug printing
|
||||
//#undef NDEBUG /// Debug printing
|
||||
#include "dbugr.hpp"
|
||||
|
||||
namespace gr {
|
||||
namespace lora {
|
||||
|
|
@ -55,8 +57,12 @@ namespace gr {
|
|||
|
||||
if (sf < 6 || sf > 13) {
|
||||
//throw std::invalid_argument("[LoRa Decoder] ERROR : Spreading factor should be between 6 and 12 (inclusive)!\n Other values are currently not supported.");
|
||||
std::cerr << "[LoRa Decoder] ERROR : Spreading factor should be between 6 and 12 (inclusive)!\n Other values are currently not supported." << std::endl;
|
||||
std::cerr << "[LoRa Decoder] ERROR : Spreading factor should be between 6 and 12 (inclusive)!" << std::endl
|
||||
<< " Other values are currently not supported." << std::endl;
|
||||
exit(1);
|
||||
} else if (sf == 6) {
|
||||
std::cerr << "[LoRa Decoder] WARNING : Spreading factor wrapped around to 12 due to incompatibility in hardware!" << std::endl;
|
||||
sf = 12;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
|
@ -109,6 +115,10 @@ namespace gr {
|
|||
// Register gnuradio ports
|
||||
this->message_port_register_out(pmt::mp("frames"));
|
||||
this->message_port_register_out(pmt::mp("debug"));
|
||||
|
||||
|
||||
// // Whitening empty file
|
||||
// DBGR_QUICK_TO_FILE("/tmp/whitening_out", false, g, -1, "");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -148,8 +158,15 @@ namespace gr {
|
|||
}
|
||||
|
||||
// Store instant. frequency
|
||||
instantaneous_frequency(&this->d_downchirp[0], &this->d_downchirp_ifreq[0], this->d_samples_per_symbol);
|
||||
instantaneous_frequency(&this->d_upchirp[0], &this->d_upchirp_ifreq[0], this->d_samples_per_symbol);
|
||||
this->instantaneous_frequency(&this->d_downchirp[0], &this->d_downchirp_ifreq[0], this->d_samples_per_symbol);
|
||||
this->instantaneous_frequency(&this->d_upchirp[0], &this->d_upchirp_ifreq[0], this->d_samples_per_symbol);
|
||||
|
||||
// Precalc for correlation
|
||||
this->d_upchirp_avg = std::accumulate(this->d_upchirp_ifreq.begin(), this->d_upchirp_ifreq.end(), 0.0f) / (float)this->d_samples_per_symbol;
|
||||
this->d_upchirp_stddev = this->stddev(&this->d_upchirp_ifreq[0], this->d_samples_per_symbol, this->d_upchirp_avg);
|
||||
|
||||
this->d_downchirp_avg = std::accumulate(this->d_downchirp_ifreq.begin(), this->d_downchirp_ifreq.end(), 0.0f) / (float)this->d_samples_per_symbol;
|
||||
this->d_downchirp_stddev = this->stddev(&this->d_downchirp_ifreq[0], this->d_samples_per_symbol, this->d_downchirp_avg);
|
||||
|
||||
samples_to_file("/tmp/downchirp", &this->d_downchirp[0], this->d_downchirp.size(), sizeof(gr_complex));
|
||||
samples_to_file("/tmp/upchirp", &this->d_upchirp[0], this->d_upchirp.size(), sizeof(gr_complex));
|
||||
|
|
@ -206,19 +223,24 @@ namespace gr {
|
|||
}
|
||||
|
||||
void decoder_impl::instantaneous_frequency(const gr_complex *in_samples, float *out_ifreq, uint32_t window) {
|
||||
float iphase[window];
|
||||
|
||||
if (window < 2) {
|
||||
// TODO: throw warning here
|
||||
std::cerr << "LoRa Decoder Warning: window size < 2 !" << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
this->instantaneous_phase(in_samples, iphase, window);
|
||||
/* instantaneous_phase */
|
||||
float iphase_1, iphase_2;
|
||||
|
||||
// Instant freq
|
||||
for (uint32_t i = 1; i < window; i++) {
|
||||
out_ifreq[i - 1] = iphase[i] - iphase[i - 1];
|
||||
iphase_1 = std::arg(in_samples[i - 1]);
|
||||
iphase_2 = std::arg(in_samples[i]);
|
||||
|
||||
// Unwrapped loops from liquid_unwrap_phase
|
||||
while ( (iphase_2 - iphase_1) > M_PI ) iphase_2 -= 2*M_PI;
|
||||
while ( (iphase_2 - iphase_1) < -M_PI ) iphase_2 += 2*M_PI;
|
||||
|
||||
out_ifreq[i - 1] = iphase_2 - iphase_1;
|
||||
}
|
||||
|
||||
// Make sure there is no strong gradient if this value is accessed by mistake
|
||||
|
|
@ -226,19 +248,23 @@ namespace gr {
|
|||
}
|
||||
|
||||
inline void decoder_impl::instantaneous_phase(const gr_complex *in_samples, float *out_iphase, uint32_t window) {
|
||||
for (uint32_t i = 0; i < window; i++) {
|
||||
out_iphase[i] = arg(in_samples[i]);
|
||||
// = the same as atan2(imag(in_samples[i]),real(in_samples[i]));
|
||||
}
|
||||
out_iphase[0] = std::arg(in_samples[0]);
|
||||
|
||||
liquid_unwrap_phase(out_iphase, window);
|
||||
for (uint32_t i = 1; i < window; i++) {
|
||||
out_iphase[i] = std::arg(in_samples[i]);
|
||||
// = the same as atan2(imag(in_samples[i]),real(in_samples[i]));
|
||||
|
||||
// Unwrapped loops from liquid_unwrap_phase
|
||||
while ( (out_iphase[i] - out_iphase[i-1]) > M_PI ) out_iphase[i] -= 2*M_PI;
|
||||
while ( (out_iphase[i] - out_iphase[i-1]) < -M_PI ) out_iphase[i] += 2*M_PI;
|
||||
}
|
||||
}
|
||||
|
||||
float decoder_impl::cross_correlate(const gr_complex *samples_1, const gr_complex *samples_2, int window) {
|
||||
float result = 0.0f;
|
||||
|
||||
for (int i = 0; i < window; i++) {
|
||||
result += real(samples_1[i] * conj(samples_2[i]));
|
||||
result += std::real(samples_1[i] * std::conj(samples_2[i]));
|
||||
}
|
||||
|
||||
result /= (float)window;
|
||||
|
|
@ -249,25 +275,23 @@ namespace gr {
|
|||
float decoder_impl::detect_downchirp(const gr_complex *samples, uint32_t window) {
|
||||
float samples_ifreq[window];
|
||||
|
||||
instantaneous_frequency(samples, samples_ifreq, window);
|
||||
return norm_cross_correlate(samples_ifreq, &this->d_downchirp_ifreq[0], window);
|
||||
this->instantaneous_frequency(samples, samples_ifreq, window);
|
||||
return this->norm_cross_correlate_downchirp(samples_ifreq, window - 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate normalized cross correlation of real values.
|
||||
* See https://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation.
|
||||
*/
|
||||
float decoder_impl::norm_cross_correlate(const float *samples_1, const float *samples_2, uint32_t window) {
|
||||
float decoder_impl::norm_cross_correlate_downchirp(const float *samples, uint32_t window) {
|
||||
float result = 0.0f;
|
||||
|
||||
float average_1 = std::accumulate(samples_1, samples_1 + window, 0.0f) / window;
|
||||
float average_2 = std::accumulate(samples_2, samples_2 + window, 0.0f) / window;
|
||||
float sd_1 = stddev(samples_1, window, average_1);
|
||||
float sd_2 = stddev(samples_2, window, average_2);
|
||||
const float average = std::accumulate(samples, samples + window, 0.0f) / (float)(window);
|
||||
const float sd = this->stddev(samples, window, average);
|
||||
|
||||
for (uint32_t i = 0; i < window - 1; i++) {
|
||||
result += (samples_1[i] - average_1) * (samples_2[i] - average_2)
|
||||
/ (sd_1 * sd_2);
|
||||
for (uint32_t i = 0; i < window; i++) {
|
||||
result += (samples[i] - average) * (this->d_downchirp_ifreq[i] - this->d_downchirp_avg)
|
||||
/ (sd * this->d_downchirp_stddev);
|
||||
}
|
||||
|
||||
result /= (float)(window - 1);
|
||||
|
|
@ -275,41 +299,119 @@ namespace gr {
|
|||
return result;
|
||||
}
|
||||
|
||||
float decoder_impl::sliding_norm_cross_correlate(const float *samples_1, const float *samples_2, uint32_t window, uint32_t slide, int32_t *index) {
|
||||
float correlations[slide * 2];
|
||||
float samples_1_padded[window + slide * 2] = { 0.0f };
|
||||
float decoder_impl::sliding_norm_cross_correlate_upchirp(const float *samples, uint32_t window, uint32_t slide, int32_t *index) {
|
||||
(void) slide;
|
||||
|
||||
double average_1 = std::accumulate(samples_1, samples_1 + window, 0.0) / window;
|
||||
double average_2 = std::accumulate(samples_2, samples_2 + window, 0.0) / window;
|
||||
double sd_1 = stddev(samples_1, window, average_1);
|
||||
double sd_2 = stddev(samples_2, window, average_2);
|
||||
bool found_change = false;
|
||||
uint32_t max = 0, min;
|
||||
const uint32_t coeff = 16;
|
||||
|
||||
uint32_t i, j;
|
||||
float result;
|
||||
|
||||
// Create padding on both sides of the samples
|
||||
for (i = 0; i < window; i++) {
|
||||
samples_1_padded[i + slide - 1] = samples_1[i];
|
||||
}
|
||||
|
||||
// Slide and correlate
|
||||
for (i = 0; i < 2 * slide; i++) {
|
||||
result = 0.0f;
|
||||
|
||||
for (j = 0; j < window; j++) {
|
||||
result += (samples_1_padded[i + j] - average_1) * (samples_2[j] - average_2)
|
||||
/ (sd_1 * sd_2);
|
||||
for (uint32_t i = 0; i < window - coeff - 1; i += coeff / 2) {
|
||||
if (samples[i] - samples[i + coeff] > 0.2f) { // Goes down
|
||||
max = i;
|
||||
found_change = true;
|
||||
break;
|
||||
}
|
||||
|
||||
correlations[i] = result / (float)window;
|
||||
}
|
||||
|
||||
// Determine best correlation
|
||||
uint32_t argmax = (std::max_element(correlations, correlations + slide * 2) - correlations);
|
||||
// Determine how much we have to slide before the best correlation is reached
|
||||
*index = argmax - slide;
|
||||
if (!found_change) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return correlations[argmax];
|
||||
max = std::max_element(samples + gr::lora::clamp((int)(max - coeff), 0, (int)window),
|
||||
samples + gr::lora::clamp(max + coeff, 0u, window)) - samples;
|
||||
min = std::min_element(samples + gr::lora::clamp(max + 1u, 0u, window),
|
||||
samples + gr::lora::clamp(max + 2u * coeff, 0u, window)) - samples;
|
||||
|
||||
max += (min - max) / 2;
|
||||
|
||||
*index = max;
|
||||
|
||||
// Extra to allow falling edge on 99% of sample == Practically synced
|
||||
// Should improve detection by not discarding almost synced samples, but doesn't..
|
||||
// if ((max - coeff / 2) > (window * 0.98f)) {
|
||||
//// printf("ALREADY SYNCED\n");
|
||||
// *index = 0;
|
||||
// return 0.99f;
|
||||
// }
|
||||
|
||||
float max_correlation = 0.0f;
|
||||
|
||||
const float average = std::accumulate(samples + max, samples + window, 0.0f) / (window - max);
|
||||
const float au = std::accumulate(&this->d_upchirp_ifreq[max], &this->d_upchirp_ifreq[window], 0.0f) / (window - max);
|
||||
const float sd = this->stddev(&samples[max], window - max, average) * this->stddev(&this->d_upchirp_ifreq[max], window - max, au);
|
||||
|
||||
for (uint32_t j = max; j < window; j++) {
|
||||
max_correlation += (samples[j] - average) * (this->d_upchirp_ifreq[j] - au) / sd;
|
||||
}
|
||||
|
||||
max_correlation /= (float)(window - max);
|
||||
|
||||
return max_correlation;
|
||||
|
||||
/* NEWER *********************************************************************/
|
||||
/// Perfect shift to ideal frequency
|
||||
// const uint32_t t_low = window / 4,
|
||||
// t_mid = window / 2;
|
||||
|
||||
// // Average before compare
|
||||
// const uint32_t coeff = 20;
|
||||
// float avg = std::accumulate(&samples[t_mid] - coeff / 2, &samples[t_mid] + coeff / 2, 0.0f) / coeff;
|
||||
//// printf("%5d\t%12.6f\n", t_mid, avg);
|
||||
|
||||
|
||||
// uint32_t idx = std::lower_bound( this->d_upchirp_ifreq.begin() + t_low,
|
||||
// this->d_upchirp_ifreq.begin() + t_mid,
|
||||
// avg)
|
||||
// - this->d_upchirp_ifreq.begin();
|
||||
// if (idx <= t_low || idx >= t_mid) {
|
||||
// return 0.5f;
|
||||
// }
|
||||
// *index = t_mid - idx;
|
||||
//// printf("idx %5d\n", idx);
|
||||
//// printf("slide with: %5d\n", idx - t_mid);
|
||||
//// printf("slide with: %5d\n", idx - t_mid - slide);
|
||||
// printf("slide with: %5d\n", *index);
|
||||
|
||||
// return 0.9f;
|
||||
/****************************************************************************/
|
||||
|
||||
/* OLD *********************************************************************/
|
||||
// float samples_1_padded[window + slide * 2] = { 0.0f };
|
||||
|
||||
// float average = std::accumulate(samples, samples + window, 0.0f) / window;
|
||||
// float sd = this->stddev(samples, window, average);
|
||||
|
||||
// uint32_t i, j, max_cor_idx = -1;
|
||||
// float result, max_correlation = -1000.0f;
|
||||
|
||||
// // Create padding on both sides of the samples
|
||||
// for (i = 0; i < window; i++) {
|
||||
// samples_1_padded[i + slide - 1] = samples[i];
|
||||
// }
|
||||
|
||||
// // Slide and correlate
|
||||
// for (i = 0; i < 2 * slide; i++) {
|
||||
// result = 0.0f;
|
||||
|
||||
// for (j = 0; j < window; j++) {
|
||||
// result += (samples_1_padded[i + j] - average) * (this->d_upchirp_ifreq[j] - this->d_upchirp_avg)
|
||||
// / (sd * this->d_upchirp_stddev);
|
||||
// }
|
||||
|
||||
// // Determine best correlation
|
||||
// result /= (float)window;
|
||||
// if (result > max_correlation) {
|
||||
// max_correlation = result;
|
||||
// max_cor_idx = i;
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Determine how much we have to slide before the best correlation is reached
|
||||
// *index = max_cor_idx - slide;
|
||||
//// printf("slide with: %5d\n", *index);
|
||||
// return max_correlation;
|
||||
/****************************************************************************/
|
||||
}
|
||||
|
||||
float decoder_impl::stddev(const float *values, uint32_t len, float mean) {
|
||||
|
|
@ -327,11 +429,12 @@ namespace gr {
|
|||
float decoder_impl::detect_upchirp(const gr_complex *samples, uint32_t window, uint32_t slide, int32_t *index) {
|
||||
float samples_ifreq[window];
|
||||
|
||||
instantaneous_frequency(samples, samples_ifreq, window);
|
||||
return sliding_norm_cross_correlate(samples_ifreq, &this->d_upchirp_ifreq[0], window, slide, index);
|
||||
this->instantaneous_frequency(samples, samples_ifreq, window);
|
||||
|
||||
return this->sliding_norm_cross_correlate_upchirp(samples_ifreq, window, slide, index);
|
||||
}
|
||||
|
||||
unsigned int decoder_impl::get_shift_fft(gr_complex *samples) {
|
||||
unsigned int decoder_impl::get_shift_fft(const gr_complex *samples) {
|
||||
float fft_mag[this->d_number_of_bins];
|
||||
gr_complex mult_hf[this->d_samples_per_symbol];
|
||||
|
||||
|
|
@ -347,7 +450,7 @@ namespace gr {
|
|||
|
||||
// Multiply with ideal downchirp
|
||||
for (uint32_t i = 0; i < this->d_samples_per_symbol; i++) {
|
||||
mult_hf[i] = conj(samples[i] * this->d_downchirp[i]);
|
||||
mult_hf[i] = std::conj(samples[i] * this->d_downchirp[i]);
|
||||
}
|
||||
|
||||
samples_to_file("/tmp/mult", &mult_hf[0], this->d_samples_per_symbol, sizeof(gr_complex));
|
||||
|
|
@ -382,7 +485,7 @@ namespace gr {
|
|||
|
||||
// Determine instant phase
|
||||
for (unsigned int i = 0; i < this->d_samples_per_symbol; i++) {
|
||||
instantaneous_phase[i] = arg(samples[i]);
|
||||
instantaneous_phase[i] = std::arg(samples[i]);
|
||||
}
|
||||
|
||||
liquid_unwrap_phase(instantaneous_phase, this->d_samples_per_symbol);
|
||||
|
|
@ -407,7 +510,7 @@ namespace gr {
|
|||
|
||||
avg /= (float)osr;
|
||||
|
||||
float diff = abs(last_avg - avg);
|
||||
const float diff = abs(last_avg - avg);
|
||||
|
||||
if (diff > max_if_diff) {
|
||||
max_if_diff = diff;
|
||||
|
|
@ -424,18 +527,16 @@ namespace gr {
|
|||
|
||||
bool decoder_impl::demodulate(gr_complex *samples, bool is_header) {
|
||||
unsigned int bin_idx = this->max_frequency_gradient_idx(samples);
|
||||
//unsigned int bin_idx = get_shift_fft(samples);
|
||||
//unsigned int bin_idx_test = get_shift_fft(samples);
|
||||
unsigned int bin_idx_test = 0;
|
||||
|
||||
// Header has additional redundancy
|
||||
if (is_header) {
|
||||
bin_idx /= 4;
|
||||
bin_idx_test /= 4;
|
||||
bin_idx /= 4u;
|
||||
bin_idx_test /= 4u;
|
||||
}
|
||||
|
||||
// Decode (actually gray encode) the bin to get the symbol value
|
||||
unsigned int word = gray_encode(bin_idx);
|
||||
unsigned int word = /* LiquidDSP:: */ gray_encode(bin_idx);
|
||||
#ifndef NDEBUG
|
||||
this->d_debug << gr::lora::to_bin(word, is_header ? this->d_sf - 2 : this->d_sf) << " " << bin_idx << std::endl;
|
||||
#endif
|
||||
|
|
@ -453,7 +554,7 @@ namespace gr {
|
|||
}
|
||||
|
||||
void decoder_impl::deinterleave(uint32_t ppm) {
|
||||
unsigned int bits_per_word = this->d_words.size();
|
||||
const unsigned int bits_per_word = this->d_words.size();
|
||||
|
||||
if (bits_per_word > 8) {
|
||||
// Not sure if this can ever occur. It would imply coding rate high than 4/8 e.g. 4/9.
|
||||
|
|
@ -469,15 +570,15 @@ namespace gr {
|
|||
offset_diag = offset_start;
|
||||
|
||||
for (unsigned int j = 0; j < bits_per_word; j++) {
|
||||
uint8_t power = 1 << j;
|
||||
unsigned int power_check = 1 << offset_diag;
|
||||
const uint8_t power = 1 << j;
|
||||
const unsigned int power_check = 1 << offset_diag;
|
||||
|
||||
if (this->d_words[j] & power_check) { // Mask triggers
|
||||
d += power;
|
||||
}
|
||||
|
||||
if (offset_diag) offset_diag--;
|
||||
else offset_diag = ppm - 1;
|
||||
if (offset_diag) offset_diag--;
|
||||
else offset_diag = ppm - 1;
|
||||
}
|
||||
|
||||
offset_start--;
|
||||
|
|
@ -578,6 +679,10 @@ namespace gr {
|
|||
void decoder_impl::dewhiten(const uint8_t *prng) {
|
||||
uint32_t i, len = this->d_words_deshuffled.size();
|
||||
|
||||
// // Whitening out
|
||||
// if (prng != gr::lora::prng_header)
|
||||
// DBGR_QUICK_TO_FILE("/tmp/whitening_out", true, this->d_words_deshuffled, len, "0x%02X,");
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
uint8_t xor_b = this->d_words_deshuffled[i] ^ prng[i];
|
||||
|
||||
|
|
@ -677,45 +782,68 @@ namespace gr {
|
|||
int decoder_impl::find_preamble_start_fast(gr_complex *samples, uint32_t len) {
|
||||
(void) len;
|
||||
|
||||
const uint32_t decimation = this->d_corr_decim_factor;
|
||||
const uint32_t decimation = this->d_corr_decim_factor * 4;
|
||||
const uint32_t decim_size = this->d_samples_per_symbol / decimation;
|
||||
const float detect_thresh = 0.01f;
|
||||
|
||||
const float mul = (float)this->d_samples_per_second / (2.0f * M_PI);
|
||||
uint32_t rising = 0;
|
||||
static const uint32_t rising_required = 2;
|
||||
|
||||
float theta1, theta2, theta3, theta4,
|
||||
grad_prev = 0.0f, grad_cur;
|
||||
|
||||
for (uint32_t i = 1; i < decimation; i++) {
|
||||
theta1 = arg(samples[ (i - 1) * decim_size ]);
|
||||
theta2 = theta3 = arg(samples[ i * decim_size ]);
|
||||
theta4 = arg(samples[ (i + 1) * decim_size ]);
|
||||
|
||||
// Unwrap phase
|
||||
while ( (theta2 - theta1) > M_PI ) theta2 -= 2*M_PI;
|
||||
while ( (theta2 - theta1) < -M_PI ) theta2 += 2*M_PI;
|
||||
while ( (theta4 - theta3) > M_PI ) theta4 -= 2*M_PI;
|
||||
while ( (theta4 - theta3) < -M_PI ) theta4 += 2*M_PI;
|
||||
|
||||
grad_cur = (theta4 - theta3 - theta2 + theta1) * mul;
|
||||
|
||||
if (grad_cur > grad_prev)
|
||||
rising++;
|
||||
|
||||
if (rising >= rising_required && grad_cur <= -20000) {
|
||||
// TODO: Make this a bit more logical, e.g. d_bw / decimation * 2 -> 2 steps down
|
||||
// Absolute value
|
||||
for (uint32_t i = 1; i < decimation - 1; i++) {
|
||||
if ( std::abs(samples[ i * decim_size]) > detect_thresh
|
||||
&& std::abs(samples[(i - 1) * decim_size]) < std::abs(samples[i * decim_size])
|
||||
&& std::abs(samples[(i + 1) * decim_size]) > std::abs(samples[i * decim_size])
|
||||
) {
|
||||
return i * decim_size;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
this->d_debug << "G:" << grad_cur << std::endl;
|
||||
#endif
|
||||
|
||||
grad_prev = grad_cur;
|
||||
}
|
||||
|
||||
return -1;
|
||||
|
||||
/* OLD ****************************************************************************/
|
||||
// const uint32_t decimation = this->d_corr_decim_factor;
|
||||
// const uint32_t decim_size = this->d_samples_per_symbol / decimation;
|
||||
|
||||
// if (std::abs(samples[ this->d_samples_per_symbol / 2]) > 0.01f) {
|
||||
|
||||
// const float mul = (float)this->d_samples_per_second / (2.0f * M_PI);
|
||||
// uint32_t rising = 0;
|
||||
// static const uint32_t rising_required = 2;
|
||||
|
||||
// float theta1, theta2, theta3, theta4,
|
||||
// grad_prev = 0.0f, grad_cur;
|
||||
|
||||
// for (uint32_t i = 1; i < decimation-1; i++) {
|
||||
// theta1 = std::arg(samples[ (i - 1) * decim_size ]);
|
||||
// theta2 = theta3 = std::arg(samples[ i * decim_size ]);
|
||||
// theta4 = std::arg(samples[ (i + 1) * decim_size ]);
|
||||
|
||||
// // Unwrap phase
|
||||
// while ( (theta2 - theta1) > M_PI ) theta2 -= 2*M_PI;
|
||||
// while ( (theta2 - theta1) < -M_PI ) theta2 += 2*M_PI;
|
||||
// while ( (theta4 - theta3) > M_PI ) theta4 -= 2*M_PI;
|
||||
// while ( (theta4 - theta3) < -M_PI ) theta4 += 2*M_PI;
|
||||
|
||||
// /* - grad_prev --> happens in old code, but is less reliable? */
|
||||
// grad_cur = (theta4 - theta3 - theta2 + theta1) * mul /* - grad_prev */;
|
||||
|
||||
// if (grad_cur > grad_prev)
|
||||
// rising++;
|
||||
|
||||
// if (rising >= rising_required && grad_cur <= -20000) {
|
||||
// // TODO: Make this a bit more logical, e.g. d_bw / decimation * 2 -> 2 steps down
|
||||
// return i * decim_size;
|
||||
// }
|
||||
|
||||
// #ifndef NDEBUG
|
||||
// this->d_debug << "G:" << grad_cur << std::endl;
|
||||
// #endif
|
||||
|
||||
// grad_prev = grad_cur;
|
||||
// }
|
||||
|
||||
// }
|
||||
// return -1;
|
||||
/**********************************************************************************/
|
||||
|
||||
}
|
||||
|
||||
uint8_t decoder_impl::lookup_cr(uint8_t bytevalue) {
|
||||
|
|
@ -751,10 +879,16 @@ namespace gr {
|
|||
case gr::lora::DecoderState::DETECT: {
|
||||
int i = this->find_preamble_start_fast(&input[0], 2 * this->d_samples_per_symbol);
|
||||
|
||||
|
||||
if (i != -1) {
|
||||
uint32_t c_window = std::min(2 * this->d_samples_per_symbol - i,
|
||||
this->d_samples_per_symbol);
|
||||
// BUG: (2*d_samples_per_symbol - i) always bigger than d_samples_per_symbol
|
||||
// Thus c_window is always d_samples_per_symbol?
|
||||
// uint32_t c_window = std::min(2 * this->d_samples_per_symbol - i,
|
||||
// this->d_samples_per_symbol);
|
||||
uint32_t c_window = this->d_samples_per_symbol;
|
||||
|
||||
int32_t index_correction = 0;
|
||||
|
||||
float c = this->detect_upchirp(&input[i],
|
||||
c_window,
|
||||
this->d_samples_per_symbol / this->d_corr_decim_factor,
|
||||
|
|
@ -790,6 +924,8 @@ namespace gr {
|
|||
// Debug stuff
|
||||
this->samples_to_file("/tmp/sync", &input[0], this->d_samples_per_symbol, sizeof(gr_complex));
|
||||
|
||||
printf("---------------------- SYNC!\n");
|
||||
|
||||
this->d_state = gr::lora::DecoderState::PAUSE;
|
||||
} else {
|
||||
this->d_corr_fails++;
|
||||
|
|
@ -808,7 +944,6 @@ namespace gr {
|
|||
|
||||
case gr::lora::DecoderState::PAUSE: {
|
||||
this->d_state = gr::lora::DecoderState::DECODE_HEADER;
|
||||
|
||||
//samples_debug(input, d_samples_per_symbol + d_delay_after_sync);
|
||||
this->consume_each(this->d_samples_per_symbol + this->d_delay_after_sync);
|
||||
break;
|
||||
|
|
@ -828,11 +963,11 @@ namespace gr {
|
|||
this->d_payload_length = decoded[0];
|
||||
this->d_cr = this->lookup_cr(decoded[1]);
|
||||
|
||||
int symbols_per_block = this->d_cr + 4;
|
||||
int bits_needed = this->d_payload_length * 8 + 16;
|
||||
float symbols_needed = float(bits_needed) * (symbols_per_block / 4.0f) / float(this->d_sf);
|
||||
int blocks_needed = ceil(symbols_needed / symbols_per_block);
|
||||
this->d_payload_symbols = blocks_needed * symbols_per_block;
|
||||
const int symbols_per_block = this->d_cr + 4;
|
||||
const float bits_needed = float(this->d_payload_length) * 8.0f + 16.0f;
|
||||
const float symbols_needed = bits_needed * (symbols_per_block / 4.0f) / float(this->d_sf);
|
||||
const int blocks_needed = std::ceil(symbols_needed / symbols_per_block);
|
||||
this->d_payload_symbols = blocks_needed * symbols_per_block;
|
||||
|
||||
#ifndef NDEBUG
|
||||
this->d_debug << "LEN: " << this->d_payload_length << " (" << this->d_payload_symbols << " symbols)" << std::endl;
|
||||
|
|
@ -868,6 +1003,7 @@ namespace gr {
|
|||
}
|
||||
|
||||
case gr::lora::DecoderState::STOP: {
|
||||
|
||||
this->consume_each(this->d_samples_per_symbol);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,9 +49,15 @@ namespace gr {
|
|||
|
||||
/// using std::complex = gr_complex
|
||||
std::vector<gr_complex> d_downchirp;
|
||||
std::vector<gr_complex> d_upchirp;
|
||||
std::vector<float> d_downchirp_ifreq;
|
||||
float d_downchirp_avg;
|
||||
float d_downchirp_stddev;
|
||||
|
||||
std::vector<gr_complex> d_upchirp;
|
||||
std::vector<float> d_upchirp_ifreq;
|
||||
float d_upchirp_avg;
|
||||
float d_upchirp_stddev;
|
||||
|
||||
std::vector<gr_complex> d_fft;
|
||||
std::vector<gr_complex> d_mult;
|
||||
|
||||
|
|
@ -94,13 +100,13 @@ namespace gr {
|
|||
void build_ideal_chirps(void);
|
||||
void samples_to_file(const std::string path, const gr_complex *v, uint32_t length, uint32_t elem_size);
|
||||
void samples_debug(const gr_complex *v, uint32_t length);
|
||||
float sliding_norm_cross_correlate(const float *samples_1, const float *samples_2, uint32_t window, uint32_t slide, int32_t *index);
|
||||
float norm_cross_correlate(const float *samples_1, const float *samples_2, uint32_t window);
|
||||
float sliding_norm_cross_correlate_upchirp(const float *samples, uint32_t window, uint32_t slide, int32_t *index);
|
||||
float norm_cross_correlate_downchirp(const float *samples, uint32_t window);
|
||||
float detect_downchirp(const gr_complex *samples, uint32_t window);
|
||||
float detect_upchirp(const gr_complex *samples_1, uint32_t window, uint32_t slide, int32_t *index);
|
||||
float cross_correlate(const gr_complex *samples_1, const gr_complex *samples_2, int window);
|
||||
|
||||
unsigned int get_shift_fft(gr_complex *samples);
|
||||
unsigned int get_shift_fft(const gr_complex *samples);
|
||||
|
||||
void determine_cfo(const gr_complex *samples);
|
||||
void correct_cfo(gr_complex *samples, uint32_t num_samples);
|
||||
|
|
|
|||
|
|
@ -682,6 +682,8 @@
|
|||
#include <gnuradio/io_signature.h>
|
||||
#include "message_socket_sink_impl.h"
|
||||
|
||||
#define NDEBUG /// Debug printing
|
||||
|
||||
namespace gr {
|
||||
namespace lora {
|
||||
|
||||
|
|
|
|||
12
lib/tables.h
12
lib/tables.h
|
|
@ -8,27 +8,27 @@ namespace gr {
|
|||
};
|
||||
|
||||
const uint8_t prng_payload_sf7[] = { // OK
|
||||
0xdc, 0xec, 0xb0, 0xf4, 0x9c, 0xfc, 0xc4, 0xdc, 0x10, 0xf8, 0x40, 0x34, 0xa8, 0x5c, 0xf0, 0x94, 0x60, 0x8, 0xf8, 0x48, 0xbc, 0x88, 0xa4, 0xd4, 0x14, 0xe4, 0x84, 0x38, 0x68, 0xec, 0xe4, 0xbc, 0xb0, 0x1c, 0x14, 0xa4, 0x3c, 0x4c, 0x90, 0x60, 0x84, 0x70, 0x20, 0x44, 0x4, 0x24, 0x80, 0x98, 0x40, 0xa4, 0x58, 0x4, 0xa0, 0x80, 0x98, 0x40, 0xa4, 0x10, 0x4c, 0x40, 0x60, 0xa8, 0x38, 0xb8, 0xa4, 0x80, 0x14, 0xc8, 0x84, 0xa0, 0x68, 0x68, 0xac, 0xbc, 0x18, 0x1c, 0x8c, 0xa4, 0xb8, 0x4c, 0xd8, 0x28, 0x64, 0xd8, 0x58, 0xdc, 0xb0, 0xa0, 0x9c, 0xd0, 0xc4, 0x44, 0x10, 0x7c, 0x8, 0xb4, 0x0, 0x5c, 0x68, 0x94, 0xe4, 0x8, 0xb0, 0x0, 0x5c, 0x20, 0xdc, 0x4c, 0xa0, 0x60, 0x98, 0x70, 0xec, 0xc, 0xac, 0xc4, 0x18, 0xa8, 0x8c, 0xb8, 0xf0, 0xc8, 0x38, 0x28, 0x54, 0xd8, 0x44, 0xdc, 0x7c, 0xe8, 0x34, 0x30, 0x5c, 0x74, 0xdc, 0x60, 0xa0, 0xf8, 0x98, 0xf4, 0xa4, 0x1c, 0x4, 0xc4, 0x80, 0xa8, 0x8, 0xb8, 0xb8, 0x80, 0xd8, 0x80, 0x2c, 0x40, 0xf0, 0x58, 0x60, 0xa0, 0xb0, 0xd0, 0x14, 0xc, 0x74, 0xd4, 0x38, 0xe4, 0x54, 0x70, 0xc, 0x44, 0xd4, 0x6c, 0xe4, 0x30, 0x70, 0x74, 0xc, 0x28, 0xc4, 0x50, 0xa8, 0x24, 0xf0, 0x20, 0x60, 0x14, 0xb0, 0xcc, 0x5c, 0x88, 0x94, 0xd4, 0x8, 0xe4, 0x48, 0x70, 0xc0, 0xc, 0x7c, 0x8c, 0x7c, 0x0, 0xbc, 0x68, 0xa4, 0xe4, 0x5c, 0xf8, 0x64, 0xbc, 0x10, 0xec, 0x50, 0xbc, 0xe4, 0x54, 0x38, 0x44, 0xec, 0x34, 0xbc, 0xd4, 0x54, 0x24, 0xc, 0x68, 0xd4, 0xf4, 0xe4, 0xb4, 0x38, 0x74, 0xa4, 0x28, 0x5c, 0x50, 0x2c, 0x24, 0xb8, 0x68, 0x80, 0xbc, 0xc8, 0x54, 0xe8, 0xc, 0x88, 0x9c, 0x8c, 0x4, 0x0, 0x8, 0x68, 0xb8, 0xe4, 0x90, 0xb0, 0x84, 0x14, 0x20, 0x74, 0x4c, 0x38, 0x60, 0x1c, 0x70, 0xa4, 0x44, 0x4c, 0x6c, 0x60, 0x30, 0x38, 0x3c, 0xec, 0x80, 0xbc, 0xc8, 0x1c, 0xa0, 0xec, 0x68, 0xe4, 0xf4, 0xf8, 0xb4, 0xf4, 0x3c, 0xc, 0xc8, 0xc4, 0x60, 0xe0, 0x38, 0x10, 0xa4, 0x18, 0x14, 0x4, 0xcc, 0x8, 0xc0, 0xb8, 0x34, 0xd8, 0x9c, 0x64, 0xc4, 0x10, 0x58, 0x50, 0xa0, 0xac, 0xd0, 0xd8, 0x44, 0xdc, 0x34, 0xa0, 0xd4, 0x98, 0x6c, 0xa4, 0x88, 0x4c, 0xc4, 0x28, 0xa8, 0x90, 0xb8, 0x3c, 0x80, 0x90, 0xc8, 0xcc, 0xe8, 0x88, 0xc0, 0xd4, 0x24, 0xac, 0x98, 0x90
|
||||
0xdc, 0xec, 0xb0, 0xf4, 0x9c, 0xfc, 0xc4, 0xdc, 0x10, 0xf8, 0x40, 0x34, 0xa8, 0x5c, 0xf0, 0x94, 0x60, 0x08, 0xf8, 0x48, 0xbc, 0x88, 0xa4, 0xd4, 0x14, 0xe4, 0x84, 0x38, 0x68, 0xec, 0xe4, 0xbc, 0xb0, 0x1c, 0x14, 0xa4, 0x3c, 0x4c, 0x90, 0x60, 0x84, 0x70, 0x20, 0x44, 0x04, 0x24, 0x80, 0x98, 0x40, 0xa4, 0x58, 0x04, 0xa0, 0x80, 0x98, 0x40, 0xa4, 0x10, 0x4c, 0x40, 0x60, 0xa8, 0x38, 0xb8, 0xa4, 0x80, 0x14, 0xc8, 0x84, 0xa0, 0x68, 0x68, 0xac, 0xbc, 0x18, 0x1c, 0x8c, 0xa4, 0xb8, 0x4c, 0xd8, 0x28, 0x64, 0xd8, 0x58, 0xdc, 0xb0, 0xa0, 0x9c, 0xd0, 0xc4, 0x44, 0x10, 0x7c, 0x08, 0xb4, 0x00, 0x5c, 0x68, 0x94, 0xe4, 0x08, 0xb0, 0x00, 0x5c, 0x20, 0xdc, 0x4c, 0xa0, 0x60, 0x98, 0x70, 0xec, 0x0c, 0xac, 0xc4, 0x18, 0xa8, 0x8c, 0xb8, 0xf0, 0xc8, 0x38, 0x28, 0x54, 0xd8, 0x44, 0xdc, 0x7c, 0xe8, 0x34, 0x30, 0x5c, 0x74, 0xdc, 0x60, 0xa0, 0xf8, 0x98, 0xf4, 0xa4, 0x1c, 0x04, 0xc4, 0x80, 0xa8, 0x08, 0xb8, 0xb8, 0x80, 0xd8, 0x80, 0x2c, 0x40, 0xf0, 0x58, 0x60, 0xa0, 0xb0, 0xd0, 0x14, 0x0c, 0x74, 0xd4, 0x38, 0xe4, 0x54, 0x70, 0x0c, 0x44, 0xd4, 0x6c, 0xe4, 0x30, 0x70, 0x74, 0x0c, 0x28, 0xc4, 0x50, 0xa8, 0x24, 0xf0, 0x20, 0x60, 0x14, 0xb0, 0xcc, 0x5c, 0x88, 0x94, 0xd4, 0x08, 0xe4, 0x48, 0x70, 0xc0, 0x0c, 0x7c, 0x8c, 0x7c, 0x00, 0xbc, 0x68, 0xa4, 0xe4, 0x5c, 0xf8, 0x64, 0xbc, 0x10, 0xec, 0x50, 0xbc, 0xe4, 0x54, 0x38, 0x44, 0xec, 0x34, 0xbc, 0xd4, 0x54, 0x24, 0x0c, 0x68, 0xd4, 0xf4, 0xe4, 0xb4, 0x38, 0x74, 0xa4, 0x28, 0x5c, 0x50, 0x2c, 0x24, 0xb8, 0x68, 0x80, 0xbc, 0xc8, 0x54, 0xe8, 0x0c, 0x88, 0x9c, 0x8c, 0x04, 0x00, 0x08, 0x68, 0xb8, 0xe4, 0x90, 0xb0, 0x84, 0x14, 0x20, 0x74, 0x4c, 0x38, 0x60, 0x1c, 0x70, 0xa4, 0x44, 0x4c, 0x6c, 0x60, 0x30, 0x38, 0x3c, 0xec, 0x80, 0xbc, 0xc8, 0x1c, 0xa0, 0xec, 0x68, 0xe4, 0xf4, 0xf8, 0xb4, 0xf4, 0x3c, 0x0c, 0xc8, 0xc4, 0x60, 0xe0, 0x38, 0x10, 0xa4, 0x18, 0x14, 0x04, 0xcc, 0x08, 0xc0, 0xb8, 0x34, 0xd8, 0x9c, 0x64, 0xc4, 0x10, 0x58, 0x50, 0xa0, 0xac, 0xd0, 0xd8, 0x44, 0xdc, 0x34, 0xa0, 0xd4, 0x98, 0x6c, 0xa4, 0x88, 0x4c, 0xc4, 0x28, 0xa8, 0x90, 0xb8, 0x3c, 0x80, 0x90, 0xc8, 0xcc, 0xe8, 0x88, 0xc0, 0xd4, 0x24, 0xac, 0x98, 0x90
|
||||
};
|
||||
|
||||
const uint8_t prng_payload_sf8[] = {
|
||||
0xbd, 0xdf, 0xa4, 0xfb, 0x16, 0x7f, 0x85, 0xfe, 0x40, 0xdf, 0x5b, 0xb0, 0xa2, 0x9e, 0xd0, 0x86, 0x26, 0x20, 0x68, 0x4f, 0xf7, 0x2a, 0xb6, 0xd3, 0x5e, 0x46, 0x97, 0x7c, 0x43, 0x7f, 0xe3, 0xb5, 0x73, 0x3e, 0x45, 0x83, 0x25, 0xcb, 0x9b, 0xe0, 0xc7, 0x13, 0x10, 0x51, 0x8, 0xad, 0x2, 0x98, 0x40, 0xa7, 0x5b, 0x4, 0xa2, 0x80, 0x9b, 0x1, 0xc7, 0x20, 0x5b, 0x4f, 0xe9, 0x2a, 0x7a, 0x98, 0xf4, 0xa7, 0xe, 0x4f, 0x8f, 0x61, 0x49, 0x79, 0xea, 0x94, 0x89, 0x1a, 0xc4, 0x7, 0xa8, 0x4a, 0x92, 0x8a, 0x76, 0x9d, 0x70, 0x4c, 0xb6, 0xab, 0x5e, 0xf2, 0x97, 0x62, 0x8, 0xf8, 0x2, 0xb5, 0x40, 0x3e, 0x5b, 0x83, 0xe9, 0x80, 0x31, 0x1, 0x5e, 0x20, 0xdc, 0x4f, 0xa2, 0x61, 0x9b, 0x32, 0x8c, 0x3e, 0x9a, 0xd8, 0x95, 0x22, 0x4e, 0x9a, 0xa0, 0xac, 0x23, 0x8e, 0x5d, 0x5, 0x64, 0xcf, 0xb9, 0xc1, 0xc4, 0x37, 0x2, 0xdd, 0xce, 0xe7, 0xe9, 0x58, 0xc9, 0xb1, 0xbf, 0x98, 0xa, 0xcd, 0xc0, 0x8b, 0x7b, 0xdd, 0xb2, 0xf, 0x54, 0x3, 0x6d, 0x60, 0xe2, 0x4f, 0x6e, 0x2e, 0xb9, 0xc3, 0x16, 0x5, 0x76, 0xb6, 0x2f, 0xe6, 0xd7, 0x30, 0x6c, 0x37, 0xc3, 0x62, 0x4a, 0xbb, 0xa1, 0x54, 0x5e, 0x4d, 0xfd, 0xc6, 0xa2, 0xee, 0xd4, 0xb2, 0x24, 0x3e, 0x23, 0xe9, 0x56, 0x3e, 0x8d, 0x53, 0x42, 0x6, 0x7b, 0x37, 0xf9, 0x9e, 0xf6, 0x86, 0xbc, 0x20, 0xcf, 0xe, 0xbc, 0x7d, 0xd7, 0x7b, 0x26, 0xdf, 0x61, 0xcb, 0x5d, 0x38, 0xe4, 0x54, 0x39, 0xe, 0xef, 0x87, 0xb8, 0xd5, 0x57, 0x67, 0x6e, 0xd8, 0x82, 0xeb, 0x4b, 0x3c, 0x7a, 0x56, 0xf4, 0xd, 0x45, 0x96, 0x31, 0xc6, 0x1b, 0x73, 0xc6, 0x95, 0x7b, 0x11, 0xb2, 0xa5, 0x1f, 0x9a, 0xc7, 0xe6, 0x30, 0x4f, 0x47, 0x2a, 0xeb, 0x1a, 0x63, 0xa7, 0x65, 0x54, 0x6e, 0xcf, 0x39, 0xe2, 0xdf, 0x5b, 0xb6, 0x51, 0x57, 0xe6, 0xe3, 0xb0, 0x38, 0x3e, 0xcf, 0xc2, 0xbc, 0xd7, 0x9c, 0xe2, 0x8c, 0x58, 0xb1, 0xca, 0x74, 0x3c, 0xb6, 0x9d, 0x5e, 0xae, 0xfc, 0xe5, 0xe9, 0xf8, 0xa9, 0xb5, 0x5b, 0x3e, 0xb7, 0xd9, 0x7, 0x61, 0x28, 0x3a, 0x90, 0x7e, 0x76, 0xb3, 0x3f, 0xcb, 0x5f, 0xab, 0xee, 0xf3, 0xeb, 0x72, 0xc0, 0xb3, 0x28, 0x5c, 0xd9, 0x4d, 0xb6, 0x9d, 0x57, 0x4c, 0xa0, 0x29, 0x92, 0xb9, 0x1d, 0x83, 0x95, 0xd3, 0x8e, 0x2b, 0xe9, 0xf3, 0xa2, 0x29, 0x25, 0x15, 0x40, 0xcf, 0x6d, 0xca, 0x89, 0xd6, 0xd4, 0xa1, 0xc3, 0x51, 0x39, 0x4d, 0x85, 0x8d, 0x49, 0x44, 0xe8, 0xe2, 0xbb, 0x1a, 0x84, 0x0, 0x49, 0x98, 0xec, 0x65, 0x72, 0x10, 0x6e, 0x80, 0x40, 0xdd, 0x76, 0x65, 0x3b, 0x51, 0x8e, 0x2, 0xb8, 0x70, 0xd7, 0xe2, 0xa7, 0x9a, 0x48, 0xab, 0xc2, 0x38, 0x7d, 0x5e, 0xbe, 0x6, 0x86, 0x4c, 0x9, 0x72, 0xaf, 0xf4, 0x58, 0x9e, 0x3c, 0x80, 0xed, 0xdd, 0xa5, 0x2e, 0x55, 0xf8, 0xbc, 0xd8, 0xed, 0x4d, 0xb9, 0xa0, 0x16, 0xfe, 0x5f, 0xf9, 0xde, 0x79, 0xa7, 0x34, 0xd8, 0x37, 0xf6, 0xb9, 0x77, 0x5a, 0x6b, 0x2e, 0x76, 0xf8, 0x36, 0xb5, 0x8b, 0xc3, 0xc2, 0xe2, 0xc1, 0x53, 0x38, 0xa, 0xfd, 0x2b, 0xf2, 0x83, 0xf5, 0x64, 0x25, 0x5e, 0x33, 0x49, 0x50, 0xfb, 0x64, 0xd5, 0xa2, 0x41, 0x21, 0x85, 0x5c, 0x41, 0x25, 0x4d, 0x9, 0xe6, 0xe3, 0xa5, 0x79, 0xd9, 0x77, 0x6, 0x6e, 0x4c, 0xc0, 0x77, 0x35, 0xfc, 0x11, 0xd5, 0x5d, 0xa, 0x97, 0x50, 0x5, 0xa9, 0xe9, 0xb3, 0x7b, 0x79, 0x96, 0x15, 0x13, 0x4, 0x8f, 0x62, 0x91, 0x5e, 0x74, 0x12, 0x75, 0x9e, 0x3e, 0xad, 0x4b, 0x97, 0xe3, 0xf0, 0x8a, 0x3, 0x41, 0x60, 0xd1, 0xd2, 0x4b, 0xbb, 0xda, 0x3f, 0x3d
|
||||
0xbd, 0xdf, 0xa4, 0xfb, 0x16, 0x7f, 0x85, 0xfe, 0x40, 0xdf, 0x5b, 0xb0, 0xa2, 0x9e, 0xd0, 0x86, 0x26, 0x20, 0x68, 0x4f, 0xf7, 0x2a, 0xb6, 0xd3, 0x5e, 0x46, 0x97, 0x7c, 0x43, 0x7f, 0xe3, 0xb5, 0x73, 0x3e, 0x45, 0x83, 0x25, 0xcb, 0x9b, 0xe0, 0xc7, 0x13, 0x10, 0x51, 0x08, 0xad, 0x02, 0x98, 0x40, 0xa7, 0x5b, 0x04, 0xa2, 0x80, 0x9b, 0x01, 0xc7, 0x20, 0x5b, 0x4f, 0xe9, 0x2a, 0x7a, 0x98, 0xf4, 0xa7, 0x0e, 0x4f, 0x8f, 0x61, 0x49, 0x79, 0xea, 0x94, 0x89, 0x1a, 0xc4, 0x07, 0xa8, 0x4a, 0x92, 0x8a, 0x76, 0x9d, 0x70, 0x4c, 0xb6, 0xab, 0x5e, 0xf2, 0x97, 0x62, 0x08, 0xf8, 0x02, 0xb5, 0x40, 0x3e, 0x5b, 0x83, 0xe9, 0x80, 0x31, 0x01, 0x5e, 0x20, 0xdc, 0x4f, 0xa2, 0x61, 0x9b, 0x32, 0x8c, 0x3e, 0x9a, 0xd8, 0x95, 0x22, 0x4e, 0x9a, 0xa0, 0xac, 0x23, 0x8e, 0x5d, 0x05, 0x64, 0xcf, 0xb9, 0xc1, 0xc4, 0x37, 0x02, 0xdd, 0xce, 0xe7, 0xe9, 0x58, 0xc9, 0xb1, 0xbf, 0x98, 0x0a, 0xcd, 0xc0, 0x8b, 0x7b, 0xdd, 0xb2, 0x0f, 0x54, 0x03, 0x6d, 0x60, 0xe2, 0x4f, 0x6e, 0x2e, 0xb9, 0xc3, 0x16, 0x50, 0x76, 0xb6, 0x2f, 0xe6, 0xd7, 0x30, 0x6c, 0x37, 0xc3, 0x62, 0x4a, 0xbb, 0xa1, 0x54, 0x5e, 0x4d, 0xfd, 0xc6, 0xa2, 0xee, 0xd4, 0xb2, 0x24, 0x3e, 0x23, 0xe9, 0x56, 0x3e, 0x8d, 0x53, 0x42, 0x06, 0x7b, 0x37, 0xf9, 0x9e, 0xf6, 0x86, 0xbc, 0x20, 0xcf, 0x0e, 0xbc, 0x7d, 0xd7, 0x7b, 0x26, 0xdf, 0x61, 0xcb, 0x5d, 0x38, 0xe4, 0x54, 0x39, 0x0e, 0xef, 0x87, 0xb8, 0xd5, 0x57, 0x67, 0x6e, 0xd8, 0x82, 0xeb, 0x4b, 0x3c, 0x7a, 0x56, 0xf4, 0x0d, 0x45, 0x96, 0x31, 0xc6, 0x1b, 0x73, 0xc6, 0x95, 0x7b, 0x11, 0xb2, 0xa5, 0x1f, 0x9a, 0xc7, 0xe6, 0x30, 0x4f, 0x47, 0x2a, 0xeb, 0x1a, 0x63, 0xa7, 0x65, 0x54, 0x6e, 0xcf, 0x39, 0xe2, 0xdf, 0x5b, 0xb6, 0x51, 0x57, 0xe6, 0xe3, 0xb0, 0x38, 0x3e, 0xcf, 0xc2, 0xbc, 0xd7, 0x9c, 0xe2, 0x8c, 0x58, 0xb1, 0xca, 0x74, 0x3c, 0xb6, 0x9d, 0x5e, 0xae, 0xfc, 0xe5, 0xe9, 0xf8, 0xa9, 0xb5, 0x5b, 0x3e, 0xb7, 0xd9, 0x07, 0x61, 0x28, 0x3a, 0x90, 0x7e, 0x76, 0xb3, 0x3f, 0xcb, 0x5f, 0xab, 0xee, 0xf3, 0xeb, 0x72, 0xc0, 0xb3, 0x28, 0x5c, 0xd9, 0x4d, 0xb6, 0x9d, 0x57, 0x4c, 0xa0, 0x29, 0x92, 0xb9, 0x1d, 0x83, 0x95, 0xd3, 0x8e, 0x2b, 0xe9, 0xf3, 0xa2, 0x29, 0x25, 0x15, 0x40, 0xcf, 0x6d, 0xca, 0x89, 0xd6, 0xd4, 0xa1, 0xc3, 0x51, 0x39, 0x4d, 0x85, 0x8d, 0x49, 0x44, 0xe8, 0xe2, 0xbb, 0x1a, 0x84, 0x00, 0x49, 0x98, 0xec, 0x65, 0x72, 0x10, 0x6e, 0x80, 0x40, 0xdd, 0x76, 0x65, 0x3b, 0x51, 0x8e, 0x02, 0xb8, 0x70, 0xd7, 0xe2, 0xa7, 0x9a, 0x48, 0xab, 0xc2, 0x38, 0x7d, 0x5e, 0xbe, 0x06, 0x86, 0x4c, 0x09, 0x72, 0xaf, 0xf4, 0x58, 0x9e, 0x3c, 0x80, 0xed, 0xdd, 0xa5, 0x2e, 0x55, 0xf8, 0xbc, 0xd8, 0xed, 0x4d, 0xb9, 0xa0, 0x16, 0xfe, 0x5f, 0xf9, 0xde, 0x79, 0xa7, 0x34, 0xd8, 0x37, 0xf6, 0xb9, 0x77, 0x5a, 0x6b, 0x2e, 0x76, 0xf8, 0x36, 0xb5, 0x8b, 0xc3, 0xc2, 0xe2, 0xc1, 0x53, 0x38, 0x0a, 0xfd, 0x2b, 0xf2, 0x83, 0xf5, 0x64, 0x25, 0x5e, 0x33, 0x49, 0x50, 0xfb, 0x64, 0xd5, 0xa2, 0x41, 0x21, 0x85, 0x5c, 0x41, 0x25, 0x4d, 0x09, 0xe6, 0xe3, 0xa5, 0x79, 0xd9, 0x77, 0x06, 0x6e, 0x4c, 0xc0, 0x77, 0x35, 0xfc, 0x11, 0xd5, 0x5d, 0x0a, 0x97, 0x50, 0x05, 0xa9, 0xe9, 0xb3, 0x7b, 0x79, 0x96, 0x15, 0x13, 0x04, 0x8f, 0x62, 0x91, 0x5e, 0x74, 0x12, 0x75, 0x9e, 0x3e, 0xad, 0x4b, 0x97, 0xe3, 0xf0, 0x8a, 0x03, 0x41, 0x60, 0xd1, 0xd2, 0x4b, 0xbb, 0xda, 0x3f, 0x3d
|
||||
};
|
||||
|
||||
const uint8_t prng_payload_sf9[] = {
|
||||
0xfd, 0xbe, 0x94, 0xef, 0x1a, 0xf7, 0x7, 0xfd, 0x1, 0xff, 0xb, 0x94, 0xba, 0x1a, 0xda, 0x7, 0x64, 0x1, 0x78, 0xb, 0xdf, 0xba, 0xb0, 0xda, 0x9e, 0x64, 0x86, 0x78, 0xb, 0xdf, 0xf1, 0xb0, 0x3b, 0x9e, 0x57, 0x86, 0x2d, 0xb, 0xb9, 0xf1, 0x83, 0x3b, 0x80, 0x57, 0x1, 0x2d, 0x40, 0xb9, 0x10, 0x83, 0x47, 0x80, 0xa8, 0x3, 0x99, 0x41, 0xa3, 0x12, 0x5f, 0x3, 0x69, 0x8, 0x79, 0x98, 0xf4, 0xa7, 0xe, 0x5f, 0xcf, 0x6d, 0xe9, 0x79, 0xab, 0xf6, 0xb9, 0x2e, 0xd8, 0xcf, 0x2e, 0x41, 0xd1, 0x2b, 0x26, 0xb9, 0x68, 0xb8, 0xb8, 0x22, 0x1c, 0xd1, 0x7, 0x27, 0x60, 0x48, 0x14, 0xb8, 0x88, 0x9c, 0x48, 0x86, 0xa1, 0x60, 0x3, 0x4, 0x16, 0x94, 0x4e, 0x42, 0xa9, 0xa1, 0xf9, 0x3, 0xc8, 0x16, 0x3e, 0x46, 0x98, 0xab, 0x8e, 0xf9, 0xf1, 0xe8, 0x3b, 0x32, 0x57, 0x9e, 0xe7, 0x8c, 0x18, 0xf1, 0x80, 0x3f, 0x9e, 0x5f, 0xcd, 0xe7, 0xe8, 0x58, 0xe9, 0xb1, 0x9f, 0x92, 0x82, 0xcf, 0x0, 0xea, 0x2b, 0x88, 0xbe, 0xaf, 0x56, 0x82, 0x2e, 0x8, 0x92, 0x6b, 0x17, 0xae, 0x3b, 0x4a, 0xd7, 0x2a, 0x66, 0x92, 0x13, 0x76, 0x21, 0x3b, 0xa5, 0xd3, 0xd3, 0x65, 0x26, 0x13, 0x2, 0x41, 0x52, 0xad, 0x46, 0xd3, 0xa8, 0x26, 0xb2, 0x23, 0x52, 0x12, 0xb3, 0xce, 0x97, 0xa9, 0xc6, 0x33, 0x30, 0x72, 0x27, 0xbf, 0x7b, 0x1d, 0x7b, 0xc7, 0x9d, 0x30, 0xeb, 0x27, 0x38, 0x73, 0xd6, 0x79, 0x2f, 0x9f, 0x3, 0xeb, 0x39, 0x2c, 0xe8, 0xd6, 0x7b, 0x27, 0x9d, 0x43, 0x80, 0x59, 0xc9, 0xec, 0xae, 0x79, 0x93, 0x9f, 0x16, 0x80, 0x74, 0xc9, 0x3e, 0xae, 0x56, 0x93, 0x4d, 0x57, 0xcd, 0x64, 0x2b, 0x3e, 0xc8, 0x56, 0xea, 0x6d, 0xa8, 0x8d, 0x9b, 0xf, 0x86, 0xc8, 0x2, 0xe8, 0x80, 0xe9, 0x27, 0xbb, 0xdd, 0x86, 0xe5, 0x4a, 0x79, 0x80, 0x2e, 0x7, 0x9b, 0xd9, 0x89, 0xed, 0xe2, 0x73, 0x18, 0x2e, 0xe9, 0xeb, 0x38, 0xd9, 0x95, 0xe0, 0x8d, 0x98, 0xd1, 0x8a, 0x74, 0x2c, 0x32, 0x1d, 0x17, 0x8e, 0x2d, 0x91, 0xf5, 0x44, 0xbf, 0x36, 0x1d, 0x15, 0xc7, 0x2d, 0x7b, 0xb5, 0x96, 0xbb, 0x50, 0x1d, 0x6b, 0xc5, 0x53, 0x3b, 0x41, 0xb6, 0x85, 0x54, 0x1a, 0x6d, 0x8d, 0x53, 0xdb, 0x41, 0x85, 0xa5, 0x29, 0x9a, 0xca, 0x8e, 0x8a, 0xfa, 0xd6, 0x91, 0xb8, 0xa5, 0x98, 0xc1, 0x8c, 0xca, 0xda, 0xe6, 0xaa, 0xa1, 0x27, 0x18, 0xc8, 0x8d, 0x5, 0xfb, 0x8d, 0xca, 0x40, 0xa7, 0x40, 0x51, 0x29, 0x4d, 0xc5, 0xbd, 0x7d, 0x1c, 0xe0, 0x60, 0xfb, 0x31, 0x94, 0x44, 0x71, 0x7d, 0xfe, 0xe8, 0xb0, 0x7a, 0x55, 0xd7, 0xbc, 0x21, 0xfd, 0xda, 0xf6, 0xb8, 0xfc, 0xdf, 0xd4, 0x9c, 0x21, 0xfc, 0xf2, 0x76, 0xf9, 0xfc, 0xbe, 0x17, 0xaf, 0x41, 0xe3, 0xca, 0xbe, 0x6f, 0x5f, 0xbf, 0xc, 0x87, 0x2d, 0xc3, 0x48, 0x36, 0x74, 0x57, 0x73, 0x4d, 0x43, 0xad, 0xd0, 0x18, 0xe3, 0xe0, 0xb0, 0x72, 0x35, 0x6f, 0x49, 0xf4, 0x52, 0x6b, 0xac, 0xb4, 0xd8, 0x35, 0xf6, 0x59, 0x77, 0x5e, 0x7b, 0xae, 0xbc, 0xda, 0x3e, 0xf7, 0x32, 0x53, 0x84, 0xeb, 0x23, 0x30, 0x18, 0x7e, 0xb1, 0x52, 0x64, 0xb4, 0xbe, 0x5, 0x56, 0xa, 0xc, 0x91, 0x76, 0x50, 0xb1, 0x3e, 0x59, 0x57, 0x6e, 0xd, 0xa3, 0xb6, 0x7e, 0x89, 0x76, 0x4b, 0x7d, 0x6e, 0xde, 0x82, 0x90, 0x5e, 0xca, 0x72, 0x4d, 0x71, 0xe9, 0xdc, 0x82, 0xd0, 0x15, 0x9a, 0x83, 0x4d, 0x9, 0xeb, 0x20, 0x82, 0x6f, 0x74, 0x1e, 0x93, 0x18, 0x8d, 0xb, 0x20, 0xb1, 0x2e, 0x60, 0x1e, 0xf1, 0x10, 0xfd, 0xf, 0x5e, 0xb7, 0x9b, 0x40, 0x94, 0xa, 0x89, 0x2, 0xa0, 0xb7, 0x66, 0x43, 0x77, 0xb6, 0xc7, 0x3e, 0x3f, 0xdf
|
||||
0xfd, 0xbe, 0x94, 0xef, 0x1a, 0xf7, 0x07, 0xfd, 0x01, 0xff, 0x0b, 0x94, 0xba, 0x1a, 0xda, 0x07, 0x64, 0x01, 0x78, 0x0b, 0xdf, 0xba, 0xb0, 0xda, 0x9e, 0x64, 0x86, 0x78, 0x0b, 0xdf, 0xf1, 0xb0, 0x3b, 0x9e, 0x57, 0x86, 0x2d, 0x0b, 0xb9, 0xf1, 0x83, 0x3b, 0x80, 0x57, 0x01, 0x2d, 0x40, 0xb9, 0x10, 0x83, 0x47, 0x80, 0xa8, 0x03, 0x99, 0x41, 0xa3, 0x12, 0x5f, 0x03, 0x69, 0x08, 0x79, 0x98, 0xf4, 0xa7, 0x0e, 0x5f, 0xcf, 0x6d, 0xe9, 0x79, 0xab, 0xf6, 0xb9, 0x2e, 0xd8, 0xcf, 0x2e, 0x41, 0xd1, 0x2b, 0x26, 0xb9, 0x68, 0xb8, 0xb8, 0x22, 0x1c, 0xd1, 0x07, 0x27, 0x60, 0x48, 0x14, 0xb8, 0x88, 0x9c, 0x48, 0x86, 0xa1, 0x60, 0x03, 0x04, 0x16, 0x94, 0x4e, 0x42, 0xa9, 0xa1, 0xf9, 0x03, 0xc8, 0x16, 0x3e, 0x46, 0x98, 0xab, 0x8e, 0xf9, 0xf1, 0xe8, 0x3b, 0x32, 0x57, 0x9e, 0xe7, 0x8c, 0x18, 0xf1, 0x80, 0x3f, 0x9e, 0x5f, 0xcd, 0xe7, 0xe8, 0x58, 0xe9, 0xb1, 0x9f, 0x92, 0x82, 0xcf, 0x00, 0xea, 0x2b, 0x88, 0xbe, 0xaf, 0x56, 0x82, 0x2e, 0x08, 0x92, 0x6b, 0x17, 0xae, 0x3b, 0x4a, 0xd7, 0x2a, 0x66, 0x92, 0x13, 0x76, 0x21, 0x3b, 0xa5, 0xd3, 0xd3, 0x65, 0x26, 0x13, 0x02, 0x41, 0x52, 0xad, 0x46, 0xd3, 0xa8, 0x26, 0xb2, 0x23, 0x52, 0x12, 0xb3, 0xce, 0x97, 0xa9, 0xc6, 0x33, 0x30, 0x72, 0x27, 0xbf, 0x7b, 0x1d, 0x7b, 0xc7, 0x9d, 0x30, 0xeb, 0x27, 0x38, 0x73, 0xd6, 0x79, 0x2f, 0x9f, 0x03, 0xeb, 0x39, 0x2c, 0xe8, 0xd6, 0x7b, 0x27, 0x9d, 0x43, 0x80, 0x59, 0xc9, 0xec, 0xae, 0x79, 0x93, 0x9f, 0x16, 0x80, 0x74, 0xc9, 0x3e, 0xae, 0x56, 0x93, 0x4d, 0x57, 0xcd, 0x64, 0x2b, 0x3e, 0xc8, 0x56, 0xea, 0x6d, 0xa8, 0x8d, 0x9b, 0x0f, 0x86, 0xc8, 0x02, 0xe8, 0x80, 0xe9, 0x27, 0xbb, 0xdd, 0x86, 0xe5, 0x4a, 0x79, 0x80, 0x2e, 0x07, 0x9b, 0xd9, 0x89, 0xed, 0xe2, 0x73, 0x18, 0x2e, 0xe9, 0xeb, 0x38, 0xd9, 0x95, 0xe0, 0x8d, 0x98, 0xd1, 0x8a, 0x74, 0x2c, 0x32, 0x1d, 0x17, 0x8e, 0x2d, 0x91, 0xf5, 0x44, 0xbf, 0x36, 0x1d, 0x15, 0xc7, 0x2d, 0x7b, 0xb5, 0x96, 0xbb, 0x50, 0x1d, 0x6b, 0xc5, 0x53, 0x3b, 0x41, 0xb6, 0x85, 0x54, 0x1a, 0x6d, 0x8d, 0x53, 0xdb, 0x41, 0x85, 0xa5, 0x29, 0x9a, 0xca, 0x8e, 0x8a, 0xfa, 0xd6, 0x91, 0xb8, 0xa5, 0x98, 0xc1, 0x8c, 0xca, 0xda, 0xe6, 0xaa, 0xa1, 0x27, 0x18, 0xc8, 0x8d, 0x05, 0xfb, 0x8d, 0xca, 0x40, 0xa7, 0x40, 0x51, 0x29, 0x4d, 0xc5, 0xbd, 0x7d, 0x1c, 0xe0, 0x60, 0xfb, 0x31, 0x94, 0x44, 0x71, 0x7d, 0xfe, 0xe8, 0xb0, 0x7a, 0x55, 0xd7, 0xbc, 0x21, 0xfd, 0xda, 0xf6, 0xb8, 0xfc, 0xdf, 0xd4, 0x9c, 0x21, 0xfc, 0xf2, 0x76, 0xf9, 0xfc, 0xbe, 0x17, 0xaf, 0x41, 0xe3, 0xca, 0xbe, 0x6f, 0x5f, 0xbf, 0x0c, 0x87, 0x2d, 0xc3, 0x48, 0x36, 0x74, 0x57, 0x73, 0x4d, 0x43, 0xad, 0xd0, 0x18, 0xe3, 0xe0, 0xb0, 0x72, 0x35, 0x6f, 0x49, 0xf4, 0x52, 0x6b, 0xac, 0xb4, 0xd8, 0x35, 0xf6, 0x59, 0x77, 0x5e, 0x7b, 0xae, 0xbc, 0xda, 0x3e, 0xf7, 0x32, 0x53, 0x84, 0xeb, 0x23, 0x30, 0x18, 0x7e, 0xb1, 0x52, 0x64, 0xb4, 0xbe, 0x05, 0x56, 0x0a, 0x0c, 0x91, 0x76, 0x50, 0xb1, 0x3e, 0x59, 0x57, 0x6e, 0x0d, 0xa3, 0xb6, 0x7e, 0x89, 0x76, 0x4b, 0x7d, 0x6e, 0xde, 0x82, 0x90, 0x5e, 0xca, 0x72, 0x4d, 0x71, 0xe9, 0xdc, 0x82, 0xd0, 0x15, 0x9a, 0x83, 0x4d, 0x09, 0xeb, 0x20, 0x82, 0x6f, 0x74, 0x1e, 0x93, 0x18, 0x8d, 0x0b, 0x20, 0xb1, 0x2e, 0x60, 0x1e, 0xf1, 0x10, 0xfd, 0x0f, 0x5e, 0xb7, 0x9b, 0x40, 0x94, 0x0a, 0x89, 0x02, 0xa0, 0xb7, 0x66, 0x43, 0x77, 0xb6, 0xc7, 0x3e, 0x3f, 0xdf
|
||||
};
|
||||
|
||||
const uint8_t prng_payload_sf10[] = {
|
||||
0xfd, 0xfe, 0xf4, 0xdf, 0xe, 0xfb, 0x8f, 0x7f, 0x2, 0xfe, 0x4b, 0xb4, 0xea, 0x3e, 0xc2, 0x83, 0x6a, 0x88, 0xfa, 0x48, 0xfe, 0xaa, 0xf4, 0xf2, 0x4e, 0x62, 0xab, 0xf8, 0xd1, 0xfc, 0xe0, 0xb4, 0x73, 0x7e, 0x65, 0x83, 0x21, 0xcb, 0x93, 0x72, 0x87, 0x32, 0x40, 0x75, 0x50, 0x29, 0x2c, 0x19, 0x9a, 0x84, 0x4a, 0x0, 0xea, 0x30, 0xa9, 0x4, 0x8b, 0x88, 0x49, 0xa, 0xe2, 0x2a, 0x38, 0xb9, 0xa4, 0xa3, 0x16, 0xdf, 0xcd, 0x60, 0x4b, 0x7b, 0xea, 0x94, 0x89, 0x1a, 0xd0, 0x47, 0x28, 0x60, 0xd3, 0xaa, 0x26, 0xb9, 0x68, 0xb8, 0xb8, 0x22, 0x1c, 0xd1, 0x6, 0x65, 0x40, 0x18, 0x30, 0xa0, 0x3c, 0x92, 0xc9, 0x4c, 0xe2, 0x1, 0x73, 0x64, 0x2e, 0x34, 0xd0, 0x83, 0x20, 0xe2, 0x18, 0x32, 0x8e, 0x7c, 0x9a, 0xf8, 0xd5, 0x32, 0x46, 0x1e, 0xe0, 0xcd, 0x73, 0xca, 0x25, 0x8d, 0x7a, 0x64, 0xfe, 0x6a, 0xb5, 0x33, 0x5d, 0x35, 0xbd, 0x72, 0x96, 0xf0, 0x1b, 0xbf, 0x2, 0x1c, 0x40, 0xad, 0x30, 0x9e, 0x47, 0x55, 0x30, 0x4, 0xd3, 0x2, 0x6d, 0x62, 0xe2, 0x3f, 0x6a, 0x26, 0xb1, 0x41, 0x54, 0x2c, 0x2e, 0xb2, 0x3, 0x52, 0x1, 0xaf, 0xab, 0xd4, 0xd0, 0xe7, 0x26, 0x13, 0x62, 0x41, 0x6, 0xa5, 0x62, 0x53, 0xbb, 0xed, 0x92, 0x13, 0x17, 0x3a, 0x1b, 0x50, 0x94, 0x29, 0xd, 0xd2, 0x42, 0x6, 0x3b, 0x17, 0xc9, 0xda, 0xea, 0xe, 0x7e, 0x3, 0xbe, 0x2b, 0xe4, 0xa5, 0x69, 0xf4, 0xe8, 0x76, 0xb3, 0xfd, 0x14, 0x94, 0x36, 0x41, 0x64, 0xca, 0xf1, 0x28, 0xb6, 0xd6, 0x15, 0x46, 0x1f, 0x5c, 0x9a, 0x63, 0xcc, 0x3f, 0xfa, 0x54, 0xf4, 0xd, 0x5, 0xf6, 0x21, 0xe2, 0x93, 0xe9, 0x5, 0xb3, 0xa, 0x55, 0xfa, 0x29, 0x81, 0x1d, 0x9d, 0xa, 0x82, 0x4a, 0x48, 0x8b, 0x31, 0xfd, 0x2b, 0x23, 0x5f, 0x9d, 0x64, 0x48, 0x73, 0xc9, 0x4e, 0x57, 0xbf, 0xd1, 0x51, 0xe7, 0x67, 0x30, 0x39, 0x3e, 0xaf, 0xe3, 0xac, 0xef, 0x10, 0x70, 0x4e, 0x73, 0xa0, 0xde, 0x28, 0x90, 0xac, 0xba, 0x0, 0x4d, 0x86, 0x62, 0xa1, 0x58, 0x63, 0xd1, 0x26, 0x8a, 0x89, 0x45, 0xc9, 0xe2, 0xea, 0x13, 0x82, 0x7a, 0x5e, 0x3, 0x3d, 0xda, 0xdf, 0xa9, 0x6c, 0xf3, 0xc9, 0x12, 0xf0, 0x8f, 0xa0, 0x56, 0x1f, 0x27, 0xc7, 0xf8, 0x3b, 0xe8, 0xd6, 0x3e, 0xd4, 0x82, 0x2f, 0x85, 0x59, 0x29, 0x9d, 0xce, 0x96, 0x4e, 0x4c, 0xa4, 0xf, 0x9b, 0x12, 0xec, 0x1d, 0xce, 0xa1, 0x4e, 0x42, 0xaa, 0xeb, 0x50, 0x29, 0x8d, 0xc5, 0xfd, 0x5d, 0x4, 0xec, 0x46, 0x7a, 0x63, 0xf5, 0x94, 0x5, 0x21, 0x5e, 0x8e, 0xb9, 0xe1, 0x9d, 0xb3, 0x8f, 0x35, 0xb1, 0x32, 0x64, 0x97, 0xe1, 0x17, 0x35, 0xcf, 0x1c, 0x82, 0x16, 0x1c, 0x54, 0x7b, 0xed, 0xb3, 0xfe, 0xdd, 0xbf, 0x6, 0xc4, 0xc, 0x29, 0x46, 0xa7, 0x70, 0x8, 0xf5, 0xc, 0xd5, 0xd1, 0x61, 0x4f, 0x93, 0x80, 0x12, 0x4f, 0xc3, 0x20, 0x80, 0x43, 0x67, 0x49, 0xc2, 0xab, 0x6f, 0x5d, 0xf3, 0xef, 0x51, 0xe8, 0x81, 0xfb, 0xb5, 0xc9, 0x51, 0x72, 0x2e, 0x7e, 0xf8, 0x2e, 0xf7, 0xab, 0xd7, 0x86, 0x6a, 0xa3, 0xb1, 0x9, 0x7e, 0x91, 0x52, 0x4, 0x98, 0x2a, 0x8b, 0xd4, 0x48, 0x64, 0x0, 0xe2, 0x4c, 0x41, 0x28, 0x7c, 0xda, 0xac, 0x26, 0x93, 0xb3, 0x34, 0x49, 0x14, 0x52, 0x69, 0xa, 0x76, 0xd0, 0x75, 0xe, 0xc, 0x2c, 0xc4, 0x2b, 0x4, 0xf0, 0x42, 0x36, 0x6c, 0x3c, 0x89, 0x89, 0xab, 0x3a, 0x8e, 0xdd, 0xca, 0xa7, 0xeb, 0xbe, 0xa9, 0xd3, 0xe4, 0x94, 0xe7, 0xe0, 0xf9, 0xb8, 0x3e, 0xf9, 0xe7, 0xac, 0xd3, 0x9, 0x79, 0x61, 0x80, 0x82, 0x41, 0x31, 0x48, 0xa0, 0x50, 0x96, 0x2, 0x26, 0x64, 0x85, 0x16
|
||||
0xfd, 0xfe, 0xf4, 0xdf, 0x0e, 0xfb, 0x8f, 0x7f, 0x02, 0xfe, 0x4b, 0xb4, 0xea, 0x3e, 0xc2, 0x83, 0x6a, 0x88, 0xfa, 0x48, 0xfe, 0xaa, 0xf4, 0xf2, 0x4e, 0x62, 0xab, 0xf8, 0xd1, 0xfc, 0xe0, 0xb4, 0x73, 0x7e, 0x65, 0x83, 0x21, 0xcb, 0x93, 0x72, 0x87, 0x32, 0x40, 0x75, 0x50, 0x29, 0x2c, 0x19, 0x9a, 0x84, 0x4a, 0x00, 0xea, 0x30, 0xa9, 0x04, 0x8b, 0x88, 0x49, 0x0a, 0xe2, 0x2a, 0x38, 0xb9, 0xa4, 0xa3, 0x16, 0xdf, 0xcd, 0x60, 0x4b, 0x7b, 0xea, 0x94, 0x89, 0x1a, 0xd0, 0x47, 0x28, 0x60, 0xd3, 0xaa, 0x26, 0xb9, 0x68, 0xb8, 0xb8, 0x22, 0x1c, 0xd1, 0x06, 0x65, 0x40, 0x18, 0x30, 0xa0, 0x3c, 0x92, 0xc9, 0x4c, 0xe2, 0x01, 0x73, 0x64, 0x2e, 0x34, 0xd0, 0x83, 0x20, 0xe2, 0x18, 0x32, 0x8e, 0x7c, 0x9a, 0xf8, 0xd5, 0x32, 0x46, 0x1e, 0xe0, 0xcd, 0x73, 0xca, 0x25, 0x8d, 0x7a, 0x64, 0xfe, 0x6a, 0xb5, 0x33, 0x5d, 0x35, 0xbd, 0x72, 0x96, 0xf0, 0x1b, 0xbf, 0x02, 0x1c, 0x40, 0xad, 0x30, 0x9e, 0x47, 0x55, 0x30, 0x04, 0xd3, 0x02, 0x6d, 0x62, 0xe2, 0x3f, 0x6a, 0x26, 0xb1, 0x41, 0x54, 0x2c, 0x2e, 0xb2, 0x03, 0x52, 0x01, 0xaf, 0xab, 0xd4, 0xd0, 0xe7, 0x26, 0x13, 0x62, 0x41, 0x06, 0xa5, 0x62, 0x53, 0xbb, 0xed, 0x92, 0x13, 0x17, 0x3a, 0x1b, 0x50, 0x94, 0x29, 0x0d, 0xd2, 0x42, 0x06, 0x3b, 0x17, 0xc9, 0xda, 0xea, 0x0e, 0x7e, 0x03, 0xbe, 0x2b, 0xe4, 0xa5, 0x69, 0xf4, 0xe8, 0x76, 0xb3, 0xfd, 0x14, 0x94, 0x36, 0x41, 0x64, 0xca, 0xf1, 0x28, 0xb6, 0xd6, 0x15, 0x46, 0x1f, 0x5c, 0x9a, 0x63, 0xcc, 0x3f, 0xfa, 0x54, 0xf4, 0x0d, 0x05, 0xf6, 0x21, 0xe2, 0x93, 0xe9, 0x05, 0xb3, 0x0a, 0x55, 0xfa, 0x29, 0x81, 0x1d, 0x9d, 0x0a, 0x82, 0x4a, 0x48, 0x8b, 0x31, 0xfd, 0x2b, 0x23, 0x5f, 0x9d, 0x64, 0x48, 0x73, 0xc9, 0x4e, 0x57, 0xbf, 0xd1, 0x51, 0xe7, 0x67, 0x30, 0x39, 0x3e, 0xaf, 0xe3, 0xac, 0xef, 0x10, 0x70, 0x4e, 0x73, 0xa0, 0xde, 0x28, 0x90, 0xac, 0xba, 0x00, 0x4d, 0x86, 0x62, 0xa1, 0x58, 0x63, 0xd1, 0x26, 0x8a, 0x89, 0x45, 0xc9, 0xe2, 0xea, 0x13, 0x82, 0x7a, 0x5e, 0x03, 0x3d, 0xda, 0xdf, 0xa9, 0x6c, 0xf3, 0xc9, 0x12, 0xf0, 0x8f, 0xa0, 0x56, 0x1f, 0x27, 0xc7, 0xf8, 0x3b, 0xe8, 0xd6, 0x3e, 0xd4, 0x82, 0x2f, 0x85, 0x59, 0x29, 0x9d, 0xce, 0x96, 0x4e, 0x4c, 0xa4, 0x0f, 0x9b, 0x12, 0xec, 0x1d, 0xce, 0xa1, 0x4e, 0x42, 0xaa, 0xeb, 0x50, 0x29, 0x8d, 0xc5, 0xfd, 0x5d, 0x04, 0xec, 0x46, 0x7a, 0x63, 0xf5, 0x94, 0x05, 0x21, 0x5e, 0x8e, 0xb9, 0xe1, 0x9d, 0xb3, 0x8f, 0x35, 0xb1, 0x32, 0x64, 0x97, 0xe1, 0x17, 0x35, 0xcf, 0x1c, 0x82, 0x16, 0x1c, 0x54, 0x7b, 0xed, 0xb3, 0xfe, 0xdd, 0xbf, 0x06, 0xc4, 0x0c, 0x29, 0x46, 0xa7, 0x70, 0x08, 0xf5, 0x0c, 0xd5, 0xd1, 0x61, 0x4f, 0x93, 0x80, 0x12, 0x4f, 0xc3, 0x20, 0x80, 0x43, 0x67, 0x49, 0xc2, 0xab, 0x6f, 0x5d, 0xf3, 0xef, 0x51, 0xe8, 0x81, 0xfb, 0xb5, 0xc9, 0x51, 0x72, 0x2e, 0x7e, 0xf8, 0x2e, 0xf7, 0xab, 0xd7, 0x86, 0x6a, 0xa3, 0xb1, 0x09, 0x7e, 0x91, 0x52, 0x04, 0x98, 0x2a, 0x8b, 0xd4, 0x48, 0x64, 0x00, 0xe2, 0x4c, 0x41, 0x28, 0x7c, 0xda, 0xac, 0x26, 0x93, 0xb3, 0x34, 0x49, 0x14, 0x52, 0x69, 0x0a, 0x76, 0xd0, 0x75, 0x0e, 0x0c, 0x2c, 0xc4, 0x2b, 0x04, 0xf0, 0x42, 0x36, 0x6c, 0x3c, 0x89, 0x89, 0xab, 0x3a, 0x8e, 0xdd, 0xca, 0xa7, 0xeb, 0xbe, 0xa9, 0xd3, 0xe4, 0x94, 0xe7, 0xe0, 0xf9, 0xb8, 0x3e, 0xf9, 0xe7, 0xac, 0xd3, 0x09, 0x79, 0x61, 0x80, 0x82, 0x41, 0x31, 0x48, 0xa0, 0x50, 0x96, 0x02, 0x26, 0x64, 0x85, 0x16
|
||||
};
|
||||
|
||||
const uint8_t prng_payload_sf11[] = {
|
||||
0xfd, 0xfe, 0xb4, 0xbf, 0x3e, 0x8f, 0xa3, 0xd3, 0xd0, 0x75, 0x4, 0xfe, 0xc1, 0xb5, 0xea, 0x3e, 0xc2, 0xc3, 0x4a, 0x80, 0x6e, 0x2c, 0x7a, 0x59, 0xfe, 0x6a, 0x94, 0x82, 0x2a, 0x7a, 0x47, 0x62, 0x84, 0xf8, 0x42, 0xfd, 0xa0, 0x94, 0x43, 0x4a, 0x39, 0x27, 0xd3, 0x6, 0x2d, 0x43, 0x9a, 0x21, 0xe7, 0x61, 0x54, 0x3d, 0xbc, 0xd3, 0x3, 0x2d, 0x9, 0x98, 0xc0, 0xe7, 0x7b, 0x74, 0xf6, 0x98, 0xab, 0xb, 0x99, 0x80, 0x87, 0x47, 0x6b, 0x3b, 0xd5, 0x86, 0xec, 0x87, 0xfb, 0x3, 0xb7, 0x86, 0x5e, 0x6b, 0xb7, 0xd5, 0x57, 0xe8, 0xec, 0x7b, 0x31, 0xb6, 0x98, 0x5e, 0xec, 0xb7, 0xbe, 0x7, 0x3a, 0xec, 0xd3, 0xab, 0xee, 0x9a, 0x38, 0xe4, 0xe4, 0xfe, 0x76, 0xa, 0x99, 0x43, 0x5, 0x64, 0x1, 0x38, 0x63, 0xe4, 0x14, 0x6, 0x9b, 0x99, 0x4a, 0x4f, 0xe1, 0x0, 0x73, 0x22, 0xe, 0x44, 0xa0, 0x97, 0x44, 0xc4, 0xaa, 0x61, 0x99, 0x72, 0xac, 0x4e, 0xce, 0xe0, 0x35, 0x4c, 0x9d, 0xa0, 0x4e, 0x98, 0xa1, 0xad, 0x43, 0xce, 0x59, 0x25, 0x54, 0x5, 0xe4, 0xcf, 0x78, 0xa1, 0x94, 0x43, 0xa, 0x19, 0x10, 0x40, 0x85, 0x66, 0xaa, 0xfb, 0xd8, 0x85, 0xd7, 0x6a, 0x28, 0x4, 0x6, 0x45, 0xc6, 0x28, 0x60, 0xd9, 0x8a, 0xd7, 0xc7, 0x38, 0xe1, 0x56, 0xa1, 0x82, 0xd0, 0xc8, 0x2e, 0x8a, 0x3, 0xe6, 0x49, 0xe5, 0x58, 0x31, 0xec, 0x51, 0x32, 0x25, 0x35, 0x3, 0x29, 0x19, 0x12, 0xd0, 0xb, 0xef, 0xe1, 0x30, 0x72, 0x75, 0x2e, 0x39, 0xa4, 0x3a, 0xf8, 0x9b, 0x2b, 0xec, 0xd5, 0x72, 0x46, 0x2e, 0x17, 0xb5, 0x8a, 0xd8, 0xd6, 0x25, 0x5, 0xd3, 0x42, 0x46, 0x3b, 0x16, 0xfd, 0xce, 0xfe, 0x16, 0xf7, 0x4, 0xfc, 0x40, 0xdf, 0x3b, 0x90, 0xfd, 0xcd, 0xf6, 0x5b, 0xfb, 0x6c, 0xfe, 0xf0, 0xde, 0x65, 0xb0, 0x7e, 0xcd, 0xea, 0xdf, 0xe7, 0xe5, 0xfe, 0x71, 0xd4, 0x65, 0x51, 0x2e, 0xcd, 0xfa, 0x87, 0xfd, 0x58, 0xfc, 0x27, 0xd4, 0x68, 0x51, 0x8c, 0xed, 0xab, 0xa7, 0xd1, 0x50, 0x2e, 0x2f, 0xf9, 0x48, 0xc3, 0x9a, 0xb3, 0x23, 0xc5, 0xde, 0x28, 0x2c, 0xd8, 0xa8, 0xd7, 0xc5, 0x68, 0x93, 0xd, 0x41, 0xca, 0xa1, 0x40, 0xd9, 0x13, 0x97, 0x41, 0x28, 0xc2, 0x55, 0x6c, 0xec, 0x38, 0xe2, 0xdf, 0x13, 0xd6, 0x61, 0x73, 0xe2, 0x4f, 0x6c, 0x6c, 0xb0, 0x6b, 0x5d, 0x1f, 0x95, 0xa0, 0x43, 0xc6, 0x5b, 0x9, 0x60, 0x4f, 0x72, 0xa0, 0x9e, 0x48, 0xe0, 0xe8, 0xe6, 0x4, 0x15, 0x82, 0x4c, 0x47, 0xa0, 0x82, 0x8, 0x7, 0x98, 0x96, 0x3c, 0x2c, 0x9a, 0xe, 0x4d, 0x4a, 0x8a, 0x9a, 0x27, 0xea, 0xee, 0xe8, 0x1a, 0xf5, 0x5, 0xb1, 0xb, 0x74, 0xba, 0x39, 0xee, 0x79, 0xec, 0x8f, 0x67, 0x48, 0x38, 0xeb, 0x75, 0xe8, 0x79, 0x9f, 0x9, 0x99, 0x1f, 0xcd, 0x6, 0x29, 0xe9, 0xf2, 0xe9, 0x79, 0x9f, 0xd, 0x9d, 0x9b, 0x4b, 0x5, 0xac, 0xeb, 0x71, 0xa2, 0x19, 0x25, 0x1d, 0x98, 0x97, 0x4f, 0x7, 0x2e, 0xeb, 0xf8, 0xa2, 0x9a, 0x5, 0x6d, 0xb0, 0xe7, 0x5f, 0xfb, 0xae, 0xf5, 0xf9, 0x65, 0xf8, 0x3e, 0x39, 0xfe, 0x4b, 0x71, 0xe0, 0xb6, 0xf1, 0x75, 0x65, 0x12, 0x1e, 0xdb, 0xb6, 0xb3, 0xe3, 0x9c, 0xb2, 0xf, 0x75, 0xd0, 0x22, 0x10, 0xd7, 0x2d, 0x8d, 0x76, 0x91, 0x37, 0x8f, 0x35, 0xd1, 0x22, 0x0, 0xc4, 0x25, 0x5c, 0xfe, 0xf0, 0x36, 0xbc, 0x35, 0x8e, 0x42, 0xe8, 0xa4, 0x3, 0xfc, 0xd2, 0x7d, 0xa6, 0xbc, 0xba, 0xcf, 0xc8, 0xb8, 0x15, 0x23, 0x54, 0x58, 0xb3, 0x2f, 0x5f, 0xb2, 0x9c, 0xa8, 0x89, 0x65, 0x39, 0x54, 0x38, 0xb3, 0xd7, 0x5b, 0x8c, 0xdc, 0xa6, 0x99, 0xb1, 0x79, 0x18, 0x38, 0x10, 0x57, 0xc0
|
||||
0xfd, 0xfe, 0xb4, 0xbf, 0x3e, 0x8f, 0xa3, 0xd3, 0xd0, 0x75, 0x04, 0xfe, 0xc1, 0xb5, 0xea, 0x3e, 0xc2, 0xc3, 0x4a, 0x80, 0x6e, 0x2c, 0x7a, 0x59, 0xfe, 0x6a, 0x94, 0x82, 0x2a, 0x7a, 0x47, 0x62, 0x84, 0xf8, 0x42, 0xfd, 0xa0, 0x94, 0x43, 0x4a, 0x39, 0x27, 0xd3, 0x06, 0x2d, 0x43, 0x9a, 0x21, 0xe7, 0x61, 0x54, 0x3d, 0xbc, 0xd3, 0x03, 0x2d, 0x09, 0x98, 0xc0, 0xe7, 0x7b, 0x74, 0xf6, 0x98, 0xab, 0x0b, 0x99, 0x80, 0x87, 0x47, 0x6b, 0x3b, 0xd5, 0x86, 0xec, 0x87, 0xfb, 0x03, 0xb7, 0x86, 0x5e, 0x6b, 0xb7, 0xd5, 0x57, 0xe8, 0xec, 0x7b, 0x31, 0xb6, 0x98, 0x5e, 0xec, 0xb7, 0xbe, 0x07, 0x3a, 0xec, 0xd3, 0xab, 0xee, 0x9a, 0x38, 0xe4, 0xe4, 0xfe, 0x76, 0x0a, 0x99, 0x43, 0x05, 0x64, 0x01, 0x38, 0x63, 0xe4, 0x14, 0x06, 0x9b, 0x99, 0x4a, 0x4f, 0xe1, 0x00, 0x73, 0x22, 0x0e, 0x44, 0xa0, 0x97, 0x44, 0xc4, 0xaa, 0x61, 0x99, 0x72, 0xac, 0x4e, 0xce, 0xe0, 0x35, 0x4c, 0x9d, 0xa0, 0x4e, 0x98, 0xa1, 0xad, 0x43, 0xce, 0x59, 0x25, 0x54, 0x05, 0xe4, 0xcf, 0x78, 0xa1, 0x94, 0x43, 0x0a, 0x19, 0x10, 0x40, 0x85, 0x66, 0xaa, 0xfb, 0xd8, 0x85, 0xd7, 0x6a, 0x28, 0x04, 0x06, 0x45, 0xc6, 0x28, 0x60, 0xd9, 0x8a, 0xd7, 0xc7, 0x38, 0xe1, 0x56, 0xa1, 0x82, 0xd0, 0xc8, 0x2e, 0x8a, 0x03, 0xe6, 0x49, 0xe5, 0x58, 0x31, 0xec, 0x51, 0x32, 0x25, 0x35, 0x03, 0x29, 0x19, 0x12, 0xd0, 0x0b, 0xef, 0xe1, 0x30, 0x72, 0x75, 0x2e, 0x39, 0xa4, 0x3a, 0xf8, 0x9b, 0x2b, 0xec, 0xd5, 0x72, 0x46, 0x2e, 0x17, 0xb5, 0x8a, 0xd8, 0xd6, 0x25, 0x05, 0xd3, 0x42, 0x46, 0x3b, 0x16, 0xfd, 0xce, 0xfe, 0x16, 0xf7, 0x04, 0xfc, 0x40, 0xdf, 0x3b, 0x90, 0xfd, 0xcd, 0xf6, 0x5b, 0xfb, 0x6c, 0xfe, 0xf0, 0xde, 0x65, 0xb0, 0x7e, 0xcd, 0xea, 0xdf, 0xe7, 0xe5, 0xfe, 0x71, 0xd4, 0x65, 0x51, 0x2e, 0xcd, 0xfa, 0x87, 0xfd, 0x58, 0xfc, 0x27, 0xd4, 0x68, 0x51, 0x8c, 0xed, 0xab, 0xa7, 0xd1, 0x50, 0x2e, 0x2f, 0xf9, 0x48, 0xc3, 0x9a, 0xb3, 0x23, 0xc5, 0xde, 0x28, 0x2c, 0xd8, 0xa8, 0xd7, 0xc5, 0x68, 0x93, 0x0d, 0x41, 0xca, 0xa1, 0x40, 0xd9, 0x13, 0x97, 0x41, 0x28, 0xc2, 0x55, 0x6c, 0xec, 0x38, 0xe2, 0xdf, 0x13, 0xd6, 0x61, 0x73, 0xe2, 0x4f, 0x6c, 0x6c, 0xb0, 0x6b, 0x5d, 0x1f, 0x95, 0xa0, 0x43, 0xc6, 0x5b, 0x09, 0x60, 0x4f, 0x72, 0xa0, 0x9e, 0x48, 0xe0, 0xe8, 0xe6, 0x04, 0x15, 0x82, 0x4c, 0x47, 0xa0, 0x82, 0x08, 0x07, 0x98, 0x96, 0x3c, 0x2c, 0x9a, 0x0e, 0x4d, 0x4a, 0x8a, 0x9a, 0x27, 0xea, 0xee, 0xe8, 0x1a, 0xf5, 0x05, 0xb1, 0x0b, 0x74, 0xba, 0x39, 0xee, 0x79, 0xec, 0x8f, 0x67, 0x48, 0x38, 0xeb, 0x75, 0xe8, 0x79, 0x9f, 0x09, 0x99, 0x1f, 0xcd, 0x06, 0x29, 0xe9, 0xf2, 0xe9, 0x79, 0x9f, 0x0d, 0x9d, 0x9b, 0x4b, 0x05, 0xac, 0xeb, 0x71, 0xa2, 0x19, 0x25, 0x1d, 0x98, 0x97, 0x4f, 0x07, 0x2e, 0xeb, 0xf8, 0xa2, 0x9a, 0x05, 0x6d, 0xb0, 0xe7, 0x5f, 0xfb, 0xae, 0xf5, 0xf9, 0x65, 0xf8, 0x3e, 0x39, 0xfe, 0x4b, 0x71, 0xe0, 0xb6, 0xf1, 0x75, 0x65, 0x12, 0x1e, 0xdb, 0xb6, 0xb3, 0xe3, 0x9c, 0xb2, 0x0f, 0x75, 0xd0, 0x22, 0x10, 0xd7, 0x2d, 0x8d, 0x76, 0x91, 0x37, 0x8f, 0x35, 0xd1, 0x22, 0x00, 0xc4, 0x25, 0x5c, 0xfe, 0xf0, 0x36, 0xbc, 0x35, 0x8e, 0x42, 0xe8, 0xa4, 0x03, 0xfc, 0xd2, 0x7d, 0xa6, 0xbc, 0xba, 0xcf, 0xc8, 0xb8, 0x15, 0x23, 0x54, 0x58, 0xb3, 0x2f, 0x5f, 0xb2, 0x9c, 0xa8, 0x89, 0x65, 0x39, 0x54, 0x38, 0xb3, 0xd7, 0x5b, 0x8c, 0xdc, 0xa6, 0x99, 0xb1, 0x79, 0x18, 0x38, 0x10, 0x57, 0xc0
|
||||
};
|
||||
|
||||
const uint8_t prng_payload_sf12[] = {
|
||||
0xfd, 0x7c, 0xb4, 0xff, 0x5f, 0x9f, 0xd7, 0xab, 0x28, 0x73, 0x91, 0xff, 0xc5, 0xb5, 0xab, 0x1c, 0x92, 0xe7, 0x76, 0x74, 0x54, 0x9f, 0xfd, 0xc3, 0x7f, 0xa9, 0xb5, 0xd2, 0x5e, 0x46, 0xb7, 0x5c, 0x47, 0x7f, 0xfb, 0xff, 0xef, 0x35, 0x33, 0x1d, 0x15, 0xe7, 0x3d, 0x5f, 0x85, 0x5d, 0x91, 0xea, 0x87, 0xb7, 0x2, 0x55, 0x41, 0x4d, 0x30, 0xed, 0x18, 0x17, 0x11, 0x8d, 0x4c, 0x2, 0xab, 0xa0, 0xd9, 0x24, 0xd7, 0x24, 0x3, 0x97, 0x43, 0x1, 0x62, 0x8a, 0x7b, 0x99, 0xf4, 0xa6, 0x4e, 0x6f, 0xbb, 0x55, 0x49, 0xed, 0xea, 0x73, 0xbb, 0x36, 0xd9, 0x3e, 0x9c, 0xe3, 0xb2, 0x97, 0x24, 0xe1, 0x51, 0x38, 0x6f, 0x9e, 0x38, 0xec, 0x64, 0xbe, 0x54, 0x1a, 0x99, 0x4b, 0x5, 0x60, 0x1, 0x79, 0x48, 0xd4, 0xf0, 0x5a, 0x37, 0x2f, 0xd7, 0x4f, 0x6f, 0x2, 0x30, 0x1, 0x5e, 0x60, 0xbc, 0x5f, 0xf7, 0x1d, 0xbf, 0x4e, 0x13, 0xb0, 0xcd, 0x1e, 0xe8, 0xed, 0xe9, 0x9e, 0xa4, 0x39, 0x6b, 0x55, 0x72, 0x4f, 0x38, 0xaa, 0x15, 0x39, 0x16, 0xe8, 0x40, 0x11, 0x7e, 0xd8, 0x3e, 0x34, 0x1f, 0x57, 0x8d, 0x6, 0xca, 0xc, 0x81, 0x55, 0x49, 0xa1, 0x8c, 0xc, 0x3, 0xcf, 0xc0, 0x88, 0x5b, 0xad, 0x92, 0x33, 0x2c, 0x1, 0x5c, 0x92, 0xae, 0x1, 0x93, 0x2b, 0x16, 0x9e, 0x1f, 0xa, 0xaf, 0xf6, 0x1d, 0xab, 0x64, 0xd1, 0x73, 0x44, 0x25, 0x35, 0x5, 0x9, 0xb8, 0x43, 0x9b, 0xe6, 0x61, 0x30, 0x70, 0x75, 0x2e, 0x19, 0xc4, 0x4e, 0xd8, 0xdf, 0x25, 0xee, 0x52, 0x30, 0x26, 0x76, 0x63, 0xd8, 0xf6, 0x5a, 0xc5, 0xbb, 0x26, 0x54, 0x2, 0x65, 0xb, 0x13, 0x90, 0x2a, 0x10, 0x23, 0x41, 0x1, 0xf6, 0x13, 0xfc, 0xc8, 0xf4, 0x83, 0x45, 0x2c, 0x2a, 0x53, 0x5, 0xfc, 0xa4, 0x7f, 0xdf, 0xb5, 0x27, 0x35, 0x8, 0x42, 0xa3, 0x87, 0x46, 0xb4, 0xaa, 0xdd, 0xd7, 0x67, 0x6e, 0x18, 0x82, 0xcb, 0x1a, 0x18, 0xfe, 0x82, 0x75, 0xdd, 0xb6, 0xae, 0x14, 0xf0, 0x3d, 0x52, 0xe5, 0xc8, 0xe1, 0x7f, 0x99, 0x34, 0xc9, 0x5c, 0xeb, 0x4d, 0xa9, 0x9d, 0xdf, 0x7f, 0xb6, 0x12, 0xf, 0xca, 0x41, 0xa9, 0x20, 0xfb, 0x23, 0x93, 0x7d, 0xa8, 0xec, 0xc6, 0x69, 0xc3, 0xb1, 0xf0, 0x5f, 0xd3, 0xb7, 0x1, 0x43, 0xf6, 0x13, 0xf0, 0xca, 0xb3, 0x7a, 0x17, 0xb8, 0xa7, 0xc4, 0xf, 0x72, 0x25, 0x26, 0x65, 0xc4, 0xf5, 0x73, 0xfe, 0x3b, 0x95, 0xc4, 0x4a, 0x62, 0x50, 0x3e, 0x44, 0xc6, 0xef, 0xe2, 0xfb, 0x63, 0x15, 0xe, 0xa, 0xdb, 0x64, 0x39, 0x40, 0x7, 0x6a, 0x8, 0x32, 0x81, 0x7e, 0x36, 0x93, 0x3f, 0xdf, 0xcf, 0x47, 0x5b, 0x38, 0xa7, 0x52, 0xda, 0x44, 0xbc, 0x57, 0xc6, 0x9d, 0x87, 0x42, 0x51, 0xa6, 0xa0, 0x18, 0x2, 0x6c, 0xfa, 0xde, 0x8e, 0x5d, 0xeb, 0x9e, 0x39, 0x0, 0x1a, 0x42, 0x8f, 0xcb, 0xf8, 0x96, 0xde, 0xb5, 0x13, 0x20, 0x80, 0x13, 0xc0, 0x4d, 0x68, 0x8b, 0x8b, 0xe6, 0xc0, 0xa5, 0x7f, 0x2d, 0x40, 0x59, 0xea, 0x2c, 0xf1, 0xb8, 0xd, 0xe8, 0xa, 0x75, 0x1a, 0x59, 0xf4, 0x73, 0x35, 0xb7, 0x14, 0x35, 0x17, 0x20, 0x1b, 0xb0, 0x24, 0x41, 0xd2, 0xaf, 0xc7, 0xd6, 0xa0, 0x6, 0x8, 0x17, 0x96, 0xca, 0x9a, 0x93, 0x21, 0xe7, 0x50, 0xe3, 0xa6, 0x58, 0x68, 0x9b, 0xc6, 0x4c, 0x89, 0xae, 0x55, 0x4a, 0x76, 0x67, 0xf7, 0x58, 0x65, 0xbb, 0x37, 0x2f, 0xbb, 0xc2, 0x47, 0x71, 0x4f, 0xbe, 0x20, 0x75, 0x62, 0x39, 0x5e, 0x5d, 0xba, 0xb5, 0x52, 0x3, 0x60, 0xe2, 0xf2, 0x93, 0x4, 0x6a, 0x21, 0x44, 0x48, 0x50, 0x5c, 0xef, 0x2e, 0x38, 0xda, 0x37, 0x96, 0x9, 0x33, 0x56, 0x6f, 0x68, 0x66, 0x24, 0xb2, 0x99, 0x5f
|
||||
0xfd, 0x7c, 0xb4, 0xff, 0x5f, 0x9f, 0xd7, 0xab, 0x28, 0x73, 0x91, 0xff, 0xc5, 0xb5, 0xab, 0x1c, 0x92, 0xe7, 0x76, 0x74, 0x54, 0x9f, 0xfd, 0xc3, 0x7f, 0xa9, 0xb5, 0xd2, 0x5e, 0x46, 0xb7, 0x5c, 0x47, 0x7f, 0xfb, 0xff, 0xef, 0x35, 0x33, 0x1d, 0x15, 0xe7, 0x3d, 0x5f, 0x85, 0x5d, 0x91, 0xea, 0x87, 0xb7, 0x02, 0x55, 0x41, 0x4d, 0x30, 0xed, 0x18, 0x17, 0x11, 0x8d, 0x4c, 0x02, 0xab, 0xa0, 0xd9, 0x24, 0xd7, 0x24, 0x03, 0x97, 0x43, 0x01, 0x62, 0x8a, 0x7b, 0x99, 0xf4, 0xa6, 0x4e, 0x6f, 0xbb, 0x55, 0x49, 0xed, 0xea, 0x73, 0xbb, 0x36, 0xd9, 0x3e, 0x9c, 0xe3, 0xb2, 0x97, 0x24, 0xe1, 0x51, 0x38, 0x6f, 0x9e, 0x38, 0xec, 0x64, 0xbe, 0x54, 0x1a, 0x99, 0x4b, 0x05, 0x60, 0x01, 0x79, 0x48, 0xd4, 0xf0, 0x5a, 0x37, 0x2f, 0xd7, 0x4f, 0x6f, 0x02, 0x30, 0x01, 0x5e, 0x60, 0xbc, 0x5f, 0xf7, 0x1d, 0xbf, 0x4e, 0x13, 0xb0, 0xcd, 0x1e, 0xe8, 0xed, 0xe9, 0x9e, 0xa4, 0x39, 0x6b, 0x55, 0x72, 0x4f, 0x38, 0xaa, 0x15, 0x39, 0x16, 0xe8, 0x40, 0x11, 0x7e, 0xd8, 0x3e, 0x34, 0x1f, 0x57, 0x8d, 0x06, 0xca, 0x0c, 0x81, 0x55, 0x49, 0xa1, 0x8c, 0x0c, 0x03, 0xcf, 0xc0, 0x88, 0x5b, 0xad, 0x92, 0x33, 0x2c, 0x01, 0x5c, 0x92, 0xae, 0x01, 0x93, 0x2b, 0x16, 0x9e, 0x1f, 0x0a, 0xaf, 0xf6, 0x1d, 0xab, 0x64, 0xd1, 0x73, 0x44, 0x25, 0x35, 0x05, 0x09, 0xb8, 0x43, 0x9b, 0xe6, 0x61, 0x30, 0x70, 0x75, 0x2e, 0x19, 0xc4, 0x4e, 0xd8, 0xdf, 0x25, 0xee, 0x52, 0x30, 0x26, 0x76, 0x63, 0xd8, 0xf6, 0x5a, 0xc5, 0xbb, 0x26, 0x54, 0x02, 0x65, 0x0b, 0x13, 0x90, 0x2a, 0x10, 0x23, 0x41, 0x01, 0xf6, 0x13, 0xfc, 0xc8, 0xf4, 0x83, 0x45, 0x2c, 0x2a, 0x53, 0x05, 0xfc, 0xa4, 0x7f, 0xdf, 0xb5, 0x27, 0x35, 0x08, 0x42, 0xa3, 0x87, 0x46, 0xb4, 0xaa, 0xdd, 0xd7, 0x67, 0x6e, 0x18, 0x82, 0xcb, 0x1a, 0x18, 0xfe, 0x82, 0x75, 0xdd, 0xb6, 0xae, 0x14, 0xf0, 0x3d, 0x52, 0xe5, 0xc8, 0xe1, 0x7f, 0x99, 0x34, 0xc9, 0x5c, 0xeb, 0x4d, 0xa9, 0x9d, 0xdf, 0x7f, 0xb6, 0x12, 0x0f, 0xca, 0x41, 0xa9, 0x20, 0xfb, 0x23, 0x93, 0x7d, 0xa8, 0xec, 0xc6, 0x69, 0xc3, 0xb1, 0xf0, 0x5f, 0xd3, 0xb7, 0x01, 0x43, 0xf6, 0x13, 0xf0, 0xca, 0xb3, 0x7a, 0x17, 0xb8, 0xa7, 0xc4, 0x0f, 0x72, 0x25, 0x26, 0x65, 0xc4, 0xf5, 0x73, 0xfe, 0x3b, 0x95, 0xc4, 0x4a, 0x62, 0x50, 0x3e, 0x44, 0xc6, 0xef, 0xe2, 0xfb, 0x63, 0x15, 0x0e, 0x0a, 0xdb, 0x64, 0x39, 0x40, 0x07, 0x6a, 0x08, 0x32, 0x81, 0x7e, 0x36, 0x93, 0x3f, 0xdf, 0xcf, 0x47, 0x5b, 0x38, 0xa7, 0x52, 0xda, 0x44, 0xbc, 0x57, 0xc6, 0x9d, 0x87, 0x42, 0x51, 0xa6, 0xa0, 0x18, 0x02, 0x6c, 0xfa, 0xde, 0x8e, 0x5d, 0xeb, 0x9e, 0x39, 0x00, 0x1a, 0x42, 0x8f, 0xcb, 0xf8, 0x96, 0xde, 0xb5, 0x13, 0x20, 0x80, 0x13, 0xc0, 0x4d, 0x68, 0x8b, 0x8b, 0xe6, 0xc0, 0xa5, 0x7f, 0x2d, 0x40, 0x59, 0xea, 0x2c, 0xf1, 0xb8, 0x0d, 0xe8, 0x0a, 0x75, 0x1a, 0x59, 0xf4, 0x73, 0x35, 0xb7, 0x14, 0x35, 0x17, 0x20, 0x1b, 0xb0, 0x24, 0x41, 0xd2, 0xaf, 0xc7, 0xd6, 0xa0, 0x06, 0x08, 0x17, 0x96, 0xca, 0x9a, 0x93, 0x21, 0xe7, 0x50, 0xe3, 0xa6, 0x58, 0x68, 0x9b, 0xc6, 0x4c, 0x89, 0xae, 0x55, 0x4a, 0x76, 0x67, 0xf7, 0x58, 0x65, 0xbb, 0x37, 0x2f, 0xbb, 0xc2, 0x47, 0x71, 0x4f, 0xbe, 0x20, 0x75, 0x62, 0x39, 0x5e, 0x5d, 0xba, 0xb5, 0x52, 0x03, 0x60, 0xe2, 0xf2, 0x93, 0x04, 0x6a, 0x21, 0x44, 0x48, 0x50, 0x5c, 0xef, 0x2e, 0x38, 0xda, 0x37, 0x96, 0x09, 0x33, 0x56, 0x6f, 0x68, 0x66, 0x24, 0xb2, 0x99, 0x5f
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,26 @@
|
|||
|
||||
namespace gr {
|
||||
namespace lora {
|
||||
|
||||
|
||||
/**
|
||||
* \brief Clamp given value in the given range.
|
||||
*
|
||||
* \tparam T
|
||||
* The type of variable to clamp.
|
||||
* <br>`d`, `min` and `max` must be of this type.
|
||||
* \param d
|
||||
* The value to clamp.
|
||||
* \param min
|
||||
* The lower bound of the range.
|
||||
* \param max
|
||||
* The upper bound of the range.
|
||||
*/
|
||||
template <class T>
|
||||
inline T clamp(T d, T min, T max) {
|
||||
const T t = d < min ? min : d;
|
||||
return t > max ? max : t;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
std::string to_bin(T v, uint32_t bitwidth) {
|
||||
unsigned long long maxpow = bitwidth ? (1ull << (bitwidth - 1)) : 0,
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue