Dear Nordic
I want to set different NUS_BASE_UUID for server and character, as below,
how to set below three NUS_BASE_UUID to different valve.
服务: 49535343-FE7D-4AE5-8FA9-9FAFD205E455
写 特征 UUID1: 49535343-8841-43F4-A8D4-ECBE34729BB3
读 特征 UUID2: 49535343-1E4D-4BD9-BA61-23C647249616
if I set NUS_BASE_UUID to different value, it will run to error check. the code as below
#define NUS_BASE_UUID_NEW1 {{0x55, 0xE4, 0x05, 0xD2, 0xAF, 0x9F, 0xA9, 0x8F, 0xE5, 0x4A, 0x7D, 0xFE, 0x00, 0x00, 0x53, 0x49}} /**< Used vendor specific UUID. */
#define NUS_BASE_UUID_NEW2 {{0xB3, 0x9B, 0x72, 0x34, 0xBE, 0xEC, 0xD4, 0xA8, 0xF4, 0x43, 0x41, 0x88, 0x00, 0x00, 0x53, 0x49}}
#define NUS_BASE_UUID_NEW3 {{0x16, 0x96, 0x24, 0x47, 0xC6, 0x23, 0x61, 0xBA, 0xD9, 0x4B, 0x4D, 0x1E, 0x00, 0x00, 0x53, 0x49}}
uint32_t ble_nus_init1(ble_nus_t * p_nus, ble_nus_init_t const * p_nus_init)
{
ret_code_t err_code;
ble_uuid_t ble_uuid;
ble_uuid128_t nus_base_uuid1 = NUS_BASE_UUID_NEW1;
ble_add_char_params_t add_char_params;
VERIFY_PARAM_NOT_NULL(p_nus);
VERIFY_PARAM_NOT_NULL(p_nus_init);
// Initialize the service structure.
p_nus->data_handler = p_nus_init->data_handler;
/**@snippet [Adding proprietary Service to the SoftDevice] */
// Add a custom base UUID.
err_code = sd_ble_uuid_vs_add(&nus_base_uuid1, &p_nus->uuid_type);
VERIFY_SUCCESS(err_code);
ble_uuid.type = p_nus->uuid_type;
ble_uuid.uuid = 0X5343;//P25_UUID1;//BLE_UUID_NUS_SERVICE;
// Add the service.
err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY,
&ble_uuid,
&p_nus->service_handle);
/**@snippet [Adding proprietary Service to the SoftDevice] */
VERIFY_SUCCESS(err_code);
// Add the RX Characteristic.
ble_uuid128_t nus_base_uuid2 = NUS_BASE_UUID_NEW2;
err_code = sd_ble_uuid_vs_add(&nus_base_uuid2, &p_nus->uuid_type);
VERIFY_SUCCESS(err_code);
memset(&add_char_params, 0, sizeof(add_char_params));
add_char_params.uuid = 0X5343;//P25_067_CHARACTERISTIC_TX_1;//BLE_UUID_NUS_RX_CHARACTERISTIC;
add_char_params.uuid_type = p_nus->uuid_type;
add_char_params.max_len = BLE_NUS_MAX_RX_CHAR_LEN;
add_char_params.init_len = sizeof(uint8_t);
add_char_params.is_var_len = true;
add_char_params.char_props.write = 1;
//add_char_params.char_props.read = 1;
add_char_params.char_props.write_wo_resp = 0;
add_char_params.read_access = SEC_OPEN;
add_char_params.write_access = SEC_OPEN;
err_code = characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->rx_handles);
if (err_code != NRF_SUCCESS)
{
return err_code;
}
// Add the TX Characteristic.
/**@snippet [Adding proprietary characteristic to the SoftDevice] */
ble_uuid128_t nus_base_uuid3 = NUS_BASE_UUID_NEW3
err_code = sd_ble_uuid_vs_add(&nus_base_uuid3, &p_nus->uuid_type);
VERIFY_SUCCESS(err_code);
memset(&add_char_params, 0, sizeof(add_char_params));
add_char_params.uuid = 0X5343;//P25_067_CHARACTERISTIC_TRX_1;//BLE_UUID_NUS_TX_CHARACTERISTIC;
add_char_params.uuid_type = p_nus->uuid_type;
add_char_params.max_len = BLE_NUS_MAX_TX_CHAR_LEN;
add_char_params.init_len = sizeof(uint8_t);
add_char_params.is_var_len = true;
add_char_params.char_props.write = 0;
add_char_params.char_props.read = 0;
add_char_params.char_props.notify = 1;
add_char_params.read_access = SEC_OPEN;
add_char_params.write_access = SEC_OPEN;
add_char_params.cccd_write_access = SEC_OPEN;
return characteristic_add(p_nus->service_handle, &add_char_params, &p_nus->tx_handles);
/**@snippet [Adding proprietary characteristic to the SoftDevice] */
}
