📄 monitorbluesoleil.cpp
字号:
#include "MonitorBlueSoleil.h"
#include "SdkFunc.h"
#include "Config.h"
/*
Detect running status of BlueSoleil using BT_IsBlueSoleilStarted and BT_IsBluetoothReady
*/
DWORD WINAPI DetectBlueSoleil(LPVOID param)
{
BOOL bInitialized = FALSE;
while(1)
{
if(BT_IsBlueSoleilStarted(0))
{
if(!bInitialized)
{
// BT_IsBluetoothReady(15);
bInitialized = BT_InitializeLibrary();
if(bInitialized)
{
//SDK_Init();
}
else
{
SDK_Done();
printf("BlueSoleil starts, Fail to initialize Lib\n");
}
}
}
else
{
if(bInitialized)
{
SDK_Done();
bInitialized = FALSE;
printf("BlueSoleil stops, Lib uninitialized\n");
}
}
if(WaitForSingleObject(g_hForceExit,1000) == WAIT_OBJECT_0) break;
}
return 0;
}
/***************************************************************************
Detect running status of BlueSoleil using events
****************************************************************************/
DWORD WINAPI DetectBlueSoleilByEvents(LPVOID param)
{
//Must created with bManualReset=TRUE
g_hBlueSoleilStarted = CreateEvent(NULL, TRUE, FALSE, ("Global\\BluesoleilBluetoothStarted"));
if(!g_hBlueSoleilStarted) return 0;
g_hBlueSoleilStopping = CreateEvent(NULL, TRUE, FALSE, ("Global\\BluesoleilStopping"));
if(!g_hBlueSoleilStopping)
{
CloseHandle(g_hBlueSoleilStarted);
return 0;
}
HANDLE hWaitHandles[2];
DWORD dwRet;
while(1)
{
//Wait for BlueSoleil stopping
hWaitHandles[0] = g_hForceExit;
hWaitHandles[1] = g_hBlueSoleilStopping;
dwRet = WaitForMultipleObjects(2,hWaitHandles,FALSE,INFINITE);
if(dwRet == WAIT_OBJECT_0)
break;
else if(dwRet == WAIT_OBJECT_0 + 1)
{
SDK_Done();
printf("BlueSolei exits detected.\n\n");
}
else
break;
//Wait for BlueSoileil started
hWaitHandles[0] = g_hForceExit;
hWaitHandles[1] = g_hBlueSoleilStarted;
dwRet = WaitForMultipleObjects(2,hWaitHandles,FALSE,INFINITE);
if(dwRet == WAIT_OBJECT_0)
break;
else if(dwRet == WAIT_OBJECT_0 + 1)
{
SDK_Init();
printf("BlueSolei starts detected.\n\n");
}else
break;
}
CloseHandle(g_hBlueSoleilStarted);
CloseHandle(g_hBlueSoleilStopping);
return 0;
}
VOID StartMornitorBlueSoleil()
{
DWORD dwID;
if(g_iMonitorType == DETECT_BY_API)
g_hDetectThread = CreateThread(NULL,0,DetectBlueSoleil,NULL,0,&dwID);
else
g_hDetectThread = CreateThread(NULL,0,DetectBlueSoleilByEvents,NULL,0,&dwID);
}
void EndMornitorBlueSoleil()
{
if(g_hDetectThread == NULL){
printf("Detect BlueSoleil not started.\n");
return;
}
if(WaitForSingleObject(g_hDetectThread, 2000) != WAIT_OBJECT_0){
printf("Wait detect BlueSoleil thread time out.\n");
TerminateThread(g_hDetectThread, -1);
}
else
printf("Detect BlueSoleil thread exit.\n");
g_hDetectThread = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -