#include "linkedlist.h"
#include "transport.h"
-#define MAX_C_STRLEN 128
#define kUSBLanguageEnglish 0x409
static IONotificationPortRef gNotifyPort;
((result_length - 2) >> 1));
/* Copy the character contents to a local C string */
- CFStringGetCString(result, spotSerial, MAX_C_STRLEN, kCFStringEncodingASCII);
+ CFStringGetCString(result, spotSerial, MAX_SERIAL_NAME, kCFStringEncodingASCII);
}
}
}
#include "transport.h"
#define TRACE_TAG TRACE_USB
-
+#define URB_TRANSFER_TIMEOUT 3000
SDB_MUTEX_DEFINE( usb_lock);
LIST_NODE* usb_list = NULL;
usb->end_point[0] = endpoint_in;
usb->end_point[1] = endpoint_out;
- char usb_serial[256] = { 0, };
+ char usb_serial[MAX_SERIAL_NAME] = { 0, };
if (serial != NULL) {
s_strncpy(usb_serial, serial, sizeof(usb_serial));
restart: waiting = 1;
context = NULL;
- while (!urb.usercontext
- && ((ret = ioctl(h->node_fd, USBDEVFS_REAPURBNDELAY, &context))
- == -1) && waiting) {
+ for (;;) {
+ ret = ioctl(h->node_fd, USBDEVFS_REAPURBNDELAY, &context);
+ if (!urb.usercontext && (ret == -1) && waiting) {
+ continue;
+ } else {
+ break;
+ }
+
tv.tv_sec = 0;
tv.tv_usec = 1000; // 1 msec
if ((tv_now.tv_sec > tv_cur.tv_sec)
|| ((tv_now.tv_sec == tv_cur.tv_sec)
- && (tv_now.tv_usec >= tv_ref.tv_usec)))
+ && (tv_now.tv_usec >= tv_ref.tv_usec))) {
waiting = 0;
+ }
}
}
while (len > 0) {
int xfer = (len > MAX_READ_WRITE) ? MAX_READ_WRITE : len;
- n = usb_urb_transfer(h, h->end_point[1], data, xfer, 0);
+ n = usb_urb_transfer(h, h->end_point[1], data, xfer, URB_TRANSFER_TIMEOUT);
if (n != xfer) {
D("fail to usb write: n = %d, errno = %d (%s)\n", n, errno, strerror(errno));
return -1;
while (len > 0) {
int xfer = (len > MAX_READ_WRITE) ? MAX_READ_WRITE : len;
- n = usb_urb_transfer(h, h->end_point[0], data, xfer, 0);
+ n = usb_urb_transfer(h, h->end_point[0], data, xfer, URB_TRANSFER_TIMEOUT);
if (n != xfer) {
if ((errno == ETIMEDOUT)) {
D("usb bulk read timeout\n");
if (!is_device_registered(devicePath)) {
struct usb_handle *hnd = usb_open(devicePath);
if (hnd != NULL) {
- char serial[256];
+ char serial[MAX_SERIAL_NAME]={0,};
if (get_serial_number(hnd, serial, sizeof(serial)) > 0) {
LOG_DEBUG("register usb for: %s\n", serial);
if (register_device(hnd)) {