switch to enqueue() and dequeue() for ServiceIndicesNeedingUUIDDiscovery
parent
ae90b6ceec
commit
4755395711
|
@ -127,7 +127,7 @@ NordicServiceDiscovery::ServiceIndicesNeedingUUIDDiscovery::triggerFirst(void)
|
|||
|
||||
/* 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 @@ NordicServiceDiscovery::processDiscoverUUIDResponse(const ble_gattc_evt_char_val
|
|||
// 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 @@ NordicServiceDiscovery::setupDiscoveredServices(const ble_gattc_evt_prim_srvc_di
|
|||
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 {
|
||||
|
|
|
@ -128,17 +128,24 @@ private:
|
|||
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) {
|
||||
numIndices--;
|
||||
for (unsigned index = 0; index < numIndices; index++) {
|
||||
serviceIndices[index] = serviceIndices[index + 1];
|
||||
int dequeue(void) {
|
||||
if (numIndices == 0) {
|
||||
return INVALID_SERVICE_INDEX;
|
||||
}
|
||||
|
||||
unsigned valueToReturn = serviceIndices[0];
|
||||
numIndices--;
|
||||
for (unsigned i = 0; i < numIndices; i++) {
|
||||
serviceIndices[i] = serviceIndices[i + 1];
|
||||
}
|
||||
|
||||
return valueToReturn;
|
||||
}
|
||||
size_t getCount(void) const {
|
||||
return numIndices;
|
||||
|
|
Loading…
Reference in New Issue