From f614252a21c4b1566a6e60b859a9a6be8980b145 Mon Sep 17 00:00:00 2001 From: "yoonki.park" Date: Thu, 24 Oct 2013 17:32:03 +0900 Subject: [PATCH] remove unused file Change-Id: I15a4e18b1771c195283196513683002eb0dcd241 Signed-off-by: yoonki.park --- src/sdb_usb.c | 508 -------------------------------------------------- 1 file changed, 508 deletions(-) delete mode 100755 src/sdb_usb.c diff --git a/src/sdb_usb.c b/src/sdb_usb.c deleted file mode 100755 index 8abea36..0000000 --- a/src/sdb_usb.c +++ /dev/null @@ -1,508 +0,0 @@ -/* - * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include -#include -#include -#include -#include -#include "utils.h" -#include "fdevent.h" -#include "libusb/usb.h" - -#define TRACE_TAG TRACE_USB -#include "sdb.h" -#include "strutils.h" -#include "sdb_usb.h" - -SDB_MUTEX_DEFINE( usb_lock ); - -struct usb_handle -{ - usb_handle *prev; - usb_handle *next; - - usb_dev_handle *usb_handle; - char unique_node_path[PATH_MAX+1]; - unsigned char end_point[2]; // 0:in, 1:out - int interface; - unsigned zero_mask; - -}; - -static usb_handle handle_list = { - .prev = &handle_list, - .next = &handle_list, -}; - -int is_device_registered(const char *unique_node_path) -{ - usb_handle *usb; - int r = 0; - sdb_mutex_lock(&usb_lock); - for(usb = handle_list.next; usb != &handle_list; usb = usb->next){ - if(!strcmp(usb->unique_node_path, unique_node_path)) { - // set mark flag to indicate this device is still alive - usb->zero_mask = 1; - r = 1; - break; - } - } - sdb_mutex_unlock(&usb_lock); - return r; -} - -void register_device(struct usb_device *dev) -{ - usb_dev_handle *udev; - int ret, i; - - char usb_path[PATH_MAX+1]; - - snprintf(usb_path, sizeof(usb_path), "/dev/bus/usb/%s/%s", dev->bus->dirname, dev->filename); - - if (is_device_registered(usb_path)) { - //D("skip to register device: %s\n", usb_path); - return; - } - - if (!dev->config) { - D("couldn't retrieve descriptors\n"); - return; - } - - struct usb_interface_descriptor *altsetting = NULL; - ret = 0; - for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { - struct usb_config_descriptor *config = &dev->config[i]; - int interface_index = 0; - for (interface_index = 0; interface_index < config->bNumInterfaces; interface_index++) { - struct usb_interface *interface = &config->interface[interface_index]; - int altsetting_index = 0; - for (altsetting_index = 0; altsetting_index < interface->num_altsetting; altsetting_index++) { - altsetting = &interface->altsetting[altsetting_index]; - - if (is_sdb_interface(dev->descriptor.idVendor, altsetting->bInterfaceClass, altsetting->bInterfaceSubClass, altsetting->bInterfaceProtocol)) { - ret = 1; - break; - } - - } - } - } - if (ret == 0) { - //D("fail to get sdb interface descriptor\n"); - return; - } - if (altsetting->bNumEndpoints !=2) { - D("the number of endpoint should be two\n"); - return; - } - - usb_handle* usb = NULL; - usb = calloc(1, sizeof(usb_handle)); - - if (usb == NULL) { - return; - } - - int sdb_configuration = 2; - const struct usb_endpoint_descriptor *ep1 = &altsetting->endpoint[0]; - const struct usb_endpoint_descriptor *ep2 = &altsetting->endpoint[1]; - - usb->interface = altsetting->bInterfaceNumber; - // find out which endpoint is in or out - if (ep1->bEndpointAddress & USB_ENDPOINT_DIR_MASK) { - - usb->end_point[0] = ep1->bEndpointAddress; - usb->end_point[1] = ep2->bEndpointAddress; - } else { - usb->end_point[0] = ep2->bEndpointAddress; - usb->end_point[1] = ep1->bEndpointAddress; - } - - if (altsetting->bInterfaceProtocol == 0x01) { - usb->zero_mask = ep1->wMaxPacketSize - 1; - } - - udev = usb_open(dev); - if (udev == NULL) { - D("unable to open %s\n", usb_path); - free(usb); - return; - } - usb->usb_handle = udev; - char serial[256]; - - if (dev->descriptor.iSerialNumber) { - ret = usb_get_string_simple(udev, dev->descriptor.iSerialNumber, serial, sizeof(serial)); - if (ret < 1) { - D("error to get serial name: %d(%s)\n", ret, strerror(errno)); - strcpy(serial, "unknown"); - } - } - - s_strncpy(usb->unique_node_path, usb_path, sizeof(usb->unique_node_path)); - - /* - // detach any kernel driver - if ((ret = libusb_kernel_driver_active(dev_handle, 0))) { - if ((ret = libusb_detach_kernel_driver(dev_handle, 0))) { - D ("detach!\n"); - } - }*/ - - ret = usb_reset(udev); - ret = usb_set_configuration(udev, sdb_configuration); - // claim the device - ret = usb_claim_interface(udev, usb->interface); - D("claim %d: %d(%s)\n", ret, errno, strerror(errno)); - - sdb_mutex_lock(&usb_lock); - usb->next = &handle_list; - usb->prev = handle_list.prev; - usb->prev->next = usb; - usb->next->prev = usb; - - D("-register new device (in: %04x, out: %04x) from %s\n",usb->end_point[0], usb->end_point[1], usb_path); - - register_usb_transport(usb, serial, 1); - sdb_mutex_unlock(&usb_lock); -} - - -void do_lsusb() -{ - struct usb_bus *bus; - - usb_init(); - - usb_find_busses(); - usb_find_devices(); - - for (bus = usb_busses; bus; bus = bus->next) { - struct usb_device *dev; - - for (dev = bus->devices; dev; dev = dev->next) { - register_device(dev); - } - - } - //D("finished loop\n"); -} - - -void* usb_poll_thread(void* sleep_msec) -{ - D("created usb detecting thread\n"); - int mseconds = (int) sleep_msec; - - while (1) { - do_lsusb(); - //kick_disconnected_devices(); - sdb_sleep_ms(mseconds); - } - return NULL; -} - - -void sdb_usb_init(void) -{ - sdb_thread_t tid; - - if(sdb_thread_create(&tid, usb_poll_thread, (void*)1000)){ - fatal_errno("cannot create input thread"); - } -} - -void sdb_usb_cleanup() -{ - close_usb_devices(); -} - -int sdb_usb_write(usb_handle *h, const void *_data, int len) -{ - char *data = (char*) _data; - int n = 0; - int need_zero = 0; - - D("+sdb_usb_write\n"); - - if(h->zero_mask) { - /* if we need 0-markers and our transfer - ** is an even multiple of the packet size, - ** we make note of it - */ - if(!(len & h->zero_mask)) { - need_zero = 1; - } - } - - while(len > 0) { - int xfer = (len > MAX_READ_WRITE) ? MAX_READ_WRITE : len; - - n = usb_bulk_write(h->usb_handle, h->end_point[1], data, xfer, 0); - if(n != xfer) { - D("fail to usb write: n = %d, errno = %d (%s)\n", n, errno, strerror(errno)); - return -1; - } - - len -= xfer; - data += xfer; - } - - if(need_zero){ - n = usb_bulk_write(h->usb_handle, h->end_point[1], (char *)_data, 0, 0); - if (n < 0) { - D("fail to to usb write for 0 len from %p\n", h->usb_handle); - } - return n; - } - D("-usb_write\n"); - return 0; -} - -int sdb_usb_read(usb_handle *h, void *_data, int len) -{ - char *data = (char*) _data; - int n; - - D("+sdb_usb_read\n"); - while(len > 0) { - int xfer = (len > MAX_READ_WRITE) ? MAX_READ_WRITE : len; - - n = usb_bulk_read(h->usb_handle, h->end_point[0], data, xfer, 0); - - if(n != xfer) { - if((errno == ETIMEDOUT)) { - D("usb bulk read timeout\n"); - if(n > 0){ - data += n; - len -= n; - } - continue; - } - D("fail to usb read: n = %d, errno = %d (%s)\n", n, errno, strerror(errno)); - return -1; - } - - len -= xfer; - data += xfer; - } - - D("-sdb_usb_read\n"); - return 0; -} - -void sdb_usb_kick(usb_handle *h) -{ - D("+kicking\n"); - D("-kicking\n"); -} - -int sdb_usb_close(usb_handle *h) -{ - D("+usb close\n"); - sdb_mutex_lock(&usb_lock); - h->next->prev = h->prev; - h->prev->next = h->next; - h->prev = 0; - h->next = 0; - - usb_release_interface(h->usb_handle, h->interface); - usb_close(h->usb_handle); - sdb_mutex_unlock(&usb_lock); - - if (h != NULL) { - free(h); - h = NULL; - } - D("-usb close\n"); - return 0; -} - -#ifdef _USE_UDEV_ - -#include -#include -#include -#include -#include - -int udev_notify(void) -{ - struct udev *udev; - struct udev_enumerate *enumerate; - struct udev_list_entry *devices, *dev_list_entry; - struct udev_device *dev; - - struct udev_monitor *mon; - int fd; - - /* Create the udev object */ - udev = udev_new(); - if (!udev) { - printf("Can't create udev\n"); - exit(1); - } - - /* This section sets up a monitor which will report events when - devices attached to the system change. Events include "add", - "remove", "change", "online", and "offline". - - This section sets up and starts the monitoring. Events are - polled for (and delivered) later in the file. - - It is important that the monitor be set up before the call to - udev_enumerate_scan_devices() so that events (and devices) are - not missed. For example, if enumeration happened first, there - would be no event generated for a device which was attached after - enumeration but before monitoring began. - - Note that a filter is added so that we only get events for - "hidraw" devices. */ - - /* Set up a monitor to monitor hidraw devices */ - mon = udev_monitor_new_from_netlink(udev, "udev"); - udev_monitor_filter_add_match_subsystem_devtype(mon, "usb", "usb_device"); - udev_monitor_enable_receiving(mon); - /* Get the file descriptor (fd) for the monitor. - This fd will get passed to select() */ - fd = udev_monitor_get_fd(mon); - - - /* Create a list of the devices in the 'hidraw' subsystem. */ - enumerate = udev_enumerate_new(udev); - udev_enumerate_add_match_subsystem(enumerate, "usb"); - udev_enumerate_scan_devices(enumerate); - - - devices = udev_enumerate_get_list_entry(enumerate); - /* For each item enumerated, print out its information. - udev_list_entry_foreach is a macro which expands to - a loop. The loop will be executed for each member in - devices, setting dev_list_entry to a list entry - which contains the device's path in /sys. */ - udev_list_entry_foreach(dev_list_entry, devices) { - const char *path; - - /* Get the filename of the /sys entry for the device - and create a udev_device object (dev) representing it */ - path = udev_list_entry_get_name(dev_list_entry); - dev = udev_device_new_from_syspath(udev, path); - - /* usb_device_get_devnode() returns the path to the device node - itself in /dev. */ - printf("Device Node Path: %s\n", udev_device_get_devnode(dev)); - - /* The device pointed to by dev contains information about - the hidraw device. In order to get information about the - USB device, get the parent device with the - subsystem/devtype pair of "usb"/"usb_device". This will - be several levels up the tree, but the function will find - it.*/ - /*dev = udev_device_get_parent_with_subsystem_devtype( - dev, - "usb", - "usb_device"); - if (!dev) { - printf("Unable to find parent usb device."); - exit(1); - }*/ - - /* From here, we can call get_sysattr_value() for each file - in the device's /sys entry. The strings passed into these - functions (idProduct, idVendor, serial, etc.) correspond - directly to the files in the /sys directory which - represents the USB device. Note that USB strings are - Unicode, UCS2 encoded, but the strings returned from - udev_device_get_sysattr_value() are UTF-8 encoded. */ - printf(" VID/PID: %s %s\n", - udev_device_get_sysattr_value(dev,"idVendor"), - udev_device_get_sysattr_value(dev, "idProduct")); - printf(" %s\n %s\n", - udev_device_get_sysattr_value(dev,"manufacturer"), - udev_device_get_sysattr_value(dev,"product")); - printf(" serial: %s\n", - udev_device_get_sysattr_value(dev, "serial")); - udev_device_unref(dev); - } - /* Free the enumerator object */ - udev_enumerate_unref(enumerate); - - /* Begin polling for udev events. Events occur when devices - attached to the system are added, removed, or change state. - udev_monitor_receive_device() will return a device - object representing the device which changed and what type of - change occured. - - The select() system call is used to ensure that the call to - udev_monitor_receive_device() will not block. - - The monitor was set up earler in this file, and monitoring is - already underway. - - This section will run continuously, calling usleep() at the end - of each pass. This is to demonstrate how to use a udev_monitor - in a non-blocking way. */ - while (1) { - /* Set up the call to select(). In this case, select() will - only operate on a single file descriptor, the one - associated with our udev_monitor. Note that the timeval - object is set to 0, which will cause select() to not - block. */ - fd_set fds; - struct timeval tv; - int ret; - - FD_ZERO(&fds); - FD_SET(fd, &fds); - tv.tv_sec = 0; - tv.tv_usec = 0; - - ret = select(fd+1, &fds, NULL, NULL, &tv); - - /* Check if our file descriptor has received data. */ - if (ret > 0 && FD_ISSET(fd, &fds)) { - printf("\nselect() says there should be data\n"); - - /* Make the call to receive the device. - select() ensured that this will not block. */ - dev = udev_monitor_receive_device(mon); - if (dev) { - printf("Got Device\n"); - printf(" Node: %s\n", udev_device_get_devnode(dev)); - printf(" Subsystem: %s\n", udev_device_get_subsystem(dev)); - printf(" Devtype: %s\n", udev_device_get_devtype(dev)); - - printf(" Action: %s\n", udev_device_get_action(dev)); - udev_device_unref(dev); - } - else { - printf("No Device from receive_device(). An error occured.\n"); - } - } - usleep(250*1000); - printf("."); - fflush(stdout); - } - - - udev_unref(udev); - - return 0; -} - -#endif -- 2.34.1