Beispiel #1
0
    def action_init(self, kwargs):
        testcasexml = kwargs.get("testcase")
        node = self.parameter.find(self.item_type)
        node = analyse_fw_node(testcasexml, node, self.item_type)
        #node_combined = analyse_ses_command_node(testcasexml, node, self.item_type)
        # Set command
        name = node.find("version").get("name")
        version = node.find("version").get("ver")
        item = {name: version}
        self.dict.update(item)
        cmd_node = node.find("cmd")
        cmd = cmd_node.get("value")
        cmd_timeout = cmd_node.get("timeout")
        cmd_recv = cmd_node.get("recv")
        self.product_id = node.find("product_id").get("name")

        proxy = node.get("proxy")
        if proxy == "uart":
            uart_node = node.find("uart")
            uart_port = uart_node.get("port")
            uart_baudrate = uart_node.get("baudrate")
            uart_timeout = uart_node.get("timeout")
            uart_end_of_line = uart_node.get("end-of-line")
            endmarks = []
            for endmark_node in node.findall("end-mark"):
                endmark = endmark_node.get("keyword")
                endmarks.append(endmark)
            error_filters = []
            for error_filter_node in node.findall("error-filter"):
                error_filter = command.ErrorFilters[error_filter_node.get(
                    "type")](error_filter_node.get("operation"),
                             error_filter_node.get("value"))
                error_filters.append(error_filter)

            self.cmd = lsises.LSICommand(cmd, uart_port, uart_baudrate,
                                         uart_timeout, uart_end_of_line,
                                         cmd_timeout, cmd_recv, endmarks,
                                         error_filters)
        elif proxy == "uart-daemon":
            self.cmd = SESCommandUartDaemon()
        else:
            raise ValueError("Unknown proxy type '%s'", proxy)
        list_cmd = [
            "cmdsvr_mode 0", "dbg set on", "dd_dbg -gpio r 9",
            "dd_dbg -gpio r 10", "cmdsvr_mode 1"
        ]
        self.list = []
        for opt in list_cmd:
            cmd_opt = lsises.LSICommand(opt, uart_port, uart_baudrate,
                                        uart_timeout, uart_end_of_line,
                                        cmd_timeout, cmd_recv, endmarks,
                                        error_filters)
            self.list.append(cmd_opt)
        return True
Beispiel #2
0
    def action_init(self, kwargs):
        testcasexml = kwargs.get("testcase")
        node = self.parameter.find(self.item_type)
        node_combined = analyse_i2c_node(testcasexml, node, self.item_type)

        cmd_timeout = int(node_combined.get("timeout"))
        proxy = node_combined.get("proxy")

        # Set command
        bus = int(node_combined.find("ChannelNumber").get("value"), 0)
        chip = hex(int(node_combined.find("SlaveAddress").get("value"), 0))
        self.data_len = int(
            node_combined.find("number_bytes_to_read").get("value"), 0)
        writedata = node_combined.find("WriteData").get("value")
        cmd = "iicwr " + chip + " " + str(bus) + " " + str(
            self.data_len) + " " + writedata
        # Set condition_type
        self.condition_type = node_combined.get("condition_type").lower()
        if (self.condition_type == "and") or (self.condition_type == "or"):
            pass
        else:
            raise ValueError("Unknown I2C condition type '%s'",
                             self.condition_type)
        #set condition
        for cnode in node_combined.findall("condition"):
            operation = cnode.get("operation")
            value_type = cnode.get("value_type")
            value = cnode.get("value")
            self.conditions.append(I2CCondition(value_type, operation, value))
        #send command
        if proxy == "uart":
            uart_node = node_combined.find("uart")
            uart_port = uart_node.get("port")
            uart_baudrate = uart_node.get("baudrate")
            uart_newline_transmit = uart_node.get("new_line_transmit")
            endmarks = []
            for endmark_node in node_combined.findall("end-mark"):
                endmark = endmark_node.get("keyword")
                endmarks.append(endmark)
            error_filters = []
            for error_filter_node in node_combined.findall("error-filter"):
                error_filter = command.ErrorFilters[error_filter_node.get(
                    "type")](error_filter_node.get("operation"),
                             error_filter_node.get("value"))
                error_filters.append(error_filter)
            self.cmd = lsises.LSICommand(cmd, uart_port, uart_baudrate, None,
                                         uart_newline_transmit, cmd_timeout,
                                         None, endmarks, error_filters)
        elif proxy == "uart-daemon":
            _LOGGER.info("uart-daemon not support")
        else:
            raise ValueError("Unknown proxy type '%s'", proxy)
        return True
Beispiel #3
0
 def check_block(self):
     """    
     return checked length
      > 0, SUCCESS,checked length
      = 0, SUCCESS,EOF
      < 0, ERROR
     """
     remain_bytes = self.number_bytes_to_do - self.number_bytes_done
     if remain_bytes <= 0:
         return 0
     #build and apply cmd
     offset_str = get_offset_bytes(self.offset + self.number_bytes_done, self.offset_width)
     read_bytes = min(self.block_size, remain_bytes)
     cmd = "iicwr" + " " + self.device_addr + " " + (str(self.port_id)) + " " + (str(read_bytes)) + " " + offset_str
     _LOGGER.info("%s ", cmd)
     self.cmd = lsises.LSICommand( cmd, self.uart_port,
                                   self.uart_baudrate, None,
                                   self.uart_newline_transmit,
                                   self.cmd_timeout, None,
                                   self.endmarks, self.error_filters)
     if _UNIT_TEST is not None:
         raw_value = apply()
     else:
         raw_value = self.cmd.apply()
     #convert and check value length
     value = extract_rawdata(raw_value)
     if value == "":
         _LOGGER.info("Error: No value read from UART!") 
         return -1
     ret_bytes = len(value)/2
     if ret_bytes != read_bytes:
         _LOGGER.info("Error: read %d bytes but return %d bytes!", read_bytes, ret_bytes) 
         return -2
     #compare return values
     if self.binary_fd is not None:
         compare_value = self.binary_fd.read(read_bytes * 2)
         if compare_value != value:
             _LOGGER.info("Error: read data differ with file data!")
             _LOGGER.info("Read data: %s", value)
             _LOGGER.info("File data: %s", compare_value)
             return -3
     if self.binary_data != None:
         compare_value=""
         for i in range(0, read_bytes):
             compare_value += self.binary_data
         if compare_value != value:
             _LOGGER.info("Error: read data differ with set binary_data!")
             _LOGGER.info("Read data: %s", value)
             _LOGGER.info("Binary_data: %s", compare_value)
             return -4
     self.number_bytes_done += read_bytes
     return read_bytes
Beispiel #4
0
 def write_block(self):
     """    
     return writed length
      > 0, SUCCESS,writen length
     = 0, SUCCESS,EOF
      < 0, ERROR
     """    
     remain_bytes = self.number_bytes_to_do - self.number_bytes_done
     if remain_bytes <= 0:
         return 0
     offset_str = get_offset_bytes(self.offset + self.number_bytes_done, self.offset_width)
     write_bytes = min(self.block_size, remain_bytes)
     
     #build write values
     write_values=""
     if self.binary_fd is not None:
         file_values = self.binary_fd.read(write_bytes * 2)
         write_bytes = len(file_values)
         if write_bytes==0 or write_bytes%2!=0:
             _LOGGER.info("Error: read file return EOF or odd number data:%s", file_values)
             return -1;
         write_bytes /= 2
         for i in range(0, write_bytes):
             write_values += file_values[i*2] + file_values[i*2+1] + " "
     elif self.binary_data != None:
         for i in range(0, write_bytes):
             write_values += self.binary_data + " "
     else:
         _LOGGER.info("Error: No binary_file or binary_data set!")
         return -1
     
     #build and apply cmd        
     cmd = "iicw" + " " + self.device_addr + " " + (str(self.port_id)) + " " + offset_str + " " + write_values
     _LOGGER.info("%s ", cmd)
     self.cmd = lsises.LSICommand( cmd, self.uart_port,
                                   self.uart_baudrate, None,
                                   self.uart_newline_transmit,
                                   self.cmd_timeout, None,
                                   self.endmarks, self.error_filters)
     if _UNIT_TEST is not None:
         raw_value = apply()
     else:
         raw_value = self.cmd.apply()
     
     self.number_bytes_done += write_bytes
     return write_bytes
Beispiel #5
0
 def read_block(self):
     """    
     return readed length
      > 0, SUCCESS,readed length
      = 0, SUCCESS,EOF
      < 0, ERROR
     """
     remain_bytes = self.number_bytes_to_do - self.number_bytes_done
     if remain_bytes <= 0:
         return 0
     #build and apply cmd
     offset_str = get_offset_bytes(self.offset + self.number_bytes_done, self.offset_width)
     read_bytes = min(self.block_size, remain_bytes)
     cmd = "iicwr" + " " + self.device_addr + " " + (str(self.port_id)) + " " + (str(read_bytes)) + " " + offset_str
     _LOGGER.info("%s ", cmd)
     self.cmd = lsises.LSICommand( cmd, self.uart_port,
                                   self.uart_baudrate, None,
                                   self.uart_newline_transmit,
                                   self.cmd_timeout, None,
                                   self.endmarks, self.error_filters)
     if _UNIT_TEST is not None:
         raw_value = apply()
     else:
         raw_value = self.cmd.apply()
     #convert and check value length
     value = extract_rawdata(raw_value)
     if value == "":
         _LOGGER.info("Error: No value read from UART!") 
         return -1
     ret_bytes = len(value)/2
     if ret_bytes != read_bytes:
         _LOGGER.info("Error: read %d bytes but return %d bytes!", read_bytes, ret_bytes) 
         return -2
     #store value to file
     if self.binary_fd is not None:
         self.binary_fd.write(value)
     self.number_bytes_done += read_bytes
     return read_bytes