Changeset c8dd5b1 in mainline
- Timestamp:
- 2011-02-07T13:39:21Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 52b7f15f
- Parents:
- 9e80904
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/tracker.c
r9e80904 rc8dd5b1 163 163 instance->buffer_size - instance->buffer_offset); 164 164 165 //TODO: add toggle here 165 166 transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT, 166 167 instance->packet_size, false, instance->target, USB_PID_IN, … … 171 172 /* set next step */ 172 173 if ((instance->buffer_offset + instance->packet_size) 173 <instance->buffer_size) {174 >= instance->buffer_size) { 174 175 /* that's all, end coomunication */ 175 176 instance->next_step = tracker_control_read_status; … … 196 197 memcpy(instance->packet, instance->buffer + instance->buffer_offset, 197 198 instance->packet_size); 199 200 // TODO: add toggle here 198 201 transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT, 199 202 instance->packet_size, false, instance->target, USB_PID_OUT, … … 204 207 /* set next step */ 205 208 if ((instance->buffer_offset + instance->packet_size) 206 <instance->buffer_size) {209 >= instance->buffer_size) { 207 210 /* that's all, end coomunication */ 208 211 instance->next_step = tracker_control_write_status; … … 268 271 void tracker_interrupt_in(tracker_t *instance) 269 272 { 273 assert(instance); 274 275 /* check for errors */ 276 int err = transfer_descriptor_status(instance->td); 277 if (err != EOK) { 278 tracker_call_in_and_dispose(instance); 279 return; 280 } 281 282 if (instance->packet_size) { 283 /* we are data in, we want data from our device. if there is data */ 284 memcpy(instance->buffer + instance->buffer_offset, instance->packet, 285 instance->packet_size); 286 instance->buffer_offset += instance->packet_size; 287 } 288 289 /* prepare next packet, no copy, we are receiving data */ 290 instance->packet_size = MIN(instance->max_packet_size, 291 instance->buffer_size - instance->buffer_offset); 292 293 //TODO: add toggle here 294 transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT, 295 instance->packet_size, false, instance->target, USB_PID_IN, 296 instance->packet); 297 298 tracker_schedule(instance); 299 300 /* set next step */ 301 if ((instance->buffer_offset + instance->packet_size) 302 >= instance->buffer_size) { 303 /* that's all, end coomunication */ 304 instance->next_step = tracker_call_in_and_dispose; 305 } 270 306 } 271 307 /*----------------------------------------------------------------------------*/ 272 308 void tracker_interrupt_out(tracker_t *instance) 273 309 { 310 assert(instance); 311 312 /* check for errors */ 313 int err = transfer_descriptor_status(instance->td); 314 if (err != EOK) { 315 tracker_call_out_and_dispose(instance); 316 return; 317 } 318 319 /* we are data out, we down't want data from our device */ 320 instance->buffer_offset += instance->packet_size; 321 322 /* prepare next packet, copy data to packet */ 323 instance->packet_size = MIN(instance->max_packet_size, 324 instance->buffer_size - instance->buffer_offset); 325 memcpy(instance->packet, instance->buffer + instance->buffer_offset, 326 instance->packet_size); 327 328 // TODO: add toggle here 329 transfer_descriptor_init(instance->td, DEFAULT_ERROR_COUNT, 330 instance->packet_size, false, instance->target, USB_PID_OUT, 331 instance->packet); 332 333 tracker_schedule(instance); 334 335 /* set next step */ 336 if ((instance->buffer_offset + instance->packet_size) 337 >= instance->buffer_size) { 338 /* that's all, end coomunication */ 339 instance->next_step = tracker_call_out_and_dispose; 340 } 274 341 } 275 342 /*----------------------------------------------------------------------------*/
Note:
See TracChangeset
for help on using the changeset viewer.