usb.c

来自「usb.c 定义了usb的各个变量」· C语言 代码 · 共 89 行

C
89
字号
/*
 * Main API entry point
 *
 * Written by:
 * Copyright 2000, Johannes Erdfelt <jerdfelt@valinux.com>
 *
 * This library is covered by the LGPL.
 */

#include <stdlib.h>	/* getenv */
#include <stdio.h>	/* stderr */

#include "usbi.h"

int usb_debug = 0;
struct usb_bus *usb_busses = NULL;

int usb_find_devices_on_bus(struct usb_bus *bus);
int usb_os_open(usb_dev_handle *dev);
int usb_os_close(usb_dev_handle *dev);
void usb_os_init(void);

int usb_find_devices(void)
{
  struct usb_bus *bus;
  int ret;

  for (bus = usb_busses; bus; bus = bus->next) {
    ret = usb_find_devices_on_bus(bus);
    if (ret < 0)
      return ret;
  }

  return 0;
}

void usb_set_debug(int level)
{
  if (usb_debug || level)
    fprintf(stderr, "usb_set_debug: Setting debugging level to %d (%s)\n",
	level, level ? "on" : "off");

  usb_debug = level;
}

void usb_init(void)
{
  if (getenv("USB_DEBUG"))
    usb_set_debug(atoi(getenv("USB_DEBUG")));

  usb_os_init();
}

usb_dev_handle *usb_open(struct usb_device *dev)
{
  usb_dev_handle *udev;

  udev = malloc(sizeof(*udev));
  if (!udev)
    return NULL;

  udev->device = dev;
  udev->bus = dev->bus;
  udev->config = udev->interface = udev->altsetting = -1;

  if (usb_os_open(udev) < 0) {
    free(udev);
    return NULL;
  }

  return udev;
}

int usb_close(usb_dev_handle *dev)
{
  int ret;

  ret = usb_os_close(dev);
  free(dev);

  return ret;
}

struct usb_device *usb_device(usb_dev_handle *dev)
{
  return dev->device;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?