示例#1
0
    def make_layout(self):
        bspace=10
        self.topbox.SetOrientation(wx.HORIZONTAL)
        self.controlbox = wx.BoxSizer(wx.VERTICAL)
        self.AddPlot()
        
        ## Create divider
        self.divider = Divider(self)
        self.divider.SetBackgroundColour(wx.Colour(200,200,200) )
        self.topbox.Add(self.divider, 0, wx.EXPAND|wx.GROW)

        # Get PHY RX
        if hasattr(self.GetParent(), 'phy'):
            if hasattr(self.GetParent().phy, 'rx'):
                self.phyrx = self.GetParent().phy.rx

        """ Subchannel """
        self.set_subchannel = lambda *args: None
        self.subchannel = 0
        if hasattr(self.phyrx, 'lfb_subchannel'):
            self.subchannel = self.phyrx.lfb_subchannel()
        if hasattr(self.phyrx, 'set_lfb_subchannel'):
            self.set_subchannel = self.phyrx.set_lfb_subchannel
        box = wx.BoxSizer(wx.VERTICAL)
        self.make_label("Subchannel", box)
        self.fsubchannel = form.int_field(self, box, value=self.subchannel, \
                                      callback=self.SetSubchannel)
        self.AddParam('subchannel', self.SetSubchannel)
        self.controlbox.Add(box, 0, wx.TOP, border=bspace)

        """ Period """
        self.set_period = lambda *args: None
        self.period = 0
        if hasattr(self.phyrx, 'lfb_period'):
            self.period = self.phyrx.lfb_period()
        if hasattr(self.phyrx, 'set_lfb_period'):
            self.set_period = self.phyrx.set_lfb_period
        box = wx.BoxSizer(wx.VERTICAL)
        self.make_label("Period", box)
        self.fperiod = form.int_field(self, box, value=self.period, \
                                      callback=self.SetPeriod)
        self.AddParam('period', self.SetPeriod)
        self.controlbox.Add(box, 0, wx.TOP|wx.BOTTOM, border=bspace)

        """ Codebook """
        self.set_codebook = lambda *args: None
        self.codebook = 0
        if hasattr(self.phyrx, 'lfb_codebook'):
            self.codebook = self.phyrx.lfb_codebook()
        if hasattr(self.phyrx, 'set_lfb_codebook'):
            self.set_codebook = self.phyrx.set_lfb_codebook
        box = wx.BoxSizer(wx.HORIZONTAL)
        self.fcodebook = choicebox_field(self, box, \
                value=MimoCSI.CODEBOOK_CHOICES[0], callback=self.SetCodebook, \
                choices = MimoCSI.CODEBOOK_CHOICES)
        self.fcodebook.f.SetToolTipString("Set limited feedback codebook")
        self.AddParam('codebook', self.SetCodebook)
        self.controlbox.Add(box, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.TOP|wx.BOTTOM, border=bspace)

        """ Codebook Bits """
        self.set_codebit = lambda *args: None
        self.codebits = 3
        if hasattr(self.phyrx, 'lfb_codebits'):
            self.codebits = self.phyrx.lfb_codebits()
        if hasattr(self.phyrx, 'set_lfb_codebits'):
            self.set_codebits = self.phyrx.set_lfb_codebits
        box = wx.BoxSizer(wx.VERTICAL)
        self.make_label("Codebook Bits", box)
        self.fcodebits = form.int_field(self, box, value=self.codebits, \
                                      callback=self.SetCodebits)
        self.AddParam('codebits', self.SetCodebits)
        self.controlbox.Add(box, 0, wx.TOP, border=bspace)

        self.AddParam('data', self.SetData)
        self.topbox.Add(self.controlbox, 0, wx.ALL, border=bspace)
示例#2
0
    def make_layout(self):
        bspace=10
        self.topbox.SetOrientation(wx.HORIZONTAL)
        self.controlbox = wx.BoxSizer(wx.VERTICAL)
        self.AddPlot()
        
        ## Create divider
        self.divider = Divider(self)
        self.divider.SetBackgroundColour(wx.Colour(200,200,200) )
        self.topbox.Add(self.divider, 0, wx.EXPAND|wx.GROW)

        # Get PHY RX
        if hasattr(self.GetParent(), 'phy'):
            if hasattr(self.GetParent().phy, 'rx'):
                self.phyrx = self.GetParent().phy.rx

        bspace = 5 

        """ Window Size """
        self.set_window_size = lambda *args: None
        self.window_size = 0
        if hasattr(self.phyrx, 'sa_window_size'):
            window_size = self.phyrx.sa_window_size()
            self.window_size = None
            print "[MIMOSELFADAPTATION] window size from phyrx = ",  self.window_size
        if hasattr(self.phyrx, 'set_sa_window_size'):
            self.set_window_size = self.phyrx.set_sa_window_size
        box = wx.BoxSizer(wx.HORIZONTAL)
        self.make_label("Window Size", box, 42)
        self.fwindow_size = form.int_field(self, box, value=window_size, \
                                      callback=self.SetSAWindowSize)
        self.AddParam('window size', self.SetSAWindowSize)
        self.controlbox.Add(box, 0, wx.ALIGN_LEFT|wx.BOTTOM|wx.LEFT|wx.RIGHT, border=bspace)

        """ Update Interval """
        self.set_update_interval = lambda *args: None
        self.update_interval = 0
        if hasattr(self.phyrx, 'sa_update_interval'):
            self.update_interval = self.phyrx.sa_update_interval()
        if hasattr(self.phyrx, 'set_sa_update_interval'):
            self.set_update_interval = self.phyrx.set_sa_update_interval
        box = wx.BoxSizer(wx.HORIZONTAL)
        self.make_label("Update Interval", box, 27)
        self.fupdate_interval = form.int_field(self, box, value=self.update_interval, \
                                      callback=self.SetUpdateInterval)
        self.AddParam('update interval', self.SetUpdateInterval)
        self.controlbox.Add(box, 0, wx.ALIGN_LEFT|wx.BOTTOM|wx.LEFT|wx.RIGHT, border=bspace)

        """ PER and Tput Format """
        self.fformat = {}
        fcount = 0
        flabel = ["PER Format", "Tput Format"]
        foffset = [50, 47]
        for param in ['per', 'tput']:
            if param not in self.format:
                self.format[param] = MimoSelfAdaptation.FORMAT[fcount]
            box = wx.BoxSizer(wx.HORIZONTAL)
            self.make_label(flabel[fcount], box, foffset[fcount])
            self.fformat[param] = choicebox_field(self, box, \
                        callback=lambda *args: self.SetFormat(param, *args),  \
                        value=self.format[param],   \
                        choices=MimoSelfAdaptation.FORMAT)
            self.fformat[param].f.SetToolTipString("Select Plot Format")
            self.controlbox.Add(box, 0, wx.ALIGN_LEFT|wx.BOTTOM|wx.LEFT|wx.RIGHT, border=bspace)
            fcount += 1

        """ Database parameters """
        self.set_dbsize = lambda *args: None
        self.set_errdbsize = lambda *args: None
        self.dbsize, self.errdbsize = 200, 100
        if hasattr(self.phyrx, 'sa_dbsize'):
            self.dbsize = self.phyrx.sa_dbsize()
        if hasattr(self.phyrx, 'sa_errdbsize'):
            self.errdbsize = self.phyrx.sa_errdbsize()
        if hasattr(self.phyrx, 'set_sa_dbsize'):
            self.set_dbsize = self.phyrx.set_sa_dbsize
        if hasattr(self.phyrx, 'set_sa_errdbsize'):
            self.set_errdbsize = self.phyrx.set_sa_errdbsize
        self.controlbox.AddSpacer( (10,10) )
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        self.make_label("Database Size", hbox, 27)
        self.fdbsize = form.int_field(self, hbox, value=self.dbsize, \
                                      callback=self.SetDbSize)
        self.controlbox.Add(hbox, 0, wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT, border=bspace)
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        self.make_label("Error Size", hbox, 57)
        self.ferrdbsize = form.int_field(self, hbox, value=self.errdbsize, \
                                      callback=self.SetErrDbSize)
        self.controlbox.Add(hbox, 0, wx.ALIGN_LEFT|wx.BOTTOM|wx.LEFT|wx.RIGHT, border=bspace)
        self.AddParam('dbsize', self.SetDbSize)
        self.AddParam('errdbsize', self.SetErrDbSize)
        self.controlbox.AddSpacer( (10,10) )

        """ Reset, Load, and Save Database """
        self.load_database = lambda *args: None
        self.save_database = lambda *args: None
        if hasattr(self.phyrx, 'sa_load_database'):
            self.load_database = self.phyrx.sa_load_database
        if hasattr(self.phyrx, 'sa_save_database'):
            self.save_database = self.phyrx.sa_save_database
        id_reset, id_load, id_save = wx.NewId(), wx.NewId(), wx.NewId()
        self.reset_button = wx.Button(self, id_reset, "Reset")
        self.load_button  = wx.Button(self, id_load, "Load")
        self.save_button  = wx.Button(self, id_save, "Save")
        self.reset_button.SetToolTipString("Reset database from Database and Error Size parameters.")
        self.load_button.SetToolTipString( "Load database from a file.")
        self.save_button.SetToolTipString( "Save database to a file.")
        wx.EVT_BUTTON(self, id_reset, self.ResetDatabase)
        wx.EVT_BUTTON(self, id_load,  self.LoadDatabase)
        wx.EVT_BUTTON(self, id_save,  self.SaveDatabase)
        self.controlbox.Add(self.reset_button, 0, wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT, border=bspace)
        self.controlbox.Add(self.load_button,  0, wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT, border=bspace)
        self.controlbox.Add(self.save_button,  0, wx.ALIGN_CENTER|wx.BOTTOM|wx.LEFT|wx.RIGHT, border=bspace)

        self.AddParam('per', self.SetPER)
        self.AddParam('tput', self.SetThroughput)
        self.AddParam('addper', self.AddPER)
        self.AddParam('addtput', self.AddThroughput)
        self.AddParam('ratehist', self.SetRateHistogram)
        self.topbox.Add(self.controlbox, 0, wx.ALL, border=bspace)
        self.Fit()
        self.SetClientSize(self.topbox.GetSize())
        self.SetParam('window size', window_size)