Пример #1
0
 def __init__(self, samples_per_symbol, bits_per_symbol, access_code='', pad_for_usrp=True):
     """
     packet_mod constructor.
     
     Args:
         samples_per_symbol: number of samples per symbol
         bits_per_symbol: number of bits per symbol
         access_code: AKA sync vector
         pad_for_usrp: If true, packets are padded such that they end up a multiple of 128 samples
         payload_length: number of bytes in a data-stream slice
     """
     #setup parameters
     self._samples_per_symbol = samples_per_symbol
     self._bits_per_symbol = bits_per_symbol
     self._pad_for_usrp = pad_for_usrp
     if not access_code: #get access code
         access_code = packet_utils.default_access_code
     if not packet_utils.is_1_0_string(access_code):
         raise ValueError, "Invalid access_code %r. Must be string of 1's and 0's" % (access_code,)
     self._access_code = access_code
     self._pad_for_usrp = pad_for_usrp
     #create blocks
     msg_source = blocks.message_source(gr.sizeof_char, DEFAULT_MSGQ_LIMIT)
     self._msgq_out = msg_source.msgq()
     #initialize hier2
     gr.hier_block2.__init__(
         self,
         "packet_encoder",
         gr.io_signature(0, 0, 0), # Input signature
         gr.io_signature(1, 1, gr.sizeof_char) # Output signature
     )
     #connect
     self.connect(msg_source, self)
Пример #2
0
 def __init__(self, packet_sink=None):
     #initialize hier2
     gr.hier_block2.__init__(
         self,
         "ofdm_mod",
         gr.io_signature(1, 1, packet_sink._hb.input_signature().sizeof_stream_item(0)), # Input signature
         gr.io_signature(1, 1, self._item_size_out) # Output signature
     )
     #create blocks
     msg_source = blocks.message_source(self._item_size_out, DEFAULT_MSGQ_LIMIT)
     self._msgq_out = msg_source.msgq()
     #connect
     self.connect(self, packet_sink)
     self.connect(msg_source, self)
     if packet_sink._hb.output_signature().sizeof_stream_item(0):
         self.connect(packet_sink,
                      blocks.null_sink(packet_sink._hb.output_signature().sizeof_stream_item(0)))
Пример #3
0
 def __init__(self, type='BER', win_size=default_win_size, bits_per_symbol=2):
     """
     Error rate constructor.
     
     Args:
         type: a string 'BER' or 'SER'
         win_size: the number of samples to calculate over
         bits_per_symbol: the number of information bits per symbol (BER only)
     """
     #init
     gr.hier_block2.__init__(
         self, 'error_rate',
         gr.io_signature(2, 2, gr.sizeof_char),
         gr.io_signature(1, 1, gr.sizeof_float),
     )
     assert type in ('BER', 'SER')
     self._max_samples = win_size
     self._bits_per_symbol = bits_per_symbol
     #setup message queue
     msg_source = blocks.message_source(gr.sizeof_float, 1)
     self._msgq_source = msg_source.msgq()
     msgq_sink = gr.msg_queue(2)
     msg_sink = blocks.message_sink(gr.sizeof_char, msgq_sink, False) #False -> blocking
     inter = blocks.interleave(gr.sizeof_char)
     #start thread
     self._num_errs = 0
     self._err_index = 0
     self._num_samps = 0
     self._err_array = numpy.zeros(self._max_samples, numpy.int8)
     if type == 'BER':
         input_watcher(msgq_sink, self._handler_ber)
     elif type == 'SER':
         input_watcher(msgq_sink, self._handler_ser)
     #connect
     self.connect(msg_source, self)
     self.connect((self, 0), (inter, 0))
     self.connect((self, 1), (inter, 1))
     self.connect(inter, msg_sink)