示例#1
0
 def __init__(self, wiring_map):
     self.mp = {}
     self.mp_inv = {}
     for k in wiring_map.keys():
         wm = wiring_map[k]
         board_id = get_physical_id(wm.board_serial, wm.crate_serial,
                                    wm.board_slot)
         self.mp[wm.board_serial] = board_id
         self.mp_inv[board_id] = wm.board_serial
示例#2
0
    def __call__(self, frame):
        if frame.type == core.G3FrameType.Wiring:
            wiring_map = frame['WiringMap']
            squid_ids = []
            for k in wiring_map.keys():
                wm = wiring_map[k]
                squid_ids.append( get_physical_id(wm.board_serial, 
                                                  wm.crate_serial, 
                                                  wm.board_slot,
                                                  wm.module + 1) )
            squid_ids = uniquifyList(squid_ids)
            self.init_squids(squid_ids)
            self.serial_mapper = IdSerialMapper(frame['WiringMap'])

        elif frame.type == core.G3FrameType.Housekeeping:
            if self.squids_list is None:
                return
            #do update
            if not frame is None:
                hk_data = frame['DfMuxHousekeeping']
            else:
                hk_data = None
            self.stdscr.clear()

            y, x = self.stdscr.getmaxyx()
            if y < self.screen_size_y or x < self.screen_size_x:
                screen = self.stdscr.subwin(0, x, 0, 0)
                screen.addstr(0,0, 'Terminal is too small %d %d'%(y,x), curses.color_pair(1))
                screen.refresh()
                return

            screen = self.stdscr.subwin(0, self.screen_size_x, 0, 0)
            screen.clear()


            #screen.box()
            #CNDTV6F
            if not hk_data is None:
                add_timestamp_info(screen, 0,2, hk_data[hk_data.keys()[0]].timestamp, 5)
                for i, s in enumerate(self.str_id_lst):
                    offset = 4
                    screen.addstr(i+1, offset, s, curses.color_pair(2))
                    screen.addstr(i+1, offset + self.highlight_index[i], 
                                       s[self.highlight_index[i]], curses.color_pair(3))
                    
                screen.hline(len(self.str_id_lst) + 1, 0, 
                                  '-', self.squid_col_width)
                screen.vline(0, self.squid_col_width-1, 
                                  '|', len(self.str_id_lst)+1)

            for i, s in enumerate(self.squids_list):
                p = self.pos_map[s]
                load_squid_info_from_hk( screen, p[1], p[0], 
                                         hk_data,
                                         s, s, self.sq_label_size, 
                                         self.squid_col_width, self.serial_mapper)
            screen.refresh()
        elif frame.type == core.G3FrameType.EndProcessing:
            if not self.squids_list is None:
                self.stdscr.keypad(0)
                curses.echo()
                curses.nocbreak()
                curses.endwin() 
示例#3
0
    def send_off(self, frame):
        if not self.wiring_map is None and self.bolo_props is None:

            #faking the frame data
            self.bolo_props = calibration.BolometerPropertiesMap()

            n_chans = 0
            squids = {}
            for k in self.wiring_map.keys():
                wm = self.wiring_map[k]
                c = wm.channel + 1

                if c > n_chans:
                    n_chans = c
                sq = get_physical_id(wm.board_serial, 
                                         wm.crate_serial, 
                                         wm.board_slot,
                                         wm.module + 1)
                squids[sq] = 1
            n_squids = len(squids.keys())

            sq_layout = make_square_block(n_squids)
            ch_layout = make_square_block(n_chans)

            sq_x_sep = ch_layout[0] + 1
            sq_y_sep = ch_layout[1] + 1
            ch_x_sep = 1
            ch_y_sep = 1

            for i, sq in enumerate( sorted(squids.keys()) ):
                x = i % sq_layout[0]
                y = i // sq_layout[0]
                squids[sq] = (1.2 * x * ch_layout[0], 1.2* y * ch_layout[1])

            #need nsquids
            #need nbolos per squid
            for k in self.wiring_map.keys():
                wm = self.wiring_map[k]
                sq_id = get_physical_id(wm.board_serial, 
                                            wm.crate_serial, 
                                            wm.board_slot,
                                            wm.module + 1)

                w_id = get_physical_id(wm.board_serial, 
                                           wm.crate_serial, 
                                           wm.board_slot)

                sql = squids[sq_id]
                x = sql[0] + ((wm.channel) % ch_layout[0]) * ch_x_sep
                y = sql[1] + ((wm.channel) // ch_layout[0]) * ch_y_sep

                bp = calibration.BolometerProperties()
                bp.physical_name = k
                bp.band = 0
                bp.pol_angle = 0
                bp.pol_efficiency = 0
                bp.wafer_id = w_id
                bp.squid_id = sq_id
                bp.x_offset = float(x) 
                bp.y_offset = float(y) 
                self.bolo_props[k] = bp

            out_frame = core.G3Frame(core.G3FrameType.Calibration)
            out_frame['BolometerProperties'] = self.bolo_props
            out_frame['DfMuxTransferFunction'] = self.default_tf
            return [out_frame, frame]
        else:
            return frame