~ Replaced unwanted tabs with spaces
~ Replaced paths with relative paths (needs testing)
~ Examplify now takes the output path and name prefix as args
* TO-DO: test messqge_socket_sink with socket.timeout() instead of
manual waiting
pull/21/head
Wosser1sProductions 2017-02-16 19:00:08 +01:00
rodzic 43be513947
commit 0b6f1528fe
11 zmienionych plików z 239 dodań i 232 usunięć

1
.gitignore vendored
Wyświetl plik

@ -5,3 +5,4 @@ build/
*nogit* *nogit*
*.cfile *.cfile
dev/ dev/
examples/lora-samples

Wyświetl plik

@ -8,9 +8,11 @@ from loranode import RN2483Controller
import lora, pmt, osmosdr import lora, pmt, osmosdr
from gnuradio import gr, blocks from gnuradio import gr, blocks
FileData = collections.namedtuple('FileData', ['path', 'data', 'times'])
class Examplify: class Examplify:
def __init__(self, outputFile = '/tmp/examplify_data.cfile'): def __init__(self, output_dir = './lora-samples/', output_prefix = 'examplify_data'):
################################################## ##################################################
# Variables # # Variables #
################################################## ##################################################
@ -26,10 +28,14 @@ class Examplify:
self.pwr = 1 self.pwr = 1
self.codingRate = "4/6" # 4/5 4/6 4/7 self.codingRate = "4/6" # 4/5 4/6 4/7
self.outputFile = outputFile self.output_dir = output_dir
self.output_prefix = output_prefix
self.output_ext = '.cfile'
self.outputFile = self.output_dir + self.output_prefix + self.output_ext
self.pre_delay = 0.150 self.pre_delay = 0.150
self.post_delay = 0.350 self.post_delay = 0.350
self.trans_delay = 0.1 self.trans_delay = 0.1
self.examples_output = []
################################################## ##################################################
# LoRa transmitter # # LoRa transmitter #
@ -67,6 +73,9 @@ class Examplify:
def setTransmitDelay(self, delay_s): def setTransmitDelay(self, delay_s):
self.trans_delay = delay_s self.trans_delay = delay_s
def getOutput(self):
return self.examples_output
def transmitRawData(self, data_list): def transmitRawData(self, data_list):
print ("Transmitting...") print ("Transmitting...")
@ -99,72 +108,57 @@ class Examplify:
self.outputFile = output self.outputFile = output
self.transmitToCapture(data_list) self.transmitToCapture(data_list)
self.outputFile = prev self.outputFile = prev
def appendAndCaptureExample(data, times):
name = (self.output_prefix + "_cr{0:s}_bw{1:d}_sf{2:d}_crc{3:d}_pwr{4:d}_{5:03d}"
.format(self.codingRate.replace("/", "-"),
int(self.bw / 1e3),
self.sf,
1 if self.crc else 0,
self.pwr,
len(self.examples_output))
+ self.output_ext)
self.examples_output.append( FileData( name, '["{0:s}"]'.format(data), times ) )
self.outputFile = self.output_dir + name
self.transmitToCapture([data] * times)
FileData = collections.namedtuple('FileData', ['path', 'data', 'times']) def appendResultsToFile(file_path):
f = open(file_path, 'a')
def appendAndCaptureExample(examples_output, data, times, path, name): stro = '\n' + (' ' * 20) + 'FILE' + (' ' * 23) + '|' + (' ' * 10) + 'HEX'
name = (name + "_cr{0:s}_bw{1:d}_sf{2:d}_crc{3:d}_pwr{4:d}_{5:03d}"
.format(e.codingRate.replace("/", "-"),
int(e.bw / 1e3),
e.sf,
1 if e.crc else 0,
e.pwr,
len(examples_output))
+ ".cfile")
examples_output.append( FileData( name, '["{0:s}"]'.format(data), times ) )
e.transmitToFile([data] * times, path + name)
def printToFile(file_path, examples_output):
f = open(file_path, 'a')
stro = '\n' + (' ' * 20) + 'FILE' + (' ' * 23) + '|' + (' ' * 10) + 'HEX'
f.write(stro + '\n')
print stro
stro = ('-' * 47) + '+' + ('-' * 27)
f.write(stro + '\n')
print stro
for x in examples_output:
stro = ' {0:45s} | {1:s} * {2:d}'.format(x[0], x[1], x[2])
f.write(stro + '\n') f.write(stro + '\n')
print stro print stro
f.close() stro = ('-' * 47) + '+' + ('-' * 27)
f.write(stro + '\n')
print stro
for x in self.examples_output:
stro = ' {0:45s} | {1:s} * {2:d}'.format(x[0], x[1], x[2])
f.write(stro + '\n')
print stro
f.close()
if __name__ == '__main__': if __name__ == '__main__':
examples_output = [] e = Examplify('./lora-samples/', 'hackrf')
e = Examplify()
appendAndCaptureExample(examples_output, "0123456789abcdef", 10, e.appendAndCaptureExample("0123456789abcdef", 10)
'/home/william/lora-samples/', 'hackrf')
appendAndCaptureExample(examples_output, "111111", 1, e.appendAndCaptureExample("111111", 1)
'/home/william/lora-samples/', 'hackrf') e.appendAndCaptureExample("111111", 5)
appendAndCaptureExample(examples_output, "111111", 5,
'/home/william/lora-samples/', 'hackrf')
appendAndCaptureExample(examples_output, "aaaaaaaa", 3, e.appendAndCaptureExample("aaaaaaaa", 3)
'/home/william/lora-samples/', 'hackrf')
appendAndCaptureExample(examples_output, "ffffffff", 1, e.appendAndCaptureExample("ffffffff", 1)
'/home/william/lora-samples/', 'hackrf') e.appendAndCaptureExample("ffffffff", 10)
appendAndCaptureExample(examples_output, "ffffffff", 10,
'/home/william/lora-samples/', 'hackrf')
appendAndCaptureExample(examples_output, "55555555", 3, e.appendAndCaptureExample("55555555", 3)
'/home/william/lora-samples/', 'hackrf') e.appendAndCaptureExample("55555555", 10)
appendAndCaptureExample(examples_output, "55555555", 10,
'/home/william/lora-samples/', 'hackrf')
appendAndCaptureExample(examples_output, "88888888", 1, e.appendAndCaptureExample("88888888", 1)
'/home/william/lora-samples/', 'hackrf') e.appendAndCaptureExample("88888888", 5)
appendAndCaptureExample(examples_output, "88888888", 5, e.appendAndCaptureExample("88888888", 10)
'/home/william/lora-samples/', 'hackrf')
appendAndCaptureExample(examples_output, "88888888", 10,
'/home/william/lora-samples/', 'hackrf')
printToFile('/home/william/lora-samples/expected_results.txt', examples_output) e.appendResultsToFile('./expected_results.txt')

Wyświetl plik

@ -1,9 +1,9 @@
#!/usr/bin/sh #!/usr/bin/sh
export VOLK_GENERIC=1 export VOLK_GENERIC=1
export GR_DONT_LOAD_PREFS=1 export GR_DONT_LOAD_PREFS=1
export srcdir=/home/william/gr-lora/python export srcdir=../python
export GR_CONF_CONTROLPORT_ON=False export GR_CONF_CONTROLPORT_ON=False
export PATH=/home/william/gr-lora/build/python:$PATH export PATH=../build/python:$PATH
export LD_LIBRARY_PATH=/home/william/gr-lora/build/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=../build/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/home/william/gr-lora/build/swig:$PYTHONPATH export PYTHONPATH=../build/swig:$PYTHONPATH
/usr/bin/python2 /home/william/lora-samples/_examplify.py /usr/bin/python2 ./_examplify.py

Wyświetl plik

@ -1,6 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<block> <block>
<name>message_socket_sink</name> <name>Message Socket Sink</name>
<key>lora_message_socket_sink</key> <key>lora_message_socket_sink</key>
<category>[LoRa]</category> <category>[LoRa]</category>
<import>import lora</import> <import>import lora</import>

Wyświetl plik

@ -683,28 +683,28 @@
#include <gnuradio/block.h> #include <gnuradio/block.h>
namespace gr { namespace gr {
namespace lora { namespace lora {
/*! /*!
* \brief Sink for messages, sent to socket a kept in a list. * \brief Sink for messages, sent to socket.
* \ingroup lora * \ingroup lora
* *
*/ */
class LORA_API message_socket_sink : virtual public gr::block { class LORA_API message_socket_sink : virtual public gr::block {
public: public:
typedef boost::shared_ptr<message_socket_sink> sptr; typedef boost::shared_ptr<message_socket_sink> sptr;
/*! /*!
* \brief Return a shared_ptr to a new instance of lora::message_socket_sink. * \brief Return a shared_ptr to a new instance of lora::message_socket_sink.
* *
* To avoid accidental use of raw pointers, lora::message_socket_sink's * To avoid accidental use of raw pointers, lora::message_socket_sink's
* constructor is in a private implementation * constructor is in a private implementation
* class. lora::message_socket_sink::make is the public interface for * class. lora::message_socket_sink::make is the public interface for
* creating new instances. * creating new instances.
*/ */
static sptr make(); static sptr make();
}; };
} // namespace lora } // namespace lora
} // namespace gr } // namespace gr
#endif /* INCLUDED_LORA_MESSAGE_SOCKET_SINK_H */ #endif /* INCLUDED_LORA_MESSAGE_SOCKET_SINK_H */

Wyświetl plik

@ -33,8 +33,8 @@ list(APPEND lora_sources
set(lora_sources "${lora_sources}" PARENT_SCOPE) set(lora_sources "${lora_sources}" PARENT_SCOPE)
if(NOT lora_sources) if(NOT lora_sources)
MESSAGE(STATUS "No C++ sources... skipping lib/") MESSAGE(STATUS "No C++ sources... skipping lib/")
return() return()
endif(NOT lora_sources) endif(NOT lora_sources)
add_library(gnuradio-lora SHARED ${lora_sources}) add_library(gnuradio-lora SHARED ${lora_sources})

Wyświetl plik

@ -683,81 +683,81 @@
#include "message_socket_sink_impl.h" #include "message_socket_sink_impl.h"
namespace gr { namespace gr {
namespace lora { namespace lora {
message_socket_sink::sptr message_socket_sink::make() { message_socket_sink::sptr message_socket_sink::make() {
return gnuradio::get_initial_sptr(new message_socket_sink_impl()); return gnuradio::get_initial_sptr(new message_socket_sink_impl());
} }
/** /**
* \brief The private constructor * \brief The private constructor
* *
* Create a UDP socket connection to send the data through. * Create a UDP socket connection to send the data through.
*/ */
message_socket_sink_impl::message_socket_sink_impl() message_socket_sink_impl::message_socket_sink_impl()
: gr::block("message_socket_sink", : gr::block("message_socket_sink",
gr::io_signature::make(0, 0, 0), gr::io_signature::make(0, 0, 0),
gr::io_signature::make(0, 0, 0)) { gr::io_signature::make(0, 0, 0)) {
message_port_register_in(pmt::mp("in")); message_port_register_in(pmt::mp("in"));
set_msg_handler(pmt::mp("in"), boost::bind(&message_socket_sink_impl::handle, this, _1)); set_msg_handler(pmt::mp("in"), boost::bind(&message_socket_sink_impl::handle, this, _1));
this->_socket = socket(AF_INET, SOCK_DGRAM, 0); this->_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (this->_socket < 0) { if (this->_socket < 0) {
perror("[message_socket_sink] Failed to create socket!"); perror("[message_socket_sink] Failed to create socket!");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
this->_sock_addr = new struct sockaddr_in; this->_sock_addr = new struct sockaddr_in;
this->_sock_addr->sin_family = AF_INET; this->_sock_addr->sin_family = AF_INET;
this->_sock_addr->sin_addr.s_addr = htonl(INADDR_ANY); this->_sock_addr->sin_addr.s_addr = htonl(INADDR_ANY);
this->_sock_addr->sin_port = htons(0); // Source port: 0 is any this->_sock_addr->sin_port = htons(0); // Source port: 0 is any
if (bind(this->_socket, if (bind(this->_socket,
(const struct sockaddr*) this->_sock_addr, (const struct sockaddr*) this->_sock_addr,
sizeof(*this->_sock_addr)) sizeof(*this->_sock_addr))
< 0) { < 0) {
perror("[message_socket_sink] Socket bind failed!"); perror("[message_socket_sink] Socket bind failed!");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
this->_sock_addr->sin_port = htons(this->port); this->_sock_addr->sin_port = htons(this->port);
// == "127.0.0.1" to int translation // == "127.0.0.1" to int translation
inet_pton(AF_INET, this->host.c_str(), &this->_sock_addr->sin_addr.s_addr); inet_pton(AF_INET, this->host.c_str(), &this->_sock_addr->sin_addr.s_addr);
} }
/** /**
* \brief Our virtual destructor. * \brief Our virtual destructor.
*/ */
message_socket_sink_impl::~message_socket_sink_impl() { message_socket_sink_impl::~message_socket_sink_impl() {
delete this->_sock_addr; delete this->_sock_addr;
shutdown(this->_socket, 1); // close transmissions shutdown(this->_socket, 1); // close transmissions
} }
/** /**
* \brief Handle a message and send its contents through an UDP packet to the loopback interface. * \brief Handle a message and send its contents through an UDP packet to the loopback interface.
*/ */
void message_socket_sink_impl::handle(pmt::pmt_t msg) { void message_socket_sink_impl::handle(pmt::pmt_t msg) {
uint8_t *data = (uint8_t*) pmt::blob_data(msg); uint8_t *data = (uint8_t*) pmt::blob_data(msg);
size_t size = pmt::blob_length(msg); size_t size = pmt::blob_length(msg);
#ifndef NDEBUG #ifndef NDEBUG
printf("Received message:\n\t"); printf("Received message:\n\t");
for (size_t i = 0; i < size; ++i) for (size_t i = 0; i < size; ++i)
printf("%02x ", data[i]); printf("%02x ", data[i]);
putchar('\n'); putchar('\n');
#endif #endif
if (sendto(this->_socket, data, size, 0, if (sendto(this->_socket, data, size, 0,
(const struct sockaddr*) this->_sock_addr, (const struct sockaddr*) this->_sock_addr,
sizeof(*this->_sock_addr)) sizeof(*this->_sock_addr))
!= size) { != size) {
perror("[message_socket_sink] Mismatch in number of bytes sent"); perror("[message_socket_sink] Mismatch in number of bytes sent");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
} /* namespace lora */ } /* namespace lora */
} /* namespace gr */ } /* namespace gr */

Wyświetl plik

@ -684,26 +684,26 @@
#include <lora/message_socket_sink.h> #include <lora/message_socket_sink.h>
namespace gr { namespace gr {
namespace lora { namespace lora {
class message_socket_sink_impl : public message_socket_sink { class message_socket_sink_impl : public message_socket_sink {
private: private:
const std::string host = "127.0.0.1"; const std::string host = "127.0.0.1";
const int port = 40868; const int port = 40868;
// socket // socket
struct sockaddr_in *_sock_addr; struct sockaddr_in *_sock_addr;
int _socket; int _socket;
void handle(pmt::pmt_t msg); void handle(pmt::pmt_t msg);
public: public:
message_socket_sink_impl(); message_socket_sink_impl();
~message_socket_sink_impl(); ~message_socket_sink_impl();
}; };
} // namespace lora } // namespace lora
} // namespace gr } // namespace gr
#endif /* INCLUDED_LORA_MESSAGE_SOCKET_SINK_IMPL_H */ #endif /* INCLUDED_LORA_MESSAGE_SOCKET_SINK_IMPL_H */

Wyświetl plik

@ -682,11 +682,11 @@
#include <lora/message_socket_sink.h> #include <lora/message_socket_sink.h>
namespace gr { namespace gr {
namespace lora { namespace lora {
void qa_message_socket_sink::t1() { void qa_message_socket_sink::t1() {
// Put test here // Put test here
} }
} /* namespace lora */ } /* namespace lora */
} /* namespace gr */ } /* namespace gr */

Wyświetl plik

@ -683,19 +683,19 @@
#include <cppunit/TestCase.h> #include <cppunit/TestCase.h>
namespace gr { namespace gr {
namespace lora { namespace lora {
class qa_message_socket_sink : public CppUnit::TestCase { class qa_message_socket_sink : public CppUnit::TestCase {
public: public:
CPPUNIT_TEST_SUITE(qa_message_socket_sink); CPPUNIT_TEST_SUITE(qa_message_socket_sink);
CPPUNIT_TEST(t1); CPPUNIT_TEST(t1);
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
private: private:
void t1(); void t1();
}; };
} /* namespace lora */ } /* namespace lora */
} /* namespace gr */ } /* namespace gr */
#endif /* _QA_MESSAGE_SOCKET_SINK_H_ */ #endif /* _QA_MESSAGE_SOCKET_SINK_H_ */

Wyświetl plik

@ -13,6 +13,15 @@ class qa_BasicTest (gr_unittest.TestCase):
# Listen on socket for data, append to list if any and return list of captured data. # Listen on socket for data, append to list if any and return list of captured data.
# #
def gatherFromSocket(self): def gatherFromSocket(self):
## or in self.server.settimeout(0.5) ?
# try:
# data = self.server.recv(8192)
# if data:
# total_data.append(data)
# except:
# pass
timeout = 0.5 timeout = 0.5
total_data = [] total_data = []
data = '' data = ''
@ -108,7 +117,7 @@ class qa_BasicTest (gr_unittest.TestCase):
self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.server.bind((self.host, self.port)) self.server.bind((self.host, self.port))
self.server.setblocking(0) self.server.setblocking(0) ## or self.server.settimeout(0.5) ?
self.lastTestComplete = False self.lastTestComplete = False
@ -181,7 +190,7 @@ class qa_BasicTest (gr_unittest.TestCase):
'71 1b 09 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22' '71 1b 09 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22'
] ]
self.runWithFileSourceAndData('/home/william/lora-samples/usrpcr5.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/usrpcr5.cfile', expected_data)
nextSeriesSetting = 1 nextSeriesSetting = 1
testResults.append([]) testResults.append([])
@ -195,77 +204,80 @@ class qa_BasicTest (gr_unittest.TestCase):
# #
def test_002 (self): def test_002 (self):
expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10 expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_000.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_000.cfile', expected_data)
# self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_000.cfile', expected_data)
# ...
# #
# Unit test 3 # Unit test 3
# #
def test_003 (self): def test_003 (self):
expected_data = ["30 0b 02 11 11 11"] * 1 expected_data = ["30 0b 02 11 11 11"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_001.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_001.cfile', expected_data)
# #
# Unit test 4 # Unit test 4
# #
def test_004 (self): def test_004 (self):
expected_data = ["30 0b 02 11 11 11"] * 5 expected_data = ["30 0b 02 11 11 11"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_002.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_002.cfile', expected_data)
# #
# Unit test 5 # Unit test 5
# #
def test_005 (self): def test_005 (self):
expected_data = ["40 0b 07 aa aa aa aa"] * 3 expected_data = ["40 0b 07 aa aa aa aa"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_003.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_003.cfile', expected_data)
# #
# Unit test 6 # Unit test 6
# #
def test_006 (self): def test_006 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 1 expected_data = ["40 0b 07 ff ff ff ff"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_004.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_004.cfile', expected_data)
# #
# Unit test 7 # Unit test 7
# #
def test_007 (self): def test_007 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 10 expected_data = ["40 0b 07 ff ff ff ff"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_005.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_005.cfile', expected_data)
# #
# Unit test 8 # Unit test 8
# #
def test_008 (self): def test_008 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 3 expected_data = ["40 0b 07 55 55 55 55"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_006.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_006.cfile', expected_data)
# #
# Unit test 9 # Unit test 9
# #
def test_009 (self): def test_009 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 10 expected_data = ["40 0b 07 55 55 55 55"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_007.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_007.cfile', expected_data)
# #
# Unit test 10 # Unit test 10
# #
def test_010 (self): def test_010 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 1 expected_data = ["40 0b 07 88 88 88 88"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_008.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_008.cfile', expected_data)
# #
# Unit test 11 # Unit test 11
# #
def test_011 (self): def test_011 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 5 expected_data = ["40 0b 07 88 88 88 88"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_009.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_009.cfile', expected_data)
# #
# Unit test 12 # Unit test 12
# #
def test_012 (self): def test_012 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 10 expected_data = ["40 0b 07 88 88 88 88"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_010.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf7_crc1_pwr1_010.cfile', expected_data)
nextSeriesSetting = 2 nextSeriesSetting = 2
testResults.append([]) testResults.append([])
@ -278,77 +290,77 @@ class qa_BasicTest (gr_unittest.TestCase):
# #
def test_013 (self): def test_013 (self):
expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10 expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_000.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_000.cfile', expected_data)
# #
# Unit test 14 # Unit test 14
# #
def test_014 (self): def test_014 (self):
expected_data = ["30 0b 02 11 11 11"] * 1 expected_data = ["30 0b 02 11 11 11"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_001.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_001.cfile', expected_data)
# #
# Unit test 15 # Unit test 15
# #
def test_015 (self): def test_015 (self):
expected_data = ["30 0b 02 11 11 11"] * 5 expected_data = ["30 0b 02 11 11 11"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_002.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_002.cfile', expected_data)
# #
# Unit test 16 # Unit test 16
# #
def test_016 (self): def test_016 (self):
expected_data = ["40 0b 07 aa aa aa aa"] * 3 expected_data = ["40 0b 07 aa aa aa aa"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_003.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_003.cfile', expected_data)
# #
# Unit test 17 # Unit test 17
# #
def test_017 (self): def test_017 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 1 expected_data = ["40 0b 07 ff ff ff ff"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_004.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_004.cfile', expected_data)
# #
# Unit test 18 # Unit test 18
# #
def test_018 (self): def test_018 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 10 expected_data = ["40 0b 07 ff ff ff ff"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_005.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_005.cfile', expected_data)
# #
# Unit test 19 # Unit test 19
# #
def test_019 (self): def test_019 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 3 expected_data = ["40 0b 07 55 55 55 55"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_006.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_006.cfile', expected_data)
# #
# Unit test 20 # Unit test 20
# #
def test_020 (self): def test_020 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 10 expected_data = ["40 0b 07 55 55 55 55"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_007.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_007.cfile', expected_data)
# #
# Unit test 21 # Unit test 21
# #
def test_021 (self): def test_021 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 1 expected_data = ["40 0b 07 88 88 88 88"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_008.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_008.cfile', expected_data)
# #
# Unit test 22 # Unit test 22
# #
def test_022 (self): def test_022 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 5 expected_data = ["40 0b 07 88 88 88 88"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_009.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_009.cfile', expected_data)
# #
# Unit test 23 # Unit test 23
# #
def test_023 (self): def test_023 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 10 expected_data = ["40 0b 07 88 88 88 88"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_010.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf12_crc1_pwr1_010.cfile', expected_data)
nextSeriesSetting = 3 nextSeriesSetting = 3
testResults.append([]) testResults.append([])
@ -361,77 +373,77 @@ class qa_BasicTest (gr_unittest.TestCase):
# #
def test_024 (self): def test_024 (self):
expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10 expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_000.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_000.cfile', expected_data)
# #
# Unit test 25 # Unit test 25
# #
def test_025 (self): def test_025 (self):
expected_data = ["30 0b 02 11 11 11"] * 1 expected_data = ["30 0b 02 11 11 11"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_001.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_001.cfile', expected_data)
# #
# Unit test 26 # Unit test 26
# #
def test_026 (self): def test_026 (self):
expected_data = ["30 0b 02 11 11 11"] * 5 expected_data = ["30 0b 02 11 11 11"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_002.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_002.cfile', expected_data)
# #
# Unit test 27 # Unit test 27
# #
def test_027 (self): def test_027 (self):
expected_data = ["40 0b 07 aa aa aa aa"] * 3 expected_data = ["40 0b 07 aa aa aa aa"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_003.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_003.cfile', expected_data)
# #
# Unit test 28 # Unit test 28
# #
def test_028 (self): def test_028 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 1 expected_data = ["40 0b 07 ff ff ff ff"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_004.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_004.cfile', expected_data)
# #
# Unit test 29 # Unit test 29
# #
def test_029 (self): def test_029 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 10 expected_data = ["40 0b 07 ff ff ff ff"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_005.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_005.cfile', expected_data)
# #
# Unit test 30 # Unit test 30
# #
def test_030 (self): def test_030 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 3 expected_data = ["40 0b 07 55 55 55 55"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_006.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_006.cfile', expected_data)
# #
# Unit test 31 # Unit test 31
# #
def test_031 (self): def test_031 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 10 expected_data = ["40 0b 07 55 55 55 55"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_007.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_007.cfile', expected_data)
# #
# Unit test 32 # Unit test 32
# #
def test_032 (self): def test_032 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 1 expected_data = ["40 0b 07 88 88 88 88"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_008.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_008.cfile', expected_data)
# #
# Unit test 33 # Unit test 33
# #
def test_033 (self): def test_033 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 5 expected_data = ["40 0b 07 88 88 88 88"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_009.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_009.cfile', expected_data)
# #
# Unit test 34 # Unit test 34
# #
def test_034 (self): def test_034 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 10 expected_data = ["40 0b 07 88 88 88 88"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_010.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-5_bw125_sf8_crc1_pwr1_010.cfile', expected_data)
nextSeriesSetting = 4 nextSeriesSetting = 4
testResults.append([]) testResults.append([])
@ -444,77 +456,77 @@ class qa_BasicTest (gr_unittest.TestCase):
# #
def test_035 (self): def test_035 (self):
expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10 expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_000.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_000.cfile', expected_data)
# #
# Unit test 36 # Unit test 36
# #
def test_036 (self): def test_036 (self):
expected_data = ["30 0b 02 11 11 11"] * 1 expected_data = ["30 0b 02 11 11 11"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_001.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_001.cfile', expected_data)
# #
# Unit test 37 # Unit test 37
# #
def test_037 (self): def test_037 (self):
expected_data = ["30 0b 02 11 11 11"] * 5 expected_data = ["30 0b 02 11 11 11"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_002.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_002.cfile', expected_data)
# #
# Unit test 38 # Unit test 38
# #
def test_038 (self): def test_038 (self):
expected_data = ["40 0b 07 aa aa aa aa"] * 3 expected_data = ["40 0b 07 aa aa aa aa"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_003.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_003.cfile', expected_data)
# #
# Unit test 39 # Unit test 39
# #
def test_039 (self): def test_039 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 1 expected_data = ["40 0b 07 ff ff ff ff"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_004.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_004.cfile', expected_data)
# #
# Unit test 40 # Unit test 40
# #
def test_040 (self): def test_040 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 10 expected_data = ["40 0b 07 ff ff ff ff"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_005.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_005.cfile', expected_data)
# #
# Unit test 41 # Unit test 41
# #
def test_041 (self): def test_041 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 3 expected_data = ["40 0b 07 55 55 55 55"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_006.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_006.cfile', expected_data)
# #
# Unit test 42 # Unit test 42
# #
def test_042 (self): def test_042 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 10 expected_data = ["40 0b 07 55 55 55 55"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_007.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_007.cfile', expected_data)
# #
# Unit test 43 # Unit test 43
# #
def test_043 (self): def test_043 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 1 expected_data = ["40 0b 07 88 88 88 88"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_008.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_008.cfile', expected_data)
# #
# Unit test 44 # Unit test 44
# #
def test_044 (self): def test_044 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 5 expected_data = ["40 0b 07 88 88 88 88"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_009.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_009.cfile', expected_data)
# #
# Unit test 45 # Unit test 45
# #
def test_045 (self): def test_045 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 10 expected_data = ["40 0b 07 88 88 88 88"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_010.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-7_bw125_sf7_crc1_pwr1_010.cfile', expected_data)
nextSeriesSetting = 5 nextSeriesSetting = 5
testResults.append([]) testResults.append([])
@ -527,77 +539,77 @@ class qa_BasicTest (gr_unittest.TestCase):
# #
def test_046 (self): def test_046 (self):
expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10 expected_data = ["80 0b 01 01 23 45 67 89 ab cd ef"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_000.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_000.cfile', expected_data)
# #
# Unit test 47 # Unit test 47
# #
def test_047 (self): def test_047 (self):
expected_data = ["30 0b 02 11 11 11"] * 1 expected_data = ["30 0b 02 11 11 11"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_001.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_001.cfile', expected_data)
# #
# Unit test 48 # Unit test 48
# #
def test_048 (self): def test_048 (self):
expected_data = ["30 0b 02 11 11 11"] * 5 expected_data = ["30 0b 02 11 11 11"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_002.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_002.cfile', expected_data)
# #
# Unit test 49 # Unit test 49
# #
def test_049 (self): def test_049 (self):
expected_data = ["40 0b 07 aa aa aa aa"] * 3 expected_data = ["40 0b 07 aa aa aa aa"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_003.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_003.cfile', expected_data)
# #
# Unit test 50 # Unit test 50
# #
def test_050 (self): def test_050 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 1 expected_data = ["40 0b 07 ff ff ff ff"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_004.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_004.cfile', expected_data)
# #
# Unit test 51 # Unit test 51
# #
def test_051 (self): def test_051 (self):
expected_data = ["40 0b 07 ff ff ff ff"] * 10 expected_data = ["40 0b 07 ff ff ff ff"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_005.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_005.cfile', expected_data)
# #
# Unit test 52 # Unit test 52
# #
def test_052 (self): def test_052 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 3 expected_data = ["40 0b 07 55 55 55 55"] * 3
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_006.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_006.cfile', expected_data)
# #
# Unit test 53 # Unit test 53
# #
def test_053 (self): def test_053 (self):
expected_data = ["40 0b 07 55 55 55 55"] * 10 expected_data = ["40 0b 07 55 55 55 55"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_007.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_007.cfile', expected_data)
# #
# Unit test 54 # Unit test 54
# #
def test_054 (self): def test_054 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 1 expected_data = ["40 0b 07 88 88 88 88"] * 1
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_008.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_008.cfile', expected_data)
# #
# Unit test 55 # Unit test 55
# #
def test_055 (self): def test_055 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 5 expected_data = ["40 0b 07 88 88 88 88"] * 5
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_009.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_009.cfile', expected_data)
# #
# Unit test 56 # Unit test 56
# #
def test_056 (self): def test_056 (self):
expected_data = ["40 0b 07 88 88 88 88"] * 10 expected_data = ["40 0b 07 88 88 88 88"] * 10
self.runWithFileSourceAndData('/home/william/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_010.cfile', expected_data) self.runWithFileSourceAndData('../../examples/lora-samples/hackrf_cr4-6_bw125_sf6_crc1_pwr1_010.cfile', expected_data)
self.lastTestComplete = True self.lastTestComplete = True
# nextSeriesSetting = 6 # nextSeriesSetting = 6
# testResults.append([]) # testResults.append([])