本文共 1236 字,大约阅读时间需要 4 分钟。
在host是window的情形下,从window发送数据给adb,这样就主从就可以通信了,但是如果adb那边在做耗时的事情,没有及时响应fastboo的命令,这种情形下window好等多久呢?答案是5s。code如下。超过5s就认为通信失败.这种情形下一般要提供处理接受window 发送过来命令进程的优先级,以减少响应的时间 xref: /system/core/fastboot/usb_windows.c int usb_write(usb_handle* handle, const void* data, int len) { 156 unsigned long time_out = 5000; 157 unsigned long written = 0; 158 unsigned count = 0; 159 int ret; 160 161 DBG("usb_write %d\n", len); 162 if (NULL != handle) { 163 // Perform write 164 while(len > 0) { 165 int xfer = (len > MAX_USBFS_BULK_SIZE) ? MAX_USBFS_BULK_SIZE : len; 166 ret = AdbWriteEndpointSync(handle->adb_write_pipe, 167 (void*)data, 168 (unsigned long)xfer, 169 &written, 170 time_out); 171 errno = GetLastError(); 172 DBG("AdbWriteEndpointSync returned %d, errno: %d\n", ret, errno); 173 if (ret == 0) { 174 // assume ERROR_INVALID_HANDLE indicates we are disconnected 175 if (errno == ERROR_INVALID_HANDLE) 176 usb_kick(handle); 177 return -1; 178 } 179 180 count += written; 181 len -= written; 182 data = (const char *)data + written; 183 184 if (len == 0) 185 return count; 186 } 187 } else { 188 DBG("usb_write NULL handle\n"); 189 SetLastError(ERROR_INVALID_HANDLE); 190 } 191 192 DBG("usb_write failed: %d\n", errno); 193 194 return -1; 195}转载地址:http://ftcmi.baihongyu.com/