--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/btexample/testui/TBTNotifiers/TBTNotifiers.cpp Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,271 @@
+// Copyright (c) 1997-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:
+// TBTNotifiers app
+//
+//
+
+#include <e32keys.h>
+#include <coemain.h>
+#include <eikenv.h>
+#include <eikdef.h>
+#include <tbtnotifiers.rsg>
+#include "TBTNotifiers.hrh"
+#include "TBTNotifiers.h"
+#include <btextnotifiers.h>
+#include <utf.h>
+#include <btdevice.h>
+
+void Panic(TInt aPanic)
+ {
+ User::Panic(_L("TBTNotifiers App"),aPanic);
+ }
+
+
+// Class CTBTNotifiersContainer
+
+void CTBTNotifiersContainer::ConstructL(const TRect& aRect)
+ {
+ CreateWindowL();
+ SetBlank();
+ SetRect(aRect);
+ ActivateL();
+ }
+
+CTBTNotifiersContainer::~CTBTNotifiersContainer()
+ {
+ }
+
+void CTBTNotifiersContainer::SizeChanged()
+ {
+ }
+
+TInt CTBTNotifiersContainer::CountComponentControls() const
+ {
+ return 0;
+ }
+
+CCoeControl* CTBTNotifiersContainer::ComponentControl(TInt /*aIndex*/) const
+ {
+ return NULL;
+ }
+
+void CTBTNotifiersContainer::Draw(const TRect& /*aRect*/) const
+ {
+ }
+
+
+//
+// CTBTNotifiersAppUi
+//
+CTBTNotifiersAppUi::~CTBTNotifiersAppUi()
+ {
+ RemoveFromStack(iAppView);
+ delete iAppView;
+ }
+
+void CTBTNotifiersAppUi::ConstructL()
+ {
+ BaseConstructL();
+ iAppView=new(ELeave) CTBTNotifiersContainer;
+ iAppView->ConstructL(ClientRect());
+ AddToStackL(iAppView);
+ }
+
+void CTBTNotifiersAppUi::HandleCommandL(TInt aCommand)
+ {
+ switch (aCommand)
+ {
+ case EEikCmdExit:
+ Exit();
+ break;
+ case ETBTNotifiersCmdTestPin:
+ iEikonEnv->InfoMsg(_L("testing pin..."));
+ TestPinL();
+ break;
+ case ETBTNotifiersCmdTestAuth:
+ iEikonEnv->InfoMsg(_L("testing authorisation..."));
+ TestAuthorisationL();
+ break;
+ case ETBTNotifiersCmdTestDeviceSearch:
+ iEikonEnv->InfoMsg(_L("testing device search..."));
+ TestDeviceSearchL();
+ break;
+ default:
+ Panic(0);
+ break;
+ }
+ }
+
+void CTBTNotifiersAppUi::TestAuthorisationL()
+ {
+ TBTAuthorisationParamsPckg pckg;
+ pckg().iBDAddr = TInt64(0x12345678);
+ pckg().iUid.iUid = 0xabcd1234;
+ TPckgBuf<TBool> resultPckg;
+
+ RNotifier notif;
+ User::LeaveIfError(notif.Connect());
+ TRequestStatus stat;
+ notif.StartNotifierAndGetResponse(stat, KBTManAuthNotifierUid, pckg, resultPckg);
+ User::After(2000000);
+ //now send device name
+ TBuf<16> name16 = _L("Tam's Dongle");
+ TBTNotifierUpdateParamsPckg updpckg;
+ updpckg().iName = name16;
+ updpckg().iResult = KErrNone;
+
+ TBuf8<1> answer;
+ TInt err = notif.UpdateNotifier(KBTManAuthNotifierUid, updpckg, answer);
+ if (err)
+ {
+ TBuf<4> error;
+ error.Zero();
+ error.AppendNum(err);
+ CEikonEnv::InfoWinL(_L("Error:"), error);
+ }
+ User::WaitForRequest(stat);
+ notif.CancelNotifier(KBTManAuthNotifierUid);
+ notif.Close();
+
+ TBuf<16> resultbuf;
+ resultbuf.Zero();
+ if (resultPckg())
+ resultbuf.Append(_L("Accepted"));
+ else
+ resultbuf.Append(_L("Denied"));
+ CEikonEnv::InfoWinL(_L("Authorisation Complete:"), resultbuf);
+ }
+
+void CTBTNotifiersAppUi::TestPinL()
+ {
+ TBTPinCode pin;
+ TBTDevAddr addr = TInt64(0x1234);
+ RNotifier notif;
+ User::LeaveIfError(notif.Connect());
+ TRequestStatus stat;
+ notif.StartNotifierAndGetResponse(stat, KBTManPinNotifierUid, TPckgBuf<TBTDevAddr>(addr), pin);
+ User::After(2000000);
+ //now send device name
+ TBuf<16> name16 = _L("Nick's Dongle");
+ TBTNotifierUpdateParamsPckg pckg;
+ pckg().iName = name16;
+ pckg().iResult = KErrNone;
+
+ TBuf8<1> answer;
+ TInt err = notif.UpdateNotifier(KBTManPinNotifierUid, pckg, answer);
+ if (err)
+ {
+ TBuf<4> error;
+ error.Zero();
+ error.AppendNum(err);
+ CEikonEnv::InfoWinL(_L("Error:"), error);
+ }
+ User::WaitForRequest(stat);
+ notif.CancelNotifier(KBTManPinNotifierUid);
+ notif.Close();
+
+ TBuf<16> buf16;
+ buf16.Zero();
+
+ if (stat.Int() == KErrNone)
+ {
+ TBuf8<16> buf8;
+ buf8.Zero();
+ for (TInt i=0; i<pin().iLength; i++)
+ {
+ buf8.Append(pin().iPIN[i]);
+ }
+ CnvUtfConverter::ConvertToUnicodeFromUtf8(buf16, buf8);
+ }
+ else
+ {
+ buf16.Append(_L("CANCELLED"));
+ }
+ CEikonEnv::InfoWinL(_L("Pin Input Complete:"), buf16);
+ }
+
+void CTBTNotifiersAppUi::TestDeviceSearchL()
+ {
+ TBTDevAddr addr = TInt64(0x1234);
+ TBTDeviceResponseParamsPckg pckg;
+ pckg().SetDeviceAddress(addr);
+ pckg().SetDeviceName(_L(""));
+ pckg().SetDeviceClass(TBTDeviceClass());
+
+ RNotifier notif;
+ User::LeaveIfError(notif.Connect());
+
+ TRequestStatus stat;
+ TBuf8<1> dummy;
+ notif.StartNotifierAndGetResponse(stat, KDeviceSelectionNotifierUid, dummy, pckg);
+
+ User::WaitForRequest(stat);
+ notif.CancelNotifier(KBTManPinNotifierUid);
+ notif.Close();
+
+ if (stat.Int() == KErrNone)
+ {
+ TBuf<14> addressText;
+ pckg().BDAddr().GetReadable(addressText, _L("0x"), KNullDesC, KNullDesC);
+ CEikonEnv::InfoWinL(_L("Pin Input Complete:"),addressText);
+ }
+ else
+ {
+ CEikonEnv::InfoWinL(_L("Pin Input Complete:"),_L("CANCELLED"));
+ }
+ }
+
+//
+// CTBTNotifiersEikDocument
+//
+
+CEikAppUi* CTBTNotifiersEikDocument::CreateAppUiL()
+ {
+ return(new(ELeave) CTBTNotifiersAppUi);
+ }
+
+void CTBTNotifiersEikDocument::ConstructL()
+ {
+ }
+
+//
+// CTBTNotifiersApplication
+//
+
+TUid CTBTNotifiersApplication::AppDllUid() const
+ {
+ return KUidTBTNotifiersApp;
+ }
+
+CApaDocument* CTBTNotifiersApplication::CreateDocumentL()
+ {
+ CTBTNotifiersEikDocument* document=new(ELeave) CTBTNotifiersEikDocument(*this);
+ CleanupStack::PushL(document);
+ document->ConstructL();
+ CleanupStack::Pop();
+ return(document);
+ }
+
+CApaApplication* NewApplication()
+ {
+ return new CTBTNotifiersApplication;
+ }
+
+
+#include <eikstart.h>
+
+GLDEF_C TInt E32Main()
+ {
+ return EikStart::RunApplication(NewApplication);
+ }