diff options
| author | Dave Wilson <[email protected]> | 2015-04-29 09:48:49 -0700 |
|---|---|---|
| committer | Dave Wilson <[email protected]> | 2015-04-29 10:47:29 -0700 |
| commit | d40232638faaab19de557e70a3ee938da7a35295 (patch) | |
| tree | 14e61c973745949af186b7940e3a53d25322f5de /network/radio/RadioManagerSample/cpp/SampleRadioInstance.h | |
| parent | 02e5b090a6131a7cc1b90f4a9373117c9e3c7088 (diff) | |
samples update for //build
Diffstat (limited to 'network/radio/RadioManagerSample/cpp/SampleRadioInstance.h')
| -rw-r--r-- | network/radio/RadioManagerSample/cpp/SampleRadioInstance.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/network/radio/RadioManagerSample/cpp/SampleRadioInstance.h b/network/radio/RadioManagerSample/cpp/SampleRadioInstance.h new file mode 100644 index 00000000..176aca3c --- /dev/null +++ b/network/radio/RadioManagerSample/cpp/SampleRadioInstance.h @@ -0,0 +1,71 @@ +#pragma once + +class ATL_NO_VTABLE CSampleRadioInstance : + public CComObjectRootEx<CComMultiThreadModel>, + public CComCoClass<CSampleRadioInstance>, + public IRadioInstance, + public ISampleRadioInstanceInternal +{ +public: + DECLARE_CLASSFACTORY() + DECLARE_NOT_AGGREGATABLE(CSampleRadioInstance) + DECLARE_NO_REGISTRY() + + BEGIN_COM_MAP(CSampleRadioInstance) + COM_INTERFACE_ENTRY(IRadioInstance) + COM_INTERFACE_ENTRY(ISampleRadioInstanceInternal) + END_COM_MAP() + + CSampleRadioInstance(); + + void FinalRelease(); + + static HRESULT CreateInstance( + _In_ PCWSTR pszKeyName, + _In_ ISampleRadioManagerInternal *pParentManager, + _COM_Outptr_ ISampleRadioInstanceInternal **pRadioInstance); + + // IRadioInstance + IFACEMETHOD(GetRadioManagerSignature)(_Out_ GUID *pguidSignature); + IFACEMETHOD(GetInstanceSignature)(_Out_ BSTR *pbstrID); + IFACEMETHOD(GetFriendlyName)(_In_ LCID lcid, _Out_ BSTR *pbstrName); + IFACEMETHOD(GetRadioState)(_Out_ DEVICE_RADIO_STATE *pRadioState); + IFACEMETHOD(SetRadioState)(_In_ DEVICE_RADIO_STATE radioState, _In_ UINT32 uTimeoutSec); + IFACEMETHOD_(BOOL, IsMultiComm)(); + IFACEMETHOD_(BOOL, IsAssociatingDevice)(); + + // ISampleRadioInstanceInternal + IFACEMETHOD(OnSysRadioChange)(_In_ SYSTEM_RADIO_STATE sysRadioSate); + +private: + HRESULT _Init(_In_ PCWSTR pszKeyName, _In_ ISampleRadioManagerInternal *pParentManager); + void _Cleanup(); + void _OnInstanceUpdate(); + HRESULT _SetRadioState(_In_ DEVICE_RADIO_STATE radioState); + static DWORD WINAPI s_ThreadInstanceChange(LPVOID pThis); + static DWORD WINAPI s_ThreadSetRadio(LPVOID pThis); + + ISampleRadioManagerInternal *_pParentManager; + CComAutoCriticalSection _criticalSection; + CString _strInstanceId; + CString _strInstanceName; + bool _fIsMultiCommDevice; + + CHandle _hEventThread; + bool _fClosing; // object is closing + CHandle _hRegChangeEvent; + CRegKey _hKeyRoot; + static PCWSTR s_pszInstanceName; + static PCWSTR s_pszInstanceRadioState; + static PCWSTR s_pszPreviousRadioState; + static PCWSTR s_pszMultiComm; + static PCWSTR s_pszAssocatingDevice; +}; + +typedef struct _SET_DEVICE_RADIO_JOB{ + HRESULT hr; + CHandle hEvent; + CSampleRadioInstance *pInstance; + DEVICE_RADIO_STATE drsTarget; +} SET_DEVICE_RADIO_JOB; + |
