def __init__(self, args): gr.top_block.__init__(self) pubsub.__init__(self) UHDApp.__init__(self, args=args, prefix="UHD-SIGGEN") self.extra_sink = None # Allocate some attributes self._src1 = None self._src2 = None self._src = None # Initialize device: self.setup_usrp( ctor=uhd.usrp_sink, args=args, ) print("[UHD-SIGGEN] UHD Signal Generator") print("[UHD-SIGGEN] UHD Version: {ver}".format( ver=uhd.get_version_string())) print("[UHD-SIGGEN] Using USRP configuration:") print(self.get_usrp_info_string(tx_or_rx="tx")) self.usrp_description = self.get_usrp_info_string(tx_or_rx="tx", compact=True) ### Set subscribers and publishers: self.publish(SAMP_RATE_KEY, lambda: self.usrp.get_samp_rate()) self.publish(DESC_KEY, lambda: self.usrp_description) self.publish(FREQ_RANGE_KEY, lambda: self.usrp.get_freq_range(self.channels[0])) self.publish(GAIN_RANGE_KEY, lambda: self.usrp.get_gain_range(self.channels[0])) self.publish(GAIN_KEY, lambda: self.usrp.get_gain(self.channels[0])) self[SAMP_RATE_KEY] = args.samp_rate self[TX_FREQ_KEY] = args.freq self[AMPLITUDE_KEY] = args.amplitude self[WAVEFORM_FREQ_KEY] = args.waveform_freq self[WAVEFORM_OFFSET_KEY] = args.offset self[WAVEFORM2_FREQ_KEY] = args.waveform2_freq self[DSP_FREQ_KEY] = 0 self[RF_FREQ_KEY] = 0 #subscribe set methods self.subscribe(SAMP_RATE_KEY, self.set_samp_rate) self.subscribe(GAIN_KEY, self.set_gain) self.subscribe(TX_FREQ_KEY, self.set_freq) self.subscribe(AMPLITUDE_KEY, self.set_amplitude) self.subscribe(WAVEFORM_FREQ_KEY, self.set_waveform_freq) self.subscribe(WAVEFORM2_FREQ_KEY, self.set_waveform2_freq) self.subscribe(TYPE_KEY, self.set_waveform) #force update on pubsub keys for key in (SAMP_RATE_KEY, GAIN_KEY, TX_FREQ_KEY, AMPLITUDE_KEY, WAVEFORM_FREQ_KEY, WAVEFORM_OFFSET_KEY, WAVEFORM2_FREQ_KEY): self[key] = self[key] self[TYPE_KEY] = args.type #set type last
def __init__(self, args): gr.top_block.__init__(self) pubsub.__init__(self) UHDApp.__init__(self, args=args, prefix="UHD-SIGGEN") self.extra_sink = None # Allocate some attributes self._src1 = None self._src2 = None self._src = None # Initialize device: self.setup_usrp( ctor=uhd.usrp_sink, args=args, ) print("[UHD-SIGGEN] UHD Signal Generator") print("[UHD-SIGGEN] UHD Version: {ver}".format(ver=uhd.get_version_string())) print("[UHD-SIGGEN] Using USRP configuration:") print(self.get_usrp_info_string(tx_or_rx="tx")) self.usrp_description = self.get_usrp_info_string(tx_or_rx="tx", compact=True) ### Set subscribers and publishers: self.publish(SAMP_RATE_KEY, lambda: self.usrp.get_samp_rate()) self.publish(DESC_KEY, lambda: self.usrp_description) self.publish(FREQ_RANGE_KEY, lambda: self.usrp.get_freq_range(self.channels[0])) self.publish(GAIN_RANGE_KEY, lambda: self.usrp.get_gain_range(self.channels[0])) self.publish(GAIN_KEY, lambda: self.usrp.get_gain(self.channels[0])) self[SAMP_RATE_KEY] = args.samp_rate self[TX_FREQ_KEY] = args.freq self[AMPLITUDE_KEY] = args.amplitude self[WAVEFORM_FREQ_KEY] = args.waveform_freq self[WAVEFORM_OFFSET_KEY] = args.offset self[WAVEFORM2_FREQ_KEY] = args.waveform2_freq self[DSP_FREQ_KEY] = 0 self[RF_FREQ_KEY] = 0 #subscribe set methods self.subscribe(SAMP_RATE_KEY, self.set_samp_rate) self.subscribe(GAIN_KEY, self.set_gain) self.subscribe(TX_FREQ_KEY, self.set_freq) self.subscribe(AMPLITUDE_KEY, self.set_amplitude) self.subscribe(WAVEFORM_FREQ_KEY, self.set_waveform_freq) self.subscribe(WAVEFORM2_FREQ_KEY, self.set_waveform2_freq) self.subscribe(TYPE_KEY, self.set_waveform) #force update on pubsub keys for key in (SAMP_RATE_KEY, GAIN_KEY, TX_FREQ_KEY, AMPLITUDE_KEY, WAVEFORM_FREQ_KEY, WAVEFORM_OFFSET_KEY, WAVEFORM2_FREQ_KEY): self[key] = self[key] self[TYPE_KEY] = args.type #set type last
def setup_argparser(): """ Create argument parser for signal generator. """ parser = UHDApp.setup_argparser( description="USRP Signal Generator.", tx_or_rx="Tx", ) group = parser.add_argument_group('Siggen Arguments') group.add_argument("-x", "--waveform-freq", type=eng_arg.eng_float, default=0.0, help="Set baseband waveform frequency to FREQ") group.add_argument("-y", "--waveform2-freq", type=eng_arg.eng_float, default=0.0, help="Set 2nd waveform frequency to FREQ") group.add_argument("--sine", dest="type", action="store_const", const=analog.GR_SIN_WAVE, help="Generate a carrier modulated by a complex sine wave", default=analog.GR_SIN_WAVE) group.add_argument("--const", dest="type", action="store_const", const=analog.GR_CONST_WAVE, help="Generate a constant carrier") group.add_argument("--offset", type=eng_arg.eng_float, default=0, help="Set waveform phase offset to OFFSET", metavar="OFFSET") group.add_argument("--gaussian", dest="type", action="store_const", const=analog.GR_GAUSSIAN, help="Generate Gaussian random output") group.add_argument("--uniform", dest="type", action="store_const", const=analog.GR_UNIFORM, help="Generate Uniform random output") group.add_argument("--2tone", dest="type", action="store_const", const="2tone", help="Generate Two Tone signal for IMD testing") group.add_argument("--sweep", dest="type", action="store_const", const="sweep", help="Generate a swept sine wave") return parser
def setup_argparser(): # Parses a set of input arguments coming from a command line parser = UHDApp.setup_argparser(description="UHD Receiver", tx_or_rx="Rx") group_radio = parser.add_argument_group('USRP Additional Arguments') group_radio.add_argument("-d", "--DC-offset", dest="dc_offset", default=0.5, help="Set a constant DC offset value") group_radio.add_argument( "--DC-offset-auto", dest="dc_offset_auto", default=True, help="Enable/disable the automatic DC offset correction") group_network = parser.add_argument_group('Network Connection Arguments') group_network.add_argument( "-i", "--ip-address", dest="ip_address", default=IP_remote_server, help="Sets remote ip address to send the data stream to") group_network.add_argument( "-u", "--UDP-data-port", dest="UDP_data_port", type=int, default=UDP_data_port, help="Sets an UDP port through which the data are sent") group_network.add_argument( "-t", "--TCP-ctrl-port", dest="TCP_ctrl_port", type=int, default=TCP_ctrl_port, help="Sets an TCP port through which the control commands are received" ) group_network.add_argument("-l", "--loopback", action="store_true", help="Sets a default loopback configuration") group_network.add_argument( "-n", "--network", action="store_true", help="Sets a default network configuration with a remote server ") return (parser)
def __init__(self, args): gr.top_block.__init__(self) pubsub.__init__(self) if not 0.0 <= args.amplitude <= 1.0: raise ValueError( "Invalid value for amplitude: {}. Must be in [0.0, 1.0]". format(args.amplitude)) # If the power argument is given, we need to turn that into a power # *reference* level. This is a bit of a hack because we're assuming # knowledge of UHDApp (i.e. we're leaking abstractions). But it's simple # and harmless enough. if args.power: if args.amplitude < self.MIN_AMP_POWER_MODE: raise RuntimeError( "[ERROR] Invalid amplitude: In power mode, amplitude must be " "larger than {}!".format(self.MIN_AMP_POWER_MODE)) args.power -= 20 * math.log10(args.amplitude) UHDApp.__init__(self, args=args, prefix="UHD-SIGGEN") self.extra_sink = None # Allocate some attributes self._src1 = None self._src2 = None self._src = None # Initialize device: self.setup_usrp( ctor=uhd.usrp_sink, args=args, ) print("[UHD-SIGGEN] UHD Signal Generator") print("[UHD-SIGGEN] UHD Version: {ver}".format( ver=uhd.get_version_string())) print("[UHD-SIGGEN] Using USRP configuration:") print(self.get_usrp_info_string(tx_or_rx="tx")) self.usrp_description = self.get_usrp_info_string(tx_or_rx="tx", compact=True) ### Set subscribers and publishers: self.publish(SAMP_RATE_KEY, lambda: self.usrp.get_samp_rate()) self.publish(DESC_KEY, lambda: self.usrp_description) self.publish(FREQ_RANGE_KEY, lambda: self.usrp.get_freq_range(self.channels[0])) self.publish(GAIN_KEY, lambda: self.get_gain_or_power()) self[SAMP_RATE_KEY] = args.samp_rate self[TX_FREQ_KEY] = args.freq self[AMPLITUDE_KEY] = args.amplitude self[WAVEFORM_FREQ_KEY] = args.waveform_freq self[WAVEFORM_OFFSET_KEY] = args.offset self[WAVEFORM2_FREQ_KEY] = args.waveform2_freq self[DSP_FREQ_KEY] = 0 self[RF_FREQ_KEY] = 0 #subscribe set methods self.subscribe(SAMP_RATE_KEY, self.set_samp_rate) self.subscribe(GAIN_KEY, self.set_gain_or_power) self.subscribe(TX_FREQ_KEY, self.set_freq) self.subscribe(AMPLITUDE_KEY, self.set_amplitude) self.subscribe(WAVEFORM_FREQ_KEY, self.set_waveform_freq) self.subscribe(WAVEFORM2_FREQ_KEY, self.set_waveform2_freq) self.subscribe(TYPE_KEY, self.set_waveform) self.subscribe(RF_FREQ_KEY, self.update_gain_range) #force update on pubsub keys for key in (SAMP_RATE_KEY, GAIN_KEY, TX_FREQ_KEY, AMPLITUDE_KEY, WAVEFORM_FREQ_KEY, WAVEFORM_OFFSET_KEY, WAVEFORM2_FREQ_KEY): self[key] = self[key] self[TYPE_KEY] = args.type #set type last