/* Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved. * * The information contained herein is property of Nordic Semiconductor ASA. * Terms and conditions of usage are described in detail in NORDIC * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. * * Licensees are granted free, non-transferable use of the information. NO * WARRANTY of ANY KIND is provided. This heading must NOT be removed from * the file. * */ #include "ble_app.h" #include #include #include "ble_serialization.h" #include "cond_field_serialization.h" #include "ble_struct_serialization.h" #include "app_util.h" uint32_t ble_uuid_decode_req_enc(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t err_code; uint32_t index = 0; uint32_t buf_len = *p_buf_len; uint8_t opcode = SD_BLE_UUID_DECODE; err_code = uint8_t_enc((void *)&opcode, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = len8data_enc(p_uuid_le, uuid_le_len, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc((void *)p_uuid, p_buf, buf_len, &index, NULL); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; } uint32_t ble_uuid_decode_rsp_dec(uint8_t const * const p_buf, uint32_t buf_len, ble_uuid_t * * const pp_uuid, uint32_t * const p_result_code) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_result_code); uint32_t err_code; uint32_t index = 0; uint32_t decode_result = ser_ble_cmd_rsp_result_code_dec(p_buf, &index, buf_len, SD_BLE_UUID_DECODE, p_result_code); if (decode_result != NRF_SUCCESS) { return decode_result; } if (*p_result_code != NRF_SUCCESS) { SER_ASSERT_LENGTH_EQ(index, buf_len); return NRF_SUCCESS; } err_code = cond_field_dec(p_buf, buf_len, &index, (void * *)pp_uuid, ble_uuid_t_dec); SER_ASSERT(err_code == NRF_SUCCESS, err_code); SER_ASSERT_LENGTH_EQ(index, buf_len); return err_code; }