/** * It implements the required functionality of the test step. * This step will open a shared phone * @return TVerdict - result of the test step * @leave - System wide error codes */ TVerdict CTestLtsyPhoneGetCurrentNetworkInfo::doTestStepL() { if(TestStepResult() == EPass) { TRAPD(err,GetCurrentNetworkInfo()); if(err != KErrNone) { ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err); SetTestStepResult(EFail); } } return TestStepResult(); }
DWORD WINAPI BkgPingStatusCheckThread(LPVOID lpVoid) { BBS_PING_OPTION pingOpt = {0,}; BBS_CUR_NET_INFO netInfo; BBS_PING_RESULT pingResult; BBS_ADAPTER_INFO adapterInfo; DWORD dwPingFailCount = 0; CBBS_Ping ping; TCHAR tszLiteralIP[18] = {'\0',}; memset(&pingOpt, 0, sizeof(BBS_PING_OPTION)); memset(&netInfo, 0, sizeof(BBS_CUR_NET_INFO)); memset(&pingResult, 0, sizeof(BBS_PING_RESULT)); memset(&adapterInfo, 0, sizeof(BBS_ADAPTER_INFO)); NKDbgPrintfW( _T("[NETUI] ===== [BkgPingStatusCheckThread Start] ===== \r\n") ); g_bIsOperating = TRUE; while(g_bIsOperating == TRUE) { // 1초씩 g_dwBreakInterval 만큼 쉬어준다. // 1초씩 마다 스레드가 종료 조건이 걸려있는지 확인 for(UINT i=1; i<=g_dwBreakInterval; i++) { // BreakTime Interval Sleep(1000); if(g_bIsOperating == FALSE) { return 0; } } // PIng 실패 횟수 초기화 필수! dwPingFailCount = 0; GetWlanDefaultInformation(&adapterInfo); GetCurrentNetworkInfo(adapterInfo.tszAdapterName, &netInfo); NKDbgPrintfW( _T("[NETUI] ---------- [Default Information] ---------- \r\n") ); NKDbgPrintfW( _T("[NETUI] Adapter(%s), DHCP(%d) \r\n"), adapterInfo.tszAdapterName, adapterInfo.bDHCPEnabled ); NKDbgPrintfW( _T("[NETUI] IPAddr(%s) \r\n"), adapterInfo.tszIPAddr ); NKDbgPrintfW( _T("[NETUI] DefaultGateWay(%s) \r\n"), adapterInfo.tszDefaultGateWay ); NKDbgPrintfW( _T("[NETUI] DnsAddr(%s) \r\n"), adapterInfo.tszDnsAddr ); NKDbgPrintfW( _T("[NETUI] ---------------------------------------- \r\n\r\n") ); // 아답터가 검색되었는지? if( _tcslen(adapterInfo.tszAdapterName) == 0 ) { // 아답터가 검색되지 않았다면, 기본 대기시간만큼 다시 대기 // ERROR NKDbgPrintfW( _T("[NETUI] [ERROR] Can't Find Adapter! \r\n") ); continue; } NKDbgPrintfW( _T("[NETUI] SSID : %s \r\n"), netInfo.tszSSID ); // 현재 접속된 SSID가 있을 때만 Ping 시도 if( _tcslen(netInfo.tszSSID) != 0 ) { // Custom Dest IP를 지정 되어있으면, 읽어온 값으로, 지정되지 않았다면, 기본 DefaultGateWay로 시도 if( _tcslen(g_tszCustomDestAddr) > 0 ) { _tcscpy(pingOpt.tszDestIP, g_tszCustomDestAddr); } else { _tcscpy(pingOpt.tszDestIP, adapterInfo.tszDefaultGateWay); } pingOpt.dwSendBufSize = 32; pingOpt.dwTimeOut = 1000; pingOpt.ucTos = 0; pingOpt.ucTtl = 32; NKDbgPrintfW( TEXT("[NETUI] Dest IP(%s) \r\n"), pingOpt.tszDestIP ); if( ping.InitPing(pingOpt, tszLiteralIP) == TRUE) { HKEY hKey = NULL; DWORD dwDisposition = 0; NKDbgPrintfW( TEXT("[NETUI] Literal IP(%s) \r\n"), tszLiteralIP ); for(DWORD dwLoop=0; dwLoop<g_dwMaxCheckCount; dwLoop++) { if( !ping.StartPing(&pingResult) ) { NKDbgPrintfW( TEXT("[NETUI] Ping Failed!(%d) \r\n"), pingResult.dwErrCode ); dwPingFailCount++; } else { NKDbgPrintfW( TEXT("[NETUI] Size(%d), Time(%d), TTL(%d) \r\n"), pingResult.dwDataSize, pingResult.dwTime, pingResult.ucTtl ); } // 1초씩 g_dwBreakInterval 만큼 쉬어준다. // 1초씩 마다 스레드가 종료 조건이 걸려있는지 확인 for(UINT i=1; i<=g_dwPingInterval; i++) { // Ping Interval Sleep(1000); if(g_bIsOperating == FALSE) { return 0; } } } ping.DeinitPing(); NKDbgPrintfW( TEXT("[NETUI] Max[%d] / Fail[%d] \r\n"), g_dwMaxCheckCount, dwPingFailCount ); // 최대 Ping 테스트 개수가 모두 Fail 되었을때! if( dwPingFailCount >= g_dwMaxCheckCount ) { NKDbgPrintfW( TEXT("[NETUI] Rebind Adapter! \r\n") ); if( DoNdis_RebindAdater(adapterInfo.tszAdapterName) == FALSE ) { NKDbgPrintfW( TEXT("[NETUI] DoNdis_RebindAdater ERROR!! \r\n") ); } } } else { NKDbgPrintfW( TEXT("[NETUI] Init Ping ERROR!! \r\n") ); } } else { NKDbgPrintfW( TEXT("[NETUI] isn't be connected to any SSID \r\n") ); } } return 0; }