Changeset b4c1c95 in mainline for uspace/lib/usbhost/src/hcd.c
- Timestamp:
- 2013-01-04T12:55:23Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- daf199f
- Parents:
- 0816c2e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/src/hcd.c
r0816c2e rb4c1c95 40 40 #include <usb/request.h> 41 41 42 #include <usb/host/hcd.h> 42 #include "hcd.h" 43 44 /** Calls ep_add_hook upon endpoint registration. 45 * @param ep Endpoint to be registered. 46 * @param arg hcd_t in disguise. 47 * @return Error code. 48 */ 49 static int register_helper(endpoint_t *ep, void *arg) 50 { 51 hcd_t *hcd = arg; 52 assert(ep); 53 assert(hcd); 54 if (hcd->ep_add_hook) 55 return hcd->ep_add_hook(hcd, ep); 56 return EOK; 57 } 58 59 /** Calls ep_remove_hook upon endpoint removal. 60 * @param ep Endpoint to be unregistered. 61 * @param arg hcd_t in disguise. 62 */ 63 static void unregister_helper(endpoint_t *ep, void *arg) 64 { 65 hcd_t *hcd = arg; 66 assert(ep); 67 assert(hcd); 68 if (hcd->ep_remove_hook) 69 hcd->ep_remove_hook(hcd, ep); 70 } 71 72 /** Calls ep_remove_hook upon endpoint removal. Prints warning. 73 * * @param ep Endpoint to be unregistered. 74 * * @param arg hcd_t in disguise. 75 * */ 76 static void unregister_helper_warn(endpoint_t *ep, void *arg) 77 { 78 assert(ep); 79 usb_log_warning("Endpoint %d:%d %s was left behind, removing.\n", 80 ep->address, ep->endpoint, usb_str_direction(ep->direction)); 81 unregister_helper(ep, arg); 82 } 83 43 84 44 85 /** Initialize hcd_t structure. … … 63 104 } 64 105 65 /** Calls ep_add_hook upon endpoint registration. 66 * @param ep Endpoint to be registered. 67 * @param arg hcd_t in disguise. 68 * @return Error code. 69 */ 70 static int register_helper(endpoint_t *ep, void *arg) 71 { 72 hcd_t *hcd = arg; 73 assert(ep); 74 assert(hcd); 75 if (hcd->ep_add_hook) 76 return hcd->ep_add_hook(hcd, ep); 106 usb_address_t hcd_request_address(hcd_t *hcd, usb_speed_t speed) 107 { 108 assert(hcd); 109 usb_address_t address = 0; 110 const int ret = usb_device_manager_request_address( 111 &hcd->dev_manager, &address, false, speed); 112 if (ret != EOK) 113 return ret; 114 return address; 115 } 116 117 int hcd_release_address(hcd_t *hcd, usb_address_t address) 118 { 119 assert(hcd); 120 usb_endpoint_manager_remove_address(&hcd->ep_manager, address, 121 unregister_helper_warn, hcd); 122 usb_device_manager_release_address(&hcd->dev_manager, address); 77 123 return EOK; 78 124 } 79 125 80 81 /** Calls ep_remove_hook upon endpoint removal. 82 * @param ep Endpoint to be unregistered. 83 * @param arg hcd_t in disguise. 84 */ 85 static void unregister_helper(endpoint_t *ep, void *arg) 86 { 87 hcd_t *hcd = arg; 88 assert(ep); 89 assert(hcd); 90 if (hcd->ep_remove_hook) 91 hcd->ep_remove_hook(hcd, ep); 126 int hcd_reserve_default_address(hcd_t *hcd, usb_speed_t speed) 127 { 128 assert(hcd); 129 usb_address_t address = 0; 130 return usb_device_manager_request_address( 131 &hcd->dev_manager, &address, true, speed); 92 132 } 93 133
Note:
See TracChangeset
for help on using the changeset viewer.