diff -r 000000000000 -r 14df0fbfcc4e sapi_sysinfo/tsrc/testing/tsysmanualtest/src/tasyncaccandvibra.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sapi_sysinfo/tsrc/testing/tsysmanualtest/src/tasyncaccandvibra.cpp Mon Mar 30 12:51:10 2009 +0300 @@ -0,0 +1,175 @@ +/* +* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: tsysinfoaccessorystatus +* +*/ + + +#include "tsysmanualtest.h" +#include "sysinfoservice.h" +#include "tasyncaccandvibra.h" +#include "watchtimer.h" +#include "entitykeys.h" + +using namespace SysInfo; + + +CTestAccAndVibraNot* CTestAccAndVibraNot::NewL(CStifLogger* aLog) + { + CTestAccAndVibraNot* self = new(ELeave) CTestAccAndVibraNot(aLog); + self->ConstructL(); + return self; + } + +CTestAccAndVibraNot::~CTestAccAndVibraNot() + { + Cancel(); + + if(iWaitScheduler->IsStarted()) + iWaitScheduler->AsyncStop(); + + if(iSysInfoService) + delete iSysInfoService; + + if(iWaitScheduler) + delete iWaitScheduler; + } + +void CTestAccAndVibraNot::ConstructL() + { + CActiveScheduler::Add(this); + iSysInfoService = CSysInfoService::NewL(); + iWaitScheduler = new(ELeave) CActiveSchedulerWait(); + } + +CTestAccAndVibraNot::CTestAccAndVibraNot(CStifLogger* aLog) : +CActive(EPriorityStandard),iResult(-1),iLog(aLog),iCount(0) + { + } + +void CTestAccAndVibraNot::DoCancel() + { + + } + +void CTestAccAndVibraNot::RunL() + { + TestFunc(); + } + +void CTestAccAndVibraNot::Start() + { + + SetActive(); + TRequestStatus* temp = &iStatus; + User::RequestComplete(temp, KErrNone); + iWaitScheduler->Start(); + } + +TInt CTestAccAndVibraNot::Result() + { + return iResult; + } + +void CTestAccAndVibraNot::TestSetup(TInt aVibraStatus) + { + CStatus *vibStatus = CStatus::NewL(aVibraStatus) ; + iSysInfoService->SetInfoL(KGeneral,KVibraActive,vibStatus) ; + delete vibStatus ; + } + +void CTestAccAndVibraNot::TestFunc() + { + TestSetup(0) ; + TRAPD(err1,iSysInfoService->GetNotificationL(KGeneral,KAccessoryStatus,1000,this)); + TRAPD(err2,iSysInfoService->GetNotificationL(KGeneral,KVibraActive,1001,this)); + + if((KErrNone == err1) && (KErrNone == err2)) + { + TestSetup(1) ; + } + else + { + iWaitScheduler->AsyncStop(); + TestSetup(0) ; + } + return ; + } + +void CTestAccAndVibraNot::HandleResponseL(const TDesC& /*aEntity*/,const TDesC& /*aKey*/, + CSysData* aResponse, TInt32 aTransID, + TSysRequest::TRequestType /*aType*/, TInt aError) + { + + if(aError == KErrNone) + { + if(aTransID == 1000) + { + const CAccessoryInfo* accInfo= (CAccessoryInfo*)aResponse; + + TBuf<50> acctype ; + TBuf<50> accConnState; + acctype.AppendNum( accInfo->AccessoryType() ); + accConnState.AppendNum( accInfo->ConnectionState() ); + iLog->Log(_L("Accessory Type:")); + iLog->Log(acctype); + + iLog->Log(_L("Accessory Connection State:")); + iLog->Log(accConnState); + + iResult = KErrNone; + } + + else if(aTransID == 1001) + { + TInt expVibStatus = 1 ; + + const CStatus* data = (CStatus*)aResponse ; + TInt vibStatus = data->Status() ; + + if(vibStatus == expVibStatus) + { + iResult = KErrNone ; + } + iLog->Log(_L8("PredicitiveText status : %d"),vibStatus) ; + + } + iCount++ ; + delete aResponse ; + } + + if(iCount == 2) + { + iWaitScheduler->AsyncStop(); + TestSetup(0) ; + } + + } + + +TInt TestAccAndVibraNot(CStifLogger* aLog) + { + + __UHEAP_MARK ; + + CTestAccAndVibraNot* test = CTestAccAndVibraNot::NewL(aLog); + aLog->Log(_L8("Accessory and Vibration Status Notifications")) ; + test->Start(); + TInt retval = test->Result(); + delete test; + + __UHEAP_MARKEND ; + return retval; + } +