Ejemplo n.º 1
0
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;
      }
  }
}
Ejemplo n.º 2
0
BOOL BootloaderConnTasks() {
  int role = USBTasks();
  ConnADBTasks();

  return !role  // device mode
      || USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ADB)
      || unknown_device_attached;
}
Ejemplo n.º 3
0
static void AccessoryTasks() {
  DWORD size;
  BYTE err;

  // handle detach
  if (channel_state > CHANNEL_DETACHED
      && !USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ACC)) {
    if (is_channel_open) {
      callback(NULL, 1, callback_arg);
      is_channel_open = 0;
    }
    channel_state = CHANNEL_DETACHED;
  }

  switch (channel_state) {
    case CHANNEL_DETACHED:
      if (USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ACC)) {
        channel_state = CHANNEL_INIT;
      }
      break;

    case CHANNEL_INIT:
      USBHostAndroidRead(rx_buf, 1, ANDROID_INTERFACE_ACC);
      channel_state = CHANNEL_WAIT_OPEN;
      break;

    case CHANNEL_WAIT_OPEN:
      if (USBHostAndroidRxIsComplete(&err, &size, ANDROID_INTERFACE_ACC)) {
        if (err != USB_SUCCESS) {
          log_printf("Read failed with error code %d", err);
          return;
        }
        USBHostAndroidWrite(&is_channel_open, 1, ANDROID_INTERFACE_ACC);
        if (is_channel_open) {
          USBHostAndroidRead(rx_buf, rx_buf_size, ANDROID_INTERFACE_ACC);
          channel_state = CHANNEL_OPEN;
        } else {
          channel_state = CHANNEL_WAIT_CLOSED;
        }
      }
      break;

    case CHANNEL_OPEN:
      if (USBHostAndroidRxIsComplete(&err, &size, ANDROID_INTERFACE_ACC)) {
        if (err != USB_SUCCESS) {
          log_printf("Read failed with error code %d", err);
          return;
        }
        if (size) {
          callback(rx_buf, size, callback_arg);
        }
        // Channel might have been closed from within the callback.
        if (channel_state == CHANNEL_OPEN) {
          USBHostAndroidRead(rx_buf, rx_buf_size, ANDROID_INTERFACE_ACC);
        }
      }
      break;

    case CHANNEL_WAIT_CLOSED:
      if (USBHostAndroidTxIsComplete(&err, ANDROID_INTERFACE_ACC)) {
        if (err != USB_SUCCESS) {
          log_printf("Write failed with error code %d", err);
          return;
        }
        callback(NULL, 0, callback_arg);
        channel_state = CHANNEL_INIT;
      }
      break;
  }
}
Ejemplo n.º 4
0
int AccessoryIsAvailable() {
  return USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ACC);
}
Ejemplo n.º 5
0
Archivo: adb.c Proyecto: xxv/ioio
BOOL ADBAttached() {
    return USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ADB);
}
Ejemplo n.º 6
0
static int ADBConIsAvailable() {
  return USBHostAndroidIsInterfaceAttached(ANDROID_INTERFACE_ADB);
}