diff options
author | Piotr Krysik <ptrkrysik@gmail.com> | 2017-09-19 08:05:28 +0200 |
---|---|---|
committer | Piotr Krysik <ptrkrysik@gmail.com> | 2017-09-19 08:05:28 +0200 |
commit | 27f003267c044f4d416128fcb5cc40721a9fef77 (patch) | |
tree | 268ce2fc53a0fac047467bbbec1cfbef0ecac5f7 /python/transmitter | |
parent | 902f4ebaf0785dd410253e5925770dc9c20b8084 (diff) |
Adding block for tagging bursts
Diffstat (limited to 'python/transmitter')
-rw-r--r-- | python/transmitter/CMakeLists.txt | 3 | ||||
-rw-r--r-- | python/transmitter/txtime_bursts_tagger.py | 46 |
2 files changed, 39 insertions, 10 deletions
diff --git a/python/transmitter/CMakeLists.txt b/python/transmitter/CMakeLists.txt index 38a8c39..121ac8a 100644 --- a/python/transmitter/CMakeLists.txt +++ b/python/transmitter/CMakeLists.txt @@ -17,6 +17,7 @@ # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. -install(FILES +GR_PYTHON_INSTALL( + FILES txtime_bursts_tagger.py DESTINATION ${GR_PYTHON_DIR}/grgsm ) diff --git a/python/transmitter/txtime_bursts_tagger.py b/python/transmitter/txtime_bursts_tagger.py index ce57e55..41cb53b 100644 --- a/python/transmitter/txtime_bursts_tagger.py +++ b/python/transmitter/txtime_bursts_tagger.py @@ -21,27 +21,55 @@ # # -import numpy from gnuradio import gr +from fn_time import fn_time_delta +import pmt +import numpy class txtime_bursts_tagger(gr.basic_block): """ A block that adds txtime metadata to a burst """ - def __init__(self): + def __init__(self, init_fn=0, init_time=0, time_hint=None): gr.basic_block.__init__(self, name="txtime_bursts_tagger", in_sig=[], out_sig=[]) + self.set_fn_time_reference(init_fn, init_time) + if time_hint is not None: + self.set_time_hint(time_hint) + self.message_port_register_in(pmt.intern("fn_time")) self.message_port_register_in(pmt.intern("bursts")) self.message_port_register_out(pmt.intern("bursts")) - - self.set_msg_handler(pmt.intern("fn_time"), self.set_fn_time_reference) - self.set_msg_handler(pmt.intern("bursts"), self.set_txtime_of_burst) + + self.set_msg_handler(pmt.intern("fn_time"), self.process_fn_time_reference) + self.set_msg_handler(pmt.intern("bursts"), self.process_txtime_of_burst) - def set_fn_time_reference(self, msg): - pass + def process_fn_time_reference(self, msg): + time_hint = pmt.to_python(pmt.dict_ref(pmt.car(msg), (pmt.intern("time_hint"),PMT_NIL))) + fn_time = pmt.to_python(pmt.dict_ref(pmt.car(msg), (pmt.intern("fn_time"),PMT_NIL))) + if time_hint is not None: + self.time_hint = time_hint + elif fn_time is not None: + self.fn_ref = pmt.car(fn_time) + self.time_ref = pmt.cdr(fn_time) + self.time_hint = self.time_ref + + def process_txtime_of_burst(self, msg): + burst_with_header = pmt.to_python(pmt.cdr(msg)) + fn = burst_with_header[11]+burst_with_header[10]*2**8+burst_with_header[9]*2**16+burst_with_header[8]*2**24 + ts_num = burst_with_header[3] + fn_delta, txtime = fn_time_delta(self.fn_ref, self.time_ref, fn, self.time_hint, ts_num) + tags_dict = pmt.dict_add(pmt.make_dict(), pmt.intern("txtime"), pmt.from_double(txtime)) + new_msg = pmt.cons(tags_dict, pmt.cdr(msg)) + self.message_port_pub(pmt.intern("bursts"), new_msg) - def set_txtime_of_burst() - pass + def set_fn_time_reference(self, init_fn, init_time): + self.fn_ref = init_fn + self.time_ref = init_time + self.set_time_hint(init_time) + + def set_time_hint(self, time_hint): + self.time_hint = time_hint + |