bluetooth/btexample/example/codsetter/CodSetter.cpp
changeset 0 29b1cd4cb562
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/btexample/example/codsetter/CodSetter.cpp	Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,153 @@
+// 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:
+//
+
+#include <e32base.h>
+#include <e32std.h>
+#include <e32test.h>
+#include <bt_subscribe.h>
+#include <bt_sock.h>
+#include "CodSetter.h"
+
+_LIT(KInstructions, "O - ObjectTransfer\nP = Positioning\nN - Networking\nC - Capturing\nA - Audio\nT - Telephony\nI - Information\nR - Rendering\n");
+
+GLDEF_D RTest test(_L("Cod Setter App"));
+
+void TestL()
+	{
+	test.Printf(_L("%S\n"), &KInstructions);
+
+	CCodSetter* codsetter = CCodSetter::NewL(test);
+
+	CActiveScheduler::Start();
+
+	delete codsetter;
+	}
+
+
+CCodSetter* CCodSetter::NewL(RTest& aTest)
+	{
+	CCodSetter* s = new(ELeave) CCodSetter(aTest);
+	CleanupStack::PushL(s);
+	s->ConstructL();
+	CleanupStack::Pop(s);
+	return s;
+	}
+
+CCodSetter::CCodSetter(RTest& aTest)
+: CActive(EPriorityStandard), iTest(aTest)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CCodSetter::~CCodSetter()
+	{
+	Cancel();
+	}
+
+void CCodSetter::ConstructL()
+	{
+	TInt err;
+	
+
+_LIT_SECURITY_POLICY_PASS(KPassPolicy);
+	err=iProperty.Define(KPropertyUidBluetoothCategory,
+							KPropertyKeyBluetoothSetDeviceClass,
+							RProperty::EInt,
+							KPassPolicy,		//	Read policy
+							KPassPolicy);		//	Write policy
+	
+	if (err) test.Printf(_L("Error %d defining property, continuing anyway\n"),err);
+	Start();
+	}
+
+void CCodSetter::Start()
+	{
+	iTest.Console()->Read(iStatus);
+	SetActive();
+	}
+
+void CCodSetter::RunL()
+	{
+	Start();
+	
+	TChar ch = iTest.Console()->KeyCode();
+
+	TUint16 bit = 0;
+
+	switch (ch)
+		{
+		case 'i': case 'I':
+			bit = EMajorServiceInformation;
+			break;
+
+		case 'p': case 'P':
+			bit = EMajorServicePositioning;
+			break;
+
+		case 'o': case 'O':
+			bit = EMajorServiceObjectTransfer;
+			break;
+
+		case 'n': case 'N':
+			bit = EMajorServiceNetworking;
+			break;
+
+		case 'c': case 'C':
+			bit = EMajorServiceCapturing;
+			break;
+
+		case 'r': case 'R':
+			bit = EMajorServiceRendering;
+			break;
+
+		case 't': case 'T':
+			bit = EMajorServiceTelephony;
+			break;
+
+		default:
+			break; // do nothing
+		}
+
+	TUint16 s = iServiceClassToSet;
+	s ^= bit;
+	TBTDeviceClass cod(s,KMajorDeviceClass,KMinorDeviceClass);
+
+	iProperty.Set(KPropertyUidBluetoothCategory, KPropertyKeyBluetoothSetDeviceClass, cod.DeviceClass());
+
+	iServiceClassToSet = static_cast<TBTMajorServiceClass>(s);
+	}
+
+void CCodSetter::DoCancel()
+	{
+	iTest.Console()->ReadCancel();
+	}
+
+
+TInt E32Main()
+	{
+	CTrapCleanup* cleanupStack=CTrapCleanup::New();
+	CActiveScheduler::Install(new CActiveScheduler);
+
+	TRAPD(err,TestL());	//	Ignore err
+
+	if (err != KErrNone)
+		{
+		test.Printf(_L("Error %d"), err);
+		test.Getch();
+		}
+
+	delete cleanupStack;
+	return err;
+	}