ARMmbed / ble-nrf51822

Nordic stack and drivers for the mbed BLE_API
Other
46 stars 51 forks source link

Different data types, can't call serviceCallback and characteristicCa… #26

Closed zoujixing closed 8 years ago

zoujixing commented 9 years ago

…llback.

zoujixing commented 9 years ago

Oh, yes.How about this:

nRF51ServiceDiscovery::progressServiceDiscovery(void) { ......

while ((state == SERVICE_DISCOVERY_ACTIVE) && (serviceIndex < numServices)) {

    if( ((matchingServiceUUID.shortOrLong() == UUID::UUID_Type_t(UUID::UUID_TYPE_SHORT)) && 
         (services[serviceIndex].getUUID().shortOrLong() == UUID::UUID_Type_t(UUID::UUID_TYPE_SHORT)) &&
         (matchingServiceUUID.getShortUUID() == services[serviceIndex].getUUID().getShortUUID()) 
        ) || 
        ((matchingServiceUUID.shortOrLong() == UUID::UUID_Type_t(UUID::UUID_TYPE_LONG)) &&
         (services[serviceIndex].getUUID().shortOrLong() == UUID::UUID_Type_t(UUID::UUID_TYPE_LONG)) &&
         (0x00 == memcmp(matchingServiceUUID.getBaseUUID(), services[serviceIndex].getUUID().getBaseUUID(), UUID::LENGTH_OF_LONG_UUID))
        ) )
    {

        if ( serviceCallback ){

            serviceCallback(&services[serviceIndex]);
        }

        if( (state == SERVICE_DISCOVERY_ACTIVE) && characteristicCallback )
        {

            launchCharacteristicDiscovery(connHandle, services[serviceIndex].getStartHandle(), services[serviceIndex].getEndHandle());      
        }
        else
        {
            serviceIndex++;
        }
    }
    else
    {
        serviceIndex++;
    }
}

......

}

adfernandes commented 9 years ago

Why are you using explicit comparisons for UUIDs? Why not just use the overloaded operator ==?

rgrover commented 9 years ago

I agree with @adfernandes. Comparison should be encapsulated in operator==

rgrover commented 8 years ago

UUID::operator == now allows comparisons between long and short UUIDs. I believe this should have been addressed by now. Please re-open if necessary.