song zhao / nRF51822

Dependencies:   nrf51-sdk

Fork of nRF51822 by Nordic Semiconductor

Files at this revision

API Documentation at this revision

Comitter:
rgrover1
Date:
Fri Jun 19 15:55:28 2015 +0100
Parent:
299:c10ee33f68ab
Child:
301:fcc5bbc48739
Commit message:
Synchronized with git rev 47553957
Author: Rohit Grover
switch to enqueue() and dequeue() for ServiceIndicesNeedingUUIDDiscovery

Changed in this revision

btle/btle_discovery.cpp Show annotated file Show diff for this revision Revisions of this file
btle/btle_discovery.h Show annotated file Show diff for this revision Revisions of this file
--- a/btle/btle_discovery.cpp	Fri Jun 19 15:55:28 2015 +0100
+++ b/btle/btle_discovery.cpp	Fri Jun 19 15:55:28 2015 +0100
@@ -127,7 +127,7 @@
 
         /* Skip this service if we fail to launch a read for its service-declaration
          * attribute. Its UUID will remain INVALID, and it may not match any filters. */
-        removeFirst();
+        dequeue();
     }
 
     /* Switch back to service discovery upon exhausting the service-indices pending UUID discovery. */
@@ -144,20 +144,20 @@
     //     printf("%02x ", response->handle_value[0].p_value[i]);
     // }
     // printf("\r\n");
+    if (state == DISCOVER_SERVICE_UUIDS) {
+        if ((response->count == 1) && (response->value_len == UUID::LENGTH_OF_LONG_UUID)) {
+            UUID::LongUUIDBytes_t uuid;
+            /* Switch longUUID bytes to MSB */
+            for (unsigned i = 0; i < UUID::LENGTH_OF_LONG_UUID; i++) {
+                uuid[i] = response->handle_value[0].p_value[UUID::LENGTH_OF_LONG_UUID - 1 - i];
+            }
 
-    if ((response->count == 1) && (response->value_len == UUID::LENGTH_OF_LONG_UUID)) {
-        UUID::LongUUIDBytes_t uuid;
-        /* Switch longUUID bytes to MSB */
-        for (unsigned i = 0; i < UUID::LENGTH_OF_LONG_UUID; i++) {
-            uuid[i] = response->handle_value[0].p_value[UUID::LENGTH_OF_LONG_UUID - 1 - i];
+            unsigned serviceIndex = serviceIndicesNeedingUUIDDiscovery.dequeue();
+            services[serviceIndex].setupLongUUID(uuid);
+
+            serviceIndicesNeedingUUIDDiscovery.triggerFirst();
         }
-
-        unsigned serviceIndex = serviceIndicesNeedingUUIDDiscovery.getFirst();
-        services[serviceIndex].setupLongUUID(uuid);
     }
-
-    serviceIndicesNeedingUUIDDiscovery.removeFirst();
-    serviceIndicesNeedingUUIDDiscovery.triggerFirst();
 }
 
 void
@@ -174,7 +174,7 @@
     serviceIndicesNeedingUUIDDiscovery.reset();
     for (unsigned serviceIndex = 0; serviceIndex < numServices; serviceIndex++) {
         if (response->services[serviceIndex].uuid.type == BLE_UUID_TYPE_UNKNOWN) {
-            serviceIndicesNeedingUUIDDiscovery.append(serviceIndex);
+            serviceIndicesNeedingUUIDDiscovery.enqueue(serviceIndex);
             services[serviceIndex].setup(response->services[serviceIndex].handle_range.start_handle,
                                          response->services[serviceIndex].handle_range.end_handle);
         } else {
--- a/btle/btle_discovery.h	Fri Jun 19 15:55:28 2015 +0100
+++ b/btle/btle_discovery.h	Fri Jun 19 15:55:28 2015 +0100
@@ -128,17 +128,24 @@
                 serviceIndices[index] = INVALID_SERVICE_INDEX;
             }
         }
-        void append(int serviceIndex) {
+        void enqueue(int serviceIndex) {
             serviceIndices[numIndices++] = serviceIndex;
         }
         unsigned getFirst(void) const {
             return serviceIndices[0];
         }
-        void removeFirst(void) {
+        int dequeue(void) {
+            if (numIndices == 0) {
+                return INVALID_SERVICE_INDEX;
+            }
+
+            unsigned valueToReturn = serviceIndices[0];
             numIndices--;
-            for (unsigned index = 0; index < numIndices; index++) {
-                serviceIndices[index] = serviceIndices[index + 1];
+            for (unsigned i = 0; i < numIndices; i++) {
+                serviceIndices[i] = serviceIndices[i + 1];
             }
+
+            return valueToReturn;
         }
         size_t getCount(void) const {
             return numIndices;