diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btexample/example/sdap/test/tbm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btexample/example/sdap/test/tbm.cpp Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,177 @@ +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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: +// BT incoming SCO notification test code +// +// + +#include +#include +#include +#include +#include +#include +#include +#include "exchange.h" + +#if defined (__WINS__) +#define PDD_NAME _L("ECDRV") +#define LDD_NAME _L("ECOMM") +#else // __GCC32__ +#define PDD_NAME _L("EUART4") // port 0 on Assabet +// don't use EUART2 - port 1 is IR +#define ETNA_PDD_NAME _L("EUART3") // for port 2 on Assabet +#define LDD_NAME _L("ECOMM") +#endif + +GLDEF_D RTest test(_L("bluemeanie tests")); + +const TUint32 KServiceUID1 = 0x6D14AC98; +const TUint32 KServiceUID2 = 0x7A8249bb; +const TUint32 KServiceUID3 = 0xB885BE2E; +const TUint32 KServiceUID4 = 0xF73C909E; + +//_LIT(KMenuText1, "A - Listen & Accept F - Connect ACL"); +//_LIT(KMenuText2, "B - Await incoming SCO G - Connect SCO"); +//_LIT(KMenuText3, "C - Await SCO disconnect H - Disconnect SCO"); +//_LIT(KMenuText4, "D - Await ACL disconnect I - Disconnect ACL"); +//_LIT(KMenuText5, "E - Receive Data J - Send Data"); +//_LIT(KMenuText6, "K - Hard disconnect ACL"); +//_LIT(KMenuText7, "X - Exit"); +//_LIT(KNewLine, "\r\n"); + +//const TBTDevAddr KDevAddr(MAKE_TINT64(0x0002, 0x5bff0a1e)); + +class CTestBM : public CActive + { + public: + CTestBM(); + void InitL(); + void DoTestL(); + void RunL(); + void DoCancel(); + private: + private: + CBluetoothExchanger* iExch; + CActiveScheduler* iSched; + }; + +CTestBM::CTestBM() : CActive(CActive::EPriorityStandard) + {} + +void CTestBM::InitL() + { + TUUID uuid(KServiceUID1,KServiceUID2,KServiceUID3,KServiceUID4); + iSched = new(ELeave) CActiveScheduler; + CActiveScheduler::Install(iSched); + iExch = CBluetoothExchanger::NewL(uuid); + iSched->Add(this); + } + +void CTestBM::DoTestL() + { + test.Printf(_L("Press a key to start search\r\n")); + test.Getch(); + iExch->LookForPeersL(iStatus); + SetActive(); + iSched->Start(); + test(iStatus == KErrNone); + test.Printf(_L("Completed with status %d\r\n"), iStatus.Int()); + TInt count; + TBTSockAddr addr; + THostName name; + TNameEntry* entry; + iExch->First(); + count = iExch->Count(); + test.Printf(_L("%d compatible devices found\r\n"), count); + while(iExch->Next(entry) == KErrNone) + { + addr = (*entry)().iAddr; + name = (*entry)().iName; + test.Printf(_L("Device address 0x%02x%02x%02x%02x%02x%02x\r\n"), + addr.BTAddr()[0], + addr.BTAddr()[1], + addr.BTAddr()[2], + addr.BTAddr()[3], + addr.BTAddr()[4], + addr.BTAddr()[5]); + test.Printf(_L("Device name: %S\r\n"), &name); + } + test.Getch(); + } + +void CTestBM::RunL() + { + iSched->Stop(); + } + +void CTestBM::DoCancel() + { + //iExch->Cancel(); + } + +void LoadLDD_PDD() + { + TInt r; +#ifdef __EPOC32__ + r=StartC32(); + if (r!=KErrNone && r!=KErrAlreadyExists) + { + test.Printf(_L("Failed %d!\n\r"),r); + test(r==KErrNone); + } + else + test.Printf(_L("Started C32\n")); +#endif + test.Printf(_L("Loading PDD\n")); + r=User::LoadPhysicalDevice(PDD_NAME); + if (r!=KErrNone && r!=KErrAlreadyExists) + { + test.Printf(_L("Failed %d!\n\r"),r); + test(r==KErrNone); + } + else + test.Printf(_L("Loaded LDD\n")); + test.Printf(_L("Loading LDD\n")); + r=User::LoadLogicalDevice(LDD_NAME); + if (r!=KErrNone && r!=KErrAlreadyExists) + { + test.Printf(_L("Failed %d!\n\r"),r); + test(r==KErrNone); + } + else + test.Printf(_L("Loaded PDD\n")); + } + + +void RunTestL() + { + CTestBM *st = new(ELeave) CTestBM; + CleanupStack::PushL(st); + LoadLDD_PDD(); + st->InitL(); + st->DoTestL(); + CleanupStack::PopAndDestroy(st); + } + +TInt E32Main() + { + CTrapCleanup* cleanupStack=CTrapCleanup::New(); + + TRAPD(err,RunTestL()); + + delete cleanupStack; + + return err; + } +