| 852 | } |
| 853 | |
| 854 | void Xbox360Peripheral::SerialReadComplete(void *parameter, IOReturn status, UInt32 bufferSizeRemaining) |
| 855 | { |
| 856 | if (padHandler != NULL) // avoid deadlock with release |
| 857 | { |
| 858 | LockRequired locker(mainLock); |
| 859 | bool reread = !isInactive(); |
| 860 | |
| 861 | switch (status) |
| 862 | { |
| 863 | case kIOReturnOverrun: |
| 864 | IOLog("read (serial) - kIOReturnOverrun, clearing stall\n"); |
| 865 | if (serialInPipe != NULL) |
| 866 | serialInPipe->ClearStall(); |
| 867 | // Fall through |
| 868 | case kIOReturnSuccess: |
| 869 | serialHeard = true; |
| 870 | if (serialInBuffer != NULL) |
| 871 | SerialMessage(serialInBuffer, serialInBuffer->getCapacity() - bufferSizeRemaining); |
| 872 | break; |
| 873 | |
| 874 | case kIOReturnNotResponding: |
| 875 | IOLog("read (serial) - kIOReturnNotResponding\n"); |
| 876 | reread = false; |
| 877 | break; |
| 878 | |
| 879 | default: |
| 880 | reread = false; |
| 881 | break; |
| 882 | } |
| 883 | if (reread) |
| 884 | QueueSerialRead(); |
| 885 | } |
| 886 | } |
| 887 | |
| 888 | // Handle a completed asynchronous write |
| 889 | void Xbox360Peripheral::WriteComplete(void *parameter,IOReturn status,UInt32 bufferSizeRemaining) |
no outgoing calls
no test coverage detected