Changeset 87305bb in mainline
- Timestamp:
- 2011-04-06T22:32:06Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- dcaf819, fc9f88d
- Parents:
- 4ca18ae
- Location:
- uspace/lib/usb
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/include/usb/host/device_keeper.h
r4ca18ae r87305bb 56 56 link_t endpoints; 57 57 uint16_t control_used; 58 uint16_t toggle_status[2];59 58 devman_handle_t handle; 60 59 }; … … 81 80 82 81 void usb_device_keeper_reset_if_need(usb_device_keeper_t *instance, 83 usb_target_t target, 84 const uint8_t *setup_data); 85 /* 86 int usb_device_keeper_get_toggle(usb_device_keeper_t *instance, 87 usb_target_t target, usb_direction_t direction); 82 usb_target_t target, const uint8_t *setup_data); 88 83 89 int usb_device_keeper_set_toggle(usb_device_keeper_t *instance,90 usb_target_t target, usb_direction_t direction, bool toggle);91 */92 84 usb_address_t device_keeper_get_free_address(usb_device_keeper_t *instance, 93 85 usb_speed_t speed); -
uspace/lib/usb/src/host/device_keeper.c
r4ca18ae r87305bb 56 56 instance->devices[i].control_used = 0; 57 57 instance->devices[i].handle = 0; 58 // instance->devices[i].toggle_status[0] = 0;59 // instance->devices[i].toggle_status[1] = 0;60 58 list_initialize(&instance->devices[i].endpoints); 61 59 } … … 132 130 /* endpoint number is < 16, thus first byte is enough */ 133 131 assert(!"NOT IMPLEMENTED!"); 134 // instance->devices[target.address].toggle_status[0] &=135 // ~(1 << data[4]);136 // instance->devices[target.address].toggle_status[1] &=137 // ~(1 << data[4]);138 132 } 139 133 break; … … 146 140 instance->devices[target.address].endpoints.next; 147 141 while (current != 148 instance->devices[target.address].endpoints.prev)142 &instance->devices[target.address].endpoints) 149 143 { 150 144 endpoint_toggle_reset(current); 151 145 current = current->next; 152 146 } 153 // instance->devices[target.address].toggle_status[0] = 0;154 // instance->devices[target.address].toggle_status[1] = 0;155 147 } 156 148 break; … … 158 150 fibril_mutex_unlock(&instance->guard); 159 151 } 160 /*----------------------------------------------------------------------------*/161 #if 0162 /** Get current value of endpoint toggle.163 *164 * @param[in] instance Device keeper structure to use.165 * @param[in] target Device and endpoint used.166 * @return Error code167 */168 int usb_device_keeper_get_toggle(usb_device_keeper_t *instance,169 usb_target_t target, usb_direction_t direction)170 {171 assert(instance);172 /* only control pipes are bi-directional and those do not need toggle */173 if (direction == USB_DIRECTION_BOTH)174 return ENOENT;175 int ret;176 fibril_mutex_lock(&instance->guard);177 if (target.endpoint > 15 || target.endpoint < 0178 || target.address >= USB_ADDRESS_COUNT || target.address < 0179 || !instance->devices[target.address].occupied) {180 usb_log_error("Invalid data when asking for toggle value.\n");181 ret = EINVAL;182 } else {183 ret = (instance->devices[target.address].toggle_status[direction]184 >> target.endpoint) & 1;185 }186 fibril_mutex_unlock(&instance->guard);187 return ret;188 }189 /*----------------------------------------------------------------------------*/190 /** Set current value of endpoint toggle.191 *192 * @param[in] instance Device keeper structure to use.193 * @param[in] target Device and endpoint used.194 * @param[in] toggle Toggle value.195 * @return Error code.196 */197 int usb_device_keeper_set_toggle(usb_device_keeper_t *instance,198 usb_target_t target, usb_direction_t direction, bool toggle)199 {200 assert(instance);201 /* only control pipes are bi-directional and those do not need toggle */202 if (direction == USB_DIRECTION_BOTH)203 return ENOENT;204 int ret;205 fibril_mutex_lock(&instance->guard);206 if (target.endpoint > 15 || target.endpoint < 0207 || target.address >= USB_ADDRESS_COUNT || target.address < 0208 || !instance->devices[target.address].occupied) {209 usb_log_error("Invalid data when setting toggle value.\n");210 ret = EINVAL;211 } else {212 if (toggle) {213 instance->devices[target.address].toggle_status[direction]214 |= (1 << target.endpoint);215 } else {216 instance->devices[target.address].toggle_status[direction]217 &= ~(1 << target.endpoint);218 }219 ret = EOK;220 }221 fibril_mutex_unlock(&instance->guard);222 return ret;223 }224 #endif225 152 /*----------------------------------------------------------------------------*/ 226 153 /** Get a free USB address … … 251 178 instance->devices[new_address].occupied = true; 252 179 instance->devices[new_address].speed = speed; 253 instance->devices[new_address].toggle_status[0] = 0;254 instance->devices[new_address].toggle_status[1] = 0;255 180 instance->last_address = new_address; 256 181 fibril_mutex_unlock(&instance->guard);
Note:
See TracChangeset
for help on using the changeset viewer.