def __init__(self, ansibleFreqRx=2.4555e9, ansibleFreqTx=2.4505e9, ansibleID='1', ansibleIP='notValid', bw=250e3, offset=-250e3): gr.top_block.__init__(self, "Ansible Hydra Gr Client 1Tx 1Rx") ################################################## # Parameters ################################################## self.ansibleFreqRx = ansibleFreqRx self.ansibleFreqTx = ansibleFreqTx self.ansibleID = ansibleID self.ansibleIP = ansibleIP self.bw = bw self.offset = offset ################################################## # Variables ################################################## self.spreading_factor = spreading_factor = 8 self.samp_rate = samp_rate = 1e6 self.ldr = ldr = True self.header = header = False self.code_rate = code_rate = 4 ################################################## # Blocks ################################################## self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf( bw/samp_rate, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0_0.declare_sample_delay(0) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( samp_rate/bw, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) self.lora_mod_0 = lora.mod(spreading_factor, 0x12) self.lora_encode_0 = lora.encode(spreading_factor, code_rate, ldr, header) self.lora_demod_0 = lora.demod(spreading_factor, ldr, 25.0, 2) self.lora_decode_0 = lora.decode(spreading_factor, code_rate, ldr, header) self.hydra_gr_sink_0 = hydra.hydra_gr_client_sink(int(ansibleID), ansibleIP, 5000) self.hydra_gr_sink_0.start_client(ansibleFreqTx + samp_rate/2 + (samp_rate * int(ansibleID)), samp_rate, 1000) self.hydra_gr__source_0 = hydra.hydra_gr_client_source(int(ansibleID), ansibleIP, ansibleIP, 5000) self.hydra_gr__source_0.start_client(ansibleFreqRx + samp_rate/2 + (samp_rate * int(ansibleID)), samp_rate, 1000) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tap0', 1000, False) self.blocks_message_debug_0_0 = blocks.message_debug() ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.lora_encode_0, 'in')) self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.lora_demod_0, 'out'), (self.lora_decode_0, 'in')) self.msg_connect((self.lora_encode_0, 'out'), (self.lora_mod_0, 'in')) self.connect((self.hydra_gr__source_0, 0), (self.pfb_arb_resampler_xxx_0_0, 0)) self.connect((self.lora_mod_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.hydra_gr_sink_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0_0, 0), (self.lora_demod_0, 0))
def __init__(self, interface_name="tunCRTS", rx_server_port="52002", tx_server_address="192.168.1.55", tx_server_port="52001", rx_server_address="192.168.1.56"): gr.top_block.__init__(self, "Python Txrx") ################################################## # Parameters ################################################## self.interface_name = interface_name self.rx_server_port = rx_server_port self.tx_server_address = tx_server_address self.tx_server_port = tx_server_port self.rx_server_address = rx_server_address ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 ################################################## # Blocks ################################################## self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(interface_name, 10000, True) self.blocks_socket_pdu_1 = blocks.socket_pdu("TCP_SERVER", tx_server_address, tx_server_port, 10000, False) #important to pause here. Since two instances of this radio will be created that talk to on another, #the server blocks need a moment to get started so the client blocks can then connect to them. time.sleep(3) self.blocks_socket_pdu_0 = blocks.socket_pdu("TCP_CLIENT", rx_server_address, rx_server_port, 10000, False) ################################################## # Connections ################################################## self.msg_connect((self.blocks_socket_pdu_0, 'pdus'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.blocks_socket_pdu_1, 'pdus'))
def __init__(self, ampl=0.7, args='', arq_timeout=.1*0 + 0.04, dest_addr=-1, iface='tun0', mtu=128, ogradio_addr=0, port="12345", rate=1e6, rx_antenna="TX/RX", rx_gain=65-20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0, max_arq_attempts=5 * 2, tx_freq=915e6, rx_freq=915e6): gr.top_block.__init__(self, "Batmannogui") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.mtu = mtu self.ogradio_addr = ogradio_addr self.port = port self.rate = rate self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset self.max_arq_attempts = max_arq_attempts self.tx_freq = tx_freq self.rx_freq = rx_freq ################################################## # Variables ################################################## self.samp_rate = samp_rate = rate ################################################## # Blocks ################################################## self.gmsk_radio_0 = gmsk_radio( rate=samp_rate, args=args, tx_gain=tx_gain, tx_freq=tx_freq, rx_ant=rx_antenna, rx_freq=rx_freq, rx_gain=rx_gain, ampl=ampl, rx_lo_offset=rx_lo_offset, tx_lo_offset=tx_lo_offset, samps_per_sym=samps_per_sym, access_code_threshold=0 + 12 + 4*0, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu*0 + 1532, False) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.gmsk_radio_0, 'msg_in')) self.msg_connect((self.gmsk_radio_0, 'msg_out'), (self.blocks_tuntap_pdu_0, 'pdus'))
def __init__(self, options): gr.top_block.__init__(self) self.options = options # Blocks #self.app = test_app(self.options) self.tap = blocks.tuntap_pdu("tap0", 256) self.encap = mofdm.ofdm_mac_encap(self.options) self.mac = mofdm.ofdm_mac(self.options.tx_addr, self.options.ack_timeout, self.options.max_attempts, self.options.debug) self.phy = mofdm.ofdm_phy() self.scale = blocks.multiply_const_vcc((0.05, )) self.sink = uhd.usrp_sink( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.sink.set_samp_rate(self.options.sample_rate) self.sink.set_center_freq(self.options.tx_freq, 0) self.sink.set_gain(self.options.tx_gain, 0) self.sink.set_antenna("TX/RX", 0) self.src = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.src.set_samp_rate(self.options.sample_rate) self.src.set_center_freq(self.options.rx_freq, 0) self.src.set_gain(self.options.rx_gain, 0) self.src.set_antenna("TX/RX", 0) # Connections self.connect(self.phy, self.scale, self.sink) self.connect(self.src, self.phy) self.connect((self.phy, 1), self.mac) #if self.options.receive_only: # self.connect(self.src, blocks.complex_to_mag_squared(1), # blocks.file_sink(gr.sizeof_float, "rx_sample.dat")) # Message Connections self.msg_connect(self.mac, "to_phy", self.phy, "from_mac") self.msg_connect(self.phy, "to_mac", self.mac, "from_phy") self.msg_connect(self.tap, "pdus", self.encap, "from_tap") self.msg_connect(self.encap, "to_tap", self.tap, "pdus") self.msg_connect(self.encap, "to_mac", self.mac, "from_encap") self.msg_connect(self.mac, "to_encap", self.encap, "from_mac") self.msg_connect(self.mac, "monitor_out", self.encap, "monitor_in")
def __init__(self, addr, no_usrp, rate, lo_offset, encod, rime, otw, source, no_self_loop, debug_MAC): grc_wxgui.top_block_gui.__init__(self, title="TransceiverSlave") ################################################## # Variables ################################################## self.addr = addr self.no_usrp = no_usrp self.samp_rate = rate self.rime = rime self.otw = otw self.no_self_loop = no_self_loop self.debug_MAC = debug_MAC self.lo_offset = lo_offset ################################################## # Blocks ################################################## if self.no_usrp: self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, self.samp_rate * 1e6, True) ################################ ## Using files instead of USRPs ############################### self.blocks_slaveFileSource = blocks.file_source( gr.sizeof_gr_complex * 1, (os.getcwd() + "/masterFileSink"), True) self.blocks_slaveFileSink = blocks.file_sink( gr.sizeof_gr_complex * 1, (os.getcwd() + "/slaveFileSink"), False) self.blocks_slaveFileSink.set_unbuffered(False) else: ############ ## source ############ self.uhd_usrp_source_0 = uhd.usrp_source( ",".join((self.addr, "")), stream_args=uhd.stream_args( cpu_format="fc32", otw_format=self.otw, channels=range(1), ), ) # TODO Explain the usage self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) ############# ## sink ############# self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join((self.addr, "")), uhd.stream_args( cpu_format="fc32", otw_format=self.otw, channels=range(1), ), "packet_len", ) # TODO Explain the usage self.uhd_usrp_sink_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) # 802.15.4 PHY Layer O-QPSK #self.PHY = ieee802_15_4_phy() # 802.11 a,g,p PHY Layer OFDM # Encoding choices=[0,1,2,3,4,5,6,7]="BPSK 1/2", "BPSK 3/4", "QPSK 1/2", "QPSK 3/4", "16QAM 1/2", "16QAM 3/4", "64QAM 2/3", "64QAM 3/4" self.PHY = wifi_phy_hier(encoding=int(encod), ) # Foo block #TODO explain its usage self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 0, 10000) ## ?! ## (self.foo_packet_pad2_0).set_min_output_buffer(100000) # Multiply Const Block self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc( (0.38, )) #mult = 0.38 (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) # 802.15.4m MAC layer # self.MAC = mac(self.debug_MAC, self.no_self_loop) # 802.11 a,g,p OFDM MAC Layer self.ieee802_11_ofdm_mac_0 = ieee802_11.ofdm_mac( ([0x23, 0x23, 0x23, 0x23, 0x23, 0x23]), ([0x42, 0x42, 0x42, 0x42, 0x42, 0x42]), ([0xff, 0xff, 0xff, 0xff, 0xff, 0xff])) # ofdm_parse_mac block for debugging purpose TODO Modify it so that it parse the frames structure of the MAC am using self.ieee802_11_ofdm_parse_mac_0 = ieee802_11.ofdm_parse_mac( False, True) # Communication Layer RIME Stack self.ieee802_15_4_rime_stack_0 = ieee802_15_4.rime_stack( ([129]), ([131]), ([132]), ([23, 42])) # Ethernet Encapsulation #TODO explain its usage self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(True) ################################################## # Asynch Message Connections ################################################## if self.rime: if source == "tuntap": # Tuntap Block to quantify the achievable throughput self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, True) # istunFlag == True: TUN(IP Packet) # == False: TAP(Ethernet Frame) self.msg_connect(self.ieee802_11_ether_encap_0, "to tap", self.blocks_tuntap_pdu_0, "pdus") self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.ieee802_11_ether_encap_0, "from tap") self.msg_connect(self.ieee802_15_4_rime_stack_0, "bcout", self.ieee802_11_ether_encap_0, "from wifi") self.msg_connect(self.ieee802_11_ether_encap_0, "to wifi", self.ieee802_15_4_rime_stack_0, "bcin") else: #using PDU Sockets instead #TODO Test ME ! self.blocks_socket_pdu_0_Tx = blocks.socket_pdu( "UDP_SERVER", "localhost", "52004", 10000) self.blocks_socket_pdu_0_Rx = blocks.socket_pdu( "UDP_CLIENT", "localhost", "3333", 10000) self.msg_connect(self.ieee802_15_4_rime_stack_0, "bcout", self.self.blocks_socket_pdu_0_Rx, "pdus") self.msg_connect(self.blocks_socket_pdu_0_Tx, "pdus", self.ieee802_15_4_rime_stack_0, "bcin") self.msg_connect(self.ieee802_15_4_rime_stack_0, "toMAC", self.ieee802_11_ofdm_parse_mac_0, "app in") self.msg_connect(self.ieee802_11_ofdm_parse_mac_0, "app out", self.ieee802_15_4_rime_stack_0, "fromMAC") else: if source == "tuntap": # Tuntap Block to quantify the achievable throughput # istunFlag == True: TUN(IP Packet) # == False: TAP(Ethernet Frame) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, True) self.msg_connect(self.ieee802_11_ether_encap_0, "to tap", self.blocks_tuntap_pdu_0, "pdus") self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.ieee802_11_ether_encap_0, "from tap") self.msg_connect(self.ieee802_11_ofdm_mac_0, "app out", self.blocks_tuntap_pdu_0, "pdus") self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.ieee802_11_ofdm_mac_0, "app in") #print "Using Tap interface (IP) ==> No ethernet Encapsulation used !!" #self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, True) #self.msg_connect(self.ieee802_11_ofdm_mac_0, "app out", self.blocks_tuntap_pdu_0, "pdus") #self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.ieee802_11_ofdm_mac_0, "app in") else: ##using PDU Sockets instead #TODO Test ME ! self.blocks_socket_pdu_0_Tx = blocks.socket_pdu( "UDP_SERVER", "localhost", "52004", 10000) self.blocks_socket_pdu_0_Rx = blocks.socket_pdu( "UDP_CLIENT", "localhost", "3333", 10000) self.msg_connect(self.ieee802_11_ofdm_mac_0, "app out", self.blocks_socket_pdu_0_Rx, "pdus") self.msg_connect(self.blocks_socket_pdu_0_Tx, "pdus", self.ieee802_11_ofdm_mac_0, "app in") ## Debugging at the MAC level To parse at the level of MAC ! Look at the flowgraph ##self.msg_connect(self.PHY, "mac_out", self.ieee802_11_ofdm_parse_mac_0, "in") self.msg_connect(self.PHY, "mac_out", self.ieee802_11_ofdm_parse_mac_0, "in") self.msg_connect(self.PHY, "mac_out", self.ieee802_11_ofdm_mac_0, "phy in") self.msg_connect(self.ieee802_11_ofdm_mac_0, "phy out", self.PHY, "mac_in") ################################################## # Connections ################################################## if self.no_usrp: self.connect((self.PHY, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_slaveFileSource, 0), (self.PHY, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.blocks_slaveFileSink, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) else: self.connect((self.PHY, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.PHY, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0))
def __init__(self, ampl=0.7, args='', arq_timeout=.1*0 + 0.04, dest_addr=-1, iface='tun0', max_arq_attempts=5 * 2, mtu=128, ogradio_addr=0, ogrx_freq=915e6, ogtx_freq=915e6, port="12345", rate=1e6, rx_antenna="TX/RX", rx_gain=65-20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0): grc_wxgui.top_block_gui.__init__(self, title="Ofdmgui") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.max_arq_attempts = max_arq_attempts self.mtu = mtu self.ogradio_addr = ogradio_addr self.ogrx_freq = ogrx_freq self.ogtx_freq = ogtx_freq self.port = port self.rate = rate self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset ################################################## # Variables ################################################## self.user_tx_gain = user_tx_gain = tx_gain self.user_rx_gain = user_rx_gain = rx_gain self.tx_freq = tx_freq = 915e6 self.samp_rate = samp_rate = rate self.rx_freq = rx_freq = 915e6 ################################################## # Blocks ################################################## _user_tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, label="TX Gain", converter=forms.float_converter(), proportion=0, ) self._user_tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_tx_gain_sizer) _user_rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, label="RX Gain", converter=forms.float_converter(), proportion=0, ) self._user_rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_rx_gain_sizer) self._tx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.tx_freq, callback=self.set_tx_freq, label='tx_freq', converter=forms.float_converter(), ) self.Add(self._tx_freq_text_box) self._rx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.rx_freq, callback=self.set_rx_freq, label='rx_freq', converter=forms.float_converter(), ) self.Add(self._rx_freq_text_box) self.ofdm_radio_0 = ofdm_radio( rx_freq=rx_freq, rx_gain=user_rx_gain, rate=samp_rate, args=args, tx_freq=tx_freq, tx_gain=user_tx_gain, tx_lo_offset=tx_lo_offset, rx_lo_offset=rx_lo_offset, rx_ant=rx_antenna, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu*0 + 1532, False) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ofdm_radio_0, 'msg_in')) self.msg_connect((self.ofdm_radio_0, 'msg_out'), (self.blocks_tuntap_pdu_0, 'pdus'))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Transmitter") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 ################################################## # Blocks ################################################## self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("addr==192.168.10.2", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), "packet_len", ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(1000000, 0) self.uhd_usrp_sink_0.set_gain(0, 0) self.digital_packet_headergenerator_bb_0 = digital.packet_headergenerator_bb(digital.packet_header_default(40,"packet_len"), "packet_len") self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=2, bt=0.35, verbose=False, log=False, ) self.digital_crc32_bb_0 = digital.crc32_bb(False, "packet_len", True) self.digital_chunks_to_symbols_xx_1_0 = digital.chunks_to_symbols_bc((digital.constellation_bpsk().points()), 1) self.digital_chunks_to_symbols_xx_1 = digital.chunks_to_symbols_bc((digital.constellation_bpsk().points()), 1) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tun0', 10000, False) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, samp_rate,True) self.blocks_tagged_stream_mux_0 = blocks.tagged_stream_mux(gr.sizeof_gr_complex*1, "packet_len", 0) self.blocks_repack_bits_bb_0 = blocks.repack_bits_bb(8, 1, "packet_len", False, gr.GR_LSB_FIRST) self.blocks_pdu_to_tagged_stream_0 = blocks.pdu_to_tagged_stream(blocks.byte_t, 'packet_len') self.blks2_packet_encoder_0 = grc_blks2.packet_mod_c(grc_blks2.packet_encoder( samples_per_symbol=2, bits_per_symbol=1, preamble='', access_code='', pad_for_usrp=False, ), payload_length=0, ) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.blocks_pdu_to_tagged_stream_0, 'pdus')) self.connect((self.blks2_packet_encoder_0, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.blocks_pdu_to_tagged_stream_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_repack_bits_bb_0, 0), (self.digital_chunks_to_symbols_xx_1_0, 0)) self.connect((self.blocks_repack_bits_bb_0, 0), (self.digital_packet_headergenerator_bb_0, 0)) self.connect((self.blocks_tagged_stream_mux_0, 0), (self.blks2_packet_encoder_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.digital_crc32_bb_0, 0)) self.connect((self.digital_chunks_to_symbols_xx_1, 0), (self.blocks_tagged_stream_mux_0, 0)) self.connect((self.digital_chunks_to_symbols_xx_1_0, 0), (self.blocks_tagged_stream_mux_0, 1)) self.connect((self.digital_crc32_bb_0, 0), (self.blocks_repack_bits_bb_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.digital_packet_headergenerator_bb_0, 0), (self.digital_chunks_to_symbols_xx_1, 0))
def __init__(self, options): gr.top_block.__init__(self) self.options = options # Blocks #self.app = test_app(self.options) self.tap= blocks.tuntap_pdu("tap0", 256) self.encap = mofdm.ofdm_mac_encap(self.options) self.mac = mofdm.ofdm_mac(self.options.tx_addr, self.options.ack_timeout, self.options.max_attempts, self.options.debug) self.phy = mofdm.ofdm_phy() self.scale = blocks.multiply_const_vcc((0.05, )) self.sink = uhd.usrp_sink( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.sink.set_samp_rate(self.options.sample_rate) self.sink.set_center_freq(self.options.tx_freq, 0) self.sink.set_gain(self.options.tx_gain, 0) self.sink.set_antenna("TX/RX", 0) self.src = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.src.set_samp_rate(self.options.sample_rate) self.src.set_center_freq(self.options.rx_freq, 0) self.src.set_gain(self.options.rx_gain, 0) self.src.set_antenna("TX/RX", 0) # Connections self.connect(self.phy, self.scale, self.sink) self.connect(self.src, self.phy) self.connect((self.phy, 1), self.mac) #if self.options.receive_only: # self.connect(self.src, blocks.complex_to_mag_squared(1), # blocks.file_sink(gr.sizeof_float, "rx_sample.dat")) # Message Connections self.msg_connect(self.mac, "to_phy", self.phy, "from_mac") self.msg_connect(self.phy, "to_mac", self.mac, "from_phy") self.msg_connect(self.tap, "pdus", self.encap, "from_tap") self.msg_connect(self.encap, "to_tap", self.tap, "pdus") self.msg_connect(self.encap, "to_mac", self.mac, "from_encap") self.msg_connect(self.mac, "to_encap", self.encap, "from_mac") self.msg_connect(self.mac, "monitor_out", self.encap, "monitor_in")
def __init__(self, addr, no_usrp, rate, lo_offset, encod, otw, source, no_self_loop, debug_MAC): grc_wxgui.top_block_gui.__init__(self, title="TransceiverSlave") #FIXME how to get rid of the gui ################################################## # Variables ################################################## self.addr = addr self.no_usrp = no_usrp self.samp_rate = rate self.otw = otw self.no_self_loop = no_self_loop self.debug_MAC = debug_MAC self.lo_offset = lo_offset ################################################## # Blocks ################################################## if self.no_usrp: self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, self.samp_rate*1e6,True) ################################ ## Using files instead of USRPs ############################### self.blocks_slaveFileSource = blocks.file_source(gr.sizeof_gr_complex*1, (os.getcwd()+"/utils/fileSinkMaster"), True) self.blocks_slaveFileSink = blocks.file_sink(gr.sizeof_gr_complex*1, (os.getcwd()+"/utils/fileSinkSlave"), False) self.blocks_slaveFileSink.set_unbuffered(False) else: ############ ## source ############ self.uhd_usrp_source_0 = uhd.usrp_source(",".join((self.addr, "")), uhd.stream_args(cpu_format="fc32", otw_format=self.otw, channels=range(1),),) # TODO Explain the usage self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) ############# ## sink ############# self.uhd_usrp_sink_0 = uhd.usrp_sink(",".join((self.addr, "")), uhd.stream_args(cpu_format="fc32", otw_format=self.otw, channels=range(1),),"packet_len",) # TODO Explain the usage self.uhd_usrp_sink_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) # 802.11 a,g,p PHY Layer OFDM # Encoding choices=[0,1,2,3,4,5,6,7]="BPSK 1/2", "BPSK 3/4", "QPSK 1/2", "QPSK 3/4", "16QAM 1/2", "16QAM 3/4", "64QAM 2/3", "64QAM 3/4" print "Encoding Used: ", int(encod) #FIXME add the equivalent scheme self.PHY = wifi_phy_hier( encoding=int(encod), ) # Foo block #TODO explain its usage self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 0, 10000) ## ?! ## (self.foo_packet_pad2_0).set_min_output_buffer(100000) # Multiply Const Block self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.38, )) #mult = 0.38 (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) # 802.11 a,g,p OFDM MAC Layer self.ieee802_11_ofdm_mac_0 = ieee802_11.ofdm_mac(([0x43, 0x43, 0x43, 0x43, 0x43, 0x43]), ([0x42, 0x42, 0x42, 0x42, 0x42, 0x42]), ([0xff, 0xff, 0xff, 0xff, 0xff, 0xff])) # ofdm_parse_mac block for debugging purpose self.ieee802_11_ofdm_parse_mac_0 = ieee802_11.ofdm_parse_mac(False, False) # Ethernet Encapsulation #TODO explain its usage self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(True) # /////////////////////////////////////////////////////////////////////////////////////////////////////// # Set virtual ethernet interface (tap0), relays packets between the interface and the GNU Radio PHY+MAC # Use the Universal TUN/TAP device driver to move packets to/from kernel # See /usr/src/linux/Documentation/networking/tuntap.txt # /////////////////////////////////////////////////////////////////////////////////////////////////////// if source == "tuntap": self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) ################################################## # Asynch Message Connections ##################################################i self.msg_connect(self.ieee802_11_ether_encap_0, "to tap", self.blocks_tuntap_pdu_0, "pdus") self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.ieee802_11_ether_encap_0, "from tap") self.msg_connect(self.ieee802_11_ether_encap_0, "to wifi", self.ieee802_11_ofdm_mac_0, "app in") self.msg_connect(self.ieee802_11_ofdm_mac_0, "app out", self.ieee802_11_ether_encap_0, "from wifi") else: # UDP_Sockets #TODO Test me ! self.blocks_socket_pdu_0_Tx = blocks.socket_pdu("UDP_SERVER", "localhost", "52004", 10000) self.blocks_socket_pdu_0_Rx = blocks.socket_pdu("UDP_CLIENT", "localhost", "3333", 10000) self.msg_connect(self.ieee802_11_ofdm_mac_0, "app out", self.blocks_socket_pdu_0_Rx, "pdus") self.msg_connect(self.blocks_socket_pdu_0_Tx, "pdus" , self.ieee802_11_ofdm_mac_0, "app in") ## Debugging at the MAC level To parse at the level of MAC ! Look at the flowgraph self.msg_connect(self.PHY, "mac_out", self.ieee802_11_ofdm_parse_mac_0, "in") #TODO Test me ! self.msg_connect(self.PHY, "mac_out", self.ieee802_11_ofdm_mac_0, "phy in") self.msg_connect(self.ieee802_11_ofdm_mac_0, "phy out", self.PHY, "mac_in") ################################################## # Connections ################################################## if self.no_usrp: self.connect((self.PHY, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_slaveFileSource, 0), (self.PHY, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.blocks_slaveFileSink, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) else: self.connect((self.PHY, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.PHY, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) if not self.lo_offset: self.lo_offset = self.samp_rate / 2.0 print "LO offset set to: ", self.lo_offset/1e6, "MHz"
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Receiver") ################################################## # Variables ################################################## self.samp_rate = samp_rate = 1000000 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(1000000, 0) self.uhd_usrp_source_0.set_gain(0, 0) self.low_pass_filter_0 = filter.interp_fir_filter_ccf(1, firdes.low_pass( 32, samp_rate, 0.45*samp_rate, 10000, firdes.WIN_HAMMING, 6.76)) self.digital_packet_headerparser_b_0 = digital.packet_headerparser_b(digital.packet_header_default(40,"packet_len")) self.digital_header_payload_demux_0 = digital.header_payload_demux( 40, 1, 0, "packet_len", '', True, gr.sizeof_gr_complex, "rx_time", samp_rate, (""), 0, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=2, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.digital_crc32_bb_0_0 = digital.crc32_bb(True, "packet_len", True) self.digital_constellation_decoder_cb_0_0 = digital.constellation_decoder_cb(digital.constellation_bpsk().base()) self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(digital.constellation_bpsk().base()) self.blocks_tuntap_pdu_1 = blocks.tuntap_pdu('tun1', 10000, False) self.blocks_tagged_stream_to_pdu_0 = blocks.tagged_stream_to_pdu(blocks.byte_t, 'packet_len') self.blocks_tag_debug_0 = blocks.tag_debug(gr.sizeof_char*1, 'test', ""); self.blocks_tag_debug_0.set_display(False) self.blocks_repack_bits_bb_0_0 = blocks.repack_bits_bb(1, 8, "packet_len", True, gr.GR_LSB_FIRST) self.blocks_float_to_char_0 = blocks.float_to_char(1, 1) self.blks2_packet_decoder_0 = grc_blks2.packet_demod_c(grc_blks2.packet_decoder( access_code='', threshold=-1, callback=lambda ok, payload: self.blks2_packet_decoder_0.recv_pkt(ok, payload), ), ) self.analog_const_source_x_0 = analog.sig_source_f(0, analog.GR_CONST_WAVE, 0, 0, 1) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tagged_stream_to_pdu_0, 'pdus'), (self.blocks_tuntap_pdu_1, 'pdus')) self.msg_connect((self.digital_packet_headerparser_b_0, 'header_data'), (self.digital_header_payload_demux_0, 'header_data')) self.connect((self.analog_const_source_x_0, 0), (self.blocks_float_to_char_0, 0)) self.connect((self.blks2_packet_decoder_0, 0), (self.digital_header_payload_demux_0, 0)) self.connect((self.blocks_float_to_char_0, 0), (self.digital_header_payload_demux_0, 1)) self.connect((self.blocks_repack_bits_bb_0_0, 0), (self.digital_crc32_bb_0_0, 0)) self.connect((self.digital_constellation_decoder_cb_0, 0), (self.digital_packet_headerparser_b_0, 0)) self.connect((self.digital_constellation_decoder_cb_0_0, 0), (self.blocks_repack_bits_bb_0_0, 0)) self.connect((self.digital_crc32_bb_0_0, 0), (self.blocks_tag_debug_0, 0)) self.connect((self.digital_crc32_bb_0_0, 0), (self.blocks_tagged_stream_to_pdu_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.blks2_packet_decoder_0, 0)) self.connect((self.digital_header_payload_demux_0, 0), (self.digital_constellation_decoder_cb_0, 0)) self.connect((self.digital_header_payload_demux_0, 1), (self.digital_constellation_decoder_cb_0_0, 0)) self.connect((self.low_pass_filter_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.low_pass_filter_0, 0))
def __init__(self, **param): gr.top_block.__init__(self, "Enb Ping") ################################################## # Variables ################################################## # print param try: if param['Bandwidth'] == '1.4': self.prbl = prbl = 6 self.fftl = fftl = 128 self.multiply_const = multiply_const = 128.0 else: self.prbl = prbl = 15 self.fftl = fftl = 256 self.multiply_const = multiply_const = 256.0 if param['samp_rate_G'] == '2M': self.samp_rate = samp_rate = 2000000 else: self.samp_rate = samp_rate = 4000000 if param['mod_type_d'] == 'QPSK': self.mod_type_d = mod_type_d = 2 else: self.mod_type_d = mod_type_d = 4 if param['mod_type_u'] == 'QPSK': self.mod_type_u = mod_type_u = 2 else: self.mod_type_u = mod_type_u = 4 self.threshold = threshold = float(param['Threshold']) self.gain_r = gain_r = int(param['gain_r_G']) self.gain_s = gain_s = int(param['gain_s_G']) self.RNTI_A = RNTI_A = int(param['RNTI_A']) self.id_cell = id_cell = int(param['id_cell']) self.rate_d = rate_d = float(param['exp_code_rate_d_G']) self.rate_u = rate_u = float(param['exp_code_rate_u_G']) self.DMRS2_G = DMRS2_G = int(param['DMRS2_G']) self.sacle_0 = sacle_0 = 1024 self.sacle = sacle = 1024 except: print '变量初始化失败' ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="addr=192.168.10.2", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(1e9, 0) self.uhd_usrp_source_0.set_gain(gain_r, 0) self.uhd_usrp_source_0.set_bandwidth(1.5e6, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( device_addr="addr=192.168.10.2", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(9.0e8, 0) self.uhd_usrp_sink_0.set_gain(gain_s, 0) self.uhd_usrp_sink_0.set_bandwidth(1.5e6, 0) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=25, decimation=24, taps=None, fractional_bw=None, ) self.lte_sat_ul_subframe_demapper_0 = lte_sat.ul_subframe_demapper( id_cell, prbl) self.lte_sat_ul_baseband_sync_0 = lte_sat.ul_baseband_sync( prbl, fftl, id_cell, 0.7, False) self.lte_sat_layer2_0 = lte_sat.layer2(id_cell, prbl, mod_type_d, rate_d, mod_type_u, rate_u, DMRS2_G, False) self.lte_sat_dl_subframe_mapper_0_0 = lte_sat.dl_subframe_mapper( prbl, id_cell, False) self.lte_sat_dl_baseband_generator_0 = lte_sat.dl_baseband_generator( prbl, fftl) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tun0", 10000) ################################################## # Connections ################################################## self.connect((self.rational_resampler_xxx_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.lte_sat_dl_baseband_generator_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.lte_sat_ul_baseband_sync_0, 0), (self.lte_sat_ul_subframe_demapper_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.lte_sat_ul_baseband_sync_0, 0)) self.connect((self.lte_sat_ul_subframe_demapper_0, 0), (self.lte_sat_layer2_0, 0)) self.connect((self.lte_sat_dl_subframe_mapper_0_0, 0), (self.lte_sat_dl_baseband_generator_0, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.lte_sat_ul_subframe_demapper_0, "sr_ta", self.lte_sat_layer2_0, "sr_ta") self.msg_connect(self.lte_sat_dl_subframe_mapper_0_0, "sched_for_ul", self.lte_sat_ul_subframe_demapper_0, "sched_for_ul") self.msg_connect(self.lte_sat_ul_baseband_sync_0, "TA_info", self.lte_sat_ul_subframe_demapper_0, "TA_inf") self.msg_connect(self.lte_sat_layer2_0, "sdus", self.blocks_tuntap_pdu_0, "pdus") self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.lte_sat_layer2_0, "pdus") self.msg_connect(self.lte_sat_layer2_0, "sched_info", self.lte_sat_dl_subframe_mapper_0_0, "sched_info")
def __init__(self, ansibleFreqRx=919.75e6, ansibleFreqTx=919.75e6, ansibleID='1', bw=250e3, offset=-250e3): gr.top_block.__init__(self, "Ansible Usrp 1Tx 1Rx") ################################################## # Parameters ################################################## self.ansibleFreqRx = ansibleFreqRx self.ansibleFreqTx = ansibleFreqTx self.ansibleID = ansibleID self.bw = bw self.offset = offset ################################################## # Variables ################################################## self.spreading_factor = spreading_factor = 8 self.samp_rate = samp_rate = 1e6 self.ldr = ldr = True self.header = header = False self.code_rate = code_rate = 4 ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(('', '')), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq( ansibleFreqRx + samp_rate / 2 + (samp_rate * int(ansibleID)), 0) self.uhd_usrp_source_0.set_gain(0, 0) self.uhd_usrp_source_0.set_antenna("RX2", 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq( ansibleFreqTx + samp_rate / 2 + (samp_rate * int(ansibleID)), 0) self.uhd_usrp_sink_0.set_gain(0.7, 0) self.uhd_usrp_sink_0.set_antenna("TX/RX", 0) self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf(bw / samp_rate, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0_0.declare_sample_delay(0) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf(samp_rate / bw, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) self.lora_mod_0 = lora.mod(spreading_factor, 0x12) self.lora_encode_0 = lora.encode(spreading_factor, code_rate, ldr, header) self.lora_demod_0 = lora.demod(spreading_factor, ldr, 25.0, 2) self.lora_decode_0 = lora.decode(spreading_factor, code_rate, ldr, header) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tap + ansibleID', 1000, False) self.blocks_rotator_cc_0_0 = blocks.rotator_cc( (2 * math.pi * offset) / samp_rate) self.blocks_rotator_cc_0 = blocks.rotator_cc( (2 * math.pi * offset) / samp_rate) self.blocks_message_debug_0_0 = blocks.message_debug() ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.lora_encode_0, 'in')) self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.lora_demod_0, 'out'), (self.lora_decode_0, 'in')) self.msg_connect((self.lora_encode_0, 'out'), (self.lora_mod_0, 'in')) self.connect((self.blocks_rotator_cc_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) self.connect((self.blocks_rotator_cc_0_0, 0), (self.pfb_arb_resampler_xxx_0_0, 0)) self.connect((self.lora_mod_0, 0), (self.blocks_rotator_cc_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0_0, 0), (self.lora_demod_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_rotator_cc_0_0, 0))
def __init__(self, ampl=0.7, args='', arq_timeout=.1*0 + 0.04, dest_addr=-1, iface='tun0', max_arq_attempts=5 * 2, mtu=128, ogradio_addr=0, ogrx_freq=915e6, ogtx_freq=915e6, port="12345", rate=1e6, rx_antenna="TX/RX", rx_gain=65-20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0): grc_wxgui.top_block_gui.__init__(self, title="Broadcastwithfreqnomac") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.max_arq_attempts = max_arq_attempts self.mtu = mtu self.ogradio_addr = ogradio_addr self.ogrx_freq = ogrx_freq self.ogtx_freq = ogtx_freq self.port = port self.rate = rate self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset ################################################## # Variables ################################################## self.user_tx_gain = user_tx_gain = tx_gain self.user_rx_gain = user_rx_gain = rx_gain self.tx_freq = tx_freq = 915e6 self.samp_rate = samp_rate = rate self.rx_freq = rx_freq = 915e6 ################################################## # Blocks ################################################## _user_tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, label="TX Gain", converter=forms.float_converter(), proportion=0, ) self._user_tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_tx_gain_sizer) _user_rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, label="RX Gain", converter=forms.float_converter(), proportion=0, ) self._user_rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_rx_gain_sizer) self._tx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.tx_freq, callback=self.set_tx_freq, label='tx_freq', converter=forms.float_converter(), ) self.Add(self._tx_freq_text_box) self._rx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.rx_freq, callback=self.set_rx_freq, label='rx_freq', converter=forms.float_converter(), ) self.Add(self._rx_freq_text_box) self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( self.GetWin(), title="RX", sample_rate=samp_rate, v_scale=0.02, v_offset=0, t_scale=0.0001, ac_couple=False, xy_mode=False, num_inputs=2, trig_mode=wxgui.TRIG_MODE_NORM, y_axis_label="Counts", ) self.GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) self.gmsk_radio_0 = gmsk_radio( access_code_threshold=0 + 12 + 4*0, samps_per_sym=samps_per_sym, tx_lo_offset=tx_lo_offset, rx_lo_offset=rx_lo_offset, ampl=ampl, rx_gain=user_rx_gain, rx_freq=rx_freq, rx_ant=rx_antenna, tx_freq=tx_freq, tx_gain=user_tx_gain, args=args, rate=samp_rate, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu*0 + 1532, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((1, )) self.blocks_moving_average_xx_0 = blocks.moving_average_ff(10000, 1./10000, 40000/4) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.gmsk_radio_0, 'msg_in')) self.msg_connect((self.gmsk_radio_0, 'msg_out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_moving_average_xx_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_scopesink2_0_0, 1)) self.connect((self.blocks_moving_average_xx_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.gmsk_radio_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.gmsk_radio_0, 0), (self.wxgui_scopesink2_0_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Wifi Transceiver Juan") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.tx_gain = tx_gain = 15 self.samp_rate_0 = samp_rate_0 = 20e6 self.samp_rate = samp_rate = 10e6 self.rx_gain = rx_gain = 5 self.oversampling = oversampling = 4 self.mult = mult = 0.38 self.lo_offset = lo_offset = 0 self.freq = freq = 5.89e9 self.encoding = encoding = 0 ################################################## # Blocks ################################################## self._samp_rate_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.samp_rate, callback=self.set_samp_rate, label="Sample Rate", choices=[5e6, 10e6, 20e6], labels=["5MHz", "10 MHz", "20 MHz"], style=wx.RA_HORIZONTAL, ) self.Add(self._samp_rate_chooser) _mult_sizer = wx.BoxSizer(wx.VERTICAL) self._mult_text_box = forms.text_box( parent=self.GetWin(), sizer=_mult_sizer, value=self.mult, callback=self.set_mult, label='mult', converter=forms.float_converter(), proportion=0, ) self._mult_slider = forms.slider( parent=self.GetWin(), sizer=_mult_sizer, value=self.mult, callback=self.set_mult, minimum=0, maximum=1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_mult_sizer) self._encoding_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.encoding, callback=self.set_encoding, label="Encoding", choices=[0, 1, 2, 3, 4, 5, 6, 7], labels=[ "BPSK 1/2", "BPSK 3/4", "QPSK 1/2", "QPSK 3/4", "16QAM 1/2", "16QAM 3/4", "64QAM 2/3", "64QAM 3/4" ], style=wx.RA_HORIZONTAL, ) self.Add(self._encoding_chooser) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=5000, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=True, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.wxgui_scopesink2_0.win) self.wifi_phy_hier_0 = wifi_phy_hier( chan_est=0, encoding=0, ) _tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_tx_gain_sizer, value=self.tx_gain, callback=self.set_tx_gain, label='tx_gain', converter=forms.float_converter(), proportion=0, ) self._tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_tx_gain_sizer, value=self.tx_gain, callback=self.set_tx_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_tx_gain_sizer) _rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_rx_gain_sizer, value=self.rx_gain, callback=self.set_rx_gain, label='rx_gain', converter=forms.float_converter(), proportion=0, ) self._rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_rx_gain_sizer, value=self.rx_gain, callback=self.set_rx_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_rx_gain_sizer) self._lo_offset_chooser = forms.drop_down( parent=self.GetWin(), value=self.lo_offset, callback=self.set_lo_offset, label="LO Offset", choices=[0, 6e6, 11e6], labels=['0 MHz', '6 MHz', '11 MHz'], ) self.Add(self._lo_offset_chooser) self.ieee802_11_ofdm_mac_0 = ieee802_11.ofdm_mac( ([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x30, 0x14, 0x4a, 0xe6, 0x46, 0xe4]), ([0x42, 0x42, 0x42, 0x42, 0x42, 0x42])) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(True) self._freq_chooser = forms.drop_down( parent=self.GetWin(), value=self.freq, callback=self.set_freq, label="Channel", choices=[ 2412000000.0, 2417000000.0, 2422000000.0, 2427000000.0, 2432000000.0, 2437000000.0, 2442000000.0, 2447000000.0, 2452000000.0, 2457000000.0, 2462000000.0, 2467000000.0, 2472000000.0, 2484000000.0, 5170000000.0, 5180000000.0, 5190000000.0, 5200000000.0, 5210000000.0, 5220000000.0, 5230000000.0, 5240000000.0, 5260000000.0, 5280000000.0, 5300000000.0, 5320000000.0, 5500000000.0, 5520000000.0, 5540000000.0, 5560000000.0, 5580000000.0, 5600000000.0, 5620000000.0, 5640000000.0, 5660000000.0, 5680000000.0, 5700000000.0, 5745000000.0, 5765000000.0, 5785000000.0, 5805000000.0, 5825000000.0, 5860000000.0, 5870000000.0, 5880000000.0, 5890000000.0, 5900000000.0, 5910000000.0, 5920000000.0 ], labels=[ ' 1 | 2412.0 | 11g', ' 2 | 2417.0 | 11g', ' 3 | 2422.0 | 11g', ' 4 | 2427.0 | 11g', ' 5 | 2432.0 | 11g', ' 6 | 2437.0 | 11g', ' 7 | 2442.0 | 11g', ' 8 | 2447.0 | 11g', ' 9 | 2452.0 | 11g', ' 10 | 2457.0 | 11g', ' 11 | 2462.0 | 11g', ' 12 | 2467.0 | 11g', ' 13 | 2472.0 | 11g', ' 14 | 2484.0 | 11g', ' 34 | 5170.0 | 11a', ' 36 | 5180.0 | 11a', ' 38 | 5190.0 | 11a', ' 40 | 5200.0 | 11a', ' 42 | 5210.0 | 11a', ' 44 | 5220.0 | 11a', ' 46 | 5230.0 | 11a', ' 48 | 5240.0 | 11a', ' 52 | 5260.0 | 11a', ' 56 | 5280.0 | 11a', ' 58 | 5300.0 | 11a', ' 60 | 5320.0 | 11a', '100 | 5500.0 | 11a', '104 | 5520.0 | 11a', '108 | 5540.0 | 11a', '112 | 5560.0 | 11a', '116 | 5580.0 | 11a', '120 | 5600.0 | 11a', '124 | 5620.0 | 11a', '128 | 5640.0 | 11a', '132 | 5660.0 | 11a', '136 | 5680.0 | 11a', '140 | 5700.0 | 11a', '149 | 5745.0 | 11a', '153 | 5765.0 | 11a', '157 | 5785.0 | 11a', '161 | 5805.0 | 11a', '165 | 5825.0 | 11a', '172 | 5860.0 | 11p', '174 | 5870.0 | 11p', '176 | 5880.0 | 11p', '178 | 5890.0 | 11p', '180 | 5900.0 | 11p', '182 | 5910.0 | 11p', '184 | 5920.0 | 11p' ], ) self.Add(self._freq_chooser) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.channels_channel_model_0 = channels.channel_model( noise_voltage=.5**.5, frequency_offset=0, epsilon=1.0, taps=(1.0, ), noise_seed=0, block_tags=False) self.blocks_udp_sink_0 = blocks.udp_sink(gr.sizeof_char * 1, "192.168.200.2", 1234, 100, True) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) self.blocks_throttle_0 = blocks.throttle( gr.sizeof_char * 1, 2 * 4e3 + 0 * samp_rate / 40 / (oversampling * 8 * 2), True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((mult, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_message_debug_0 = blocks.message_debug() self.blocks_file_source_0 = blocks.file_source( gr.sizeof_char * 1, "/media/juan/d6aba572-c85c-40cc-9258-ae1538dfb8c5/home/juan/Music/de_mi.mp3", True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_ofdm_mac_0, 'app in')) self.msg_connect((self.ieee802_11_ofdm_mac_0, 'phy out'), (self.blocks_message_debug_0, 'print')) self.msg_connect((self.ieee802_11_ofdm_mac_0, 'phy out'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ofdm_mac_0, 'phy in')) self.connect((self.blocks_file_source_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_udp_sink_0, 0)) self.connect((self.channels_channel_model_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.channels_channel_model_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.wifi_phy_hier_0, 1), (self.wxgui_scopesink2_0, 0))
def __init__(self, ampl=0.7, args='', arq_timeout=.1 * 0 + 0.04, dest_addr=-1, iface='tun0', mtu=128, ogradio_addr=0, port="12345", rate=1e6, rx_antenna="TX/RX", rx_gain=65 - 20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0, max_arq_attempts=5 * 2, tx_freq=915e6, rx_freq=915e6): gr.top_block.__init__(self, "Batmannogui") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.mtu = mtu self.ogradio_addr = ogradio_addr self.port = port self.rate = rate self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset self.max_arq_attempts = max_arq_attempts self.tx_freq = tx_freq self.rx_freq = rx_freq ################################################## # Variables ################################################## self.samp_rate = samp_rate = rate ################################################## # Blocks ################################################## self.gmsk_radio_0 = gmsk_radio( rate=samp_rate, args=args, tx_gain=tx_gain, tx_freq=tx_freq, rx_ant=rx_antenna, rx_freq=rx_freq, rx_gain=rx_gain, ampl=ampl, rx_lo_offset=rx_lo_offset, tx_lo_offset=tx_lo_offset, samps_per_sym=samps_per_sym, access_code_threshold=0 + 12 + 4 * 0, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu * 0 + 1532, False) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.gmsk_radio_0, 'msg_in')) self.msg_connect((self.gmsk_radio_0, 'msg_out'), (self.blocks_tuntap_pdu_0, 'pdus'))
def __init__(self, MTU=10000, bw=100e3, frequency_rx=2.4505e9 + 1e6, frequency_tx=2.4505e9, ip_pub='tcp://192.168.5.134:7001', ip_sub='tcp://192.168.5.109:7000', offset=-250e3): gr.top_block.__init__(self, "Lora Side1") ################################################## # Parameters ################################################## self.MTU = MTU self.bw = bw self.frequency_rx = frequency_rx self.frequency_tx = frequency_tx self.ip_pub = ip_pub self.ip_sub = ip_sub self.offset = offset ################################################## # Variables ################################################## self.rep = rep = 3 self.spreading_factor = spreading_factor = 8 self.samp_rate = samp_rate = 500e3 self.ldr = ldr = True self.header = header = False self.enc_rep = enc_rep = fec.repetition_encoder_make(480, rep) self.enc_dummy = enc_dummy = fec.dummy_encoder_make(MTU*8) self.enc_ccsds = enc_ccsds = fec.ccsds_encoder_make(MTU*8, 0, fec.CC_TERMINATED) self.dec_rep = dec_rep = fec.repetition_decoder.make(480, rep, 0.5) self.dec_dummy = dec_dummy = fec.dummy_decoder.make(MTU*8) self.dec_cc = dec_cc = fec.cc_decoder.make(8000, 7, 2, ([109,79]), 0, -1, fec.CC_TERMINATED, False) self.code_rate = code_rate = 4 ################################################## # Blocks ################################################## self.zeromq_push_sink_0 = zeromq.push_sink(gr.sizeof_gr_complex, 1, ip_pub, 100, False, -1) self.zeromq_pull_source_0 = zeromq.pull_source(gr.sizeof_gr_complex, 1, ip_sub, 100, False, -1) self.pfb_arb_resampler_xxx_0_0 = pfb.arb_resampler_ccf( bw/samp_rate, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0_0.declare_sample_delay(0) self.pfb_arb_resampler_xxx_0 = pfb.arb_resampler_ccf( samp_rate/bw, taps=None, flt_size=32) self.pfb_arb_resampler_xxx_0.declare_sample_delay(0) self.lora_mod_0 = lora.mod(spreading_factor, 0x12) self.lora_encode_0 = lora.encode(spreading_factor, code_rate, ldr, header) self.lora_demod_0 = lora.demod(spreading_factor, ldr, 25.0, 2) self.lora_decode_0 = lora.decode(spreading_factor, code_rate, ldr, header) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tap0', MTU, False) self.blocks_message_debug_0 = blocks.message_debug() ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.lora_encode_0, 'in')) self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_message_debug_0, 'print_pdu')) self.msg_connect((self.lora_decode_0, 'out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.lora_demod_0, 'out'), (self.lora_decode_0, 'in')) self.msg_connect((self.lora_encode_0, 'out'), (self.lora_mod_0, 'in')) self.connect((self.lora_mod_0, 0), (self.pfb_arb_resampler_xxx_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0, 0), (self.zeromq_push_sink_0, 0)) self.connect((self.pfb_arb_resampler_xxx_0_0, 0), (self.lora_demod_0, 0)) self.connect((self.zeromq_pull_source_0, 0), (self.pfb_arb_resampler_xxx_0_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Wifi Transceiver") ################################################## # Variables ################################################## self.tx_gain = tx_gain = 40 self.samp_rate = samp_rate = 20e6 self.rx_gain = rx_gain = 40 self.mult = mult = 0.38 self.lo_offset = lo_offset = 0 self.freq = freq = 2.412e9 self.encoding = encoding = 0 ################################################## # Blocks ################################################## _tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_tx_gain_sizer, value=self.tx_gain, callback=self.set_tx_gain, label='tx_gain', converter=forms.float_converter(), proportion=0, ) self._tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_tx_gain_sizer, value=self.tx_gain, callback=self.set_tx_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_tx_gain_sizer) self._samp_rate_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.samp_rate, callback=self.set_samp_rate, label="Sample Rate", choices=[5e6,10e6, 20e6], labels=["5MHz", "10 MHz", "20 MHz"], style=wx.RA_HORIZONTAL, ) self.Add(self._samp_rate_chooser) _rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_rx_gain_sizer, value=self.rx_gain, callback=self.set_rx_gain, label='rx_gain', converter=forms.float_converter(), proportion=0, ) self._rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_rx_gain_sizer, value=self.rx_gain, callback=self.set_rx_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_rx_gain_sizer) _mult_sizer = wx.BoxSizer(wx.VERTICAL) self._mult_text_box = forms.text_box( parent=self.GetWin(), sizer=_mult_sizer, value=self.mult, callback=self.set_mult, label='mult', converter=forms.float_converter(), proportion=0, ) self._mult_slider = forms.slider( parent=self.GetWin(), sizer=_mult_sizer, value=self.mult, callback=self.set_mult, minimum=0, maximum=1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_mult_sizer) self._lo_offset_chooser = forms.drop_down( parent=self.GetWin(), value=self.lo_offset, callback=self.set_lo_offset, label="LO Offset", choices=[0, 6e6, 11e6], labels=['0 MHz', '6 MHz', '11 MHz'], ) self.Add(self._lo_offset_chooser) self._freq_chooser = forms.drop_down( parent=self.GetWin(), value=self.freq, callback=self.set_freq, label="Channel", choices=[2412000000.0, 2417000000.0, 2422000000.0, 2427000000.0, 2432000000.0, 2437000000.0, 2442000000.0, 2447000000.0, 2452000000.0, 2457000000.0, 2462000000.0, 2467000000.0, 2472000000.0, 2484000000.0, 5170000000.0, 5180000000.0, 5190000000.0, 5200000000.0, 5210000000.0, 5220000000.0, 5230000000.0, 5240000000.0, 5260000000.0, 5280000000.0, 5300000000.0, 5320000000.0, 5500000000.0, 5520000000.0, 5540000000.0, 5560000000.0, 5580000000.0, 5600000000.0, 5620000000.0, 5640000000.0, 5660000000.0, 5680000000.0, 5700000000.0, 5745000000.0, 5765000000.0, 5785000000.0, 5805000000.0, 5825000000.0, 5860000000.0, 5870000000.0, 5880000000.0, 5890000000.0, 5900000000.0, 5910000000.0, 5920000000.0], labels=[' 1 | 2412.0 | 11g', ' 2 | 2417.0 | 11g', ' 3 | 2422.0 | 11g', ' 4 | 2427.0 | 11g', ' 5 | 2432.0 | 11g', ' 6 | 2437.0 | 11g', ' 7 | 2442.0 | 11g', ' 8 | 2447.0 | 11g', ' 9 | 2452.0 | 11g', ' 10 | 2457.0 | 11g', ' 11 | 2462.0 | 11g', ' 12 | 2467.0 | 11g', ' 13 | 2472.0 | 11g', ' 14 | 2484.0 | 11g', ' 34 | 5170.0 | 11a', ' 36 | 5180.0 | 11a', ' 38 | 5190.0 | 11a', ' 40 | 5200.0 | 11a', ' 42 | 5210.0 | 11a', ' 44 | 5220.0 | 11a', ' 46 | 5230.0 | 11a', ' 48 | 5240.0 | 11a', ' 52 | 5260.0 | 11a', ' 56 | 5280.0 | 11a', ' 58 | 5300.0 | 11a', ' 60 | 5320.0 | 11a', '100 | 5500.0 | 11a', '104 | 5520.0 | 11a', '108 | 5540.0 | 11a', '112 | 5560.0 | 11a', '116 | 5580.0 | 11a', '120 | 5600.0 | 11a', '124 | 5620.0 | 11a', '128 | 5640.0 | 11a', '132 | 5660.0 | 11a', '136 | 5680.0 | 11a', '140 | 5700.0 | 11a', '149 | 5745.0 | 11a', '153 | 5765.0 | 11a', '157 | 5785.0 | 11a', '161 | 5805.0 | 11a', '165 | 5825.0 | 11a', '172 | 5860.0 | 11p', '174 | 5870.0 | 11p', '176 | 5880.0 | 11p', '178 | 5890.0 | 11p', '180 | 5900.0 | 11p', '182 | 5910.0 | 11p', '184 | 5920.0 | 11p'], ) self.Add(self._freq_chooser) self._encoding_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.encoding, callback=self.set_encoding, label="Encoding", choices=[0,1,2,3,4,5,6,7], labels=["BPSK 1/2", "BPSK 3/4", "QPSK 1/2", "QPSK 3/4", "16QAM 1/2", "16QAM 3/4", "64QAM 2/3", "64QAM 3/4"], style=wx.RA_HORIZONTAL, ) self.Add(self._encoding_chooser) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=5000, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=True, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.wxgui_scopesink2_0.win) self.wifi_phy_hier_0 = wifi_phy_hier( chan_est=0, encoding=0, sensitivity=0.56, ) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_gain(rx_gain, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), "packet_len", ) self.uhd_usrp_sink_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0.set_gain(tx_gain, 0) self.ieee802_11_ofdm_parse_mac_0 = ieee802_11.ofdm_parse_mac(False, True) self.ieee802_11_ofdm_mac_0 = ieee802_11.ofdm_mac(([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x30, 0x14, 0x4a, 0xe6, 0x46, 0xe4]), ([0x02, 0x11, 0x87, 0xBA, 0x68, 0x3B])) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(False) self.foo_wireshark_connector_0 = foo.wireshark_connector(127, False) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((mult, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/ofdm.pcap", True) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_ofdm_mac_0, 'app in')) self.msg_connect((self.ieee802_11_ofdm_mac_0, 'phy out'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.foo_wireshark_connector_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ofdm_mac_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ofdm_parse_mac_0, 'in')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.wifi_phy_hier_0, 1), (self.wxgui_scopesink2_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Wifi Transceiver") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.tx_gain = tx_gain = 15 self.samp_rate = samp_rate = 10e6 self.rx_gain = rx_gain = 5 self.mult = mult = 0.38 self.lo_offset = lo_offset = 0 self.freq = freq = 5.89e9 self.encoding = encoding = 0 ################################################## # Blocks ################################################## self._samp_rate_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.samp_rate, callback=self.set_samp_rate, label="Sample Rate", choices=[5e6,10e6, 20e6], labels=["5MHz", "10 MHz", "20 MHz"], style=wx.RA_HORIZONTAL, ) self.Add(self._samp_rate_chooser) _mult_sizer = wx.BoxSizer(wx.VERTICAL) self._mult_text_box = forms.text_box( parent=self.GetWin(), sizer=_mult_sizer, value=self.mult, callback=self.set_mult, label='mult', converter=forms.float_converter(), proportion=0, ) self._mult_slider = forms.slider( parent=self.GetWin(), sizer=_mult_sizer, value=self.mult, callback=self.set_mult, minimum=0, maximum=1, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_mult_sizer) self._encoding_chooser = forms.radio_buttons( parent=self.GetWin(), value=self.encoding, callback=self.set_encoding, label="Encoding", choices=[0,1,2,3,4,5,6,7], labels=["BPSK 1/2", "BPSK 3/4", "QPSK 1/2", "QPSK 3/4", "16QAM 1/2", "16QAM 3/4", "64QAM 2/3", "64QAM 3/4"], style=wx.RA_HORIZONTAL, ) self.Add(self._encoding_chooser) self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=5000, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=False, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.wxgui_scopesink2_0_0.win) self.wxgui_scopesink2_0 = scopesink2.scope_sink_c( self.GetWin(), title="Scope Plot", sample_rate=5000, v_scale=0, v_offset=0, t_scale=0, ac_couple=False, xy_mode=True, num_inputs=1, trig_mode=wxgui.TRIG_MODE_AUTO, y_axis_label="Counts", ) self.Add(self.wxgui_scopesink2_0.win) self.wifi_phy_hier_0_0 = wifi_phy_hier( chan_est=0, encoding=0, ) self.wifi_phy_hier_0 = wifi_phy_hier( chan_est=0, encoding=0, ) _tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_tx_gain_sizer, value=self.tx_gain, callback=self.set_tx_gain, label='tx_gain', converter=forms.float_converter(), proportion=0, ) self._tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_tx_gain_sizer, value=self.tx_gain, callback=self.set_tx_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_tx_gain_sizer) _rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_rx_gain_sizer, value=self.rx_gain, callback=self.set_rx_gain, label='rx_gain', converter=forms.float_converter(), proportion=0, ) self._rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_rx_gain_sizer, value=self.rx_gain, callback=self.set_rx_gain, minimum=0, maximum=100, num_steps=100, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_rx_gain_sizer) self._lo_offset_chooser = forms.drop_down( parent=self.GetWin(), value=self.lo_offset, callback=self.set_lo_offset, label="LO Offset", choices=[0, 6e6, 11e6], labels=['0 MHz', '6 MHz', '11 MHz'], ) self.Add(self._lo_offset_chooser) self.ieee802_11_ofdm_parse_mac_0_0 = ieee802_11.ofdm_parse_mac(False, True) self.ieee802_11_ofdm_parse_mac_0 = ieee802_11.ofdm_parse_mac(False, True) self.ieee802_11_ofdm_mac_0_0 = ieee802_11.ofdm_mac(([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x12, 0x34, 0x56, 0x78, 0x90, 0xab])) self.ieee802_11_ofdm_mac_0 = ieee802_11.ofdm_mac(([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x12, 0x34, 0x56, 0x78, 0x90, 0xab])) self.ieee802_11_ether_encap_0_0 = ieee802_11.ether_encap(False) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(False) self._freq_chooser = forms.drop_down( parent=self.GetWin(), value=self.freq, callback=self.set_freq, label="Channel", choices=[2412000000.0, 2417000000.0, 2422000000.0, 2427000000.0, 2432000000.0, 2437000000.0, 2442000000.0, 2447000000.0, 2452000000.0, 2457000000.0, 2462000000.0, 2467000000.0, 2472000000.0, 2484000000.0, 5170000000.0, 5180000000.0, 5190000000.0, 5200000000.0, 5210000000.0, 5220000000.0, 5230000000.0, 5240000000.0, 5260000000.0, 5280000000.0, 5300000000.0, 5320000000.0, 5500000000.0, 5520000000.0, 5540000000.0, 5560000000.0, 5580000000.0, 5600000000.0, 5620000000.0, 5640000000.0, 5660000000.0, 5680000000.0, 5700000000.0, 5745000000.0, 5765000000.0, 5785000000.0, 5805000000.0, 5825000000.0, 5860000000.0, 5870000000.0, 5880000000.0, 5890000000.0, 5900000000.0, 5910000000.0, 5920000000.0], labels=[' 1 | 2412.0 | 11g', ' 2 | 2417.0 | 11g', ' 3 | 2422.0 | 11g', ' 4 | 2427.0 | 11g', ' 5 | 2432.0 | 11g', ' 6 | 2437.0 | 11g', ' 7 | 2442.0 | 11g', ' 8 | 2447.0 | 11g', ' 9 | 2452.0 | 11g', ' 10 | 2457.0 | 11g', ' 11 | 2462.0 | 11g', ' 12 | 2467.0 | 11g', ' 13 | 2472.0 | 11g', ' 14 | 2484.0 | 11g', ' 34 | 5170.0 | 11a', ' 36 | 5180.0 | 11a', ' 38 | 5190.0 | 11a', ' 40 | 5200.0 | 11a', ' 42 | 5210.0 | 11a', ' 44 | 5220.0 | 11a', ' 46 | 5230.0 | 11a', ' 48 | 5240.0 | 11a', ' 52 | 5260.0 | 11a', ' 56 | 5280.0 | 11a', ' 58 | 5300.0 | 11a', ' 60 | 5320.0 | 11a', '100 | 5500.0 | 11a', '104 | 5520.0 | 11a', '108 | 5540.0 | 11a', '112 | 5560.0 | 11a', '116 | 5580.0 | 11a', '120 | 5600.0 | 11a', '124 | 5620.0 | 11a', '128 | 5640.0 | 11a', '132 | 5660.0 | 11a', '136 | 5680.0 | 11a', '140 | 5700.0 | 11a', '149 | 5745.0 | 11a', '153 | 5765.0 | 11a', '157 | 5785.0 | 11a', '161 | 5805.0 | 11a', '165 | 5825.0 | 11a', '172 | 5860.0 | 11p', '174 | 5870.0 | 11p', '176 | 5880.0 | 11p', '178 | 5890.0 | 11p', '180 | 5900.0 | 11p', '182 | 5910.0 | 11p', '184 | 5920.0 | 11p'], ) self.Add(self._freq_chooser) self.foo_packet_pad2_0_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0_0).set_min_output_buffer(100000) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.blocks_tuntap_pdu_0_0 = blocks.tuntap_pdu("tap1", 1500, False) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 1500, False) self.blocks_throttle_1 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vcc((mult, )) (self.blocks_multiply_const_vxx_0_0).set_min_output_buffer(100000) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((mult, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.blocks_tuntap_pdu_0_0, 'pdus'), (self.ieee802_11_ether_encap_0_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_ofdm_mac_0, 'app in')) self.msg_connect((self.ieee802_11_ether_encap_0_0, 'to tap'), (self.blocks_tuntap_pdu_0_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0_0, 'to wifi'), (self.ieee802_11_ofdm_mac_0_0, 'app in')) self.msg_connect((self.ieee802_11_ofdm_mac_0, 'phy out'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.ieee802_11_ofdm_mac_0_0, 'phy out'), (self.wifi_phy_hier_0_0, 'mac_in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ofdm_mac_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ofdm_parse_mac_0, 'in')) self.msg_connect((self.wifi_phy_hier_0_0, 'mac_out'), (self.ieee802_11_ether_encap_0_0, 'from wifi')) self.msg_connect((self.wifi_phy_hier_0_0, 'mac_out'), (self.ieee802_11_ofdm_mac_0_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0_0, 'mac_out'), (self.ieee802_11_ofdm_parse_mac_0_0, 'in')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.foo_packet_pad2_0_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.wifi_phy_hier_0_0, 0)) self.connect((self.blocks_throttle_1, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.blocks_throttle_1, 0)) self.connect((self.foo_packet_pad2_0_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.wifi_phy_hier_0, 1), (self.wxgui_scopesink2_0, 0)) self.connect((self.wifi_phy_hier_0_0, 0), (self.blocks_multiply_const_vxx_0_0, 0)) self.connect((self.wifi_phy_hier_0_0, 1), (self.wxgui_scopesink2_0_0, 0))
def __init__(self): gr.top_block.__init__(self, "Uniflex Wifi Transceiver") ################################################## # Variables ################################################## self.tx_gain = tx_gain = 0.75 self.samp_rate = samp_rate = 20e6 self.rx_gain = rx_gain = 0.75 self.lo_offset = lo_offset = 0 self.freq = freq = 5890000000 self.encoding = encoding = 0 self.chan_est = chan_est = 0 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer( ("localhost", 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread( target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.wifi_phy_hier_0 = wifi_phy_hier( bandwidth=samp_rate, chan_est=chan_est, encoding=encoding, frequency=freq, sensitivity=0.56, ) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq( uhd.tune_request(freq, rf_freq=freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), "packet_len", ) self.uhd_usrp_sink_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq( uhd.tune_request(freq, rf_freq=freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0.set_normalized_gain(tx_gain, 0) self.ieee802_11_parse_mac_0 = ieee802_11.parse_mac(False, True) self.ieee802_11_mac_0 = ieee802_11.mac( ([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x30, 0x14, 0x4a, 0xe6, 0x46, 0xe4]), ([0x42, 0x42, 0x42, 0x42, 0x42, 0x42])) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(False) self.foo_wireshark_connector_0 = foo.wireshark_connector(127, False) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.6, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, "/tmp/wifi.pcap", True) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_mac_0, 'app in')) self.msg_connect((self.ieee802_11_mac_0, 'phy out'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.foo_wireshark_connector_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_mac_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_parse_mac_0, 'in')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self): gr.top_block.__init__(self, "Uniflex Wifi Transceiver") ################################################## # Variables ################################################## self.tx_gain = tx_gain = 0.75 self.samp_rate = samp_rate = 20e6 self.rx_gain = rx_gain = 0.75 self.lo_offset = lo_offset = 0 self.freq = freq = 5890000000 self.encoding = encoding = 0 self.chan_est = chan_est = 0 ################################################## # Blocks ################################################## self.xmlrpc_server_0 = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8080), allow_none=True) self.xmlrpc_server_0.register_instance(self) self.xmlrpc_server_0_thread = threading.Thread(target=self.xmlrpc_server_0.serve_forever) self.xmlrpc_server_0_thread.daemon = True self.xmlrpc_server_0_thread.start() self.wifi_phy_hier_0 = wifi_phy_hier( bandwidth=samp_rate, chan_est=chan_est, encoding=encoding, frequency=freq, sensitivity=0.56, ) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), "packet_len", ) self.uhd_usrp_sink_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0.set_normalized_gain(tx_gain, 0) self.ieee802_11_parse_mac_0 = ieee802_11.parse_mac(False, True) self.ieee802_11_mac_0 = ieee802_11.mac(([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]), ([0x30, 0x14, 0x4a, 0xe6, 0x46, 0xe4]), ([0x42, 0x42, 0x42, 0x42, 0x42, 0x42])) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(False) self.foo_wireshark_connector_0 = foo.wireshark_connector(127, False) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.6, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/wifi.pcap", True) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_mac_0, 'app in')) self.msg_connect((self.ieee802_11_mac_0, 'phy out'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.foo_wireshark_connector_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_mac_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_parse_mac_0, 'in')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self): grc_wxgui.top_block_gui.__init__(self, title="Top Block") _icon_path = "/usr/share/icons/hicolor/32x32/apps/gnuradio-grc.png" self.SetIcon(wx.Icon(_icon_path, wx.BITMAP_TYPE_ANY)) ################################################## # Variables ################################################## self.sat_freq = sat_freq = int(401.365e6) self.doppler_freq = doppler_freq = sat_freq self.variable_text_box_0 = variable_text_box_0 = doppler_freq - sat_freq self.tx_gain = tx_gain = 86 self.samp_rate = samp_rate = 460800 self.rx_gain = rx_gain = 40 self.lo_offset = lo_offset = 150e3 self.freq_xlation = freq_xlation = 120000 self.freq_corr = freq_corr = 0 self.baud_rate = baud_rate = 9600 ################################################## # Blocks ################################################## _freq_corr_sizer = wx.BoxSizer(wx.VERTICAL) self._freq_corr_text_box = forms.text_box( parent=self.GetWin(), sizer=_freq_corr_sizer, value=self.freq_corr, callback=self.set_freq_corr, label='Frequency Correction', converter=forms.float_converter(), proportion=0, ) self._freq_corr_slider = forms.slider( parent=self.GetWin(), sizer=_freq_corr_sizer, value=self.freq_corr, callback=self.set_freq_corr, minimum=-10000, maximum=10000, num_steps=500, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.GridAdd(_freq_corr_sizer, 0, 2, 1, 1) self._doppler_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.doppler_freq, callback=self.set_doppler_freq, label='Doppler Frequency', converter=forms.float_converter(), ) self.GridAdd(self._doppler_freq_text_box, 0, 0, 1, 1) self._baud_rate_chooser = forms.drop_down( parent=self.GetWin(), value=self.baud_rate, callback=self.set_baud_rate, label='Baud Rate', choices=[115200, 76800, 38400, 19200, 9600, 4800], labels=["115K2", "76K8", "38K4", "19K2", "9K6", "4K8"], ) self.Add(self._baud_rate_chooser) self.wxgui_waterfallsink2_0_1_1 = waterfallsink2.waterfall_sink_c( self.GetWin(), baseband_freq=sat_freq + lo_offset, dynamic_range=50, ref_level=-50, ref_scale=2.0, sample_rate=460800, fft_size=512, fft_rate=15, average=False, avg_alpha=None, title='Waterfall Plot', ) self.GridAdd(self.wxgui_waterfallsink2_0_1_1.win, 1, 0, 1, 4) self.wxgui_waterfallsink2_0_0_0 = waterfallsink2.waterfall_sink_c( self.GetWin(), baseband_freq=doppler_freq + freq_corr, dynamic_range=50, ref_level=-70, ref_scale=2.0, sample_rate=baud_rate * 2, fft_size=512, fft_rate=15, average=False, avg_alpha=None, title='Waterfall Plot', ) self.GridAdd(self.wxgui_waterfallsink2_0_0_0.win, 3, 0, 1, 2) self.wxgui_fftsink2_0_0 = fftsink2.fft_sink_c( self.GetWin(), baseband_freq=doppler_freq + freq_corr, y_per_div=10, y_divs=10, ref_level=-50, ref_scale=2.0, sample_rate=baud_rate * 2, fft_size=1024, fft_rate=15, average=False, avg_alpha=None, title='FFT Plot', peak_hold=False, ) self.GridAdd(self.wxgui_fftsink2_0_0.win, 3, 2, 1, 2) self._variable_text_box_0_text_box = forms.text_box( parent=self.GetWin(), value=self.variable_text_box_0, callback=self.set_variable_text_box_0, label='Doppler Shift', converter=forms.float_converter(), ) self.GridAdd(self._variable_text_box_0_text_box, 0, 1, 1, 1) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "master_clock_rate=46080000")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(sat_freq + lo_offset, 0) self.uhd_usrp_source_0.set_gain(rx_gain, 0) self.uhd_usrp_source_0.set_antenna('RX2', 0) self.spacegrant_spirit1_basic_framer_0 = spacegrant.spirit1_basic_framer( pmt.cons(pmt.PMT_NIL, pmt.init_u8vector(4, [0xAA, 0xAA, 0xAA, 0xAA])), pmt.cons(pmt.PMT_NIL, pmt.init_u8vector(4, [0x88, 0x88, 0x88, 0x88])), 8, 0, 0, 0) self.spacegrant_spirit1_basic_deframer_0 = spacegrant.spirit1_basic_deframer( pmt.cons(pmt.PMT_NIL, pmt.init_u8vector(4, [0xAA, 0xAA, 0xAA, 0xAA])), pmt.cons(pmt.PMT_NIL, pmt.init_u8vector(4, [0x88, 0x88, 0x88, 0x88])), 8, 0, 0, 0) self.spacegrant_sg_uhd_usrp_sink_0 = spacegrant.sg_uhd_usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), '') self.spacegrant_sg_uhd_usrp_sink_0.set_center_freq( sat_freq + lo_offset, 0) self.spacegrant_sg_uhd_usrp_sink_0.set_samp_rate(samp_rate) self.spacegrant_sg_uhd_usrp_sink_0.set_gain(tx_gain, 0) self.spacegrant_message_debug_0 = spacegrant.message_debug() self.interp_fir_filter_xxx_0 = filter.interp_fir_filter_ccc( samp_rate / (baud_rate * 2), (firdes.low_pass(1, samp_rate, baud_rate, 5000))) self.interp_fir_filter_xxx_0.declare_sample_delay(0) self.freq_xlating_fir_filter_xxx_0_0 = filter.freq_xlating_fir_filter_ccc( 1, ([1]), freq_corr + lo_offset, samp_rate) self.freq_xlating_fir_filter_xxx_0 = filter.freq_xlating_fir_filter_ccc( samp_rate / (baud_rate * 2), (firdes.low_pass(1, samp_rate, baud_rate / 2, baud_rate / 10)), -freq_corr - lo_offset, samp_rate) self.digital_gmsk_mod_0 = digital.gmsk_mod( samples_per_symbol=4, bt=0.5, verbose=True, log=True, ) self.digital_gmsk_demod_0 = digital.gmsk_demod( samples_per_symbol=4, gain_mu=0.175, mu=0.5, omega_relative_limit=0.005, freq_error=0.0, verbose=False, log=False, ) self.blocks_unpacked_to_packed_xx_1 = blocks.unpacked_to_packed_bb( 1, gr.GR_MSB_FIRST) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tun0', 256, True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.spacegrant_spirit1_basic_framer_0, 'in')) self.msg_connect((self.spacegrant_spirit1_basic_deframer_0, 'out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.spacegrant_spirit1_basic_deframer_0, 'out'), (self.spacegrant_message_debug_0, 'pdu')) self.connect((self.blocks_unpacked_to_packed_xx_1, 0), (self.digital_gmsk_mod_0, 0)) self.connect((self.digital_gmsk_demod_0, 0), (self.spacegrant_spirit1_basic_deframer_0, 0)) self.connect((self.digital_gmsk_mod_0, 0), (self.interp_fir_filter_xxx_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.digital_gmsk_demod_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_fftsink2_0_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0, 0), (self.wxgui_waterfallsink2_0_0_0, 0)) self.connect((self.freq_xlating_fir_filter_xxx_0_0, 0), (self.spacegrant_sg_uhd_usrp_sink_0, 0)) self.connect((self.interp_fir_filter_xxx_0, 0), (self.freq_xlating_fir_filter_xxx_0_0, 0)) self.connect((self.spacegrant_spirit1_basic_framer_0, 0), (self.blocks_unpacked_to_packed_xx_1, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.freq_xlating_fir_filter_xxx_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wxgui_waterfallsink2_0_1_1, 0))
def __init__(self, ampl=0.7, args='', arq_timeout=.1*0 + 0.04, dest_addr=-1, iface='tun0', max_arq_attempts=5 * 2, mtu=128, ogradio_addr=0, ogrx_freq=915e6, ogtx_freq=915e6, port="12345", rate=1e6, rx_antenna="TX/RX", rx_gain=65-20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0): grc_wxgui.top_block_gui.__init__(self, title="Broadcastwithfreqandmac") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.max_arq_attempts = max_arq_attempts self.mtu = mtu self.ogradio_addr = ogradio_addr self.ogrx_freq = ogrx_freq self.ogtx_freq = ogtx_freq self.port = port self.rate = rate self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset ################################################## # Variables ################################################## self.user_tx_gain = user_tx_gain = tx_gain self.user_rx_gain = user_rx_gain = rx_gain self.tx_freq = tx_freq = 915e6 self.samp_rate = samp_rate = rate self.rx_freq = rx_freq = 915e6 self.radio_addr = radio_addr = 84 ################################################## # Blocks ################################################## _user_tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, label="TX Gain", converter=forms.float_converter(), proportion=0, ) self._user_tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_tx_gain_sizer) _user_rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, label="RX Gain", converter=forms.float_converter(), proportion=0, ) self._user_rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_rx_gain_sizer) self._tx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.tx_freq, callback=self.set_tx_freq, label='tx_freq', converter=forms.float_converter(), ) self.Add(self._tx_freq_text_box) self._rx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.rx_freq, callback=self.set_rx_freq, label='rx_freq', converter=forms.float_converter(), ) self.Add(self._rx_freq_text_box) self._radio_addr_text_box = forms.text_box( parent=self.GetWin(), value=self.radio_addr, callback=self.set_radio_addr, label="Local address", converter=forms.int_converter(), ) self.Add(self._radio_addr_text_box) self.mac_802_3_tracker = mac.tracker_802_3(verbose=False) self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( self.GetWin(), title="RX", sample_rate=samp_rate, v_scale=0.02, v_offset=0, t_scale=0.0001, ac_couple=False, xy_mode=False, num_inputs=2, trig_mode=wxgui.TRIG_MODE_NORM, y_axis_label="Counts", ) self.GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) self.simple_mac_1 = mac.simple_mac( radio_addr, arq_timeout, max_arq_attempts, 2.0, False, 0.05, node_expiry_delay=10.0, expire_on_arq_failure=False, only_send_if_alive=False, prepend_dummy=False, ) self.mac_virtual_channel_encoder_0_0 = mac.virtual_channel_encoder(-1, True,mtu=mtu, chan_id=1, prepend_dummy=False, chan_tracker=self.mac_802_3_tracker, ) self.mac_virtual_channel_encoder_0 = mac.virtual_channel_encoder(-1, True,mtu=mtu, chan_id=0, prepend_dummy=False, ) self.mac_virtual_channel_decoder_0 = mac.virtual_channel_decoder(3, [0, 1]) self.gmsk_radio_0 = gmsk_radio( access_code_threshold=0 + 12 + 4*0, samps_per_sym=samps_per_sym, tx_lo_offset=tx_lo_offset, rx_lo_offset=rx_lo_offset, ampl=ampl, rx_gain=user_rx_gain, rx_freq=rx_freq, rx_ant=rx_antenna, tx_freq=tx_freq, tx_gain=user_tx_gain, args=args, rate=samp_rate, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu*0 + 1514, False) self.blocks_socket_pdu_0 = blocks.socket_pdu("TCP_SERVER", "", port, mtu, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((1, )) self.blocks_moving_average_xx_0 = blocks.moving_average_ff(10000, 1./10000, 40000/4) self.blocks_message_strobe_0 = blocks.message_strobe(pmt.intern("T"), 1) self.blocks_message_debug_0_0_1 = blocks.message_debug() self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) ################################################## # Connections ################################################## self.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.simple_mac_1, 'ctrl_in')) self.msg_connect((self.blocks_socket_pdu_0, 'pdus'), (self.mac_virtual_channel_encoder_0, 'in')) self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.mac_virtual_channel_encoder_0_0, 'in')) self.msg_connect((self.gmsk_radio_0, 'msg_out'), (self.simple_mac_1, 'from_radio')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out2'), (self.blocks_message_debug_0_0_1, 'print')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out0'), (self.blocks_socket_pdu_0, 'pdus')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out1'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out1'), (self.mac_802_3_tracker, 'in')) self.msg_connect((self.mac_virtual_channel_encoder_0, 'out'), (self.simple_mac_1, 'from_app_arq')) self.msg_connect((self.mac_virtual_channel_encoder_0_0, 'out'), (self.simple_mac_1, 'from_app_arq')) self.msg_connect((self.simple_mac_1, 'to_radio'), (self.gmsk_radio_0, 'msg_in')) self.msg_connect((self.simple_mac_1, 'to_app'), (self.mac_virtual_channel_decoder_0, 'in')) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_moving_average_xx_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_scopesink2_0_0, 1)) self.connect((self.blocks_moving_average_xx_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.gmsk_radio_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.gmsk_radio_0, 0), (self.wxgui_scopesink2_0_0, 0))
def __init__(self, addr, no_usrp, initialFreq, otw, source, no_self_loop, debug_MAC, wireshark): gr.top_block.__init__( self, "IEEE 802.15.4m Slave Node Transceiver using OQPSK") Qt.QWidget.__init__(self) self.setWindowTitle( "IEEE 802.15.4m Slave Node Transceiver using OQPSK") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "transceiver_OQPSK_Slave") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.addr = addr self.no_usrp = no_usrp self.freq = initialFreq self.otw = otw self.no_self_loop = no_self_loop self.debug_MAC = debug_MAC self.source = source self.wireshark = wireshark self.tx_gain = tx_gain = 0.25 self.rx_gain = rx_gain = 0.25 ################################################## # Blocks ################################################## if self.no_usrp: self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex * 1, 4 * 1e6, True) ## Using files instead of USRPs self.blocks_file_source_slave = blocks.file_source( gr.sizeof_gr_complex * 1, (os.getcwd() + "/utils/masterFileSink"), True) self.blocks_file_sink_slave = blocks.file_sink( gr.sizeof_gr_complex * 1, (os.getcwd() + "/utils/slaveFileSink"), False) self.blocks_file_sink_slave.set_unbuffered(False) else: ## usrp_source self.uhd_usrp_source_0 = uhd.usrp_source( ",".join((self.addr, "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) ## usrp_sink self.uhd_usrp_sink_0 = uhd.usrp_sink( ",".join((self.addr, "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) # TODO Explain the usage self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0) self.uhd_usrp_sink_0.set_normalized_gain(tx_gain, 0) self._tx_gain_range = Range(0, 1, 0.01, 0.75, 200) self._tx_gain_win = RangeWidget(self._tx_gain_range, self.set_tx_gain, "tx_gain", "counter_slider", float) self.top_layout.addWidget(self._tx_gain_win) self._rx_gain_range = Range(0, 1, 0.01, 0.75, 200) self._rx_gain_win = RangeWidget(self._rx_gain_range, self.set_rx_gain, "rx_gain", "counter_slider", float) self.top_layout.addWidget(self._rx_gain_win) self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( 1024, #size firdes.WIN_BLACKMAN_hARRIS, #wintype 0, #fc 4e6, #bw "", #name 1 #number of inputs ) self.qtgui_freq_sink_x_0.set_update_time(0.10) self.qtgui_freq_sink_x_0.set_y_axis(-140, 10) self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB') self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") self.qtgui_freq_sink_x_0.enable_autoscale(False) self.qtgui_freq_sink_x_0.enable_grid(False) self.qtgui_freq_sink_x_0.set_fft_average(1.0) self.qtgui_freq_sink_x_0.enable_axis_labels(True) self.qtgui_freq_sink_x_0.enable_control_panel(False) if not True: self.qtgui_freq_sink_x_0.disable_legend() if "complex" == "float" or "complex" == "msg_float": self.qtgui_freq_sink_x_0.set_plot_pos_half(not True) labels = ['', '', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = [ "blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "dark blue" ] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in xrange(1): if len(labels[i]) == 0: self.qtgui_freq_sink_x_0.set_line_label( i, "Data {0}".format(i)) else: self.qtgui_freq_sink_x_0.set_line_label(i, labels[i]) self.qtgui_freq_sink_x_0.set_line_width(i, widths[i]) self.qtgui_freq_sink_x_0.set_line_color(i, colors[i]) self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_freq_sink_x_0_win = sip.wrapinstance( self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win) self.ieee802_15_4_rime_stack_0 = ieee802_15_4.rime_stack( ([129]), ([131]), ([132]), ([23, 42])) self.ieee802_15_4_oqpsk_phy_0 = ieee802_15_4_oqpsk_phy() # 802.15.4m MAC layer # #self.ieee802_15_4_mac_0 = ieee802_15_4.mac(True) self.ieee802_15_4_mac_0 = mac_15_4m(self.debug_MAC, self.no_self_loop) # Ethernet Encapsulation #TODO explain its usage, Specific to 802.11 ? self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(True) self._freq_options = [ TVWS_channelmap.get_TVWS_freq(i) for i in range(2, 69) ] self._freq_labels = [str(i) for i in range(2, 69)] self._freq_tool_bar = Qt.QToolBar(self) self._freq_tool_bar.addWidget(Qt.QLabel('Channel' + ": ")) self._freq_combo_box = Qt.QComboBox() self._freq_tool_bar.addWidget(self._freq_combo_box) for label in self._freq_labels: self._freq_combo_box.addItem(label) self._freq_callback = lambda i: Qt.QMetaObject.invokeMethod( self._freq_combo_box, "setCurrentIndex", Qt.Q_ARG("int", self._freq_options.index(i))) self._freq_callback(self.freq) self._freq_combo_box.currentIndexChanged.connect( lambda i: self.set_freq(self._freq_options[i])) self.top_layout.addWidget(self._freq_tool_bar) ################################################## # Asynch Message Connections ################################################## if self.source == "tuntap": # Tuntap Block to quantify the achievable throughput print "TUNTAP" self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap1", 440) self.msg_connect(self.ieee802_11_ether_encap_0, "to tap", self.blocks_tuntap_pdu_0, "pdus") self.msg_connect(self.blocks_tuntap_pdu_0, "pdus", self.ieee802_11_ether_encap_0, "from tap") self.msg_connect(self.ieee802_15_4_rime_stack_0, "bcout", self.ieee802_11_ether_encap_0, "from wifi") self.msg_connect(self.ieee802_11_ether_encap_0, "to wifi", self.ieee802_15_4_rime_stack_0, "bcin") elif self.source == "socket": #using PDU Sockets instead #TODO Test ME ! self.blocks_socket_pdu_0_Tx = blocks.socket_pdu( "UDP_SERVER", "localhost", "52004", 10000) self.blocks_socket_pdu_0_Rx = blocks.socket_pdu( "UDP_CLIENT", "localhost", "3333", 10000) self.msg_connect(self.ieee802_15_4_rime_stack_0, "bcout", self.blocks_socket_pdu_0_Rx, "pdus") self.msg_connect(self.blocks_socket_pdu_0_Tx, "pdus", self.ieee802_15_4_rime_stack_0, "bcin") elif self.source == "strobe": self.blocks_message_strobe_0 = blocks.message_strobe( pmt.intern("Hello World!\n"), 1000) self.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.ieee802_15_4_rime_stack_0, 'bcin')) if self.wireshark: self.foo_wireshark_connector_0 = foo.wireshark_connector(127, True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, "/tmp/ofdm.pcap", True) self.blocks_file_sink_0.set_unbuffered(True) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.msg_connect(self.ieee802_15_4_mac_0, "PHY", self.foo_wireshark_connector_0, "in") self.msg_connect(self.ieee802_15_4_oqpsk_phy_0, "mac_out", self.foo_wireshark_connector_0, "in") self.msg_connect((self.ieee802_15_4_mac_0, 'pdu out'), (self.ieee802_15_4_oqpsk_phy_0, 'txin')) self.msg_connect((self.ieee802_15_4_mac_0, 'app out'), (self.ieee802_15_4_rime_stack_0, 'fromMAC')) self.msg_connect((self.ieee802_15_4_oqpsk_phy_0, 'rxout'), (self.ieee802_15_4_mac_0, 'pdu in')) self.msg_connect((self.ieee802_15_4_rime_stack_0, 'toMAC'), (self.ieee802_15_4_mac_0, 'app in')) ################################################## # Connections ################################################## self.connect((self.ieee802_15_4_oqpsk_phy_0, 0), (self.qtgui_freq_sink_x_0, 0)) if self.no_usrp: self.connect((self.ieee802_15_4_oqpsk_phy_0, 0), ((self.blocks_file_sink_slave, 0))) self.connect((self.blocks_file_source_slave, 0), (self.ieee802_15_4_oqpsk_phy_0, 0)) else: self.connect((self.ieee802_15_4_oqpsk_phy_0, 0), ((self.uhd_usrp_sink_0, 0))) self.connect((self.uhd_usrp_source_0, 0), (self.ieee802_15_4_oqpsk_phy_0, 0))
def __init__(self,**param): gr.top_block.__init__(self, "Ue Ping") ################################################## # Variables ################################################## try: if param['Bandwidth'] == '1.4': self.prbl = prbl = 6 self.fftl = fftl = 128 self.multiply_const = multiply_const = 128.0 else: self.prbl = prbl = 15 self.fftl = fftl = 256 self.multiply_const = multiply_const = 256.0 if param['samp_rate_T'] == '2M': self.samp_rate = samp_rate = 2000000 else: self.samp_rate = samp_rate = 4000000 self.threshold = threshold = float(param['Threshold']) self.gain_r = gain_r = int(param['gain_r_T']) self.gain_s = gain_s = int(param['gain_s_T']) self.RNTI_A = RNTI_A = int(param['RNTI_A']) self.sacle_0 = sacle_0 = 1024 self.sacle = sacle = 1024 except: print '变量初始化失败' ################################################## # Blocks ################################################## self.uhd_usrp_source_0 = uhd.usrp_source( device_addr="addr=192.168.10.2", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(4e6) self.uhd_usrp_source_0.set_center_freq(900e6, 0) self.uhd_usrp_source_0.set_gain(gain_r, 0) self.uhd_usrp_source_0.set_bandwidth(1.5e6, 0) self.uhd_usrp_sink_0 = uhd.usrp_sink( device_addr="addr=192.168.10.2", stream_args=uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_sink_0.set_samp_rate(4e6) self.uhd_usrp_sink_0.set_center_freq(1e9, 0) self.uhd_usrp_sink_0.set_gain(gain_s, 0) self.uhd_usrp_sink_0.set_bandwidth(1.5e6, 0) self.rational_resampler_xxx_0 = filter.rational_resampler_ccc( interpolation=25, decimation=24, taps=None, fractional_bw=None, ) self.lte_sat_ul_subframe_mapper_0 = lte_sat.ul_subframe_mapper() self.lte_sat_ul_baseband_generator_0 = lte_sat.ul_baseband_generator() self.lte_sat_layer2_ue_0 = lte_sat.layer2_ue(RNTI_A,False) self.lte_sat_dl_subframe_demapper_0 = lte_sat.dl_subframe_demapper(RNTI_A) self.lte_sat_dl_baseband_sync_0 = lte_sat.dl_baseband_sync(threshold) self.blocks_tuntap_pdu_1 = blocks.tuntap_pdu("tun1", 10000) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((1.0, )) ################################################## # Connections ################################################## self.connect((self.rational_resampler_xxx_0, 0), (self.uhd_usrp_sink_0, 0)) self.connect((self.lte_sat_ul_baseband_generator_0, 0), (self.rational_resampler_xxx_0, 0)) self.connect((self.lte_sat_ul_subframe_mapper_0, 0), (self.lte_sat_ul_baseband_generator_0, 0)) self.connect((self.lte_sat_dl_baseband_sync_0, 0), (self.lte_sat_dl_subframe_demapper_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.lte_sat_dl_baseband_sync_0, 0)) self.connect((self.lte_sat_dl_subframe_demapper_0, 0), (self.lte_sat_layer2_ue_0, 0)) ################################################## # Asynch Message Connections ################################################## self.msg_connect(self.blocks_tuntap_pdu_1, "pdus", self.lte_sat_layer2_ue_0, "pdus") self.msg_connect(self.lte_sat_layer2_ue_0, "sdus", self.blocks_tuntap_pdu_1, "pdus") self.msg_connect(self.lte_sat_layer2_ue_0, "sched_from_l2", self.lte_sat_ul_subframe_mapper_0, "sched_from_l2") self.msg_connect(self.lte_sat_dl_baseband_sync_0, "sys_info", self.lte_sat_dl_subframe_demapper_0, "sys_info") self.msg_connect(self.lte_sat_dl_subframe_demapper_0, "usg", self.lte_sat_layer2_ue_0, "usg") self.msg_connect(self.lte_sat_dl_baseband_sync_0, "sys_info", self.lte_sat_ul_subframe_mapper_0, "sys_info") self.msg_connect(self.lte_sat_dl_baseband_sync_0, "sys_info", self.lte_sat_ul_baseband_generator_0, "sys_info")
def __init__(self): gr.top_block.__init__(self, "Wifi Transceiver Csma Tuntap 4") ################################################## # Variables ################################################## self.tx_gain = tx_gain = 750e-3 self.samp_rate = samp_rate = 5e6 self.rx_gain = rx_gain = 500e-3 self.pdu_length = pdu_length = 500 self.mac_dst = mac_dst = [0x12,0x34,0x56,0x78,0x90,0xaa] self.mac_addr = mac_addr = [0x12,0x34,0x56,0x78,0x90,0xae] self.lo_offset = lo_offset = 0 self.interval = interval = 1e3 self.freq = freq = 2.52e9 self.encoding = encoding = 0 self.chan_est = chan_est = 0 ################################################## # Blocks ################################################## self.wifi_phy_hier_0 = wifi_phy_hier( bandwidth=samp_rate, chan_est=chan_est, encoding=encoding, frequency=freq, sensitivity=0.56, ) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0) self.uhd_usrp_sink_0_0 = uhd.usrp_sink( ",".join(("", "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), "packet_len", ) self.uhd_usrp_sink_0_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0_0.set_center_freq(uhd.tune_request(freq, rf_freq = freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0_0.set_normalized_gain(tx_gain, 0) self.toolkit_cs_0 = toolkit.cs() self.macprotocols_frame_buffer_0 = macprotocols.frame_buffer(256, True, 0, True) self.macprotocols_csma_ca_0 = macprotocols.csma_ca((mac_addr), 9, 16, 34, 1000, -60, True) self.logpwrfft_x_0 = logpwrfft.logpwrfft_c( sample_rate=samp_rate, fft_size=64, ref_scale=2, frame_rate=30, avg_alpha=1.0, average=False, ) self.ieee802_11_parse_mac_0 = ieee802_11.parse_mac(False, False) self.ieee802_11_mac_0_0 = ieee802_11.mac((mac_addr), (mac_dst), ([0xff, 0xff, 0xff, 0xff, 0xff, 255])) (self.ieee802_11_mac_0_0).set_min_output_buffer(256) (self.ieee802_11_mac_0_0).set_max_output_buffer(4096) self.ieee802_11_ether_encap_0 = ieee802_11.ether_encap(False) self.foo_wireshark_connector_0_0 = foo.wireshark_connector(127, False) self.foo_wireshark_connector_0 = foo.wireshark_connector(127, False) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.blocks_vector_to_stream_0 = blocks.vector_to_stream(gr.sizeof_float*1, 64) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu("tap0", 440, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.6, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/wifi_rx.pcap", False) self.blocks_file_sink_0_0.set_unbuffered(True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char*1, "/tmp/wifi_rx_all.pcap", False) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.ieee802_11_ether_encap_0, 'from tap')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to tap'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.ieee802_11_ether_encap_0, 'to wifi'), (self.ieee802_11_mac_0_0, 'app in')) self.msg_connect((self.ieee802_11_mac_0_0, 'phy out'), (self.macprotocols_frame_buffer_0, 'app in')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to app'), (self.foo_wireshark_connector_0_0, 'in')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to app'), (self.ieee802_11_ether_encap_0, 'from wifi')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to app'), (self.ieee802_11_mac_0_0, 'phy in')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame request'), (self.macprotocols_frame_buffer_0, 'req in 0')) self.msg_connect((self.macprotocols_csma_ca_0, 'request to cs'), (self.toolkit_cs_0, 'in_msg')) self.msg_connect((self.macprotocols_csma_ca_0, 'frame to phy'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.macprotocols_frame_buffer_0, 'frame out 0'), (self.macprotocols_csma_ca_0, 'frame from buffer')) self.msg_connect((self.toolkit_cs_0, 'out_msg'), (self.macprotocols_csma_ca_0, 'cs in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.foo_wireshark_connector_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.ieee802_11_parse_mac_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.macprotocols_csma_ca_0, 'frame from phy')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.blocks_vector_to_stream_0, 0), (self.toolkit_cs_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0_0, 0)) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.foo_wireshark_connector_0_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.logpwrfft_x_0, 0), (self.blocks_vector_to_stream_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.logpwrfft_x_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self, ampl=0.7, args='', arq_timeout=.1*0 + 0.04, dest_addr=-1, iface='tun0', max_arq_attempts=5 * 2, mtu=128, port="12345", rx_antenna="TX/RX", rx_gain=65-20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0, radio_addr=63, rx_freq=915e6, tx_freq=915e6, rate=1e6): gr.top_block.__init__(self, "Broadcasfandmnogui") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.max_arq_attempts = max_arq_attempts self.mtu = mtu self.port = port self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset self.radio_addr = radio_addr self.rx_freq = rx_freq self.tx_freq = tx_freq self.rate = rate ################################################## # Variables ################################################## self.samp_rate = samp_rate = rate ################################################## # Blocks ################################################## self.mac_802_3_tracker = mac.tracker_802_3(verbose=False) self.simple_mac_1 = mac.simple_mac( radio_addr, arq_timeout, max_arq_attempts, 2.0, False, 0.05, node_expiry_delay=10.0, expire_on_arq_failure=False, only_send_if_alive=False, prepend_dummy=False, ) self.mac_virtual_channel_encoder_0_0 = mac.virtual_channel_encoder(-1, True,mtu=mtu, chan_id=1, prepend_dummy=False, chan_tracker=self.mac_802_3_tracker, ) self.mac_virtual_channel_encoder_0 = mac.virtual_channel_encoder(-1, True,mtu=mtu, chan_id=0, prepend_dummy=False, ) self.mac_virtual_channel_decoder_0 = mac.virtual_channel_decoder(3, [0, 1]) self.gmsk_radio_0 = gmsk_radio( rate=samp_rate, args=args, tx_gain=tx_gain, tx_freq=tx_freq, rx_ant=rx_antenna, rx_freq=rx_freq, rx_gain=rx_gain, ampl=ampl, rx_lo_offset=rx_lo_offset, tx_lo_offset=tx_lo_offset, samps_per_sym=samps_per_sym, access_code_threshold=0 + 12 + 4*0, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu*0 + 1514, False) self.blocks_socket_pdu_0 = blocks.socket_pdu("TCP_SERVER", "", port, mtu, False) self.blocks_message_strobe_0 = blocks.message_strobe(pmt.intern("T"), 1) self.blocks_message_debug_0_0_1 = blocks.message_debug() ################################################## # Connections ################################################## self.msg_connect((self.blocks_message_strobe_0, 'strobe'), (self.simple_mac_1, 'ctrl_in')) self.msg_connect((self.blocks_socket_pdu_0, 'pdus'), (self.mac_virtual_channel_encoder_0, 'in')) self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.mac_virtual_channel_encoder_0_0, 'in')) self.msg_connect((self.gmsk_radio_0, 'msg_out'), (self.simple_mac_1, 'from_radio')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out2'), (self.blocks_message_debug_0_0_1, 'print')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out0'), (self.blocks_socket_pdu_0, 'pdus')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out1'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.mac_virtual_channel_decoder_0, 'out1'), (self.mac_802_3_tracker, 'in')) self.msg_connect((self.mac_virtual_channel_encoder_0, 'out'), (self.simple_mac_1, 'from_app_arq')) self.msg_connect((self.mac_virtual_channel_encoder_0_0, 'out'), (self.simple_mac_1, 'from_app_arq')) self.msg_connect((self.simple_mac_1, 'to_radio'), (self.gmsk_radio_0, 'msg_in')) self.msg_connect((self.simple_mac_1, 'to_app'), (self.mac_virtual_channel_decoder_0, 'in'))
def __init__(self): gr.top_block.__init__(self, "Wifi Transceiver Flexdatalink 4") ################################################## # Variables ################################################## self.tx_gain = tx_gain = 1000e-3 self.samp_rate = samp_rate = 5e6 self.rx_gain = rx_gain = 1000e-3 self.pdu_length = pdu_length = 500 self.mac_dst = mac_dst = [0x12, 0x34, 0x56, 0x78, 0x90, 0xaa] self.mac_coord = mac_coord = [0x12, 0x34, 0x56, 0x78, 0x90, 0xaa] self.mac_addr = mac_addr = [0x12, 0x34, 0x56, 0x78, 0x90, 0xae] self.lo_offset = lo_offset = 0 self.interval = interval = 1e3 self.freq = freq = 2.52e9 self.encoding = encoding = 0 self.chan_est = chan_est = 0 ################################################## # Blocks ################################################## self.wifi_phy_hier_0 = wifi_phy_hier( bandwidth=samp_rate, chan_est=chan_est, encoding=encoding, frequency=freq, sensitivity=0.56, ) self.uhd_usrp_source_0 = uhd.usrp_source( ",".join(('', "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), ) self.uhd_usrp_source_0.set_samp_rate(samp_rate) self.uhd_usrp_source_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_source_0.set_center_freq( uhd.tune_request(freq, rf_freq=freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_source_0.set_normalized_gain(rx_gain, 0) self.uhd_usrp_source_0.set_bandwidth(10e6, 0) self.uhd_usrp_sink_0_0 = uhd.usrp_sink( ",".join(('', "")), uhd.stream_args( cpu_format="fc32", channels=range(1), ), 'packet_len', ) self.uhd_usrp_sink_0_0.set_samp_rate(samp_rate) self.uhd_usrp_sink_0_0.set_time_now(uhd.time_spec(time.time()), uhd.ALL_MBOARDS) self.uhd_usrp_sink_0_0.set_center_freq( uhd.tune_request(freq, rf_freq=freq - lo_offset, rf_freq_policy=uhd.tune_request.POLICY_MANUAL), 0) self.uhd_usrp_sink_0_0.set_normalized_gain(tx_gain, 0) self.uhd_usrp_sink_0_0.set_bandwidth(10e6, 0) self.somac_sensor_0 = somac.sensor((mac_addr), False, False) self.somac_metrics_gen_0 = somac.metrics_gen(False) self.somac_decision_0 = somac.decision(False, 60, 5, 30, 1, 0, 1, 1, '/tmp/backlog_file.npy') self.foo_wireshark_connector_0_0 = foo.wireshark_connector(127, False) self.foo_wireshark_connector_0 = foo.wireshark_connector(127, False) self.foo_packet_pad2_0 = foo.packet_pad2(False, False, 0.001, 10000, 10000) (self.foo_packet_pad2_0).set_min_output_buffer(100000) self.data_link_0 = data_link( alpha=1000, coord=False, csma_threshold=-35, debug=False, mac_bss=[0xff, 0xff, 0xff, 0xff, 0xff, 0xff], mac_coord=mac_coord, mac_dst=mac_dst, mac_src=mac_addr, portid=255, samp_rate=5e6, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu('tap0', 440, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vcc((0.6, )) (self.blocks_multiply_const_vxx_0).set_min_output_buffer(100000) self.blocks_file_sink_0_0 = blocks.file_sink(gr.sizeof_char * 1, '/tmp/wifi_tx_all.pcap', False) self.blocks_file_sink_0_0.set_unbuffered(True) self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_char * 1, '/tmp/wifi_rx_all.pcap', False) self.blocks_file_sink_0.set_unbuffered(True) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.data_link_0, 'tap in')) self.msg_connect((self.data_link_0, 'tap out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.msg_connect((self.data_link_0, 'phy out'), (self.foo_wireshark_connector_0_0, 'in')) self.msg_connect((self.data_link_0, 'buff size'), (self.somac_metrics_gen_0, 'bsz in')) self.msg_connect((self.data_link_0, 'buffer out'), (self.somac_metrics_gen_0, 'buffer in')) self.msg_connect((self.data_link_0, 'new frame out'), (self.somac_metrics_gen_0, 'new frame in')) self.msg_connect((self.data_link_0, 'phy out'), (self.somac_metrics_gen_0, 'mac in')) self.msg_connect((self.data_link_0, 'snr out'), (self.somac_metrics_gen_0, 'snr in')) self.msg_connect((self.data_link_0, 'phy out'), (self.wifi_phy_hier_0, 'mac_in')) self.msg_connect((self.somac_decision_0, 'broad out'), (self.data_link_0, 'broad in')) self.msg_connect((self.somac_decision_0, 'ctrl out'), (self.data_link_0, 'prot switch')) self.msg_connect((self.somac_decision_0, 'metrics out'), (self.somac_metrics_gen_0, 'ctrl in')) self.msg_connect((self.somac_metrics_gen_0, 'broad out'), (self.data_link_0, 'metrics in')) self.msg_connect((self.somac_sensor_0, 'act prot out'), (self.somac_decision_0, 'act prot in')) self.msg_connect((self.somac_sensor_0, 'met buffsize'), (self.somac_decision_0, 'met in8')) self.msg_connect((self.somac_sensor_0, 'met contention'), (self.somac_decision_0, 'met in6')) self.msg_connect((self.somac_sensor_0, 'met interpkt'), (self.somac_decision_0, 'met in4')) self.msg_connect((self.somac_sensor_0, 'met jit'), (self.somac_decision_0, 'met in2')) self.msg_connect((self.somac_sensor_0, 'met lat'), (self.somac_decision_0, 'met in1')) self.msg_connect((self.somac_sensor_0, 'met non'), (self.somac_decision_0, 'met in7')) self.msg_connect((self.somac_sensor_0, 'met pkt_thr'), (self.somac_decision_0, 'met in9')) self.msg_connect((self.somac_sensor_0, 'met rnp'), (self.somac_decision_0, 'met in3')) self.msg_connect((self.somac_sensor_0, 'met snr'), (self.somac_decision_0, 'met in5')) self.msg_connect((self.somac_sensor_0, 'met thr'), (self.somac_decision_0, 'met in0')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.data_link_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.foo_wireshark_connector_0, 'in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.somac_metrics_gen_0, 'phy in')) self.msg_connect((self.wifi_phy_hier_0, 'mac_out'), (self.somac_sensor_0, 'phy in')) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.foo_packet_pad2_0, 0)) self.connect((self.foo_packet_pad2_0, 0), (self.uhd_usrp_sink_0_0, 0)) self.connect((self.foo_wireshark_connector_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.foo_wireshark_connector_0_0, 0), (self.blocks_file_sink_0_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.data_link_0, 0)) self.connect((self.uhd_usrp_source_0, 0), (self.wifi_phy_hier_0, 0)) self.connect((self.wifi_phy_hier_0, 0), (self.blocks_multiply_const_vxx_0, 0))
def __init__(self, ampl=0.7, args='', arq_timeout=.1 * 0 + 0.04, dest_addr=-1, iface='tun0', max_arq_attempts=5 * 2, mtu=128, ogradio_addr=0, ogrx_freq=915e6, ogtx_freq=915e6, port="12345", rate=1e6, rx_antenna="TX/RX", rx_gain=65 - 20, rx_lo_offset=0, samps_per_sym=4, tx_gain=45, tx_lo_offset=0): grc_wxgui.top_block_gui.__init__(self, title="Broadcastwithfreqnomac") self._lock = threading.RLock() ################################################## # Parameters ################################################## self.ampl = ampl self.args = args self.arq_timeout = arq_timeout self.dest_addr = dest_addr self.iface = iface self.max_arq_attempts = max_arq_attempts self.mtu = mtu self.ogradio_addr = ogradio_addr self.ogrx_freq = ogrx_freq self.ogtx_freq = ogtx_freq self.port = port self.rate = rate self.rx_antenna = rx_antenna self.rx_gain = rx_gain self.rx_lo_offset = rx_lo_offset self.samps_per_sym = samps_per_sym self.tx_gain = tx_gain self.tx_lo_offset = tx_lo_offset ################################################## # Variables ################################################## self.user_tx_gain = user_tx_gain = tx_gain self.user_rx_gain = user_rx_gain = rx_gain self.tx_freq = tx_freq = 915e6 self.samp_rate = samp_rate = rate self.rx_freq = rx_freq = 915e6 ################################################## # Blocks ################################################## _user_tx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_tx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, label="TX Gain", converter=forms.float_converter(), proportion=0, ) self._user_tx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_tx_gain_sizer, value=self.user_tx_gain, callback=self.set_user_tx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_tx_gain_sizer) _user_rx_gain_sizer = wx.BoxSizer(wx.VERTICAL) self._user_rx_gain_text_box = forms.text_box( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, label="RX Gain", converter=forms.float_converter(), proportion=0, ) self._user_rx_gain_slider = forms.slider( parent=self.GetWin(), sizer=_user_rx_gain_sizer, value=self.user_rx_gain, callback=self.set_user_rx_gain, minimum=0, maximum=90, num_steps=90, style=wx.SL_HORIZONTAL, cast=float, proportion=1, ) self.Add(_user_rx_gain_sizer) self._tx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.tx_freq, callback=self.set_tx_freq, label='tx_freq', converter=forms.float_converter(), ) self.Add(self._tx_freq_text_box) self._rx_freq_text_box = forms.text_box( parent=self.GetWin(), value=self.rx_freq, callback=self.set_rx_freq, label='rx_freq', converter=forms.float_converter(), ) self.Add(self._rx_freq_text_box) self.wxgui_scopesink2_0_0 = scopesink2.scope_sink_c( self.GetWin(), title="RX", sample_rate=samp_rate, v_scale=0.02, v_offset=0, t_scale=0.0001, ac_couple=False, xy_mode=False, num_inputs=2, trig_mode=wxgui.TRIG_MODE_NORM, y_axis_label="Counts", ) self.GridAdd(self.wxgui_scopesink2_0_0.win, 0, 0, 1, 1) self.gmsk_radio_0 = gmsk_radio( access_code_threshold=0 + 12 + 4 * 0, samps_per_sym=samps_per_sym, tx_lo_offset=tx_lo_offset, rx_lo_offset=rx_lo_offset, ampl=ampl, rx_gain=user_rx_gain, rx_freq=rx_freq, rx_ant=rx_antenna, tx_freq=tx_freq, tx_gain=user_tx_gain, args=args, rate=samp_rate, ) self.blocks_tuntap_pdu_0 = blocks.tuntap_pdu(iface, mtu * 0 + 1532, False) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((1, )) self.blocks_moving_average_xx_0 = blocks.moving_average_ff( 10000, 1. / 10000, 40000 / 4) self.blocks_float_to_complex_0 = blocks.float_to_complex(1) self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1) ################################################## # Connections ################################################## self.msg_connect((self.blocks_tuntap_pdu_0, 'pdus'), (self.gmsk_radio_0, 'msg_in')) self.msg_connect((self.gmsk_radio_0, 'msg_out'), (self.blocks_tuntap_pdu_0, 'pdus')) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_float_to_complex_0, 0)) self.connect((self.blocks_complex_to_mag_0, 0), (self.blocks_moving_average_xx_0, 0)) self.connect((self.blocks_float_to_complex_0, 0), (self.wxgui_scopesink2_0_0, 1)) self.connect((self.blocks_moving_average_xx_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.blocks_float_to_complex_0, 1)) self.connect((self.gmsk_radio_0, 0), (self.blocks_complex_to_mag_0, 0)) self.connect((self.gmsk_radio_0, 0), (self.wxgui_scopesink2_0_0, 0))