Module pyspecan.controller.tkGUI.sink_live

Controller for LIVE sink

Functions

def args_live(parser)
Expand source code
def args_live(parser):
    sink = args.get_group(parser, "Sink (LIVE)")
    args_sink(sink)

Classes

class SinkConfig
Expand source code
class SinkConfig:
    pass
class SinkLive (ctrl)
Expand source code
class SinkLive(Sink):
    def __init__(self, ctrl):
        super().__init__(ctrl)

        self.ctrl.view.sink.cl_cb_dev.config(values=list([d for d in pysdrlib.devices.ls()]))
        self.ctrl.view.cb_dev.bind("<<ComboboxSelected>>", self.handle_event)

        self.ctrl.view.sink.cl_ent_rx_rf.bind("<Return>", self.handle_event)
        self.ctrl.view.sink.cl_ent_rx_if.bind("<Return>", self.handle_event)
        self.ctrl.view.sink.cl_ent_rx_bb.bind("<Return>", self.handle_event)
        self.ctrl.view.sink.cl_var_rx_rf.set(str(self.ctrl.model.sink.get_rx_rf()))
        self.ctrl.view.sink.cl_var_rx_if.set(str(self.ctrl.model.sink.get_rx_if()))
        self.ctrl.view.sink.cl_var_rx_bb.set(str(self.ctrl.model.sink.get_rx_bb()))
        self.toggle_gains()

    def start(self):
        if self.ctrl.model.sink.dev is None:
            print("sink is not fully initialized, failed to get device")
            return
        self.ctrl.view.tb_btn_start.config(state=tk.DISABLED)
        self.ctrl.view.tb_btn_stop.config(state=tk.ACTIVE)
        self.ctrl.dispatch.send(CMD.START)

    def stop(self):
        self.ctrl.view.tb_btn_stop.config(state=tk.DISABLED)
        self.ctrl.view.tb_btn_start.config(state=tk.ACTIVE)
        self.ctrl.dispatch.send(CMD.STOP)

    def reset(self):
        self.ctrl.dispatch.send(CMD.RESET)
        self.stop()

    def draw_cl(self):
        self.ctrl.view.sink.cl_var_dev.set(str(type(self.ctrl.model.sink.dev).__name__))
        self.ctrl.view.sink.cl_var_rx_rf.set(str(self.ctrl.model.sink.get_rx_rf()))
        self.ctrl.view.sink.cl_var_rx_if.set(str(self.ctrl.model.sink.get_rx_if()))
        self.ctrl.view.sink.cl_var_rx_bb.set(str(self.ctrl.model.sink.get_rx_bb()))

    def toggle_gains(self):
        if not self.ctrl.model.sink.has_rx_rf():
            self.ctrl.view.sink.cl_fr_rx_rf.grid_forget()
        else:
            self.ctrl.view.sink.cl_fr_rx_rf.grid()
        if not self.ctrl.model.sink.has_rx_if():
            self.ctrl.view.sink.cl_fr_rx_if.grid_forget()
        else:
            self.ctrl.view.sink.cl_fr_rx_if.grid()
        if not self.ctrl.model.sink.has_rx_bb():
            self.ctrl.view.sink.cl_fr_rx_bb.grid_forget()
        else:
            self.ctrl.view.sink.cl_fr_rx_bb.grid()

    # --- GUI bind events and setters --- #
    def handle_event(self, event):
        if event.widget == self.ctrl.view.sink.cl_cb_dev:
            self.set_device(self.ctrl.view.sink.cl_var_dev.get())
        elif event.widget == self.ctrl.view.sink.cl_ent_rx_rf:
            self.set_rx_rf(self.ctrl.view.sink.cl_var_rx_rf.get())
        elif event.widget == self.ctrl.view.sink.cl_ent_rx_if:
            self.set_rx_if(self.ctrl.view.sink.cl_var_rx_if.get())
        elif event.widget == self.ctrl.view.sink.cl_ent_rx_bb:
            self.set_rx_bb(self.ctrl.view.sink.cl_var_rx_bb.get())

    def set_device(self, device):
        self.ctrl.model.sink.set_device(device)
        print(f"Device set to '{self.ctrl.model.sink.name}'")
        self.draw_tb()
        self.draw_cl()
        self.toggle_gains()

    def set_rx_rf(self, gain):
        try:
            gain = int(gain)
            self.ctrl.model.sink.set_rx_rf(gain)
        except ValueError:
            pass
        self.draw_cl()

    def set_rx_if(self, gain):
        try:
            gain = int(gain)
            self.ctrl.model.sink.set_rx_if(gain)
        except ValueError:
            pass
        self.draw_cl()

    def set_rx_bb(self, gain):
        try:
            gain = int(gain)
            self.ctrl.model.sink.set_rx_bb(gain)
        except ValueError:
            pass
        self.draw_cl()

Ancestors

Methods

def draw_cl(self)
Expand source code
def draw_cl(self):
    self.ctrl.view.sink.cl_var_dev.set(str(type(self.ctrl.model.sink.dev).__name__))
    self.ctrl.view.sink.cl_var_rx_rf.set(str(self.ctrl.model.sink.get_rx_rf()))
    self.ctrl.view.sink.cl_var_rx_if.set(str(self.ctrl.model.sink.get_rx_if()))
    self.ctrl.view.sink.cl_var_rx_bb.set(str(self.ctrl.model.sink.get_rx_bb()))
def handle_event(self, event)
Expand source code
def handle_event(self, event):
    if event.widget == self.ctrl.view.sink.cl_cb_dev:
        self.set_device(self.ctrl.view.sink.cl_var_dev.get())
    elif event.widget == self.ctrl.view.sink.cl_ent_rx_rf:
        self.set_rx_rf(self.ctrl.view.sink.cl_var_rx_rf.get())
    elif event.widget == self.ctrl.view.sink.cl_ent_rx_if:
        self.set_rx_if(self.ctrl.view.sink.cl_var_rx_if.get())
    elif event.widget == self.ctrl.view.sink.cl_ent_rx_bb:
        self.set_rx_bb(self.ctrl.view.sink.cl_var_rx_bb.get())
def reset(self)
Expand source code
def reset(self):
    self.ctrl.dispatch.send(CMD.RESET)
    self.stop()
def set_device(self, device)
Expand source code
def set_device(self, device):
    self.ctrl.model.sink.set_device(device)
    print(f"Device set to '{self.ctrl.model.sink.name}'")
    self.draw_tb()
    self.draw_cl()
    self.toggle_gains()
def set_rx_bb(self, gain)
Expand source code
def set_rx_bb(self, gain):
    try:
        gain = int(gain)
        self.ctrl.model.sink.set_rx_bb(gain)
    except ValueError:
        pass
    self.draw_cl()
def set_rx_if(self, gain)
Expand source code
def set_rx_if(self, gain):
    try:
        gain = int(gain)
        self.ctrl.model.sink.set_rx_if(gain)
    except ValueError:
        pass
    self.draw_cl()
def set_rx_rf(self, gain)
Expand source code
def set_rx_rf(self, gain):
    try:
        gain = int(gain)
        self.ctrl.model.sink.set_rx_rf(gain)
    except ValueError:
        pass
    self.draw_cl()
def start(self)
Expand source code
def start(self):
    if self.ctrl.model.sink.dev is None:
        print("sink is not fully initialized, failed to get device")
        return
    self.ctrl.view.tb_btn_start.config(state=tk.DISABLED)
    self.ctrl.view.tb_btn_stop.config(state=tk.ACTIVE)
    self.ctrl.dispatch.send(CMD.START)
def stop(self)
Expand source code
def stop(self):
    self.ctrl.view.tb_btn_stop.config(state=tk.DISABLED)
    self.ctrl.view.tb_btn_start.config(state=tk.ACTIVE)
    self.ctrl.dispatch.send(CMD.STOP)
def toggle_gains(self)
Expand source code
def toggle_gains(self):
    if not self.ctrl.model.sink.has_rx_rf():
        self.ctrl.view.sink.cl_fr_rx_rf.grid_forget()
    else:
        self.ctrl.view.sink.cl_fr_rx_rf.grid()
    if not self.ctrl.model.sink.has_rx_if():
        self.ctrl.view.sink.cl_fr_rx_if.grid_forget()
    else:
        self.ctrl.view.sink.cl_fr_rx_if.grid()
    if not self.ctrl.model.sink.has_rx_bb():
        self.ctrl.view.sink.cl_fr_rx_bb.grid_forget()
    else:
        self.ctrl.view.sink.cl_fr_rx_bb.grid()