static void ConnADBTasks() { int res; if (!ADBAttached()) { adb_state = STATE_ADB_DISCONNECTED; return; } switch (adb_state) { case STATE_ADB_DISCONNECTED: if (ADBAttached()) { ADBInit(); ADBFileInit(); adb_state = STATE_ADB_INITIALIZING; } break; case STATE_ADB_INITIALIZING: case STATE_ADB_INITIALIZED: res = ADBTasks(); if (res == -1) { log_printf("Error occured. Resetting Android USB."); USBHostAndroidReset(); break; } if (res == 1) { ADBFileTasks(); adb_state = STATE_ADB_INITIALIZED; } else if (res == 0) { adb_state = STATE_ADB_INITIALIZING; } break; } }
void ConnAccessoryTasks() { switch (acc_state) { case STATE_ACC_DISCONNECTED: if (USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ACC)) { AccessoryInit(buf, BUF_SIZE); acc_state = STATE_ACC_INITIALIZING; } break; case STATE_ACC_INITIALIZING: case STATE_ACC_INITIALIZED: if (!USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ACC)) { AccessoryShutdown(); acc_state = STATE_ACC_DISCONNECTED; } else { int res = AccessoryTasks(); if (res == -1) { log_printf("Error occured. Resetting Android USB."); USBHostAndroidReset(); break; } acc_state = res ? STATE_ACC_INITIALIZED : STATE_ACC_INITIALIZING; } } }
int AccessoryCanWrite(CHANNEL_HANDLE h) { BYTE err; assert(h == 0); assert(channel_state <= CHANNEL_OPEN); if (channel_state != CHANNEL_OPEN) return 0; int res = USBHostAndroidTxIsComplete(&err, ANDROID_INTERFACE_ACC); if (res && err != USB_SUCCESS) { log_printf("Write failed with error code %d", err); USBHostAndroidReset(); } return res; }