Ejemplo n.º 1
0
  def add_mobile_station(self,station_id):
    """
    Adds new receiver mobile station. Station ID must be unique. Initializes
    BER reference source.
    """

    # Initialize
    id_src = self._control._id_source
    dmux = self._data_multiplexer
    port = self._data_multiplexer_nextport
    self._data_multiplexer_nextport += 1

    # Setup
    ctrl_port = self._control.add_mobile_station(station_id)
    options = self._options
    if options.imgxfer:
      ref_src = ofdm.imgtransfer_src( options.img )
    else:
      ref_src = ber_reference_source(self._options)
    
    if(options.coding):
        ## Encoder
        encoder = self._encoder = ofdm.encoder_bb(fo,0)
        unpack = self._unpack = blocks.unpack_k_bits_bb(2)
        
        ## Puncturing
        if not options.nopunct:
            puncturing = self._puncturing = puncture_bb(options.subcarriers)
            #sah = gr.sample_and_hold_bb()
            #sah_trigger = blocks.vector_source_b([1,0],True)
            #decim_sah=gr.keep_one_in_n(gr.sizeof_char,2)
            self.connect(self._bitmap_trigger_puncturing,(puncturing,2))
            frametrigger_bitmap_filter = blocks.vector_source_b([1,0],True)
            bitmap_filter = self._puncturing_bitmap_src_filter = skip(gr.sizeof_char*options.subcarriers,2)# skip_known_symbols(frame_length,subcarriers)
            bitmap_filter.skip_call(0)
            #self.connect(self._bitmap_src_puncturing,bitmap_filter,(puncturing,1))
            self.connect(self._map_src,bitmap_filter,(puncturing,1))
            self.connect(frametrigger_bitmap_filter,(bitmap_filter,1))
            #bmt = gr.char_to_float()
            #self.connect(bitmap_filter,blocks.vector_to_stream(gr.sizeof_char,options.subcarriers), bmt)
            #log_to_file(self, bmt, "data/bitmap_filter_tx.float")
            
        self.connect((self._control,ctrl_port),ref_src,encoder,unpack)
        if not options.nopunct:
            self.connect(unpack,puncturing,(dmux,port))
            #self.connect(sah_trigger, (sah,1))
        else:
            self.connect(unpack,(dmux,port))
    else:
        self.connect((self._control,ctrl_port),ref_src,(dmux,port))
    
    if options.log and options.coding:
        log_to_file(self, encoder, "data/encoder_out.char")
        log_to_file(self, ref_src, "data/reference_data_src.char")
        log_to_file(self, unpack, "data/encoder_unpacked_out.char")
        if not options.nopunct:
            log_to_file(self, puncturing, "data/puncturing_out.char")
Ejemplo n.º 2
0
    def __init__(self):
        gr.top_block.__init__(self)
        sig_src = gr.sig_source_i(200,gr.GR_CONST_WAVE,0,0,3600)
        src = ofdm.imgtransfer_src( "test.bmp" )

        UDP_PACKET_SIZE = 4096

        imgsink = ofdm.imgtransfer_sink( UDP_PACKET_SIZE,
                                         "127.0.0.1", 0, "127.0.0.1", 45454, "test.bmp" )

        self.connect(sig_src,(src,0))
        self.connect(sig_src,(imgsink,0))

        self.connect(src,(imgsink,1))
Ejemplo n.º 3
0
    def __init__(self):
        gr.top_block.__init__(self)
        sig_src = gr.sig_source_i(200, gr.GR_CONST_WAVE, 0, 0, 3600)
        src = ofdm.imgtransfer_src("test.bmp")

        UDP_PACKET_SIZE = 4096

        imgsink = ofdm.imgtransfer_sink(UDP_PACKET_SIZE, "127.0.0.1", 0,
                                        "127.0.0.1", 45454, "test.bmp")

        self.connect(sig_src, (src, 0))
        self.connect(sig_src, (imgsink, 0))

        self.connect(src, (imgsink, 1))
Ejemplo n.º 4
0
    def __init__(self):
        gr.top_block.__init__(self)
        #sig_src = gr.sig_source_i(512,gr.GR_SIN_WAVE,0.1,1000,3600)
        sig_src = gr.sig_source_i(200, gr.GR_CONST_WAVE, 0, 0, 3600)
        #sig_src = gr.noise_source_i(gr.GR_UNIFORM, 1000)
        src_file = "test.bmp"
        src = ofdm.imgtransfer_src(src_file)
        err_src = ofdm.bernoulli_bit_src(0.01)
        test_channel = ofdm.imgtransfer_testkanal()

        sequenz = [0] * 256
        for i in range(256):
            sample = random()
            if sample < 0.1:
                sequenz[i] = randint(-100, 100) * 3

        print sequenz

        vector_src = gr.vector_source_i(sequenz, True)
        add_block = gr.add_ii()

        self.connect(vector_src, (add_block, 0))
        self.connect(sig_src, (add_block, 1))

        xor = gr.xor_bb()

        UDP_PACKET_SIZE = 4096

        imgsink = ofdm.imgtransfer_sink(UDP_PACKET_SIZE, "127.0.0.1", 0,
                                        "127.0.0.1", 45454, src_file)

        self.connect(sig_src, (src, 0))
        self.connect(sig_src, (test_channel, 0))
        self.connect(add_block, (imgsink, 0))

        self.connect(src, (test_channel, 1))
        self.connect(vector_src, (test_channel, 2))

        self.connect(test_channel, (xor, 0))
        self.connect(err_src, (xor, 1))

        self.connect(xor, (imgsink, 1))
Ejemplo n.º 5
0
    def __init__(self):
        gr.top_block.__init__(self)
        #sig_src = gr.sig_source_i(512,gr.GR_SIN_WAVE,0.1,1000,3600)
        sig_src = gr.sig_source_i(200,gr.GR_CONST_WAVE,0,0,3600)
        #sig_src = gr.noise_source_i(gr.GR_UNIFORM, 1000)
        src_file = "test.bmp"
        src = ofdm.imgtransfer_src( src_file )
        err_src = ofdm.bernoulli_bit_src( 0.01 )
        test_channel = ofdm.imgtransfer_testkanal()

        sequenz = [0]*256
        for i in range(256):
          sample = random()
          if sample<0.1:
            sequenz[i]=randint(-100,100)*3

        print sequenz

        vector_src = gr.vector_source_i(sequenz,True)
        add_block = gr.add_ii()

        self.connect(vector_src,(add_block,0))
        self.connect(sig_src,(add_block,1))

        xor = gr.xor_bb()

        UDP_PACKET_SIZE = 4096

        imgsink = ofdm.imgtransfer_sink( UDP_PACKET_SIZE, "127.0.0.1", 0, "127.0.0.1", 45454, src_file )

        self.connect(sig_src,(src,0))
        self.connect(sig_src,(test_channel,0))
        self.connect(add_block,(imgsink,0))

        self.connect(src,(test_channel,1))
        self.connect(vector_src,(test_channel,2))

        self.connect(test_channel,(xor,0))
        self.connect(err_src,(xor,1))

        self.connect(xor,(imgsink,1))
Ejemplo n.º 6
0
    def add_mobile_station(self, station_id):
        """
    Adds new receiver mobile station. Station ID must be unique. Initializes
    BER reference source.
    """

        # Initialize
        id_src = self._control._id_source
        dmux = self._data_multiplexer
        port = self._data_multiplexer_nextport
        self._data_multiplexer_nextport += 1

        # Setup
        ctrl_port = self._control.add_mobile_station(station_id)
        options = self._options
        if options.imgxfer:
            ref_src = ofdm.imgtransfer_src(options.img)
        else:
            ref_src = ber_reference_source(self._options)

        if (options.coding):
            ## Encoder
            encoder = self._encoder = ofdm.encoder_bb(fo, 0)
            unpack = self._unpack = blocks.unpack_k_bits_bb(2)

            ## Puncturing
            if not options.nopunct:
                puncturing = self._puncturing = puncture_bb(
                    options.subcarriers)
                #sah = gr.sample_and_hold_bb()
                #sah_trigger = blocks.vector_source_b([1,0],True)
                #decim_sah=gr.keep_one_in_n(gr.sizeof_char,2)
                self.connect(self._bitmap_trigger_puncturing, (puncturing, 2))
                frametrigger_bitmap_filter = blocks.vector_source_b([1, 0],
                                                                    True)
                bitmap_filter = self._puncturing_bitmap_src_filter = skip(
                    gr.sizeof_char * options.subcarriers,
                    2)  # skip_known_symbols(frame_length,subcarriers)
                bitmap_filter.skip_call(0)
                #self.connect(self._bitmap_src_puncturing,bitmap_filter,(puncturing,1))
                self.connect(self._map_src, bitmap_filter, (puncturing, 1))
                self.connect(frametrigger_bitmap_filter, (bitmap_filter, 1))
                #bmt = gr.char_to_float()
                #self.connect(bitmap_filter,blocks.vector_to_stream(gr.sizeof_char,options.subcarriers), bmt)
                #log_to_file(self, bmt, "data/bitmap_filter_tx.float")

            self.connect((self._control, ctrl_port), ref_src, encoder, unpack)
            if not options.nopunct:
                self.connect(unpack, puncturing, (dmux, port))
                #self.connect(sah_trigger, (sah,1))
            else:
                self.connect(unpack, (dmux, port))
        else:
            self.connect((self._control, ctrl_port), ref_src, (dmux, port))

        if options.log and options.coding:
            log_to_file(self, encoder, "data/encoder_out.char")
            log_to_file(self, ref_src, "data/reference_data_src.char")
            log_to_file(self, unpack, "data/encoder_unpacked_out.char")
            if not options.nopunct:
                log_to_file(self, puncturing, "data/puncturing_out.char")