bluetooth/btexample/example/btproperties/BTProperties.cpp
branchRCL_3
changeset 22 786b94c6f0a4
parent 0 29b1cd4cb562
--- a/bluetooth/btexample/example/btproperties/BTProperties.cpp	Thu Jul 15 19:55:36 2010 +0300
+++ b/bluetooth/btexample/example/btproperties/BTProperties.cpp	Thu Aug 19 11:01:00 2010 +0300
@@ -55,6 +55,56 @@
 		}
 	}
 
+void CreateSubscribersL(RPointerArray<CSubscriber>& aSubscribers)
+	{
+	CSubscriber* subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetPHYCount, KNumLinks);
+	
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetRegistryTableChange, KRegistry);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetConnectingStatus, KConnecting);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+		
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetScanningStatus, KScanning);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetLimitedDiscoverableStatus, KLimited);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetDeviceClass, KDeviceClass);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothGetCorruptRegistryResetIndication, KCorruptRegistry);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	
+	subscriber = CDeviceNameSubscriber::NewL(test, KPropertyKeyBluetoothGetDeviceName, KDeviceName);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	
+	subscriber = CSubscriber::NewL(test, KPropertyKeyBluetoothHostResolverActive, KDiscovering);
+	CleanupStack::PushL(subscriber);
+	aSubscribers.AppendL(subscriber);
+	CleanupStack::Pop(subscriber);
+	}
+
+
 void TestL()
 	{
 	// first do a sync test
@@ -62,27 +112,22 @@
 
 	RPointerArray<CSubscriber> subscribers;
 
-	//ignoring errors!
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetPHYCount, KNumLinks));
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetRegistryTableChange, KRegistry));
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetConnectingStatus, KConnecting));
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetScanningStatus, KScanning));
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetLimitedDiscoverableStatus, KLimited));
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetDeviceClass, KDeviceClass));
-	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothGetCorruptRegistryResetIndication, KCorruptRegistry));
-	subscribers.Append(CDeviceNameSubscriber::NewL(test, KPropertyKeyBluetoothGetDeviceName, KDeviceName));
- 	subscribers.Append(CSubscriber::NewL(test, KPropertyKeyBluetoothHostResolverActive, KDiscovering));
+	TRAPD(err, CreateSubscribersL(subscribers));
 
 	test.Printf(_L("%d Subscribers\n"), subscribers.Count());
 
-	for (TInt i=0; i<subscribers.Count(); i++)
-		subscribers[i]->Start();
-
-	CActiveScheduler::Start();
+	if (err == KErrNone)
+		{
+		// Only start if no errors when creating the subscribers
+		for (TInt i=0; i<subscribers.Count(); i++)
+			{
+			subscribers[i]->Start();
+			}
+		CActiveScheduler::Start();
+		}
 	subscribers.ResetAndDestroy();
 	}
 
-
 CSubscriber* CSubscriber::NewL(RTest& aTest, TUint aKey, const TDesC& aString)
 	{
 	CSubscriber* s = new(ELeave) CSubscriber(aTest, aString);