static void* message_thread(void* arg) {
    int *endpoints = (int *)arg;
    int ret = 0;
    int num = 0;
    char message[50];

    while (sDevice && ret >= 0) {
        char buffer[16384];
        ret = usb_device_bulk_transfer(sDevice, endpoints[0], buffer, sizeof(buffer), 1000);
        if (ret < 0 && errno == ETIMEDOUT) {
            ret = 0;
        }
        if (ret > 0) {
            printf("[RECV] ");
            fwrite(buffer, 1, ret, stdout);
            printf("\n");

            // Respond by sending a message back
            sprintf(message, "Message from Android accessory #%d", num++);
            printf("[SENT] %s\n", message);
            fflush(stdout);
            usb_device_bulk_transfer(sDevice, endpoints[1], message, strlen(message), 1000);
        }
    }

    return NULL;
}
Beispiel #2
0
int MtpPacket::transfer(struct usb_request* request) {
    int result = usb_device_bulk_transfer(request->dev,
                            request->endpoint,
                            request->buffer,
                            request->buffer_length,
                            0);
    request->actual_length = result;
    return result;
}
Beispiel #3
0
 int hu_bulk_send (byte * buf, int len) {
   int ret = usb_device_bulk_transfer (current_device, write_ep, buf, len, 1000);
   return (ret);
 }
Beispiel #4
0
 int hu_bulk_recv (byte * buf, int len) {
   int ret = usb_device_bulk_transfer (current_device, read_ep, buf, len, 1000);
   return (ret);
 }