diff options
author | Josh Blum | 2010-04-05 17:25:39 -0700 |
---|---|---|
committer | Josh Blum | 2010-04-05 17:25:39 -0700 |
commit | 5d7b2c44396ef6991b049d2d15ebf5b822690961 (patch) | |
tree | 35f6c0454af877d2051e440f99161b496e9bcc98 /grc | |
parent | 8dfa110cf286db709a503adafc296a8b23225645 (diff) | |
parent | 1ae689ff9238dcffbf65881b8ca03aa8df3844aa (diff) | |
download | gnuradio-5d7b2c44396ef6991b049d2d15ebf5b822690961.tar.gz gnuradio-5d7b2c44396ef6991b049d2d15ebf5b822690961.tar.bz2 gnuradio-5d7b2c44396ef6991b049d2d15ebf5b822690961.zip |
Merge branch 'master' of http://gnuradio.org/git/gnuradio into uhd
Diffstat (limited to 'grc')
-rw-r--r-- | grc/blocks/Makefile.am | 1 | ||||
-rw-r--r-- | grc/blocks/block_tree.xml | 1 | ||||
-rw-r--r-- | grc/blocks/gr_additive_scrambler_bb.xml | 44 | ||||
-rw-r--r-- | grc/blocks/usrp_dual_source_x.xml | 36 | ||||
-rw-r--r-- | grc/grc_gnuradio/usrp/dual_usrp.py | 8 | ||||
-rw-r--r-- | grc/gui/DrawingArea.py | 12 | ||||
-rw-r--r-- | grc/gui/FlowGraph.py | 41 |
7 files changed, 126 insertions, 17 deletions
diff --git a/grc/blocks/Makefile.am b/grc/blocks/Makefile.am index a284d6d85..4e3839d27 100644 --- a/grc/blocks/Makefile.am +++ b/grc/blocks/Makefile.am @@ -67,6 +67,7 @@ dist_ourdata_DATA = \ const_source_x.xml \ gr_add_const_vxx.xml \ gr_add_xx.xml \ + gr_additive_scrambler_bb.xml \ gr_agc2_xx.xml \ gr_agc_xx.xml \ gr_and_xx.xml \ diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml index ba597756f..04568e19a 100644 --- a/grc/blocks/block_tree.xml +++ b/grc/blocks/block_tree.xml @@ -259,6 +259,7 @@ <name>Line Coding</name> <block>gr_scrambler_bb</block> <block>gr_descrambler_bb</block> + <block>gr_additive_scrambler_bb</block> </cat> <cat> <name>Vocoders</name> diff --git a/grc/blocks/gr_additive_scrambler_bb.xml b/grc/blocks/gr_additive_scrambler_bb.xml new file mode 100644 index 000000000..a15d6eefb --- /dev/null +++ b/grc/blocks/gr_additive_scrambler_bb.xml @@ -0,0 +1,44 @@ +<?xml version="1.0"?> +<!-- +################################################### +## Additive Scrambler +################################################### + --> +<block> + <name>Additive Scrambler</name> + <key>gr_additive_scrambler_bb</key> + <import>from gnuradio import gr</import> + <make>gr.additive_scrambler_bb($mask, $seed, $len, $count)</make> + <param> + <name>Mask</name> + <key>mask</key> + <value>0x8A</value> + <type>hex</type> + </param> + <param> + <name>Seed</name> + <key>seed</key> + <value>0x7F</value> + <type>hex</type> + </param> + <param> + <name>Length</name> + <key>len</key> + <value>7</value> + <type>int</type> + </param> + <param> + <name>Count</name> + <key>count</key> + <value>0</value> + <type>int</type> + </param> + <sink> + <name>in</name> + <type>byte</type> + </sink> + <source> + <name>out</name> + <type>byte</type> + </source> +</block> diff --git a/grc/blocks/usrp_dual_source_x.xml b/grc/blocks/usrp_dual_source_x.xml index ad9a860ac..07d3174bb 100644 --- a/grc/blocks/usrp_dual_source_x.xml +++ b/grc/blocks/usrp_dual_source_x.xml @@ -8,7 +8,11 @@ <name>USRP Dual Source</name> <key>usrp_dual_source_x</key> <import>from grc_gnuradio import usrp as grc_usrp</import> - <make>grc_usrp.dual_source_$(type.fcn)(which=$which, rx_ant_a=$rx_ant_a, rx_ant_b=$rx_ant_b) + <make>grc_usrp.dual_source_$(type.fcn)( + which=$which, + rx_ant_a=$rx_ant_a, rx_ant_b=$rx_ant_b, + rx_source_a=$rx_source_a, rx_source_b=$rx_source_b, +) #if $format() self.$(id).set_format(width=$format.width, shift=$format.shift) #end if @@ -189,6 +193,36 @@ self.$(id).set_gain_b($gain_b)</make> <key>RX2</key> </option> </param> + <param> + <name>RX Source A</name> + <key>rx_source_a</key> + <value>A</value> + <type>string</type> + <hide>#if $rx_source_a() == 'A' then 'part' else 'none'#</hide> + <option> + <name>Side A</name> + <key>A</key> + </option> + <option> + <name>Side B</name> + <key>B</key> + </option> + </param> + <param> + <name>RX Source B</name> + <key>rx_source_b</key> + <value>B</value> + <type>string</type> + <hide>#if $rx_source_b() == 'B' then 'part' else 'none'#</hide> + <option> + <name>Side A</name> + <key>A</key> + </option> + <option> + <name>Side B</name> + <key>B</key> + </option> + </param> <source> <name>Aout</name> <type>$type</type> diff --git a/grc/grc_gnuradio/usrp/dual_usrp.py b/grc/grc_gnuradio/usrp/dual_usrp.py index b26dbddd4..66b76b2df 100644 --- a/grc/grc_gnuradio/usrp/dual_usrp.py +++ b/grc/grc_gnuradio/usrp/dual_usrp.py @@ -1,4 +1,4 @@ -# Copyright 2009 Free Software Foundation, Inc. +# Copyright 2009, 2010 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -27,7 +27,7 @@ from gnuradio import gr class _dual_source(gr.hier_block2): """A dual usrp source of IO type short or complex.""" - def __init__(self, which, rx_ant_a='RXA', rx_ant_b='RXA'): + def __init__(self, which, rx_ant_a='RXA', rx_ant_b='RXA', rx_source_a='A', rx_source_b='B'): """ USRP dual source contructor. @param which the unit number @@ -42,8 +42,8 @@ class _dual_source(gr.hier_block2): ) #create usrp object self._make_usrp(which=which, nchan=2) - subdev_spec_a = common.to_spec('A', rx_ant_a) - subdev_spec_b = common.to_spec('B', rx_ant_b) + subdev_spec_a = common.to_spec(rx_source_a, rx_ant_a) + subdev_spec_b = common.to_spec(rx_source_b, rx_ant_b) self._get_u().set_mux(self._get_u().determine_rx_mux_value(subdev_spec_a, subdev_spec_b)) self._subdev_a = self._get_u().selected_subdev(subdev_spec_a) self._subdev_b = self._get_u().selected_subdev(subdev_spec_b) diff --git a/grc/gui/DrawingArea.py b/grc/gui/DrawingArea.py index b70468ed0..790df7c3f 100644 --- a/grc/gui/DrawingArea.py +++ b/grc/gui/DrawingArea.py @@ -1,5 +1,5 @@ """ -Copyright 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Radio GNU Radio Companion is free software; you can redistribute it and/or @@ -82,19 +82,21 @@ class DrawingArea(gtk.DrawingArea): Forward button click information to the flow graph. """ self.ctrl_mask = event.state & gtk.gdk.CONTROL_MASK - self._flow_graph.handle_mouse_button_press( - left_click=(event.button == 1), + if event.button == 1: self._flow_graph.handle_mouse_selector_press( double_click=(event.type == gtk.gdk._2BUTTON_PRESS), coordinate=(event.x, event.y), ) + if event.button == 3: self._flow_graph.handle_mouse_context_press( + coordinate=(event.x, event.y), + event=event, + ) def _handle_mouse_button_release(self, widget, event): """ Forward button release information to the flow graph. """ self.ctrl_mask = event.state & gtk.gdk.CONTROL_MASK - self._flow_graph.handle_mouse_button_release( - left_click=(event.button == 1), + if event.button == 1: self._flow_graph.handle_mouse_selector_release( coordinate=(event.x, event.y), ) diff --git a/grc/gui/FlowGraph.py b/grc/gui/FlowGraph.py index 5adecccc1..897145a1d 100644 --- a/grc/gui/FlowGraph.py +++ b/grc/gui/FlowGraph.py @@ -1,5 +1,5 @@ """ -Copyright 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Radio GNU Radio Companion is free software; you can redistribute it and/or @@ -51,6 +51,19 @@ class FlowGraph(Element): #selected ports self._old_selected_port = None self._new_selected_port = None + #context menu + self._context_menu = gtk.Menu() + for action in [ + Actions.BLOCK_CUT, + Actions.BLOCK_COPY, + Actions.BLOCK_PASTE, + Actions.ELEMENT_DELETE, + Actions.BLOCK_ROTATE_CCW, + Actions.BLOCK_ROTATE_CW, + Actions.BLOCK_ENABLE, + Actions.BLOCK_DISABLE, + Actions.BLOCK_PARAM_MODIFY, + ]: self._context_menu.append(action.create_menu_item()) ########################################################################### # Access Drawing Area @@ -425,14 +438,27 @@ class FlowGraph(Element): ########################################################################## ## Event Handlers ########################################################################## - def handle_mouse_button_press(self, left_click, double_click, coordinate): + def handle_mouse_context_press(self, coordinate, event): """ - A mouse button is pressed, only respond to left clicks. + The context mouse button was pressed: + If no elements were selected, perform re-selection at this coordinate. + Then, show the context menu at the mouse click location. + """ + selections = self.what_is_selected(coordinate) + if not set(selections).intersection(self.get_selected_elements()): + self.set_coordinate(coordinate) + self.mouse_pressed = True + self.update_selected_elements() + self.mouse_pressed = False + self._context_menu.popup(None, None, None, event.button, event.time) + + def handle_mouse_selector_press(self, double_click, coordinate): + """ + The selector mouse button was pressed: Find the selected element. Attempt a new connection if possible. Open the block params window on a double click. Update the selection state of the flow graph. """ - if not left_click: return self.press_coor = coordinate self.set_coordinate(coordinate) self.time = 0 @@ -444,11 +470,12 @@ class FlowGraph(Element): self.mouse_pressed = False Actions.BLOCK_PARAM_MODIFY() - def handle_mouse_button_release(self, left_click, coordinate): + def handle_mouse_selector_release(self, coordinate): """ - A mouse button is released, record the state. + The selector mouse button was released: + Update the state, handle motion (dragging). + And update the selected flowgraph elements. """ - if not left_click: return self.set_coordinate(coordinate) self.time = 0 self.mouse_pressed = False |