diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py index 46ea60a3bb3c6d22a6b9b1e584c2fd646851f1ee..62f1d0f76ad6b55c8ccae5af07cec8d34709464e 100644 --- a/Ccs/ccs_function_lib.py +++ b/Ccs/ccs_function_lib.py @@ -693,7 +693,7 @@ def user_tm_decoders_func(): return user_tm_decoders -def Tmformatted(tm, separator='\n', sort_by_name=False, textmode=True, udef=False, nocal=False): +def Tmformatted(tm, separator='\n', sort_by_name=False, textmode=True, udef=False, nocal=False, floatfmt=None): """ Return a formatted string containing all the decoded source data of TM packet _tm_ @@ -705,7 +705,7 @@ def Tmformatted(tm, separator='\n', sort_by_name=False, textmode=True, udef=Fals :param nocal: :return: """ - sourcedata, tmtcnames = Tmdata(tm, udef=udef) + sourcedata, tmtcnames = Tmdata(tm, udef=udef, floatfmt=floatfmt) tmtcname = " / ".join(tmtcnames) if nocal: @@ -746,7 +746,7 @@ def Tmformatted(tm, separator='\n', sort_by_name=False, textmode=True, udef=Fals # # Decode source data field of TM packet # @param tm TM packet bytestring -def Tmdata(tm, udef=False): +def Tmdata(tm, udef=False, floatfmt=None): """ :param tm: @@ -779,7 +779,7 @@ def Tmdata(tm, udef=False): else: vals_params = read_variable_pckt(data, params) - tmdata = [(get_calibrated(i[0], j[0]), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] + tmdata = [(get_calibrated(i[0], j[0], floatfmt=floatfmt), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] tmname = ['USER DEFINED: {}'.format(user_label)] return tmdata, tmname @@ -840,7 +840,7 @@ def Tmdata(tm, udef=False): dbres = dbcon.execute(que) params = dbres.fetchall() vals_params = decode_pus(data, params) - tmdata = [(get_calibrated(i[0], j[0]), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] + tmdata = [(get_calibrated(i[0], j[0], floatfmt=floatfmt), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] elif params is not None: # Length of a parameter which should be decoded according to given position @@ -850,7 +850,7 @@ def Tmdata(tm, udef=False): else: vals_params = read_variable_pckt(data, params) - tmdata = [(get_calibrated(i[0], j[0]), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] + tmdata = [(get_calibrated(i[0], j[0], floatfmt=floatfmt), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] else: que = 'SELECT pcf.pcf_name,pcf.pcf_descr,pcf.pcf_ptc,pcf.pcf_pfc,pcf.pcf_curtx,pcf.pcf_width,\ @@ -861,7 +861,7 @@ def Tmdata(tm, udef=False): params_in = dbres.fetchall() vals_params = read_variable_pckt(data, params_in) - tmdata = [(get_calibrated(i[0], j), i[6], i[1], pidfmt(i[7]), j) for j, i in vals_params] + tmdata = [(get_calibrated(i[0], j, floatfmt=floatfmt), i[6], i[1], pidfmt(i[7]), j) for j, i in vals_params] # tmdata = [(get_calibrated(i[0], j[0]), i[6], i[1], pidfmt(i[7]), j) for i, j in zip(params, vals_params)] if spid is not None: @@ -1713,7 +1713,7 @@ def pidfmt_reverse(val): # Calibrate raw parameter values # @param pcf_name PCF_NAME # @param rawval Raw value of the parameter -def get_calibrated(pcf_name, rawval, properties=None, numerical=False, dbcon=None, nocal=False): +def get_calibrated(pcf_name, rawval, properties=None, numerical=False, dbcon=None, nocal=False, floatfmt=None): """ :param pcf_name: @@ -1771,7 +1771,7 @@ def get_calibrated(pcf_name, rawval, properties=None, numerical=False, dbcon=Non if nocal: return rawval else: - return get_cap_yval(pcf_name, rawval) + return get_cap_yval(pcf_name, rawval) if floatfmt is None else format(get_cap_yval(pcf_name, rawval), floatfmt) elif curtx is not None and categ == 'S': if numerical or nocal: return rawval @@ -1826,7 +1826,7 @@ def get_cap_yval(pcf_name, xval, properties=None, dbcon=None): # if yval == np.nan: # logger.info('Calibration of {} failed. Value {} outside calibrated range {}-{}'.format(pcf_name, xval, xvals.min(), xvals.max())) - return format(yval, 'g') + return yval # format(yval, 'g') ## diff --git a/Ccs/monitor.py b/Ccs/monitor.py index 3043fb534737284ad2f04a37c30c0563f10bac9e..ab52b9f5976109ebbf0dede13e3e35e10839c292 100644 --- a/Ccs/monitor.py +++ b/Ccs/monitor.py @@ -289,6 +289,7 @@ class ParameterMonitor(Gtk.Window): else: box.pktid = tuple(pktid) + udtype, parameter = parameter.split(':') dbres = dbcon.execute('SELECT pcf.pcf_name,pcf.pcf_descr,pcf.pcf_categ,pcf.pcf_unit,ocf.ocf_nbool,\ ocp.ocp_lvalu,ocp.ocp_hvalu from pcf left join ocf on pcf.pcf_name=ocf.ocf_name\ left join ocp on ocf_name=ocp_name where pcf.pcf_name="{}"'.format(parameter)) @@ -541,6 +542,7 @@ class ParameterMonitor(Gtk.Window): pinfo = cfl._parameter_decoding_info((name, udtype), check_curtx=True) ptc, pfc = pinfo[2:4] + curtx = pinfo[4] if ptc in [7]: return '' @@ -548,6 +550,8 @@ class ParameterMonitor(Gtk.Window): return '.13G' elif ptc in [8]: return 's' + elif curtx is not None: # numerically calibrated + return '.7G' else: return 'd' @@ -997,7 +1001,7 @@ class MonitorSetupDialog(Gtk.Dialog): params = dbres.fetchall() for par in params: - parameter_model.append(it, [par[0], str(par[1:])]) + parameter_model.append(it, [par[0], str(['MIB:' + par[1]] + list(par[2:]))]) dbcon.close() diff --git a/Ccs/poolview_sql.py b/Ccs/poolview_sql.py index 00ceff09c4a4b7be5ce41b005696d2cb6d3f693e..25069f778e751db239ff860be4e96ac1901b75a4 100644 --- a/Ccs/poolview_sql.py +++ b/Ccs/poolview_sql.py @@ -989,116 +989,6 @@ class TMPoolView(Gtk.Window): #print(something, self.shown_offset, self.shown_upper_limit) self.treeview.thaw_child_notify() # Tell GTk to reload - ''' - # ndel = len(self.pool_liststore) - unfiltered_rows = dbrows[2] - sorted = dbrows[1] - dbrows = dbrows[0] - if not dbrows: - return - - self.shown_lock.acquire() - #self.treeview.freeze_child_notify() - #self.pool_liststore.clear() - - if self.shown_diff or self.shown_diff == 0: - if self.shown_diff > 0: - self.treeview.freeze_child_notify() - self.pool_liststore.clear() - if sorted: - dbrows = unfiltered_rows.offset(self.shown_offset + self.shown_limit - self.shown_buffer).limit(self.shown_diff) - else: - dbrows = unfiltered_rows.filter(DbTelemetry.idx > (self.shown_offset + self.shown_limit - self.shown_buffer)).limit( - self.shown_diff) - - #for row in self.pool_liststore: - # if row[0] == range(self.shown_upper_limit, self.shown_upper_limit - self.shown_diff): - # self.pool_liststore.remove(row.iter) - - if self.shown_offset > self.shown_buffer: - del self.shown_all_rows[0:self.shown_diff] - - x = 0 - for tm_row in self.shown_all_rows: - if x in range(self.shown_offset + self.shown_diff - self.shown_upper_limit, - self.shown_offset + self.shown_diff + int( - self.adj.get_page_size()) - self.shown_upper_limit): - self.pool_liststore.append(tm_row) - x += 1 - - if not self.dbrows_list: - t_shown_rows = threading.Thread(target=self.update_shown_buffer) - t_shown_rows.daemon = True - t_shown_rows.start() - - self.dbrows_list.append([dbrows, self.shown_diff]) - self.treeview.thaw_child_notify() - - elif self.shown_diff == 0: - pass - - else: - self.treeview.freeze_child_notify() - self.pool_liststore.clear() - if sorted: - if self.shown_upper_limit > abs(self.shown_diff): - dbrows = unfiltered_rows.offset((self.shown_upper_limit + self.shown_diff)).limit( - self.shown_diff * -1) - else: - dbrows = unfiltered_rows.offset(0).limit(self.shown_diff * -1) - else: - if self.shown_upper_limit > abs(self.shown_diff): - dbrows = unfiltered_rows.filter( - DbTelemetry.idx > (self.shown_upper_limit + self.shown_diff)).limit( - self.shown_diff * -1) - else: - dbrows = unfiltered_rows.filter(DbTelemetry.idx > 0).limit(self.shown_diff * -1) - - #for row in self.pool_liststore: - # if row[0] == range(self.offset + self.shown_limit - self.shown_buffer + self.shown_diff, - # self.offset + self.shown_limit - self.shown_buffer): - # self.pool_liststore.remove(row.iter) - - self.shown_all_rows = self.shown_all_rows[:self.shown_diff] - - if not self.dbrows_list: - t_shown_rows = threading.Thread(target=self.update_shown_buffer) - t_shown_rows.daemon = True - t_shown_rows.start() - - x = 0 - for tm_row in self.shown_all_rows: - if x in range(self.shown_offset + self.shown_diff - self.shown_upper_limit, - self.shown_offset + self.shown_diff + int(self.adj.get_page_size()) - self.shown_upper_limit): - self.pool_liststore.append(tm_row) - #if x in range(self.shown_offset + self.shown_diff - self.shown_upper_limit, - # self.shown_offset - self.shown_upper_limit): - #self.pool_liststore.insert(0, tm_row) - x += 1 - self.dbrows_list.append([dbrows, self.shown_diff]) - self.treeview.thaw_child_notify() - - self.shown_offset = 0 if self.shown_offset < 0 else self.shown_offset + self.shown_diff - self.shown_upper_limit = 0 if (self.shown_offset - self.shown_buffer) < 0 else self.shown_offset -self.shown_buffer - #thread1 = threading.Thread(target=self.update_shown_buffer, kwargs={'rows': dbrows}) - #thread1.daemon = True - #thread1.start() - - else: - self.treeview.freeze_child_notify() - self.pool_liststore.clear() - self.reload_all_shown_rows(dbrows) - self.dbrows_list = [] - self.treeview.thaw_child_notify() - #print(time.time()-starttime) - # del self.pool_liststore[:ndel] - #self.treeview.thaw_child_notify() - self.shown_lock.release() - self.loaded = 1 - return - ''' - return - def reload_all_shown_rows(self, dbrows): """ Reload all Packages (shown and in buffer) from the Database @@ -2557,7 +2447,7 @@ class TMPoolView(Gtk.Window): importlib.reload(cfl) @delayed(10) - def set_tm_data_view(self, selection=None, event=None, change_columns=False): + def set_tm_data_view(self, selection=None, event=None, change_columns=False, floatfmt='.7G'): if not self.active_pool_info: self.logger.warning('No active pool') return @@ -2630,11 +2520,11 @@ class TMPoolView(Gtk.Window): nocalibration = not self.calibrated_switch.get_active() try: if self.UDEF: - data = cfl.Tmformatted(tm, textmode=False, udef=True, nocal=nocalibration) + data = cfl.Tmformatted(tm, textmode=False, udef=True, nocal=nocalibration, floatfmt=floatfmt) buf = Gtk.TextBuffer(text=cfl.Tm_header_formatted(tm) + '\n{}\n'.format(data[1])) self._feed_tm_data_view_model(datamodel, data[0]) else: - data = cfl.Tmformatted(tm, textmode=False, nocal=nocalibration) + data = cfl.Tmformatted(tm, textmode=False, nocal=nocalibration, floatfmt=floatfmt) buf = Gtk.TextBuffer(text=cfl.Tm_header_formatted(tm) + '\n{}\n'.format(data[1])) self._feed_tm_data_view_model(datamodel, data[0])