This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

When 128bit characteristic UUID is different form 128bit service UUID,how to discovery it?

I have the same problem as how to discovery 128bit characteristic UUID which is totally different form 128bit service UUID,the uuid in this question is the same with me,but I can not find solution .

I modified the ble_nus_c_init()  like this:

#define BASE_UUID                   {{0xfb,0x34,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00}}
#define BASE_UUID_FEE9              {{0xfb,0x34,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0xe9,0xfe,0x00,0x00}}
#define BASE_UUID_CHAR_RX           {{0x00,0x96,0x12,0x16,0x54,0x92,0x75,0xb5,0xa2,0x45,0xfd,0xab,0x39,0xc4,0x4b,0xd4}}
#define BASE_UUID_CHAR_TX           {{0x01,0x96,0x12,0x16,0x54,0x92,0x75,0xb5,0xa2,0x45,0xfd,0xab,0x39,0xc4,0x4b,0xd4}}


uint32_t ble_nus_c_init(ble_nus_c_t * p_ble_nus_c, ble_nus_c_init_t * p_ble_nus_c_init)
{
    uint32_t      err_code;
    ble_uuid_t    uart_uuid,ble_uuid1,ble_uuid2;
    ble_uuid128_t nus_base_uuid =BASE_UUID;         //NUS_BASE_UUID;
    ble_uuid128_t base_uuid1 = BASE_UUID_CHAR_RX;
    ble_uuid128_t base_uuid2 = BASE_UUID_CHAR_TX;
    
    VERIFY_PARAM_NOT_NULL(p_ble_nus_c);
    VERIFY_PARAM_NOT_NULL(p_ble_nus_c_init);
    
    err_code = sd_ble_uuid_vs_add(&nus_base_uuid, &p_ble_nus_c->uuid_type);
    VERIFY_SUCCESS(err_code);

    uart_uuid.type = p_ble_nus_c->uuid_type;
    uart_uuid.uuid = 0xfee9;            //BLE_UUID_NUS_SERVICE;

    p_ble_nus_c->conn_handle           = BLE_CONN_HANDLE_INVALID;
    p_ble_nus_c->evt_handler           = p_ble_nus_c_init->evt_handler;
    p_ble_nus_c->handles.nus_tx_handle = BLE_GATT_HANDLE_INVALID;
    p_ble_nus_c->handles.nus_rx_handle = BLE_GATT_HANDLE_INVALID;

    ble_db_discovery_evt_register(&uart_uuid);
    
    ble_uuid1.uuid = 0;    
    err_code = sd_ble_uuid_vs_add(&base_uuid1, &ble_uuid1.type);
    VERIFY_SUCCESS(err_code);

    ble_uuid2.uuid = 0;    
    err_code = sd_ble_uuid_vs_add(&base_uuid2, &ble_uuid2.type);
    VERIFY_SUCCESS(err_code);

    err_code=ble_db_discovery_evt_register(&ble_uuid1);
    err_code=ble_db_discovery_evt_register(&ble_uuid2);
    return err_code;
}

And I set NRF_SDH_BLE_VS_UUID_COUNT to 4 , modified the ram start and size.

I can't receive the event BLE_DB_DISCOVERY_COMPLETE, but  receive event  BLE_DB_DISCOVERY_ERROR and BLE_DB_DISCOVERY_SRV_NOT_FOUND

When I change 0xFEE9 to 0xFEE8 I can receive the event BLE_DB_DISCOVERY_COMPLETE,but characteristic.uuid.uuid = 0x00 I don't know why.

How to discovery 128bit characteristic UUID which is totally different form 128bit service UUID?

Can someone help me?

NRF52832   SDK14.2  code base "on ble_app_uart_c"   pca10040  s132

Thanks.

Related