def __sendCommand(self, cmd):
        """send specific command to reference unit over serial port

        Args:
            cmd: OpenThread_WpanCtl command string

        Returns:
            Fail: Failed to send the command to reference unit and parse it
            Value: successfully retrieve the desired value from reference unit
            Error: some errors occur, indicates by the followed specific error number
        """
        logging.info('%s: sendCommand[%s]', self.port, cmd)
        if self.logThreadStatus == self.logStatus['running']:
            self.logThreadStatus = self.logStatus['pauseReq']
            while self.logThreadStatus != self.logStatus['paused'] and self.logThreadStatus != self.logStatus['stop']:
                pass

        ssh_stdin = None
        ssh_stdout = None
        ssh_stderr = None
        try:
            # command retransmit times
            retry_times = 3
            while retry_times > 0:
                retry_times -= 1
                try:
                    if self._is_net:
                        ssh_stdin, ssh_stdout, ssh_stderr = self.handle.exec_command(cmd)
                    else:
                        self._sendline(cmd)
                        self._expect(cmd)
                except Exception as e:
                    logging.exception('%s: failed to send command[%s]: %s', self.port, cmd, str(e))
                    if retry_times == 0:
                        raise
                else:
                    break

            line = None
            response = []
            retry_times = 20
            stdout_lines = []
            stderr_lines = []
            if self._is_net:
                stdout_lines = ssh_stdout.readlines()
                stderr_lines = ssh_stderr.readlines()
                if stderr_lines:
                    for stderr_line in stderr_lines:
                        if re.search(r'Not\s+Found|failed\s+with\s+error', stderr_line.strip(), re.M | re.I):
                            print "Command failed:" + stderr_line
                            return 'Fail'
                        print "Got line: " + stderr_line
                        logging.info('%s: the read line is[%s]', self.port, stderr_line)
                        response.append(str(stderr_line.strip()))
                elif stdout_lines:
                    for stdout_line in stdout_lines:
                        logging.info('%s: the read line is[%s]', self.port, stdout_line)
                        if re.search(r'Not\s+Found|failed\s+with\s+error', stdout_line.strip(), re.M | re.I):
                            print "Command failed"
                            return 'Fail'
                        print "Got line: " + stdout_line
                        logging.info('%s: send command[%s] done!', self.port, cmd)
                        response.append(str(stdout_line.strip()))
                response.append(WPAN_CARRIER_PROMPT)
                return response
            else:
                while retry_times > 0:
                    line = self._readline()
                    print "read line: %s" % line
                    logging.info('%s: the read line is[%s]', self.port, line)
                    if line:
                        response.append(line)
                        if re.match(WPAN_CARRIER_PROMPT, line):
                            break
                        elif re.search(r'Not\s+Found|failed\s+with\s+error', line, re.M | re.I):
                            print "Command failed"
                            return 'Fail'

                    retry_times -= 1
                    time.sleep(0.1)

                if retry_times == 0:
                    raise Exception('%s: failed to find end of response' % self.port)
                logging.info('%s: send command[%s] done!', self.port, cmd)
                return response
        except Exception, e:
            ModuleHelper.WriteIntoDebugLogger('sendCommand() Error: ' + str(e))
            raise
def __sendCommand ( self , cmd ) : logging . info ( '%s: sendCommand[%s]' , self . port , cmd ) if self . logThreadStatus == self . logStatus [ 'running' ] : self . logThreadStatus = self . logStatus [ 'pauseReq' ] while self . logThreadStatus != self . logStatus [ 'paused' ] and self . logThreadStatus != self . logStatus [ 'stop' ] : pass ssh_stdin = None ssh_stdout = None ssh_stderr = None try : retry_times = 3 while retry_times > 0 : retry_times -= 1 try : if self . _is_net : ssh_stdin , ssh_stdout , ssh_stderr = self . handle . exec_command ( cmd ) else : self . _sendline ( cmd ) self . _expect ( cmd ) except Exception as e : logging . exception ( '%s: failed to send command[%s]: %s' , self . port , cmd , str ( e ) ) if retry_times == 0 : raise else : break line = None response = [ ] retry_times = 20 stdout_lines = [ ] stderr_lines = [ ] if self . _is_net : stdout_lines = ssh_stdout . readlines ( ) stderr_lines = ssh_stderr . readlines ( ) if stderr_lines : for stderr_line in stderr_lines : if re . search ( r'Not\s+Found|failed\s+with\s+error' , stderr_line . strip ( ) , re . M | re . I ) : print "Command failed:" + stderr_line return 'Fail' print "Got line: " + stderr_line logging . info ( '%s: the read line is[%s]' , self . port , stderr_line ) response . append ( str ( stderr_line . strip ( ) ) ) elif stdout_lines : for stdout_line in stdout_lines : logging . info ( '%s: the read line is[%s]' , self . port , stdout_line ) if re . search ( r'Not\s+Found|failed\s+with\s+error' , stdout_line . strip ( ) , re . M | re . I ) : print "Command failed" return 'Fail' print "Got line: " + stdout_line logging . info ( '%s: send command[%s] done!' , self . port , cmd ) response . append ( str ( stdout_line . strip ( ) ) ) response . append ( WPAN_CARRIER_PROMPT ) return response else : while retry_times > 0 : line = self . _readline ( ) print "read line: %s" % line logging . info ( '%s: the read line is[%s]' , self . port , line ) if line : response . append ( line ) if re . match ( WPAN_CARRIER_PROMPT , line ) : break elif re . search ( r'Not\s+Found|failed\s+with\s+error' , line , re . M | re . I ) : print "Command failed" return 'Fail' retry_times -= 1 time . sleep ( 0.1 ) if retry_times == 0 : raise Exception ( '%s: failed to find end of response' % self . port ) logging . info ( '%s: send command[%s] done!' , self . port , cmd ) return response except Exception , e : ModuleHelper . WriteIntoDebugLogger ( 'sendCommand() Error: ' + str ( e ) ) raise
send specific command to reference unit over serial port

        Args:
            cmd: OpenThread_WpanCtl command string

        Returns:
            Fail: Failed to send the command to reference unit and parse it
            Value: successfully retrieve the desired value from reference unit
            Error: some errors occur, indicates by the followed specific error number