AppleUSBDiagnostics.h [plain text]
#ifndef _IOKIT_APPLEUSBDIAGNOSTICS_H
#define _IOKIT_APPLEUSBDIAGNOSTICS_H
#include <IOKit/IOService.h>
#include <IOKit/usb/IOUSBLog.h>
class AppleUSBDiagnostics : public OSObject
{
OSDeclareDefaultStructors(AppleUSBDiagnostics);
friend class AppleXHCIDiagnostics;
public:
enum{
kDiagMaxPorts = 32,
kXHCIMaxCompletionCodes = 256,
kXHCILinkStates = 16
};
typedef struct
{
UInt32 errorCount;
UInt32 xhciErrorCode[kXHCIMaxCompletionCodes];
UInt64 prevBytes;
UInt64 totalBytes;
UInt32 timeouts;
UInt32 prevTimeouts;
UInt32 prevResets;
UInt32 resets;
UInt32 enable;
UInt32 suspend;
UInt32 resume;
UInt32 warmReset;
UInt32 linkState[kXHCILinkStates];
UInt32 power;
UInt32 u1Timeout;
UInt32 u2Timeout;
UInt32 remoteWakeMask;
} UIMPortDiagnostics;
typedef struct
{
UInt64 lastNanosec;
UInt64 totalBytes;
UInt64 prevBytes;
UInt32 acessCount;
UInt32 totalErrors;
UInt32 prevErrors;
UInt32 timeouts;
UInt32 prevTimeouts;
UInt32 resets;
UInt32 prevResets;
UInt32 recoveredErrors;
UInt32 prevRecoveredErrors;
UInt32 errors2Strikes;
UInt32 prevErrors2Strikes;
UInt32 errors3Strikes;
UInt32 prevErrors3Strikes;
UInt32 controlBulkTxOut;
SInt32 numPorts;
UIMPortDiagnostics portCounts[kDiagMaxPorts];
UInt32 overFlowPortErrorCount;
} UIMDiagnostics;
private:
UIMDiagnostics * _UIMDiagnostics;
UInt32 * _controlBulkTransactionsOut;
IOService * _controller;
public:
static OSObject * createDiagnostics( UIMDiagnostics*, UInt32 *controlBulkTransactionsOut , IOService *controller=0);
virtual OSObject * initDiagnostics(AppleUSBDiagnostics *diagnostics, UIMDiagnostics* obj, UInt32 *controlBulkTransactionsOut, IOService *_controller);
virtual bool serialize( OSSerialize * s ) const;
virtual void serializePort(OSDictionary * dictionary, int port, UIMPortDiagnostics *counts, IOService *controller) const;
protected:
virtual void UpdateNumberEntry( OSDictionary * dictionary, UInt32 value, const char * name ) const;
};
#endif