Пример #1
0
LRESULT MyProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	static BOOL bActiveApp = FALSE;

	switch (message)
	{
			case UWM_TOPBAR_BACK:
			{
				//UI_TranslateMsg(message, wParam, lParam, false);
					BTDEBUGINFO(L"IPC_ID_MANAGE:UWM_TOPBAR_BACK");
					HWND hServerWnd = CEIPC_GetHWND(IPC_ID_MANAGE);
					if (NULL != hServerWnd)
					{
						::PostMessage(hServerWnd, UWM_TOPBAR_HOME, 0, 0);
					}	
			}
			break;
			case VWM_SERVER_CHANGE_MODE: // wParam: START_BT_DLG_AUDIO 4 iParam 0后台 1前台
				{
					HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
					eDIALOGTYPE eType = KCBTDialogManager::Instance()->GetCurrentDlgType();
					sBTCommandData*pData =  CBTCommand::Instance()->GetBTCommandData();
					BTDEBUGINFO(L"IPC_ID_MANAGE:VWM_SERVER_CHANGE_MODE,wparam = %d,lParam = %d",wParam,lParam);
					if(pData != NULL && pObj != NULL)
					{
						HUINT nState = 0;
						nState = pData->BTHFPData.nHFPState; 
						if(nState != 3 && nState != 4 && nState != 5 && nState != 6)
						{
							bool bConnect = pObj->GetBTConnectstate();
							if(bConnect)
							{
								switch (wParam)
								{
								   case START_BT_DLG_NULL:
									{
										pObj->OnBTDial(NULL);
									}
									break;
								   case START_BT_DLG_DIAL:
									   {
										   if(lParam == 1 && eType == eDIALOGT_BTDIAL)
										   {
											   HWND hServerWnd = CEIPC_GetHWND(IPC_ID_MANAGE);
											   if (NULL != hServerWnd)
											   {
												   ::PostMessage(hServerWnd, UWM_BACK_SRC, 0, 0);
												   BTDEBUGINFO(L"hServerWnd:UWM_BACK_SRC");
											   }
										   }
										   else
										   {
											   pObj->OnBTDial(NULL);
										   }
										   BTDEBUGINFO(L"OnBTDial");
									   }
									   break;
								   case START_BT_DLG_PHONE_BOOK:
									   {
										   pObj->OnAddressBook(NULL);
									   }
									   break;
								   case START_BT_DLG_HISTORY:
									   {
										   pObj->OnCallRecords(NULL);
									   }
									   break;
								   case START_BT_DLG_AUDIO:
									   {
										 //  pObj->OnBTMusic(NULL);
										   KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTMUSIC);
										//   pObj->PlayMusicEx();
									   }
									   break;
								   case START_BT_DLG_CONNECT:
									   {
										   pObj->OnConnectionSetting(NULL);
									   }
									   break;
								   case START_BT_DLG_MIRRORLINK:
									   {
											KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTHMI);
											CBTHmiDlg* pBtHmiDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
											if(pBtHmiDlg != NULL)
											{
												pBtHmiDlg->ShowHMIVidio();
												s_bCheck = TRUE;
											}
									   }
									   break;
								   default:
									   {
											pObj->OnConnectionSetting(NULL);
									   }
									   break;
								}
							}
							else
							{
								if(wParam == START_BT_DLG_MIRRORLINK)
								{
									KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTHMI);
									CBTHmiDlg* pBtHmiDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
									if(pBtHmiDlg != NULL)
									{
										pBtHmiDlg->ShowHMIVidio();
										s_bCheck = TRUE;
									}
								}
								else
								{
									//pObj->OnConnectionSetting(NULL);
									if(lParam == 1 && eType == eDIALOGT_BTCONNECTSETTING)
									{
										HWND hServerWnd = CEIPC_GetHWND(IPC_ID_MANAGE);
										if (NULL != hServerWnd)
										{
											::PostMessage(hServerWnd, UWM_BACK_SRC, 0, 0);
											BTDEBUGINFO(L"hServerWnd:UWM_BACK_SRC");
										}
									}
									KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTCONNECTSETTING);
								}
							}
						}   
					}
				}
				break;
			case VWM_SERVER_BACKCAMERA_STATUS:
				{
					CBTHmiDlg* pBtHMIDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
					BTDEBUGINFO(L"IPC_ID_MANAGE:VWM_SERVER_BACKCAMERA_STATUS,wparam = %d",wParam);
					HINT nSingel = HINT(wParam);
					switch (nSingel)
					{
						case 1:
						{
							if(pBtHMIDlg != NULL)
							{
								//pBtHMIDlg->CloseCheckHandle();
							    pBtHMIDlg->CloseHMIVidio();			
							//	KCBTDialogManager::Instance()->HideBTHMIdlg();
							}
						}
						break;
						case 0:
						{
							eDIALOGTYPE eType= KCBTDialogManager::Instance()->GetCurrentDlgType();
							BTDEBUGINFO(L"GetCurrentDlgType() ==%d",eType);
							if(pBtHMIDlg != NULL && eType == eDIALOGT_BTHMI)
							{
								KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTHMI);
							}
						}
						break;
					}
				}
				break;
			case WM_USER:
			{
				UI_TranslateMsg(message, wParam, lParam, false);
			}
			break;
			case VWM_SERVER_KET_BTN:
			//UI_TranslateMsg(message,wParam,lParam,true);
			{
				BTDEBUGINFO(L"IPC_ID_MANAGE:VWM_SERVER_KET_BTN,wparam = %d,iparam = %d",wParam,lParam);
				sBTCommandData*pData =  CBTCommand::Instance()->GetBTCommandData();
				if(pData != NULL)
				{
					HUINT nState = 0;
					nState = pData->BTHFPData.nHFPState; 
					if(nState != 3 && nState != 4 && nState != 5 && nState != 6)
					{
						switch(lParam)
						{
						case eKEY_DOWN:
							{
								HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
								if(pObj != NULL)
								{
									pObj->OnForward(NULL);
								}
							}
							break;
						case eKEY_UP:
							{
								HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
								if(pObj != NULL)
								{
									pObj->OnBack(NULL);
								}
							}
							break;
					//	case KEY_ST_SW_MUTE:
						//	{
								/*HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
								if(pObj != NULL)
								{
									pObj->OnPlayMute(pObj,NULL);
								}*/
						//	}
							break;
						default:
							{

							}
							break;
						}	
					}
					else if(nState == 3 || nState == 4 || nState == 5 || nState == 6)
					{
						switch (lParam)
						{
						case eKEY_OFF_HOOK://电话接听
							{
								HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
								if(pObj != NULL)
								{
									pObj->OnDialNumCall(pObj,NULL);
								}
							}
							break;
						case eKEY_ON_HOOK://电话挂断
							{
								HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
								if(pObj != NULL)
								{
									pObj->OnDialNumHangUp(pObj,NULL);
								}
							}
							break;
						}
					}
				}	   	
			}
			break;
			case VWM_SETUP_CHANGE_THEME:    // 主题切换
			{
				g_SetupSetting.cThemeMode = wParam;
				::PostMessage(CEIPC_GetHWND(IPC_ID_MANAGE),VWM_SERVER_CHANGE_THEME_OK,NULL,NULL);
				SetCurThemeMode(g_SetupSetting.cThemeMode);
				BTDEBUGINFO(L"IPC_ID_MANAGE:VWM_SETUP_CHANGE_THEME");
				KCBTDialogManager::Instance()->ChangeThemeForAllDlg();
			
			}
			break;
			case  VWM_SETUP_CHANGE_BT_SETING:
			{
				BTSETTING Setting;
				KCLastMemory::GetInstance()->GetBTMemory(Setting);
				CBTCommand*p =  CBTCommand::Instance( );
				BTDEBUGINFO(L"IPC_ID_MANAGE:VWM_SETUP_CHANGE_BT_SETING");
				HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
				if(p != NULL && pObj != NULL)
				{
					if(Setting.uBtOnOff == 0 && (p->GetBTSetting()).uBtOnOff == 1)
					{
						pObj->StartCloseBT();
						//p->CloseBT();
					}
					else if(Setting.uBtOnOff == 1 && (p->GetBTSetting()).uBtOnOff == 0)
					{
						p->OpenBT(1,115200);
					}
					p->SetBTSetting(Setting);
				}
			}
			break;
			case  UWM_SERVER_CLOSE_VEDIO:
				{

					eDIALOGTYPE eType= KCBTDialogManager::Instance()->GetCurrentDlgType();
					switch (wParam)
					{
						case 0:
						{
							
							CBTHmiDlg* pBtHmiDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
							if(pBtHmiDlg != NULL && s_bCheck)
							{
								s_bCheck = false;
								//pBtHmiDlg->CloseHMIVidio();
								//pBtHmiDlg->CloseCheckHandle();
								KCBTDialogManager::Instance()->HideBTHMIdlg();
							}
						}
						break;
						case 1:
						{
							   CBTHmiDlg* pBtHmiDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
							   if(pBtHmiDlg != NULL  && !s_bCheck)
							   {
								   //pBtHmiDlg->CloseHMIVidio();
								   //pBtHmiDlg->CloseCheckHandle();
								   if(eType == eDIALOGT_BTHMI)
								   {
                                          pBtHmiDlg->ShowHMIVidio();
								   }
								   s_bCheck = TRUE;
							   }
								
						}
						break;
					}
					
					BTDEBUGINFO(L"IPC_ID_MANAGE:UWM_SERVER_CLOSE_VEDIO,WPARAM = %d",wParam);
					//KCBTDialogManager::Instance()->HideBTHMIdlg();
				}
				break;
			case 	VWM_SERVER_RESUME_AV:
				{
					HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
                    eDIALOGTYPE eCur = KCBTDialogManager::Instance()->GetCurrentDlgType();
					BTDEBUGINFO(L"IPC_ID_MANAGE:VWM_SERVER_RESUME_AV,lParam = %d",lParam);
					printf("IPC_ID_MANAGE:VWM_SERVER_RESUME_AV,lParam = %d\r\n",lParam);
					if(pObj != NULL && eCur != eDIALOGT_BTHMI)
					{
						switch (lParam)
						{
							case 0:
							{
								  pObj->PlayMusic();
								//pObj->PlayMusicEx();
							}
							break;
							case 1:
							{
								pObj->StopMusic();
								//pObj->StopMusicEx();
							}
						}
					}
				}
				break;
				case VWM_SERVER_LANG_SW:	// 通知进行语言切换wParam:0-中文 1-英文 lParam :无意义
				{
					BTDEBUGINFO(L"VWM_SERVER_LANG_SW,wparam = %d",wParam);
					switch (wParam)
					{
						case 0:
						{
							CBTCommand::Instance()->SetLangue(0);
							KCBTDialogManager::Instance()->ChangeLangeForAllDlg(0);
						}
						break;
						case 1:
						{
							CBTCommand::Instance()->SetLangue(1);
							KCBTDialogManager::Instance()->ChangeLangeForAllDlg(1);
						}
						break;
						default:
						{

						}
						break;
					}
				}
				break;
				case IPC_U_SERVER_POWER_OFF:
					{
						BTDEBUGINFO(L"IPC_U_SERVER_POWER_OFF");
						CBTCommand::Instance()->DisCurrentConnectDevice();
						::PostMessage(g_hBTWnd,WM_QUIT,0,NULL);
					}
					break;
			//case IPC_U_SYS_CLOSE_PROCESS:
			//	{
			//		// 发送退出进程的消息
			//		BTDEBUGINFO(_T("[IPCEventProc] PostMessage(WM_QUIT) \n"));
			//		::PostMessage(g_hWnd1,WM_QUIT,NULL,NULL);
			//	}
			//	break;
				case VWM_TO_BT_RESET:
					{
						if(g_hBTReset != NULL)
						{
							//ResetEvent(g_hBTReset);
						}
						BTDEBUGINFO(L"++++++VWM_TO_BT_RESET++++++\r\n");
						HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
						if(pObj != NULL)
						{
							pObj->ClearDeviceRecord();
							Sleep(500);

						}
					}
					break;
				case VWM_TO_BT_A2DP_DISCONNECT://蓝牙断A2DP  wparam: 2 A2DP断开   1 A2DP静音  0 A2DP连接 
					{
                       wprintf(L"VWM_TO_BT_A2DP_DISCONNECT,wparam = %d,lparam = %d\r\n",wParam,lParam);
						BTDEBUGINFO(L"VWM_TO_BT_A2DP_DISCONNECT,wparam = %d,lparam = %d",wParam,lParam);
						HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
						if(pObj != NULL)
						{
							switch(wParam)
							{
								case 0:
								{
									KillTimer(g_hBTWnd,TIME_ID_A2DP);
								//	pObj->ConnectA2DP(1);
									if(s_nACCInMusic != 1)
									{
										pObj->PlayMusicEx();
										s_nACCInMusic= 3;
									}
									else
									{
										SetTimer(g_hBTWnd,TIME_ID_FIRST_PLAY,3000,FirstPlayBTMusic);
										printf("SetTimer++++++++++FirstPlayBTMusic++++\r\n");
										s_nACCInMusic = 2;
									}
									
									//pObj->MusicMute(false);
                                  //  pObj->MusicMuteEx(false);
									s_bA2DPConn = true;
									s_bMute = FALSE;
									SetTimer(g_hBTWnd,TIME_ID_A2DP,3000,A2DPMannageTimer);
								}
								break;
								case 1:
								{
									KillTimer(g_hBTWnd,TIME_ID_A2DP);
									pObj->StopMusic();
									//pObj->ConnectA2DP(1);
									s_bA2DPConn = true;
									//pObj->MusicMute(true);
									//pObj->MusicMuteEx(true);
									s_bMute = true;
									SetTimer(g_hBTWnd,TIME_ID_A2DP,3000,A2DPMannageTimer);
								}
								break;
								case 2:
								{
									KillTimer(g_hBTWnd,TIME_ID_A2DP);
									pObj->StopMusic();
									//pObj->ConnectA2DP(0);
									s_bA2DPConn = false;
									//pObj->MusicMute(true);
									SetTimer(g_hBTWnd,TIME_ID_A2DP,3000,A2DPMannageTimer);
								}
								break;
							}
						} 
					}
					break;
		case (WM_USER + 1)://添加设备列表名称
		{
			BTDEBUGINFO(L"设备列表更新");
			HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
//			bool bHdmi = KCBTDialogManager::Instance()->IsBTHMIDlgShow();
			if(pObj != NULL)
			{
				//pObj->SetNoticeShowHide();
				pObj->AddPairedDevice();
			}	
		}
		break;
		case (WM_USER + 2)://通讯录添加记录
		{
			BTDEBUGINFO(L"通讯录更新");
			HCBTAddressBookDlg* pObj = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
			HCBTCallRecordsDlg* pObjR = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
			if(pObj != NULL && pObjR != NULL)
			{
				pObj->AddAddressBookItem();
				pObjR->OnAllRecords(NULL);
			}	
		}
		break;
		case (WM_USER + 3)://更新蓝牙音乐信息
		{
			BTDEBUGINFO(L"蓝牙音乐信息更新");
			HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
			if(pObj != NULL)
			{
				pObj->UpDataMediaInfo();
			}		
		}
		break;
		case  (WM_USER + 4)://更新蓝牙音乐播放状态
		{
			BTDEBUGINFO(L"蓝牙音乐播放状态更新,wparam = %d",wParam);
			HCBTMusicDlg* pObj = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
	
			if(pObj != NULL)
			{
				pObj->UpDataPlayState(static_cast<eBTMUSICRUNNINGSTATUS>(wParam));
			}
#if TESTDAILPROBLEM
			pObj1->UpdataTestHFP();
#else
#endif
		}
		break;
		case (WM_USER + 5)://HFP状态更新
		{
	//		sBTCommandData*pData =  CBTCommand::Instance()->GetBTCommandData();	
#if BTLOGSTATE
			HINT nState = static_cast<HINT>(wParam);
			g_Logfile1<<GetTickCount()<<"           "<<" nHFP = "<<nState<<endl;
#else
#endif 
			
			HCBTMusicDlg* pMusic = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
			HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
			HCBTCallRecordsDlg* pObjRecords = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
			HCBTAddressBookDlg* pObjBook = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
			//bool bBTHMISgow = KCBTDialogManager::Instance()->IsBTHMIDlgShow();
			HCBTConnectionssettingDlg* pObjc = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
#if TESTDAILPROBLEM
			pObj->UpdataTestHFP();
#else
#endif
			if(pObj != NULL)
			{
				HINT nparam = static_cast<HINT>(wParam);
				pObj->UpdataTextShow(nparam);//拨号键盘显示信息更新
				BTDEBUGINFO(L"HFP状态更新,HFP = %d",nparam);
				pObj->UpDataKeyBoard(static_cast<HINT>(wParam));//拨号键盘状态更新	
				pObj->UpdataBTBottomState(nparam);
				pObjc->UpdataByHFPState(nparam);//更新蓝牙连接状态,更新图标
				if(nparam == 2)
				{
					//KillTimer(g_hBTWnd,TIME_ID_MUTE);
					//SetTimer(g_hBTWnd,TIME_ID_MUTE,3000,A2DPMuteMannageTimer);
					pObjc->StopDeadTimer();
				
					
				}
				DWORD dwRet = 0;

				if((g_PreHfpState == 3 || g_PreHfpState == 4 || g_PreHfpState == 5 || g_PreHfpState == 6) && wParam == 0 )
				{
					//::PostMessage(CEIPC_GetHWND(IPC_ID_MANAGE),VWM_BT_HFP_STATE,7,NULL);
					::SendMessageTimeout(CEIPC_GetHWND(IPC_ID_MANAGE),VWM_BT_HFP_STATE,7,NULL,SMTO_NORMAL,500,&dwRet);
					BTDEBUGINFO(L"IPC_ID_MANAGE::VWM_BT_HFP_STATE= 7");
				}
				if(wParam != 1)
				{
					if(wParam != 7)
					{
						::PostMessage(CEIPC_GetHWND(IPC_ID_MANAGE),VWM_BT_HFP_STATE,wParam,NULL);
					}
					else
					{
                       ::SendMessageTimeout(CEIPC_GetHWND(IPC_ID_MANAGE),VWM_BT_HFP_STATE,7,NULL,SMTO_NORMAL,500,&dwRet);
					}
					g_PreHfpState = (int)wParam;
					BTDEBUGINFO(L"IPC_ID_MANAGE::VWM_BT_HFP_STATE= %d",wParam);
				}
				if(nparam == 7)
				{
					pObj->SetDailingState(true);
					KCBTDialogManager::Instance()->ShowPreDlg();//通话结束返回上一个界面
					pObj->ClearKeyBoardNum();
					pObj->SetDailingState(false);
				}
				if(nparam == 0)
				{
						KillTimer(g_hBTWnd,TIME_ID_MUTE);
						if(pObjBook != NULL && pObjRecords != NULL && pObj != NULL && pMusic != NULL) 
						{
							/*pObjRecords->DeleteAllItems();
							pObjRecords->UpDataRecords(false);*/
							pObjRecords->ClearRecordsData();
							pObjBook->ClearBookData();
							pObj->ClearKeyBoardNum();
							pMusic->ClearMusicInfo();
						}
						CBTCommand::Instance()->ClearBookData();
						CBTCommand::Instance()->ClearMyPhoneData();
				}

				if(s_nDlg == 4 && nparam == 2)
				{
					s_nACCInMusic = 1;
					if(s_Show != SW_HIDE)
					{
						pMusic->OnBTMusic(NULL);
					}
					else
					{
						KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTMUSIC);
						SetTimer(g_hBTWnd,TIME_ID_FIRST_PLAY,3000,FirstPlayBTMusic);
						s_nACCInMusic = 2;
					}

					//pMusic->PlayMusicEx();
					//SetTimer(g_hBTWnd,TIME_ID_FIRST_PLAY,3000,FirstPlayBTMusic);
					BTDEBUGINFO(L"last mem to music");
					s_nDlg = 0;
					//KCBTDialogManager::Instance()->ShowDlg(eDIALOGT_BTMUSIC);
				}
				/*switch (nparam)
				{
					 case 0:
					{
						 pObjc->UpDataIconUnconnect();
					 }
					 case 1:
					 {
						 pObjc->SetBTConected(false);
						 pObj->OnConnectionSetting(NULL);
					 }
				    break;
					 case 5:
					 {
						 pObj->StartCountCallDuration();
						 pObjc->SetBTConected(true);
					 }
					 break;
					 case 2:
					 case 3:
					 case 4:
					 {
							pObj->StopCountCallDuration();
					 }
					 case 6:
					{
					    pObjc->SetBTConected(true);
					}
					break;
					default:
					break;
				}
				pObjc->UpdataBTBottomState();*/
			}
		}
		break;
		case (WM_USER + 6)://更新下载记录条数
		{
			BTDEBUGINFO(L"更新下载记录数目");
			HCBTAddressBookDlg* pObj = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
			if(pObj != NULL)
			{
				pObj->SetNotice(static_cast<ePBAPCSTATE>(wParam));
			}
		}
		break;
		case (WM_USER + 7)://电话本和通话记录下载结束
		{
				BTDEBUGINFO(L"电话本通讯录下载结束更新状态");
				HCBTCallRecordsDlg *pObc = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
				HCBTAddressBookDlg* pObj = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
				if(pObj != NULL)
				{
					pObj->SetNoticeShow(false);
				}
				if(pObc != NULL)
				{
					pObc->UpDataRecords(true);
				}
		}
		break;
		case (WM_USER + 8):
		{
			HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
			if(pObj != NULL)
			{
				//pObj->SetNoticeShow((HUINT)wParam);
			}
		}
		break;
		case (WM_USER + 9)://获得当前连接设备信息
		{
			BTDEBUGINFO(L"当前连接设备信息");
			HCBTAddressBookDlg *pObc = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
			HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
			if(pObj != NULL)
			{
				if(pObj->IsPairPageShow())
				{
					pObj->OnEnterPairPage(NULL);
				}
				//pObj->SetNoticeSuccess();
				pObj->SetBTConected(true);
				pObj->UpdataBTBottomState();
				pObc->StartDown();
				pObc->StartDownBookData();
			}
		}
		break;
		case (WM_USER + 10)://来电,去电号码显示
		{
			BTDEBUGINFO(L"来电去电号码显示");
			HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
			sContact *pContact = (sContact*)wParam;
			if(pObj != NULL && pContact != NULL)
			{
				//pObj->UpDataKeyBoardNum();
				pObj->UpDataKeyBoardNum(pContact);
				if(pContact !=NULL)
				{
					delete pContact;
				}
				KCBTDialogManager::Instance()->JumpToDlg(eDIALOGT_BTDIAL);
			}
		}
		break;
		case (WM_USER + 11):
		{
			//HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
			//if(pObj != NULL)
			//{
			//	pObj->SetBTConected(false);
			//	pObj->OnConnectionSetting(NULL);
			//	pObj->UpdataBTBottomState();
			////pObj->UpDataKeyBoard(static_cast<HINT>(wParam));
			//}
		}
	    break;
		case (WM_USER + 12)://下载电话本和通话记录中
			{
				BTDEBUGINFO(L"下载电话本和通话记录中");
				HCBTAddressBookDlg* pObj = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
				HCBTCallRecordsDlg *pObc = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
				if(pObj != NULL)
				{
					pObj->ClearBookDataEx();
					//pObj->OnDowingTimer(NULL);
				}
				if(pObc != NULL)
				{
					pObc->UpDataRecords(false);
					pObc->ClearRecordsData();
				}
			}
			break;
		case (WM_USER + 13):// 关闭蓝牙信息
			{
				BTDEBUGINFO(L"关闭蓝牙信息");
				HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
				if(pObj != NULL)
				{
					pObj->StartCloseBT();
				}
			}
			break;
		case (WM_USER + 14):// 打开蓝牙信息
			{
				BTDEBUGINFO(L"打开蓝牙信息");
				CBTCommand *p = CBTCommand::Instance();
				if(p != NULL)
				{
					p->OpenBT(1,115200);
				}
			}
			break;
#if AUTOUPDATACALLHISTORY
		case (WM_USER + 15)://更新通话记录按钮图标
		{
			BTDEBUGINFO(L"更新通话记录按钮图标");
			HCBTCallRecordsDlg *pObc = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
			if(pObc != NULL)
			{
				pObc->UpDataRecords(true);
			}
		}
       break;	
#else
#endif
		case(WM_USER + 16)://spp状态变化
			{
				/*BTDEBUGINFO(L"SPP状态变化,nSPPState = %d",wParam);
				HUINT nSPPState = HUINT(wParam);
				CBTHmiDlg* pBtHMIDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
				if(pBtHMIDlg != NULL)
				{
					switch (nSPPState)
					{
						case 0:
						{
							pBtHMIDlg->SetSPPConnected(false);
						}
						break;
						case 2:
						{
							pBtHMIDlg->SetSPPConnected(true);
						}
						break;
						default:
						break;
					}	
				}*/
			}
			break;
		case(WM_USER + 17)://HID状态变化
			{
				/*BTDEBUGINFO(L"更新HID状态变化,wparam = %d",wParam);
				HUINT nHIDState = HUINT(wParam);
				CBTHmiDlg* pBtHMIDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
				if(pBtHMIDlg != NULL)
				{
					switch (nHIDState)
					{
						case 0:
						{
							pBtHMIDlg->SetHIDConnected(false);
						}
						break;
						case 2:
						{
							pBtHMIDlg->SetHIDConnected(true);
						}
						break;
					default:
					break;
				}	
			}*/
		}
			break;
		case(WM_USER + 18)://坐标归零
			{
				BTDEBUGINFO(L"坐标归零");
				CBTHmiDlg* pBtHMIDlg = (CBTHmiDlg*)(KCBTDialogManager::Instance()->GetBTHMIDlg());
				if(pBtHMIDlg != NULL)
				{
					pBtHMIDlg->BackToZero(NULL);
				}
			}
			break;
#ifdef  AUTOUPDATACALLHISTORY
			case WM_USER + 19://新增电话记录更新,0全部 1未接 2 拨出 3已接
			{
				BTDEBUGINFO(L"新增电话记录更新,0全部 1未接 2 拨出 3已接");
				HCBTCallRecordsDlg *pObc = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
				if(pObc != NULL)
				{
					pObc->UpDataRecords(true);
					pObc->AutoUpDataRecords();
				}
			}
			break;
#else
#endif
			case WM_USER + 20:
			{
			    HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
				if(pObj != NULL)
				{
					switch (wParam)
					{
					case 0:
						{
							//BTDEBUGINFO(L"声音切换至手机");
							pObj->ChangeVoicePoisition(0);
						}
						break;
					case 1:
						{
							//BTDEBUGINFO(L"声音切换至车机");
							pObj->ChangeVoicePoisition(1);
						}
						break;
					}
				}
			}
			break;
			case WM_USER + 21:
				{
					s_nDlg = 0;

					/////
					/*HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
					if(pObj != NULL)
					{
						pObj->SetVoiceToPhone();
					}
					HCBTMusicDlg* pObjMusic = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
					if(pObjMusic != NULL)
					{
						pObjMusic->StopMusic();
					}
					Sleep(3);
					CBTCommand::Instance()->DisCurrentConnectDevice();
					::PostMessage(g_hBTWnd,WM_QUIT,0,NULL);
					wprintf(L"IPC_U_SERVER_POWER_OFF :BT quit\r\n");*/
				}
				break;
			case WM_USER + 23://手机端取消下载 0:电话本取消下载  1:全部通话记录取消下载
				{
				//	HCBTCallRecordsDlg* pObjRecords = static_cast<HCBTCallRecordsDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCALLRECORDS));
					HCBTAddressBookDlg* pObjBook = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
					if(pObjBook != NULL)
					{
						pObjBook->CancelByPhone();
					}
				}
				break;
			case WM_USER + 24://更新下载通讯录数据  Wparam:5 通讯录 6 来电  7 已拨电话 8 未接电话  9 所有通话记录  Iparam:记录数目
				{
					//wprintf(L"Updata Down Num:Type = %d,Num = %d\r\n",wParam,lParam);
					BTDEBUGINFO(L"Updata Down Num:Type = %d,Num = %d\r\n",wParam,lParam);
					HCBTAddressBookDlg* pObjBook = static_cast<HCBTAddressBookDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTADDRESSBOOK));
					if(pObjBook != NULL)
					{
						pObjBook->UpDateDownLoad(wParam,lParam);
					}
				}
				break;
			case WM_USER + 25://启动拨号恢复定时器
				{
					BTDEBUGINFO(L"______StartCallTimer______");
					  HCBTDialDlg* pObj = static_cast<HCBTDialDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTDIAL));
					  if(pObj != NULL)
					  {
							pObj->StartCallTimer();
					  }
				}
				break;
			case WM_USER + 26:
				{
#if TestBTVISION
					HCBTMusicDlg* pMusic = static_cast<HCBTMusicDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTMUSIC));
					if(pMusic != NULL)
					{
						pMusic->UpdateVision();
						//pMusic->UpdateBtName();
					}
#endif	
				}
				break;
			case WM_USER+27:
				{
					BTDEBUGINFO(L"UpdateDevName");
#if SETBTNAME_MAC
			HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
			if(pObj != NULL)
			{
				pObj->UpdateDevName();
			}
#endif
				}
				break;
		case WM_USER + 50://蓝牙发送队列添加数据数据
			{
				BTDEBUGINFO(L"蓝牙发送队列添加数据数据:Type = %d,pblock = %d",wParam,lParam);
				CBTCommand::Instance()->SendBTCommandBlock((BTPacketDataType_t)wParam,(Block*)lParam);
			}
			break;
		case WM_USER + 222:
			{

			}
			break;
#if TESTRESTARTPROTEM
		case WM_USER +51:
		{
			HCBTConnectionssettingDlg* pObj = static_cast<HCBTConnectionssettingDlg*>(KCBTDialogManager::Instance()->GetDlg(eDIALOGT_BTCONNECTSETTING));
			if(pObj != NULL)
			{
				switch (wParam)//0更新启动次数 1清除启动次数
				{
				case 0:
					{
						pObj->UpdataRestTime(g_nRestTime);
					}
					break;
				case 1:
					{
						if(DeleteFile(appPath.c_str()))
						{
							printf("Remove sucess\r\n");
							g_nRestTime = 0;
						}
					}
					break;
				}
			}
		}
		break;
#endif
		default:
		{
			UI_TranslateMsg(message, wParam, lParam, true);
		}
		break;
	}
	return DefWindowProcW(hWnd, message, wParam, lParam);
}
Пример #2
0
//主程序
HINT APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, HINT nCmdShow)
{
	DWORD nCostTime = GetTickCount();
	CBTCommand *pComand=CBTCommand::Instance(); 
	if(pComand != NULL)
	{
		pComand->LowBTPower();
	}
	wprintf(L"[wWinMain] Begin\r\n");
	//g_Mutex =::CreateMutex(NULL, TRUE, APP_CLASSNAME_TEST1);
	INSTANCE_START
	HINT nParam = 0;
	_stscanf_s(GetCommandLine(),_T("%d"),&nParam);
	nCmdShow = PARAM_SHOW_CMD(nParam);
	s_Show = nCmdShow;
	BTDEBUGINFO(L"nCmdShow = %d",nCmdShow);
	HINT nDlg = PARAM_BT_DLG_CMD(nParam);
	BTDEBUGINFO(L"nDlg = %d",nDlg);
	s_nDlg = nDlg;
//	HINT nDlgType =	PARAM_BT_DLG_CMD(nParam);	
	// HMI 初始化
	if( !UIDevInit(
		SCREEN_WIDTH, SCREEN_HEIGHT,
		hInstance,
		const_cast<HCHAR*>(STR_PROCESSNAME_BT),
		const_cast<HCHAR*>(STR_PROCESSNAME_BT),
		0,
		g_hBTWnd) )
	{
		return 0;
	}
	::ShowWindow(g_hBTWnd, nCmdShow);
	SetOwnerProc(MyProc);   //注册回调
	// 注册IPC
	//移到后面
	CEIPC_Regist(IPC_ID_BT, g_hBTWnd, RecvIPCEvent);
	//	切换字体
	GetRESingleton()->ReLoadFont(FONT_MSYH_TTF);
	GetRESingleton()->ReLoadFont(FONT_QUARTZ_REGULAR_TTF);
	InitPopupSurface(GetHMIPath(_T("")).c_str());
	KCBTDialogManager* pObj =  KCBTDialogManager::Instance();

	
	btSource::Instance()->GetBtSource(GetHMIPath(_T("")).c_str());
	if(pComand != NULL)
	{
		pComand->SetMyhWnd(g_hBTWnd);
		pComand->OnInit(1,115200);
		nCostTime = GetTickCount() - nCostTime;
		BTDEBUGINFO(L"%s,CostTime1 = %d",__FUNCTIONW__,nCostTime);
		nCostTime = GetTickCount();
	}
	if(pObj != NULL)
	{
	   pObj->CreateAllBTDlg();
		pComand->SendGetBTInfo();
		pObj->ShowDlg(eDIALOGT_BTCONNECTSETTING);
	
		nCostTime = GetTickCount() - nCostTime;
		BTDEBUGINFO(L"%s,CostTime2 = %d",__FUNCTIONW__,nCostTime);
		nCostTime = GetTickCount();
		//pObj->ShowBTHMIDlg();
	}	 
	// 获取配置信息
	if( NULL != KCLastMemory::GetInstance() )
	{
		// 读取SETUP配置文件
		KCLastMemory::GetInstance()->GetSetupMemory(g_SetupSetting);
	}
	else
	{
		KCLastMemory::GetSetupMemoryDefault(g_SetupSetting);
	}
	//::ShowWindow(g_hBTWnd, nCmdShow);
	::UpdateWindow(g_hBTWnd);
	//CEIPC_Regist(IPC_ID_BT, g_hBTWnd, RecvIPCEvent);
	//s_nDlg = 4;
	if(s_nDlg == 4)
	{
		BTDEBUGINFO(L"s_nDlg == 4");
		UINT nrett = SetTimer(g_hBTWnd,15,10000,SetDlg);
		if(nrett == 0)
		{
			BTDEBUGINFO(L"SetTimer error: %d",GetLastError());
		}
	}
	nCostTime = GetTickCount() - nCostTime;
	BTDEBUGINFO(L"%s,CostTime3 = %d",__FUNCTIONW__,nCostTime);
	HCHAR		szPath[MAX_PATH] = {0};
	::GetModuleFileName(NULL, szPath, MAX_PATH);
	appPath += szPath;
	HINT nPos = (HINT)appPath.rfind(_T('\\'));
	if(nPos == -1)
	{
		wprintf(L"[HCSourceBase::GetExePath] exe path error ");
		return false;
	}
	appPath = appPath.substr(0, nPos+1);
#if BTLOGSTATE
	appPath += L"..\\Config\\BTLog.txt";
	g_Logfile1.open(appPath.c_str(),ios::app);
#else
#endif
#if TESTRESTARTPROTEM
	 char buffer[256] = {0};
	 char buffer1[256] = {0};
	 char Num[20] ={0};
	  ifstream examplefile1;
	  int i1,j1;
	  i1= j1 = 0;
	  int nn = 0;
	appPath += L"..\\Config\\BTPro.txt";
	examplefile1.open(appPath.c_str());
	if(!examplefile1)
	{
		printf("File Not Exsit\r\n");
		g_nRestTime = 1;
	}
	else
	{
		while (! examplefile1.eof() ) 
		{
			memset(buffer,0,sizeof(buffer));
			examplefile1.getline(buffer,100);
			if(buffer[0] == 'T')
			{
				memset(buffer1,0,sizeof(buffer1));
				memcpy(buffer1,buffer,100);
			}
			//nn++;
		//cout<<"====="<<nn<<endl;
		}
		while (buffer1[i1] != '^')
		{
			i1++;
				cout<<"i= "<<i1<<endl;
		}
		j1 = i1 + 1;
		while (buffer1[j1] != '^')
		{
			j1++;
			cout<<"j = "<<j1<<endl;
		}
		if(i1 < j1 && i1 > 0 && (j1-i1)  < 10)
		{
			memcpy(Num,buffer1+i1+1,j1-i1-1);
		}
		g_nRestTime = atoi(Num) + 1;
		cout << "666++++"<<g_nRestTime<<endl;
		examplefile1.close();
	}
	g_Profile1.open(appPath.c_str(),ios::app);
	char Temm[200] = {0};
	//sprintf(Temm,"Totol^%d^^^^%d\n",g_nRestTime,GetTickCount());
	//g_Profile1.write(Temm);
	g_Profile1<<"Total^"<<g_nRestTime<<"^^^^"<<GetTickCount()<<endl;
	//g_Profile1<<"Total^"<<g_nRestTime<<"^^^^"<<GetTickCount()<<endl;
	g_Profile1.close();
#endif
	//消息循环
	MSG msg;
	UINT nretTime = SetTimer(g_hBTWnd,10,1000,CheckHDMISignal);
	if(nretTime == 0)
	{
		BTDEBUGINFO(L"SetTimer error: %d",GetLastError());
	}
	DWORD dwClickDownTime = GetTickCount();
	while(GetMessage(&msg, NULL, 0, 0))
	{
		eDIALOGTYPE  eDlgType = KCBTDialogManager::Instance()->GetCurrentDlgType();
		if(GetTickCount() - dwClickDownTime >= 800 && msg.message == WM_LBUTTONDOWN && ((eDlgType == eDIALOGT_BTADDRESSBOOK) || (eDlgType == eDIALOGT_BTCALLRECORDS)))
		{
			dwClickDownTime = GetTickCount();
		}
		else if(msg.message == WM_LBUTTONDOWN && GetTickCount() - dwClickDownTime < 800 && ((eDlgType == eDIALOGT_BTADDRESSBOOK) || (eDlgType == eDIALOGT_BTCALLRECORDS)))
		{
            continue;
		}
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	CEIPC_UnRegist();
	CBTCommand::DeleteInstance();
	KCBTDialogManager::Instance()->DeleteInstance();
	btSource::Instance()->DeleteInstance();
	//UnInitPopupSurface();
	//释放
	UIDevRelease();
	KillTimer(g_hBTWnd,10);
	KillTimer(g_hBTWnd,15);
	HWND hServerWnd = ::FindWindow(STR_PROCESSNAME_MANAGE, STR_PROCESSNAME_MANAGE);
	HWND hBtUpateWnd = ::FindWindow(L"BTAPP.exe", L"BTAPP.exe");
	if(hBtUpateWnd != NULL)
	{
			::PostMessage(hBtUpateWnd, WM_USER + 1000, 0, NULL);
			
	}
	//printf("+++++++++++++VWM_SERVER_SRC_CLOSE+++++IPC_ID_BT++++++\r\n");
	if (hServerWnd)
	{
		::PostMessage(hServerWnd, VWM_SERVER_SRC_CLOSE, IPC_ID_BT, NULL);
	}

	return 0;
}