Hi,
I want my characteristic to have a different UUID than its service on my server:
I followed the leads from the post below:
Below is my function to add a characteristic to the service:
static uint32_t setting_zone_power_char_add(ble_cooktop_t * p_cooktop, const ble_cooktop_init_t * p_cooktop_init) { ble_gatts_char_md_t char_md; ble_gatts_attr_t attr_char_value; ble_gatts_attr_md_t attr_md; ble_uuid_t uuidA = { .uuid = 0x6666 }; ble_uuid128_t uuidA_base = { 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x99, 0x99, 0x88, 0x88, 0x77, 0x77, 0x00, 0x00, 0x66, 0x66 }; sd_ble_uuid_vs_add(&uuidA_base, &uuidA.type); // uuidA is now 66666666-7777-8888-9999-AAAAAAAAAAAA memset(&char_md, 0, sizeof(char_md)); static char user_desc[] = "setting_zone"; char_md.p_char_user_desc = (uint8_t *) user_desc; char_md.char_user_desc_size = strlen(user_desc); char_md.char_user_desc_max_size = strlen(user_desc); char_md.char_props.write = 1; char_md.char_props.read = 1; char_md.char_props.notify = 1; char_md.char_props.indicate = 1; char_md.char_props.write_wo_resp = 1; char_md.p_char_user_desc = NULL; char_md.p_char_pf = NULL; char_md.p_cccd_md = NULL; char_md.p_sccd_md = NULL; uuidA.type = BLE_UUID_TYPE_VENDOR_BEGIN; memset(&attr_md, 0, sizeof(attr_md)); BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm); BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm); attr_md.vloc = BLE_GATTS_VLOC_STACK; attr_md.rd_auth = 0; attr_md.wr_auth = 0; attr_md.vlen = 1; memset(&attr_char_value, 0, sizeof(attr_char_value)); attr_char_value.p_uuid = &uuidA; attr_char_value.p_attr_md = &attr_md; attr_char_value.init_len = 1; attr_char_value.init_offs = 0; attr_char_value.max_len = 0x03; //sd_ble_gatts_descriptor_add(); return sd_ble_gatts_characteristic_add(p_cooktop->service_handle, &char_md, &attr_char_value, &p_cooktop->setting_zone_power_handles); }
The project compiles and I can connect to my server using nrfConnect but the UUID for the characteristic is not the one I defined but used the same base UUID as the service UUID.