XInput_Scp/BTConnection.h (26 lines of code) (raw):

#pragma once class CBTConnection : public CSCPController { public: DWORD CollectionSize; CBTConnection(void); virtual BOOL Open(); virtual BOOL Close(); virtual DWORD GetState(DWORD dwUserIndex, XINPUT_STATE* pState); virtual DWORD SetState(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration); virtual DWORD GetExtended(DWORD dwUserIndex, SCP_EXTN* pPressure); // UNDOCUMENTED virtual DWORD GetStateEx(DWORD dwUserIndex, XINPUT_STATE *pState); protected: static const unsigned short ControlPort = 26760; static const unsigned short ReportPort = 26761; XINPUT_STATE m_padState [4]; XINPUT_VIBRATION m_padVibration [4]; SCP_EXTN m_Extended [4]; volatile bool m_bInited, m_bConnected; SOCKET m_Control; SOCKET m_Report; virtual void Report(DWORD dwUserIndex); virtual void XInputMapState(DWORD dwUserIndex, UCHAR* Buffer, UCHAR Model); virtual BOOL Read(UCHAR* Buffer); static void ReadThread(void *lpController); };