MCPcopy Create free account
hub / github.com/360Controller/360Controller / ReadComplete

Method ReadComplete

WirelessGamingReceiver/WirelessGamingReceiver.cpp:281–310  ·  view source on GitHub ↗

Handle a completed read on a controller

Source from the content-addressed store, hash-verified

279
280// Handle a completed read on a controller
281void WirelessGamingReceiver::ReadComplete(void *parameter, IOReturn status, UInt32 bufferSizeRemaining)
282{
283 WGRREAD *data = (WGRREAD*)parameter;
284 bool reread = true;
285
286 switch (status)
287 {
288 case kIOReturnOverrun:
289 // IOLog("read - kIOReturnOverrun, clearing stall\n");
290 connections[data->index].controllerIn->ClearStall();
291 // fall through
292 case kIOReturnSuccess:
293 ProcessMessage(data->index, (unsigned char*)data->buffer->getBytesNoCopy(), (int)data->buffer->getLength() - bufferSizeRemaining);
294 break;
295
296 case kIOReturnNotResponding:
297 // IOLog("read - kIOReturnNotResponding\n");
298 // fall through
299 default:
300 reread = false;
301 break;
302 }
303
304 int newIndex = data->index;
305 data->buffer->release();
306 IOFree(data, sizeof(WGRREAD));
307
308 if (reread)
309 QueueRead(newIndex);
310}
311
312// Queue an asynchronous write on a controller
313bool WirelessGamingReceiver::QueueWrite(int index, const void *bytes, UInt32 length)

Callers 1

_ReadCompleteMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected