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

Method QueueWrite

WirelessGamingReceiver/WirelessGamingReceiver.cpp:313–339  ·  view source on GitHub ↗

Queue an asynchronous write on a controller

Source from the content-addressed store, hash-verified

311
312// Queue an asynchronous write on a controller
313bool WirelessGamingReceiver::QueueWrite(int index, const void *bytes, UInt32 length)
314{
315 IOBufferMemoryDescriptor *outBuffer;
316 IOUSBCompletion complete;
317 IOReturn err;
318
319 outBuffer = IOBufferMemoryDescriptor::inTaskWithOptions(kernel_task, 0, length);
320 if (outBuffer == NULL)
321 {
322 // IOLog("send - unable to allocate buffer\n");
323 return false;
324 }
325 outBuffer->writeBytes(0, bytes, length);
326
327 complete.target = this;
328 complete.action = _WriteComplete;
329 complete.parameter = outBuffer;
330
331 err = connections[index].controllerOut->Write(outBuffer, 0, 0, length, &complete);
332 if (err == kIOReturnSuccess)
333 return true;
334 else
335 {
336 // IOLog("send - failed to start (0x%.8x)\n",err);
337 return false;
338 }
339}
340
341// Handle a completed write on a controller
342void WirelessGamingReceiver::WriteComplete(void *parameter,IOReturn status,UInt32 bufferSizeRemaining)

Callers 1

SendPacketMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected