Changeset a81a1d09 in mainline for uspace/app
- Timestamp:
- 2011-05-11T16:49:28Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 19387b61
- Parents:
- e1dbcbc (diff), 9212f8a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app
- Files:
-
- 1 added
- 5 deleted
- 13 edited
- 3 moved
-
lsusb/Makefile (moved) (moved from uspace/app/virtusbkbd/Makefile ) (2 diffs)
-
lsusb/main.c (added)
-
tester/Makefile (modified) (1 diff)
-
tester/adt/usbaddrkeep.def (deleted)
-
tester/tester.c (modified) (1 diff)
-
tester/tester.h (modified) (1 diff)
-
usbinfo/Makefile (modified) (1 diff)
-
usbinfo/dev.c (modified) (6 diffs)
-
usbinfo/info.c (modified) (1 diff)
-
usbinfo/main.c (modified) (3 diffs)
-
usbinfo/usbinfo.h (modified) (1 diff)
-
virtusbkbd/kbdconfig.c (deleted)
-
virtusbkbd/keys.c (deleted)
-
virtusbkbd/keys.h (deleted)
-
virtusbkbd/virtusbkbd.c (deleted)
-
vuhid/Makefile (modified) (1 diff)
-
vuhid/device.c (modified) (5 diffs)
-
vuhid/hids/bootkbd.c (modified) (2 diffs)
-
vuhid/items.h (moved) (moved from uspace/app/virtusbkbd/items.h )
-
vuhid/main.c (modified) (3 diffs)
-
vuhid/report.h (moved) (moved from uspace/app/virtusbkbd/report.h )
-
vuhid/virthid.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/lsusb/Makefile
re1dbcbc ra81a1d09 1 1 # 2 # Copyright (c) 201 0Vojtech Horky2 # Copyright (c) 2011 Vojtech Horky 3 3 # All rights reserved. 4 4 # … … 28 28 29 29 USPACE_PREFIX = ../.. 30 # acronym for virtual usb keyboard 31 # (it is really annoying to write long names) 32 BINARY = vuk 30 BINARY = lsusb 33 31 34 LIBS = $(LIBUSBVIRT_PREFIX)/libusbvirt.a $(LIBUSB_PREFIX)/libusb.a 35 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBUSBVIRT_PREFIX)/include -I$(LIBDRV_PREFIX)/include 32 LIBS = \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS = \ 37 -I$(LIBUSB_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBDRV_PREFIX)/include 36 40 37 41 SOURCES = \ 38 kbdconfig.c \ 39 keys.c \ 40 stdreq.c \ 41 virtusbkbd.c 42 main.c 42 43 43 44 include $(USPACE_PREFIX)/Makefile.common -
uspace/app/tester/Makefile
re1dbcbc ra81a1d09 31 31 BINARY = tester 32 32 33 LIBS += $(LIBUSB_PREFIX)/libusb.a34 EXTRA_CFLAGS += -I$(LIBUSB_PREFIX)/include35 36 33 SOURCES = \ 37 34 tester.c \ 38 adt/usbaddrkeep.c \39 35 thread/thread1.c \ 40 36 print/print1.c \ -
uspace/app/tester/tester.c
re1dbcbc ra81a1d09 64 64 #include "mm/mapping1.def" 65 65 #include "hw/serial/serial1.def" 66 #include "adt/usbaddrkeep.def"67 66 #include "hw/misc/virtchar1.def" 68 67 #include "devs/devman1.def" -
uspace/app/tester/tester.h
re1dbcbc ra81a1d09 80 80 extern const char *test_mapping1(void); 81 81 extern const char *test_serial1(void); 82 extern const char *test_usbaddrkeep(void);83 82 extern const char *test_virtchar1(void); 84 83 extern const char *test_devman1(void); -
uspace/app/usbinfo/Makefile
re1dbcbc ra81a1d09 30 30 BINARY = usbinfo 31 31 32 LIBS = $(LIBUSB_PREFIX)/libusb.a $(LIBDRV_PREFIX)/libdrv.a 33 EXTRA_CFLAGS = -I$(LIBUSB_PREFIX)/include -I$(LIBDRV_PREFIX)/include 32 LIBS = \ 33 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 34 $(LIBUSB_PREFIX)/libusb.a \ 35 $(LIBDRV_PREFIX)/libdrv.a 36 EXTRA_CFLAGS = \ 37 -I$(LIBUSB_PREFIX)/include \ 38 -I$(LIBUSBDEV_PREFIX)/include \ 39 -I$(LIBDRV_PREFIX)/include 34 40 35 41 SOURCES = \ -
uspace/app/usbinfo/dev.c
re1dbcbc ra81a1d09 40 40 #include "usbinfo.h" 41 41 42 usbinfo_device_t *prepare_device( devman_handle_t hc_handle,43 usb_address_t dev_addr)42 usbinfo_device_t *prepare_device(const char *name, 43 devman_handle_t hc_handle, usb_address_t dev_addr) 44 44 { 45 45 usbinfo_device_t *dev = malloc(sizeof(usbinfo_device_t)); … … 55 55 if (rc != EOK) { 56 56 fprintf(stderr, 57 NAME ": failed to create connection to the device: %s.\n",58 str_error(rc));57 NAME ": failed to create connection to device %s: %s.\n", 58 name, str_error(rc)); 59 59 goto leave; 60 60 } … … 64 64 if (rc != EOK) { 65 65 fprintf(stderr, 66 NAME ": failed to create default control pipe : %s.\n",67 str_error(rc));66 NAME ": failed to create default control pipe to %s: %s.\n", 67 name, str_error(rc)); 68 68 goto leave; 69 69 } … … 71 71 rc = usb_pipe_probe_default_control(&dev->ctrl_pipe); 72 72 if (rc != EOK) { 73 fprintf(stderr, 74 NAME ": probing default control pipe failed: %s.\n", 75 str_error(rc)); 73 if (rc == ENOENT) { 74 fprintf(stderr, NAME ": " \ 75 "device %s not present or malfunctioning.\n", 76 name); 77 } else { 78 fprintf(stderr, NAME ": " \ 79 "probing default control pipe of %s failed: %s.\n", 80 name, str_error(rc)); 81 } 76 82 goto leave; 77 83 } … … 84 90 if (rc != EOK) { 85 91 fprintf(stderr, 86 NAME ": failed to retrieve device descriptor : %s.\n",87 str_error(rc));92 NAME ": failed to retrieve device descriptor of %s: %s.\n", 93 name, str_error(rc)); 88 94 goto leave; 89 95 } … … 93 99 &dev->full_configuration_descriptor_size); 94 100 if (rc != EOK) { 95 fprintf(stderr, 96 NAME ": failed to retrieve configuration descriptor: %s.\n",97 str_error(rc));101 fprintf(stderr, NAME ": " \ 102 "failed to retrieve configuration descriptor of %s: %s.\n", 103 name, str_error(rc)); 98 104 goto leave; 99 105 } -
uspace/app/usbinfo/info.c
re1dbcbc ra81a1d09 41 41 #include <usb/request.h> 42 42 #include <usb/classes/classes.h> 43 #include <usb/classes/hid.h>44 43 #include <usb/classes/hub.h> 45 44 #include "usbinfo.h" -
uspace/app/usbinfo/main.c
re1dbcbc ra81a1d09 45 45 #include <usb/usbdevice.h> 46 46 #include <usb/pipes.h> 47 #include <usb/host.h> 48 #include <usb/driver.h> 47 49 #include "usbinfo.h" 50 51 static bool try_parse_class_and_address(const char *path, 52 devman_handle_t *out_hc_handle, usb_address_t *out_device_address) 53 { 54 size_t class_index; 55 size_t address; 56 int rc; 57 char *ptr; 58 59 rc = str_size_t(path, &ptr, 10, false, &class_index); 60 if (rc != EOK) { 61 return false; 62 } 63 if ((*ptr == ':') || (*ptr == '.')) { 64 ptr++; 65 } else { 66 return false; 67 } 68 rc = str_size_t(ptr, NULL, 10, true, &address); 69 if (rc != EOK) { 70 return false; 71 } 72 rc = usb_ddf_get_hc_handle_by_class(class_index, out_hc_handle); 73 if (rc != EOK) { 74 return false; 75 } 76 if (out_device_address != NULL) { 77 *out_device_address = (usb_address_t) address; 78 } 79 return true; 80 } 48 81 49 82 static bool resolve_hc_handle_and_dev_addr(const char *devpath, … … 60 93 if (str_cmp(devpath, "virt") == 0) { 61 94 devpath = "/virt/usbhc/usb00_a1/usb00_a2"; 95 } 96 97 if (try_parse_class_and_address(devpath, 98 out_hc_handle, out_device_address)) { 99 return true; 62 100 } 63 101 … … 271 309 } 272 310 273 usbinfo_device_t *dev = prepare_device(hc_handle, dev_addr); 311 usbinfo_device_t *dev = prepare_device(devpath, 312 hc_handle, dev_addr); 274 313 if (dev == NULL) { 275 314 continue; -
uspace/app/usbinfo/usbinfo.h
re1dbcbc ra81a1d09 71 71 } 72 72 73 usbinfo_device_t *prepare_device( devman_handle_t, usb_address_t);73 usbinfo_device_t *prepare_device(const char *, devman_handle_t, usb_address_t); 74 74 void destroy_device(usbinfo_device_t *); 75 75 -
uspace/app/vuhid/Makefile
re1dbcbc ra81a1d09 34 34 LIBS = \ 35 35 $(LIBUSBVIRT_PREFIX)/libusbvirt.a \ 36 $(LIBUSBHID_PREFIX)/libusbhid.a \ 37 $(LIBUSBDEV_PREFIX)/libusbdev.a \ 36 38 $(LIBUSB_PREFIX)/libusb.a 37 39 EXTRA_CFLAGS = \ 38 40 -I$(LIBUSB_PREFIX)/include \ 41 -I$(LIBUSBDEV_PREFIX)/include \ 42 -I$(LIBUSBHID_PREFIX)/include \ 39 43 -I$(LIBUSBVIRT_PREFIX)/include \ 40 44 -I$(LIBDRV_PREFIX)/include -
uspace/app/vuhid/device.c
re1dbcbc ra81a1d09 77 77 { 78 78 vuhid_interface_t *iface = arg; 79 vuhid_data_t *hid_data = iface->vuhid_data; 79 80 80 81 if (iface->live != NULL) { 81 82 iface->live(iface); 82 83 } 84 85 fibril_mutex_lock(&hid_data->iface_count_mutex); 86 hid_data->iface_died_count++; 87 fibril_condvar_broadcast(&hid_data->iface_count_cv); 88 fibril_mutex_unlock(&hid_data->iface_count_mutex); 83 89 84 90 return EOK; … … 110 116 if ((iface->in_data_size == 0) && (iface->out_data_size == 0)) { 111 117 return EEMPTY; 118 } 119 120 // FIXME - we shall set vuhid_data to NULL in the main() rather 121 // than to depend on individual interfaces 122 /* Already used interface. */ 123 if (iface->vuhid_data != NULL) { 124 return EEXISTS; 112 125 } 113 126 … … 252 265 253 266 /* Launch the "life" fibril. */ 267 iface->vuhid_data = hid_data; 254 268 fid_t life_fibril = fibril_create(interface_life_fibril, iface); 255 269 if (life_fibril == 0) { … … 310 324 += total_descr_size; 311 325 326 hid_data->iface_count++; 312 327 fibril_add_ready(life_fibril); 313 328 … … 331 346 } 332 347 348 void wait_for_interfaces_death(usbvirt_device_t *dev) 349 { 350 vuhid_data_t *hid_data = dev->device_data; 351 352 fibril_mutex_lock(&hid_data->iface_count_mutex); 353 while (hid_data->iface_died_count < hid_data->iface_count) { 354 fibril_condvar_wait(&hid_data->iface_count_cv, 355 &hid_data->iface_count_mutex); 356 } 357 fibril_mutex_unlock(&hid_data->iface_count_mutex); 358 } 333 359 334 360 /** @} -
uspace/app/vuhid/hids/bootkbd.c
re1dbcbc ra81a1d09 39 39 #include <usb/classes/hidut.h> 40 40 41 #include "../ ../virtusbkbd/report.h"41 #include "../report.h" 42 42 43 43 uint8_t report_descriptor[] = { … … 169 169 .on_data_out = on_data_out, 170 170 171 .live = live 171 .live = live, 172 173 .vuhid_data = NULL 172 174 }; 173 175 -
uspace/app/vuhid/main.c
re1dbcbc ra81a1d09 132 132 .in_endpoint_first_free = 1, 133 133 .out_endpoints_mapping = { NULL }, 134 .out_endpoint_first_free = 1 135 }; 134 .out_endpoint_first_free = 1, 135 136 .iface_count = 0, 137 .iface_died_count = 0 138 // mutex and CV must be initialized elsewhere 139 }; 140 136 141 137 142 /** Keyboard device. … … 151 156 152 157 usb_log_enable(USB_LOG_LEVEL_DEBUG2, "vusbhid"); 158 159 fibril_mutex_initialize(&vuhid_data.iface_count_mutex); 160 fibril_condvar_initialize(&vuhid_data.iface_count_cv); 153 161 154 162 /* Determine which interfaces to initialize. */ … … 182 190 printf("Connected to VHCD...\n"); 183 191 184 while (true) { 185 async_usleep(10 * 1000 * 1000); 186 } 192 wait_for_interfaces_death(&hid_dev); 187 193 188 194 printf("Terminating...\n"); 189 195 196 usbvirt_device_unplug(&hid_dev); 197 190 198 return 0; 191 199 } -
uspace/app/vuhid/virthid.h
re1dbcbc ra81a1d09 38 38 #include <usb/usb.h> 39 39 #include <usbvirt/device.h> 40 #include <fibril_synch.h> 40 41 41 42 #define VUHID_ENDPOINT_MAX USB11_ENDPOINT_MAX … … 43 44 44 45 typedef struct vuhid_interface vuhid_interface_t; 46 47 typedef struct { 48 vuhid_interface_t *in_endpoints_mapping[VUHID_ENDPOINT_MAX]; 49 size_t in_endpoint_first_free; 50 vuhid_interface_t *out_endpoints_mapping[VUHID_ENDPOINT_MAX]; 51 size_t out_endpoint_first_free; 52 vuhid_interface_t *interface_mapping[VUHID_INTERFACE_MAX]; 53 54 fibril_mutex_t iface_count_mutex; 55 fibril_condvar_t iface_count_cv; 56 size_t iface_count; 57 size_t iface_died_count; 58 } vuhid_data_t; 45 59 46 60 struct vuhid_interface { … … 63 77 64 78 void *interface_data; 79 80 vuhid_data_t *vuhid_data; 65 81 }; 66 67 typedef struct {68 vuhid_interface_t *in_endpoints_mapping[VUHID_ENDPOINT_MAX];69 size_t in_endpoint_first_free;70 vuhid_interface_t *out_endpoints_mapping[VUHID_ENDPOINT_MAX];71 size_t out_endpoint_first_free;72 vuhid_interface_t *interface_mapping[VUHID_INTERFACE_MAX];73 } vuhid_data_t;74 82 75 83 typedef struct { … … 84 92 85 93 int add_interface_by_id(vuhid_interface_t **, const char *, usbvirt_device_t *); 94 void wait_for_interfaces_death(usbvirt_device_t *); 86 95 87 96 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
