/*start read notify read char handle*/ static void read_notify_read_char_handle(void) { if (!start_read_notify_read_char_handle) { printf("Start reading notify_read_char_handle\n"); const uint8_t charUuid128_RX[16] = {0x8C, 0xF9, 0x97,0xA6, 0xEE, 0x94, 0xE3,0xBC,0xF8, 0x21, 0xB2, 0x60, 0x02, 0x80, 0x00, 0x00}; aci_gatt_disc_charac_by_uuid(connection_handle, 0x0001, 0xFFFF, UUID_TYPE_128, charUuid128_RX); start_read_notify_read_char_handle = TRUE; } }
/** * @brief Discovery RX characteristic handle by UUID 128 bits * @param None * @retval None */ void startReadRXCharHandle(void) { if (!start_read_rx_char_handle) { PRINTF("Start reading RX Char Handle\n"); const uint8_t charUuid128_RX[16] = {0x66,0x9a,0x0c,0x20,0x00,0x08,0x96,0x9e,0xe2,0x11,0x9e,0xb1,0xe2,0xf2,0x73,0xd9}; aci_gatt_disc_charac_by_uuid(connection_handle, 0x0001, 0xFFFF, UUID_TYPE_128, charUuid128_RX); start_read_rx_char_handle = TRUE; } }
ble_error_t BlueNRGGattClient::findServiceChars(Gap::Handle_t connectionHandle) { PRINTF("findServiceChars\n\r"); tBleStatus ret; uint8_t uuid_type = UUID_TYPE_16; uint8_t short_uuid[2]; uint8_t *uuid = NULL; DiscoveredService *service; // We finished chars discovery for all services if(_servIndex >= _numServices) { PRINTF("!!!We finished chars discovery for all services!!!\n\r"); _currentState = GATT_CHARS_DISCOVERY_COMPLETE; terminateServiceDiscovery(); return BLE_ERROR_NONE; } service = &discoveredService[_servIndex]; /* if (service->getUUID().shortOrLong() == UUID::UUID_TYPE_SHORT) { PRINTF("S UUID-%X\r\n", service->getUUID().getShortUUID()); } else { PRINTF("S UUID-"); const uint8_t *longUUIDBytes = service->getUUID().getBaseUUID(); for (unsigned i = 0; i < UUID::LENGTH_OF_LONG_UUID; i++) { PRINTF("%02X", longUUIDBytes[i]); } PRINTF("\r\n"); } */ PRINTF("findServiceChars (_servIndex=%d)\n\r", _servIndex); //ret = aci_gatt_disc_all_charac_of_serv(connectionHandle, service->getStartHandle(), service->getEndHandle()); if(_matchingCharacteristicUUIDIn == BLE_UUID_UNKNOWN) { PRINTF("findServiceChars (BLE_UUID_UNKNOWN)\n\r"); ret = aci_gatt_disc_all_charac_of_serv(connectionHandle, service->getStartHandle(), service->getEndHandle()); } else { uint8_t type = _matchingCharacteristicUUIDIn.shortOrLong(); if(type == UUID::UUID_TYPE_SHORT) { STORE_LE_16(short_uuid, _matchingCharacteristicUUIDIn.getShortUUID()); uuid_type = UUID_TYPE_16; uuid = short_uuid; PRINTF("findServiceChars C UUID-"); for(unsigned i = 0; i < 2; i++) { PRINTF("%02X", short_uuid[i]); } PRINTF("\n\r"); } else if(type==UUID::UUID_TYPE_LONG) { uuid_type = UUID_TYPE_128; uuid = (unsigned char*)_matchingCharacteristicUUIDIn.getBaseUUID(); PRINTF("(findServiceChars) C UUID-"); for (unsigned i = 0; i < UUID::LENGTH_OF_LONG_UUID; i++) { PRINTF("%02X", uuid[i]); } PRINTF("\r\n"); } ret = aci_gatt_disc_charac_by_uuid(connectionHandle, service->getStartHandle(), service->getEndHandle(), uuid_type, uuid); } if(ret == BLE_STATUS_SUCCESS) { _servIndex++; } PRINTF("findServiceChars ret=%d\n\r", ret); return BLE_ERROR_NONE; }