I added a nice button to usrp_nbfm_ptt.py. A purely cosmetical patch, but it
looks nicer.
cheers
--
Martin Braun
Institut fuer Nachrichtentechnik
Universitaet Karlsruhe
http://www.int.uni-karlsruhe.de
Index: usrp_nbfm_ptt.py
===================================================================
--- usrp_nbfm_ptt.py (Revision 7391)
+++ usrp_nbfm_ptt.py (Arbeitskopie)
@@ -49,7 +49,8 @@
self.frame = frame
self.space_bar_pressed = False
-
+ self.button_clicked = False
+
parser = OptionParser (option_class=eng_option)
parser.add_option("-R", "--rx-subdev-spec", type="subdev", default=None,
help="select USRP Rx side A or B")
@@ -72,7 +73,7 @@
if options.freq < 1e6:
options.freq *= 1e6
-
+
self.txpath = transmit_path(options.tx_subdev_spec, options.audio_input)
self.rxpath = receive_path(options.rx_subdev_spec, options.rx_gain, options.audio_output)
self.connect(self.txpath)
@@ -92,14 +93,18 @@
self.rxpath.set_enable(not(enabled))
if enabled:
self.frame.SetStatusText ("Transmitter ON", 1)
+ self.button_tl.SetLabel ("TALK")
+ self.button_tl.SetValue (True)
else:
- self.frame.SetStatusText ("Receiver ON", 1)
+ self.frame.SetStatusText ("Receiver ON")
+ self.button_tl.SetLabel ("LISTEN")
+ self.button_tl.SetValue (False)
def set_rx_gain(self, gain):
self.myform['rx_gain'].set_value(gain) # update displayed value
self.rxpath.set_gain(gain)
-
+
def set_tx_gain(self, gain):
self.txpath.set_gain(gain)
@@ -125,11 +130,10 @@
def _form_set_freq(kv):
return self.set_freq(kv['freq'])
-
+
self.panel = panel
-
- # FIXME This REALLY needs to be replaced with a hand-crafted button
- # that sends both button down and button up events
+
+ # Title
hbox = wx.BoxSizer(wx.HORIZONTAL)
hbox.Add((10,0), 1)
self.status_msg = wx.StaticText(panel, -1, "Press Space Bar to Transmit")
@@ -139,6 +143,24 @@
hbox.Add((10,0), 1)
vbox.Add(hbox, 0, wx.EXPAND | wx.ALIGN_CENTER)
+ # Talk button
+ hbox = wx.BoxSizer(wx.HORIZONTAL)
+ hbox.Add((3,0), 1)
+ self.button_tl = wx.ToggleButton(panel, -1, "LISTEN")
+ of = self.button_tl.GetFont()
+ self.button_tl.SetFont(wx.Font(15, of.GetFamily(), of.GetStyle(), wx.FONTWEIGHT_BOLD))
+ hbox.Add(self.button_tl, 4, wx.EXPAND)
+ hbox.Add((3,0), 1)
+ vbox.Add(hbox, 1, wx.EXPAND | wx.ALIGN_CENTER)
+
+ hbox = wx.BoxSizer(wx.HORIZONTAL)
+ hbox.Add((1,0), 0)
+ vbox.Add(hbox, 1, wx.EXPAND | wx.ALIGN_CENTER)
+
+ # All the event handlers needed for the button
+ self.button_tl.Bind(wx.EVT_LEFT_DOWN, self._on_mouse_down, self.button_tl)
+ self.button_tl.Bind(wx.EVT_LEFT_UP, self._on_mouse_up, self.button_tl)
+
panel.Bind(wx.EVT_KEY_DOWN, self._on_key_down)
panel.Bind(wx.EVT_KEY_UP, self._on_key_up)
panel.Bind(wx.EVT_KILL_FOCUS, self._on_kill_focus)
@@ -149,14 +171,14 @@
sample_rate=self.rxpath.if_rate,
ref_level=80, y_per_div=20)
self.connect (self.rxpath.u, rx_fft)
- vbox.Add (rx_fft.win, 1, wx.EXPAND)
+ vbox.Add (rx_fft.win, 4, wx.EXPAND)
if 1 and not(no_gui):
rx_fft = fftsink2.fft_sink_c(panel, title="Post s/w DDC",
fft_size=512, sample_rate=self.rxpath.quad_rate,
ref_level=80, y_per_div=20)
self.connect (self.rxpath.ddc, rx_fft)
- vbox.Add (rx_fft.win, 1, wx.EXPAND)
+ vbox.Add (rx_fft.win, 4, wx.EXPAND)
if 0 and not(no_gui):
foo = scopesink2.scope_sink_f(panel, title="Squelch",
@@ -164,13 +186,13 @@
self.connect (self.rxpath.fmrx.div, (foo,0))
self.connect (self.rxpath.fmrx.gate, (foo,1))
self.connect (self.rxpath.fmrx.squelch_lpf, (foo,2))
- vbox.Add (foo.win, 1, wx.EXPAND)
+ vbox.Add (foo.win, 4, wx.EXPAND)
if 0 and not(no_gui):
tx_fft = fftsink2.fft_sink_c(panel, title="Tx Output",
fft_size=512, sample_rate=self.txpath.usrp_rate)
self.connect (self.txpath.amp, tx_fft)
- vbox.Add (tx_fft.win, 1, wx.EXPAND)
+ vbox.Add (tx_fft.win, 4, wx.EXPAND)
# add control area at the bottom
@@ -246,15 +268,26 @@
def _set_status_msg(self, msg, which=0):
self.frame.GetStatusBar().SetStatusText(msg, which)
+ def _on_mouse_down(self, evt):
+ if not self.space_bar_pressed:
+ self.button_clicked = True
+ self.set_transmit(True)
+ self.button_tl.SetValue(True)
+
def _on_key_down(self, evt):
# print "key_down:", evt.m_keyCode
- if evt.m_keyCode == wx.WXK_SPACE and not(self.space_bar_pressed):
+ if evt.m_keyCode == wx.WXK_SPACE and not(self.space_bar_pressed) and not(self.button_clicked):
self.space_bar_pressed = True
self.set_transmit(True)
+ def _on_mouse_up(self, evt):
+ if self.button_clicked:
+ self.button_clicked = False
+ self.set_transmit(False)
+
def _on_key_up(self, evt):
# print "key_up", evt.m_keyCode
- if evt.m_keyCode == wx.WXK_SPACE:
+ if evt.m_keyCode == wx.WXK_SPACE and not self.button_clicked:
self.space_bar_pressed = False
self.set_transmit(False)
_______________________________________________
Patch-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/patch-gnuradio