Пример #1
0
 def write(self, write_data):
     """ write access
         
         Args:
             write_data(bytes): write data bytes
         Returns:
             NONE
     """
     rd_data = self.__axi4lite.read(0x0C, 1)
     bits_width = rd_data[0]
     if (len(write_data) % 4 > 0):
         logger.error('%s: write data length error' % (self.name))
         return False
     i = int(len(write_data) / bits_width)
     wr_data_index = 0
     while (i > 0):
         rd_data = self.__axi4lite.read(0x10, 2)
         cache_deep = self.__data_deal.list_2_int(rd_data)
         if (cache_deep > i):
             send_cnt = i
         else:
             send_cnt = cache_deep - 3
         send_byte_cnt = send_cnt * bits_width
         #self.__axi4lite.write_byte_array(0x14, write_data[wr_data_index:wr_data_index+send_byte_cnt], send_byte_cnt, bits_width*8)
         self.__axi4lite.write_array(
             0x14, write_data[wr_data_index:wr_data_index + send_byte_cnt],
             send_byte_cnt, bits_width * 8)
         wr_data_index += send_byte_cnt
         i -= send_cnt
     return None
Пример #2
0
    def signal_type_set(self,signal_type):
        """ set output signal type
            
            Args:
                signal_type(str): 'sine'--sine wave output
                                  'square' -- square output
                                  'AWG' -- arbitrary waveform output

            Returns:
                True | False
        """          
        self.__axi4lite.write(0x11, [0x00],1)
        rd_data = self.__axi4lite.read(0x10,1)
        if(signal_type == 'sine'):
            signal_type_flag = 0x10
        elif(signal_type == 'square'):
            signal_type_flag = 0x00
        elif(signal_type == 'AWG'):
            signal_type_flag = 0x40            
        else:
            logger.error('@%s: signal type set error'%(self.name))
            return False
        wr_data = (rd_data[0] & 0x0F) | signal_type_flag;
        self.__axi4lite.write(0x10, [wr_data],1) 
        return True
Пример #3
0
def dir_set(device_name, gpio_ctrl):
    """ set gpio to input or output
        
        Args:
            device_name: str type, device name.
            gpio_ctrl(list): the unit of list is (gpio_number,gpio_ctrl)
                            gpio_number for 0 to 127
                            set gpio_ctrl to 1, the gpio is set to input
                            set gpio_ctrl to 0, the gpio is set to output
        Returns:
            Success return NONE,
            False otherwise.
        eg:
          Set the direction of the gpio2 to 0(output):
            dir_set("XAI$_GPIO",((2,0),))  
          Set the direction of the gpio2 gpio3 to 0(output):
            dir_set("XAI$_GPIO",((2,0),(3,0)))
    """
    try:
        path = Utility.get_dev_path() + '/' + device_name
        gpio_device = Axi4Gpio(path)
        return gpio_device.gpio_ctrl(gpio_ctrl)
    except Exception as e:
        logger.error("error: gpio dir set False:" + repr(e))
        return False
Пример #4
0
    def config(self,
               baud_rate=115200,
               data_bits=8,
               parity='NONE',
               stop_bits=1,
               flow_ctrl="SgUartHardStreamDisable"):
        logger.info("uart set baud_rate: %s ; flow_ctrl : %s ; data_bits: %s; stop_bits : %s ;parity: %s;"\
                     %(baud_rate, flow_ctrl, data_bits,stop_bits,parity))

        self.__ser.baudrate = baud_rate
        self.__ser.bytesize = uart_data_bits[data_bits]
        self.__ser.parity = uart_parity[parity]
        self.__ser.stopbits = uart_stop_bit[stop_bits]
        if flow_ctrl == "SgUartHardStreamEnable":
            self.__ser.rtscts = True
        elif flow_ctrl == "SgUartFlowCtrlEnable":
            self.__ser.xonxoff = True
        self.__is_use = True

        if self.get_uart_status() is False:
            logger.warning("uart device:%s does not exist" % (str(self.name)))
            self._close()
            return False
        elif self.is_open is True:
            self._close()

        status = self._open()
        if status is False:
            logger.error("uart %s set param error" % (self.name))
            return False
        else:
            return True
Пример #5
0
 def __init__(self,name):
     self.name = name
     self.reg_num = 8192
     self.__axi4lite=Axi4lite(self.name,self.reg_num)
     if self.__axi4lite.open() is False:
         logger.error('open %s device register number %d fail'%(self.name, self.reg_num))
     self.__data_deal = DataOperate()
Пример #6
0
    def stop_edge_set(self,stop_edge_type='B-POS'):
        """ Set width measure stop_edge_type
            
            Args:
                stop_edge_type(str): 'A-POS'  -- signal A posedge
									 'A-NEG'  -- signal A negedge
                                     'B-POS'  -- signal B posedge
                                     'B-NEG'  -- signal B negedge
									 'A-P**N'  -- signal A posedge or A negedge
									 'B-P**N'  -- signal B posedge or B negedge
            Returns:
                None
        """
        self.__axi4lite.write(0x13,[0x00],1)        
        if(stop_edge_type == 'B-POS'):
            stop_edge_data = 0x00
        elif(stop_edge_type == 'B-NEG'):
            stop_edge_data = 0x01
        elif(stop_edge_type == 'A-POS'):
            stop_edge_data = 0x02
        elif(stop_edge_type == 'A-NEG'):
            stop_edge_data = 0x03
        elif(stop_edge_type == 'A-P**N'):
            stop_edge_data = 0x04	
        elif(stop_edge_type == 'B-P**N'):
            stop_edge_data = 0x05	
        else:
            logger.error('@%s: Parameter Error'%(self.name)) 
            return False 
        wr_data =  stop_edge_data;     
        self.__axi4lite.write(0x13, [wr_data], 1)       
        return None    
Пример #7
0
 def measure_start(self, time_ms, sample_rate):
     """  start measure access
     
         Args:
             time_ms(int): measure time, unit is ms
             sample_rate(int): data sample rate, unit is SPS
         Returns:
             True | False
     """
     self.__sample_rate = sample_rate
     wr_data = self.__data_deal.int_2_list(time_ms, 2)
     self.__axi4lite.write(0x11, wr_data, len(wr_data))
     self.__axi4lite.write(0x14, [0x00], 1)
     self.__axi4lite.write(0x13, [0x01], 1)
     rd_data = self.__axi4lite.read(0x14, 1)
     timeout = 0
     while (rd_data[0] != 0x01) and (timeout < (time_ms + 1000)):
         time.sleep(0.001)
         rd_data = self.__axi4lite.read(0x14, 1)
         timeout = timeout + 1
     if (timeout == (time_ms + 1000)):
         logger.error('@%s: Measure time out' % (self.name))
         self.__measure_state = 0
         return False
     self.__measure_state = 1
     return True
Пример #8
0
 def write(self,write_data,cs_extend = 0):
     """ SPI write access
         
         Args:
             write_data(list): write data list
             cs_extend(float): The extend CS low when SPI access over, cs_extend is 0 to 8, min resolution is 0.5
         Returns:
             False | True
     """           
     send_cache_depth = self.__axi4lite.read(0x28,1)
     last_append = (int(cs_extend)*16 + 5)
     if(cs_extend > int(cs_extend)):
     	last_append = last_append + 8
     if(self.__cache_size < (send_cache_depth[0] + len(write_data))):
         logger.error('@%s: send cache not enough')
         return False       
     write_data_temp = []
     for i in range(0,len(write_data)):
         write_data_temp.append(write_data[i])
         if(i == (len(write_data)-1)):
             write_data_temp.append(last_append)
         else:
             write_data_temp.append(0x04)
     self.__axi4lite.write_array(0x20, write_data_temp, len(write_data_temp), 16)
     return True
Пример #9
0
 def continue_sample_capture(self):
     """ read continue sampld data
         
         Args:
             None
         Returns:
             sample_data(list): sample data
     """
     rd_data = self.__axi4lite.read(0x26, 1)
     sample_state = rd_data[0] & 0x04
     if (sample_state == 0):
         logger.warning('AD717X not in continue sample mode')
         return False
     self.__axi4lite.write(0x11, [0x01], 1)
     rd_data = self.__axi4lite.read(0x12, 1)
     if (rd_data[0] & 0x02 == 0x00):
         logger.warning('AD717X capture fifo reset failt')
         return False
     self.__axi4lite.write(0x11, [0x00], 1)
     time_out = 0
     while time_out < 300:
         rd_data = self.__axi4lite.read(0x12, 1)
         if rd_data[0] & 0x01 == 0x01:
             break
         else:
             time_out = time_out + 1
             time.sleep(0.01)
     if time_out == 3000:
         logger.error('@%s: capture data time out' % (self.name))
         return False
     receive_list = self.__axi4lite.read_array(0x60, 2048, 32)
     return receive_list
Пример #10
0
def spi_config(bus_name,
               clk_frequency,
               clk_type,
               wait_time_us=1,
               spi_clk_polarity='high'):
    logger.warning(
        "spi config -->bus_name:%s, clk_frequency:%s, clk_type:%s, wait_time_us:%s "
        % (bus_name, clk_frequency, clk_type, wait_time_us))
    """ Set spi bus parameter
            
            Args:
                spi_clk_frequency(int): spi bus clock frequency, unit is Hz
                spi_clk_type(str): 'pos' --sclk posedge send data, sclk negedge receive data
                                   'neg' --sclk negedge send data, sclk posedge receive data
                wait_time_us(float):    the wait time for new spi access
                spi_clk_polarity(str): 'high' --when CS is high, the SCLK is high
                                       'low' --when CS is high, the SCLK is low
            Returns:
                None
        """
    try:
        profile = Profile.get_bus_by_name(bus_name)
        bus = SpiFactory.create_object(SpiFactory, profile["path"])
        return bus.config(clk_frequency, clk_type, wait_time_us,
                          spi_clk_polarity)
    except Exception as e:
        logger.error("execute module spi_config False:" + repr(e))
        return False
Пример #11
0
    def stop_point_set(self,edge_list=['A-POS']):
        """ Set width measure stop point
            
            Args:
                edge_list(list): 'A-POS'  -- signal A posedge
                                 'A-NEG'  -- signal A negedge
								 'B-POS'  -- signal B posedge
                                 'B-NEG'  -- signal B negedge
            Returns:
                None
        """       	
        edge_data = 0
        for edge_sel in edge_list:
            if(edge_sel == 'A-POS'):
                edge_data = edge_data | 0x01
            elif(edge_sel == 'A-NEG'):
                edge_data = edge_data | 0x02
            elif(edge_sel == 'B-POS'):
                edge_data = edge_data | 0x04
            elif(edge_sel == 'B-NEG'):
                edge_data = edge_data | 0x08
            else:
                logger.error('@%s: Parameter Error'%(self.name)) 
                return False  
        self.__axi4lite.write(0x13, [edge_data], 1)       
        return None    
Пример #12
0
 def measure_paramter_set(self, bandwidth_hz, sample_rate, decimation_type,
                          signal_source):
     """ Set measure paramter
         
         Args:
             bandwidth_hz(int): Bandwidth limit, unit is Hz
             sample_rate(int): signal sample rate, unit is Hz
             decimation_type(str): signal decimation type 
                                   'auto' -- automatic detection
                                   '1'/'2'/........
             signal_source(str): 'IIS'/'PDM'/'SPDIF'
         Returns:
             False | True
     """
     wr_data = self.__data_deal.int_2_list(int(sample_rate / 1000), 3)
     self.__axi4lite.write(0xF0, wr_data, len(wr_data))
     rd_data = self.__axi4lite.read(0x16, 1)
     freq_resolution = sample_rate / (8192 * rd_data[0])
     bandwidth_index = int(bandwidth_hz / freq_resolution)
     if (signal_source == 'IIS'):
         source_data = 0x10
     elif (signal_source == 'SPDIF'):
         source_data = 0x20
     elif (signal_source == 'PDM'):
         source_data = 0x30
     else:
         logger.error('@%s: Signal Source Error' % (self.name))
         return False
     wr_data = self.__data_deal.int_2_list(bandwidth_index, 2)
     wr_data[1] = (wr_data[1] & 0x0F) | source_data
     self.__axi4lite.write(0x11, wr_data, len(wr_data))
     self._decimation_factor_set(decimation_type)
     return True
Пример #13
0
def __cmd_list_init():
    global CMD_LIST
    CMD_LIST.clear()
  #  print("----- init cmd list -----")
    try:
        if True == os.path.exists(os.path.dirname(sys.argv[0]) + "/handles_config.json"):
            json_file = '%s/handles_config.json'%(os.path.dirname(sys.argv[0]))
        else:
            json_file = '%s/command/handle/handles_config.json'%(os.environ.get("PYTHON_HOME", "/opt/seeing/app"))
        handles_file = open(json_file)
    except Exception as e:
        logger.error("open handles config file error !!!")
        return
    for each_line in handles_file :
        line = each_line.strip()
        line = line.strip(',')
        msg = None
        try:
            msg = json.loads(line)
        except Exception as e:
            continue
        __append_cmd(msg)

    logger.boot("cmd list is :" + str(CMD_LIST))
    handles_file.close()
    return
Пример #14
0
    def pattern_output_state(self, timeout=10000):
        """  query pattern signal output state
        
            Args:
                timeout(int): ms, Timeout waiting for the trigger signal.

            Returns:
                True | False
        """
        # query state
        timeout_cnt = 0
        rd_data = self.__axi4lite.read(0x13, 1)
        while (rd_data[0] != 0x01) and (timeout_cnt < (timeout + 1000)):
            time.sleep(0.001)
            rd_data = self.__axi4lite.read(0x13, 1)
            timeout_cnt = timeout_cnt + 1

        # read pattern count
        # time.sleep(0.100)
        # rd_data = self.__axi4lite.read(0x30,4)
        # print("pattern len:", rd_data)
        # rd_data = self.__axi4lite.read(0x3C,4)
        # print("pattern cnt:", rd_data)
        # if(rd_data != [0, 80, 8, 0]):
        #     exit(0)

        if (timeout_cnt == (timeout + 1000)):
            logger.error('@%s: Measure time out' % (self.name))
            return False
        return True
Пример #15
0
    def _get_eeprom_addr(self, range_name, level):
        if range_name not in self.cal_profile["range"]:
            raise ValueError("Input: "+range_name,"Args: "+str(self.cal_profile["range"].viewkeys()))
        
        range_list = self.cal_profile["range"][range_name]
        wrong_level_flag = 1
        
        for range_dict in range_list:
            if range_dict["level"] == level:
                addr_offset = range_dict["addr_offset"]
                wrong_level_flag = 0
                break
            
        if wrong_level_flag == 1:
            raise ValueError("Input: "+str(level) + "out of range")
        
        base_addr = self.cal_profile["base_addr"]
        max_addr = self.cal_profile["max_addr"]
        unit_size = self.cal_profile["unit_size"]
        address = base_addr + addr_offset * unit_size
        if address > max_addr:
            logger.error("eeprom chip addr out of range")
            return False

        return address
Пример #16
0
def io_chip_dir_get(board_name, *chipname):
    """ Get the  CHIP  pins dir state  from dev
        Args:
            board_name: str type ,  board name.
            chipname: list type,  format:  ["cpX", "cpX", ...]
               X:[1-  ]  
               Which io chip  name state we will get .
               
        Returns:
            dict type: {"cpX": Y}, "cpX": Y, "cpX": False...}
            X:[1- ]
            Y: 16bit: [0x0000 - 0xffff]
                 24bit:[0x000000 - 0xffffff]
            
            eg: cp5 read false returns: {"cp5": False,} 
    """
    chip_state_dict = OrderedDict()

    ioprofile = Profile.get_extendio_by_name(board_name)
    for name in chipname:
        try:
            chip_state_dict[name] = Extendio.chip_dir_get(ioprofile, name)
        except Exception as e:
            logger.error("execute module io io_chip_dir_get  False:" + repr(e))
            chip_state_dict[name] = False

    return chip_state_dict
Пример #17
0
    def detect_time_get(self,detect_time_ms):
        """ get  measure data
            
            Args:
                None
            Returns:
                detect_data(float): the data is start_edge_type to stop_edge_type time, unit is us
                                 
        """      

        rd_data = self.__axi4lite.read(0x20, 1)
        detect_time_out=0
        while rd_data[0]!=0x01 and (detect_time_out<detect_time_ms+1000):
            time.sleep(0.001)
            detect_time_out+=1 
            rd_data = self.__axi4lite.read(0x20, 1)
        if(detect_time_out== detect_time_ms+1000): 
            logger.error('@%s: Detect time out'%(self.name))
            return False  
        else:
            rd_data=self.__axi4lite.read(0x24,4)
            detect_time=self.__data_deal.list_2_int(rd_data)
            clk_period = 1000.0/self.__clk_frequency
            detect_data= clk_period*detect_time
            self.__axi4lite.write(0x11,[0x00],1)   
        return ('detect_time',detect_data,'us') 
Пример #18
0
def io_dir_get(board_name, *bits):
    """ Get the IO pins dir state  from dev
        Args:
            board_name: str type ,  board name.
            bits: can be a multi-parameter.
                    eg: bit8, bit9,bit181 , ...
                or 
                    list type .format: ["bitX", "bitX", ...] 
                        X:(1-  )
            
        returns:
            dict type:  format:  {'bitX': Y, "bitX":Y,  ...}
                X: (1-  )
                Y: 1 or 1
            
    """
    bit_state_dict = OrderedDict()

    try:
        ioprofile = Profile.get_extendio_by_name(board_name)
        bit_state_dict = Extendio.dir_get(ioprofile, bits)
    except Exception as e:
        logger.error("execute module io io_dir_get  error:" + repr(e))
        bit_state_dict["error"] = 0

    return bit_state_dict
Пример #19
0
 def run(self):
     try:
         self._run()
     except Exception:
         logger.error("port = %d , traceback : %s" %
                      (self._port, traceback.format_exc()))
     self.__destruction()
Пример #20
0
    def write(self, dev_addr, data):
        """ iis write 
            
            Args:
                dev_addr(int): iic slave address
                data(list): iic write data, length < 65

            Returns:
                False | True
        """
        op_code = dev_addr * 2
        send_data = [op_code] + data
        send_list = []
        for i in range(0, len(send_data)):
            send_list.append(send_data[i])
            if i == 0:
                send_list.append(0x80)
            elif i == (len(send_data) - 1):
                send_list.append(0x20)
            else:
                send_list.append(0x00)
        receive_list = self._iic_control(send_list)
        if receive_list == False:
            self.enable()
            return False
        i = 0
        while (i < len(receive_list)):
            if (receive_list[i + 1] & 0x01 == 0x01):
                logger.error('@%s: receive no ACK' % (self.name))
                return False
            i = i + 2
        return True
Пример #21
0
    def write_bytes(self, data):
        """ write byte string data to uart
            Args:
                data(string)   : a string of bytes data
            Returns:
                on success, return True
                on error, return False
        """
        if self.get_uart_status() is False:
            self._close()
            return False
        elif self.__is_use is False:
            return False
        elif self.is_open is False:
            self._open()
        length = len(data)
        logger.debug("write uart %s length:%d" % (self.name, length))
        try:
            writen_len = self.__ser.write(data)
        except Exception as e:
            logger.error("write uart %s length:%d error:%s" %
                         (self.name, length, repr(e)))
            return False

        if (writen_len != length):
            logger.warning(
                "write uart device:%s length fail,except length:%s, reality length:%s"
                % (self.name, length, writen_len))
            return False

        return True
Пример #22
0
def set(device_name, gpio_out):
    """ set gpio level
        
        Args:
            device_name: str type, device name.
            gpio_out(list): the unit of list is (gpio_number,gpio_level)
                            gpio_number for 0 to 127
                            set gpio_level to 1, the gpio output high level
                            set gpio_level to 0, the gpio output low level
        Returns:
            Success return NONE,
            False otherwise.
        eg:
          Set the gpio2 a value of 0(output):
            set("XAI$_GPIO",((2,0),))  
          Set the gpio2 gpio3 a value of 0(output):
            set("XAI$_GPIO",((2,0),(3,0)))
    """
    try:
        path = Utility.get_dev_path() + '/' + device_name
        gpio_device = Axi4Gpio(path)
        return gpio_device.gpio_set(gpio_out)
    except Exception as e:
        logger.error("error: gpio set False:" + repr(e))
        return False
Пример #23
0
 def swd_wr_operate(self, swd_req_data, swd_wr_data):
     """ swd_wr_operate
         
         Args:
             swd_req_data(byte): swd_req_data
             swd_wr_data(list): swd_wr_data
         Returns:
             False | SWD RETURN ACK DATA(byte)
     """
     # wr req data
     self.__axi4lite.write(0x23, [swd_req_data], 1)
     # wr wr_data
     self.__axi4lite.write(0x24, swd_wr_data, 4)
     # start swd wr operate
     self.__axi4lite.write(0x11, [0x01], 1)
     # query state
     timeout_cnt = 0
     rd_data = self.__axi4lite.read(0x14, 1)
     while (rd_data[0] == 0x00) and timeout_cnt < 100:
         time.sleep(0.001)
         rd_data = self.__axi4lite.read(0x14, 1)
         timeout_cnt = timeout_cnt + 1
     if (timeout_cnt == 100):
         logger.error('swd wr operate wait time out\n')
         return False
     # return ACK data(addr: 0x2C):
     rd_data = self.__axi4lite.read(0x2C, 1)
     return rd_data[0]
Пример #24
0
 def swd_switch_timing_gen(self, timing_data):
     """ swd_switch_timing_gen
         
         Args:
             timing_data(list): timing_data, bit order: first_byte_bit0-->bit7,second_byte_bit0-->bit7,...,last_byte_bit0-->bit7
         Returns:
             False | True
     """
     # 0x30--wr switch timing data
     self.__axi4lite.write_array(0x30, timing_data, len(timing_data), 8)
     # 0x12--bit0 = 1 : start switch timing output
     rd_data = self.__axi4lite.read(0x12, 1)
     rd_data[0] = rd_data[0] | 0x01
     self.__axi4lite.write(0x12, rd_data, 1)
     # query state
     timeout_cnt = 0
     rd_data = self.__axi4lite.read(0x14, 1)
     while (rd_data[0] == 0x00) and timeout_cnt < 100:
         time.sleep(0.001)
         rd_data = self.__axi4lite.read(0x14, 1)
         timeout_cnt = timeout_cnt + 1
     if (timeout_cnt == 100):
         logger.error('swd switch timing wait time out\n')
         return False
     return True
Пример #25
0
def uart_param_config(name, baud_rate, data_bits, parity, stop_bits,
                      timestamp):
    """ Set uart bus parameter
            
            Args:
                baud_rate(int)   : UART baud rate
                data_bits(int)   : Data width 5/6/7/8
                parity_type(str) : parity type. "ODD"/"EVNE"/"NONE"
                stop_bits(float) : stop bit width. 1/2
                time_insert(str) : PL UART Insert timestamp Control, "TS"/"NONE"
            Returns:
                bool: True | False, True for success, False for adc read failed
    """
    try:
        uart = XObject.get_object(name)
        isok = True
        if utility.mount_on_fpga(uart.name):
            uart.disable()
            uart.enable()
            uart.config(baud_rate, data_bits, parity, stop_bits, timestamp)
        else:
            isok = uart.config(baud_rate, data_bits, parity, stop_bits)

        return isok
    except Exception as e:
        logger.error("the %s uart param config execute error:%s" %
                     (name, repr(e)))
        return False
Пример #26
0
 def swd_rd_operate(self, swd_req_data):
     """ swd_rd_operate
         
         Args:
             swd_req_data(byte): swd_req_data
         Returns:
             False | swd_rd_data(list): 
                     Format, five bytes in total, 
                     the first four bytes are swd rd data, 
                     the last byte is ack data in bit0~bit2, and bit7 is swd rd data parity bit.
     """
     # rd req data
     self.__axi4lite.write(0x23, [swd_req_data], 1)
     # start swd rd operate
     self.__axi4lite.write(0x11, [0x01], 1)
     # query state
     timeout_cnt = 0
     rd_data = self.__axi4lite.read(0x14, 1)
     while (rd_data[0] == 0x00) and timeout_cnt < 100:
         time.sleep(0.001)
         rd_data = self.__axi4lite.read(0x14, 1)
         timeout_cnt = timeout_cnt + 1
     if (timeout_cnt == 100):
         logger.error('swd rd operate wait time out\n')
         return False
     # return rd_data(addr: 0x28~0x2B) + ACK data(addr: 0x2C, [2:0]--ack data, [7]--swd rd data parity bit)
     swd_rd_data = self.__axi4lite.read(0x28, 5)
     return swd_rd_data
Пример #27
0
 def _gpio_ctrl_set(self, gpio_channel, gpio_ctrl):
     if (gpio_channel == 'ch0'):
         reg_addr = 0x14
     elif (gpio_channel == 'ch1'):
         reg_addr = 0x24
     elif (gpio_channel == 'ch2'):
         reg_addr = 0x34
     elif (gpio_channel == 'ch3'):
         reg_addr = 0x44
     else:
         logger.error('@%s:    GPIO Channel set error' % (self.name))
         return False
     rd_data = self.__axi4lite.read(reg_addr, 4)
     reg_data_int = self.__data_deal.list_2_int(rd_data)
     if (reg_data_int < 0):
         reg_data_int = reg_data_int + pow(2, 32)
     reg_data_int_shift = reg_data_int
     for gpio_ctrl_temp in gpio_ctrl:
         reg_data_int_shift = self.__data_deal.cyclic_shift(
             'R', reg_data_int_shift, 32, gpio_ctrl_temp[0])
         if (gpio_ctrl_temp[1] == 1):
             reg_data_int_shift = reg_data_int_shift & 0xFFFFFFFE | 0x00000001
         elif (gpio_ctrl_temp[1] == 0):
             reg_data_int_shift = reg_data_int_shift & 0xFFFFFFFE
         else:
             logger.error('@%s:    GPIO control set error' % (self.name))
             return False
         reg_data_int_shift = self.__data_deal.cyclic_shift(
             'L', reg_data_int_shift, 32, gpio_ctrl_temp[0])
     wr_data = self.__data_deal.int_2_list(reg_data_int_shift, 4)
     self.__axi4lite.write(reg_addr, wr_data, len(wr_data))
Пример #28
0
    def _dispatch(self, request):
        try:
            try:
                method = self.get_method(request.method)
            except MethodNotFoundError as e:
                return request.error_respond(e)

            # we found the method
            # Does not support args and kwargs at the same time
            try:
                if request.args:
                    result = method(*request.args)
                elif request.kwargs:
                    result = method(**request.kwargs)
                else:
                    result = method()

            except Exception as e:
                # an error occured within the method, return it
                return request.error_respond(e)

            # respond with result
            return request.respond(result)
        except Exception as e:
            # unexpected error, do not let client know what happened
            logger.error(e.message, os.linesep)
            return request.error_respond(ServerError(e.message + os.linesep))
Пример #29
0
def help_handle(params):
    buf = "$\r\n--------------------    --------------------$\r\n"
    try:
        if True == os.path.exists(
                os.path.dirname(sys.argv[0]) + "/handles_config.json"):
            json_file = '%s/handles_config.json' % (os.path.dirname(
                sys.argv[0]))
        else:
            json_file = '%s/command/handle/handles_config.json' % (
                os.environ.get("PYTHON_HOME", "/opt/seeing/app"))
        handles_file = open(json_file)
    except Exception as e:
        logger.error("open handles config file errer !!!")
        return
    for each_line in handles_file:
        line = each_line.strip()
        line = line.strip(',')
        msg = None
        try:
            msg = json.loads(line)
        except Exception as e:
            continue
        buf += msg["cmd"]
        #目的对其
        cmd_len = len(msg["cmd"])
        count_t = 3 - int(cmd_len / 8)
        for index in range(0, count_t):
            buf += "\t"

        buf += msg["description"]
        buf += "$\r\n"
    buf += "--------------------    --------------------$\r\n"
    handles_file.close()
    return buf
Пример #30
0
 def __open(self):
     logger.debug("open i2c device %s" % (self._name))
     self._fd = self._bus.sg_i2c_open(self._name)
     if self._fd <= 0:
         logger.error("open i2c device %s fail" % (self._name))
         return False
     else:
         return True