Committer:
jinu
Date:
Thu Feb 09 06:08:17 2017 +0000
Revision:
0:6ba9b94b8997
NRF51 serialization libraries for mDot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jinu 0:6ba9b94b8997 1 /* Copyright (c) Nordic Semiconductor ASA
jinu 0:6ba9b94b8997 2 * All rights reserved.
jinu 0:6ba9b94b8997 3 *
jinu 0:6ba9b94b8997 4 * Redistribution and use in source and binary forms, with or without modification,
jinu 0:6ba9b94b8997 5 * are permitted provided that the following conditions are met:
jinu 0:6ba9b94b8997 6 *
jinu 0:6ba9b94b8997 7 * 1. Redistributions of source code must retain the above copyright notice, this
jinu 0:6ba9b94b8997 8 * list of conditions and the following disclaimer.
jinu 0:6ba9b94b8997 9 *
jinu 0:6ba9b94b8997 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this
jinu 0:6ba9b94b8997 11 * list of conditions and the following disclaimer in the documentation and/or
jinu 0:6ba9b94b8997 12 * other materials provided with the distribution.
jinu 0:6ba9b94b8997 13 *
jinu 0:6ba9b94b8997 14 * 3. Neither the name of Nordic Semiconductor ASA nor the names of other
jinu 0:6ba9b94b8997 15 * contributors to this software may be used to endorse or promote products
jinu 0:6ba9b94b8997 16 * derived from this software without specific prior written permission.
jinu 0:6ba9b94b8997 17 *
jinu 0:6ba9b94b8997 18 * 4. This software must only be used in a processor manufactured by Nordic
jinu 0:6ba9b94b8997 19 * Semiconductor ASA, or in a processor manufactured by a third party that
jinu 0:6ba9b94b8997 20 * is used in combination with a processor manufactured by Nordic Semiconductor.
jinu 0:6ba9b94b8997 21 *
jinu 0:6ba9b94b8997 22 *
jinu 0:6ba9b94b8997 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
jinu 0:6ba9b94b8997 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
jinu 0:6ba9b94b8997 25 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
jinu 0:6ba9b94b8997 26 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
jinu 0:6ba9b94b8997 27 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
jinu 0:6ba9b94b8997 28 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
jinu 0:6ba9b94b8997 29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
jinu 0:6ba9b94b8997 30 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
jinu 0:6ba9b94b8997 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
jinu 0:6ba9b94b8997 32 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jinu 0:6ba9b94b8997 33 */
jinu 0:6ba9b94b8997 34
jinu 0:6ba9b94b8997 35 #include "ble_gap.h"
jinu 0:6ba9b94b8997 36 #include <stdint.h>
jinu 0:6ba9b94b8997 37 #include "ble_rpc_defines.h"
jinu 0:6ba9b94b8997 38 #include "ble_encode_transport.h"
jinu 0:6ba9b94b8997 39 #include "ble_gap_app.h"
jinu 0:6ba9b94b8997 40 #include "hal_transport_config.h"
jinu 0:6ba9b94b8997 41 #include "app_error.h"
jinu 0:6ba9b94b8997 42
jinu 0:6ba9b94b8997 43 /**@brief Structure containing @ref sd_ble_gap_device_name_get output parameters. */
jinu 0:6ba9b94b8997 44 typedef struct
jinu 0:6ba9b94b8997 45 {
jinu 0:6ba9b94b8997 46 uint8_t * p_dev_name; /**< @ref sd_ble_gap_device_name_get p_dev_name output parameter. */
jinu 0:6ba9b94b8997 47 uint16_t * p_len; /**< @ref sd_ble_gap_device_name_get p_len output parameter. */
jinu 0:6ba9b94b8997 48 } gap_device_name_get_output_params_t;
jinu 0:6ba9b94b8997 49
jinu 0:6ba9b94b8997 50 /**@brief Structure containing @ref sd_ble_gap_appearance_get output parameters. */
jinu 0:6ba9b94b8997 51 typedef struct
jinu 0:6ba9b94b8997 52 {
jinu 0:6ba9b94b8997 53 uint16_t * p_appearance; /**< @ref sd_ble_gap_appearance_get p_appearance output parameter. */
jinu 0:6ba9b94b8997 54 } gap_appearance_get_output_params_t;
jinu 0:6ba9b94b8997 55
jinu 0:6ba9b94b8997 56 /**@brief Structure containing @ref sd_ble_gap_ppcp_get output parameters. */
jinu 0:6ba9b94b8997 57 typedef struct
jinu 0:6ba9b94b8997 58 {
jinu 0:6ba9b94b8997 59 ble_gap_conn_params_t * p_conn_params; /**< @ref sd_ble_gap_ppcp_get p_conn_params output parameter. */
jinu 0:6ba9b94b8997 60 } gap_ppcp_get_out_params_t;
jinu 0:6ba9b94b8997 61
jinu 0:6ba9b94b8997 62 /**@brief Union containing BLE command output parameters. */
jinu 0:6ba9b94b8997 63 typedef union
jinu 0:6ba9b94b8997 64 {
jinu 0:6ba9b94b8997 65 gap_device_name_get_output_params_t gap_device_name_get_out_params; /**< @ref sd_ble_gap_device_name_get output parameters. */
jinu 0:6ba9b94b8997 66 gap_appearance_get_output_params_t gap_appearance_get_out_params; /**< @ref sd_ble_gap_appearance_get output parameters. */
jinu 0:6ba9b94b8997 67 gap_ppcp_get_out_params_t gap_ppcp_get_out_params; /**< @ref sd_ble_gap_ppcp_get output parameters. */
jinu 0:6ba9b94b8997 68 } gap_command_output_params_t;
jinu 0:6ba9b94b8997 69
jinu 0:6ba9b94b8997 70 static gap_command_output_params_t m_output_params; /**< BLE command output parameters. */
jinu 0:6ba9b94b8997 71
jinu 0:6ba9b94b8997 72 static void * mp_out_params[1];
jinu 0:6ba9b94b8997 73
jinu 0:6ba9b94b8997 74 /**@brief Command response callback function for @ref sd_ble_gap_adv_start BLE command.
jinu 0:6ba9b94b8997 75 *
jinu 0:6ba9b94b8997 76 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 77 *
jinu 0:6ba9b94b8997 78 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 79 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 80 *
jinu 0:6ba9b94b8997 81 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 82 */
jinu 0:6ba9b94b8997 83 static uint32_t gap_adv_start_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 84 {
jinu 0:6ba9b94b8997 85 uint32_t result_code;
jinu 0:6ba9b94b8997 86
jinu 0:6ba9b94b8997 87 const uint32_t err_code = ble_gap_adv_start_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 88 // @note: Should never fail.
jinu 0:6ba9b94b8997 89 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 90
jinu 0:6ba9b94b8997 91 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 92
jinu 0:6ba9b94b8997 93 return result_code;
jinu 0:6ba9b94b8997 94 }
jinu 0:6ba9b94b8997 95
jinu 0:6ba9b94b8997 96
jinu 0:6ba9b94b8997 97 uint32_t sd_ble_gap_adv_start(ble_gap_adv_params_t const * const p_adv_params)
jinu 0:6ba9b94b8997 98 {
jinu 0:6ba9b94b8997 99 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 100
jinu 0:6ba9b94b8997 101 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 102 // documentation.
jinu 0:6ba9b94b8997 103
jinu 0:6ba9b94b8997 104 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 105 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 106 const uint32_t err_code = ble_gap_adv_start_req_enc(p_adv_params,
jinu 0:6ba9b94b8997 107 &(p_buffer[1]),
jinu 0:6ba9b94b8997 108 &buffer_length);
jinu 0:6ba9b94b8997 109 // @note: Should never fail.
jinu 0:6ba9b94b8997 110 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 111
jinu 0:6ba9b94b8997 112 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 113 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 114 (++buffer_length),
jinu 0:6ba9b94b8997 115 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 116 gap_adv_start_rsp_dec);
jinu 0:6ba9b94b8997 117
jinu 0:6ba9b94b8997 118 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 119 }
jinu 0:6ba9b94b8997 120
jinu 0:6ba9b94b8997 121
jinu 0:6ba9b94b8997 122 /**@brief Command response callback function for @ref ble_gap_device_name_get_req_enc BLE command.
jinu 0:6ba9b94b8997 123 *
jinu 0:6ba9b94b8997 124 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 125 *
jinu 0:6ba9b94b8997 126 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 127 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 128 *
jinu 0:6ba9b94b8997 129 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 130 */
jinu 0:6ba9b94b8997 131 static uint32_t gap_device_name_get_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 132 {
jinu 0:6ba9b94b8997 133 uint32_t result_code;
jinu 0:6ba9b94b8997 134
jinu 0:6ba9b94b8997 135 const uint32_t err_code =
jinu 0:6ba9b94b8997 136 ble_gap_device_name_get_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 137 length,
jinu 0:6ba9b94b8997 138 m_output_params.gap_device_name_get_out_params.p_dev_name,
jinu 0:6ba9b94b8997 139 m_output_params.gap_device_name_get_out_params.p_len,
jinu 0:6ba9b94b8997 140 &result_code);
jinu 0:6ba9b94b8997 141 // @note: Should never fail.
jinu 0:6ba9b94b8997 142 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 143
jinu 0:6ba9b94b8997 144 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 145
jinu 0:6ba9b94b8997 146 return result_code;
jinu 0:6ba9b94b8997 147 }
jinu 0:6ba9b94b8997 148
jinu 0:6ba9b94b8997 149
jinu 0:6ba9b94b8997 150 uint32_t sd_ble_gap_device_name_get(uint8_t * const p_dev_name, uint16_t * const p_len)
jinu 0:6ba9b94b8997 151 {
jinu 0:6ba9b94b8997 152 m_output_params.gap_device_name_get_out_params.p_dev_name = p_dev_name;
jinu 0:6ba9b94b8997 153 m_output_params.gap_device_name_get_out_params.p_len = p_len;
jinu 0:6ba9b94b8997 154
jinu 0:6ba9b94b8997 155 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 156
jinu 0:6ba9b94b8997 157 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 158 // documentation.
jinu 0:6ba9b94b8997 159
jinu 0:6ba9b94b8997 160 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 161 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 162 const uint32_t err_code = ble_gap_device_name_get_req_enc(p_dev_name,
jinu 0:6ba9b94b8997 163 p_len,
jinu 0:6ba9b94b8997 164 &(p_buffer[1]),
jinu 0:6ba9b94b8997 165 &buffer_length);
jinu 0:6ba9b94b8997 166 // @note: Should never fail.
jinu 0:6ba9b94b8997 167 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 168
jinu 0:6ba9b94b8997 169 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 170 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 171 (++buffer_length),
jinu 0:6ba9b94b8997 172 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 173 gap_device_name_get_rsp_dec);
jinu 0:6ba9b94b8997 174
jinu 0:6ba9b94b8997 175 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 176 }
jinu 0:6ba9b94b8997 177
jinu 0:6ba9b94b8997 178
jinu 0:6ba9b94b8997 179 /**@brief Command response callback function for @ref sd_ble_gap_appearance_get BLE command.
jinu 0:6ba9b94b8997 180 *
jinu 0:6ba9b94b8997 181 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 182 *
jinu 0:6ba9b94b8997 183 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 184 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 185 *
jinu 0:6ba9b94b8997 186 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 187 */
jinu 0:6ba9b94b8997 188 static uint32_t gap_appearance_get_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 189 {
jinu 0:6ba9b94b8997 190 uint32_t result_code;
jinu 0:6ba9b94b8997 191
jinu 0:6ba9b94b8997 192 const uint32_t err_code =
jinu 0:6ba9b94b8997 193 ble_gap_appearance_get_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 194 length,
jinu 0:6ba9b94b8997 195 m_output_params.gap_appearance_get_out_params.p_appearance,
jinu 0:6ba9b94b8997 196 &result_code);
jinu 0:6ba9b94b8997 197 // @note: Should never fail.
jinu 0:6ba9b94b8997 198 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 199
jinu 0:6ba9b94b8997 200 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 201
jinu 0:6ba9b94b8997 202 return result_code;
jinu 0:6ba9b94b8997 203 }
jinu 0:6ba9b94b8997 204
jinu 0:6ba9b94b8997 205
jinu 0:6ba9b94b8997 206 uint32_t sd_ble_gap_appearance_get(uint16_t * const p_appearance)
jinu 0:6ba9b94b8997 207 {
jinu 0:6ba9b94b8997 208 m_output_params.gap_appearance_get_out_params.p_appearance = p_appearance;
jinu 0:6ba9b94b8997 209
jinu 0:6ba9b94b8997 210 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 211
jinu 0:6ba9b94b8997 212 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 213 // documentation.
jinu 0:6ba9b94b8997 214
jinu 0:6ba9b94b8997 215 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 216 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 217 const uint32_t err_code = ble_gap_appearance_get_req_enc(p_appearance,
jinu 0:6ba9b94b8997 218 &(p_buffer[1]),
jinu 0:6ba9b94b8997 219 &buffer_length);
jinu 0:6ba9b94b8997 220 // @note: Should never fail.
jinu 0:6ba9b94b8997 221 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 222
jinu 0:6ba9b94b8997 223 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 224 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 225 (++buffer_length),
jinu 0:6ba9b94b8997 226 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 227 gap_appearance_get_rsp_dec);
jinu 0:6ba9b94b8997 228
jinu 0:6ba9b94b8997 229 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 230 }
jinu 0:6ba9b94b8997 231
jinu 0:6ba9b94b8997 232
jinu 0:6ba9b94b8997 233 /**@brief Command response callback function for @ref sd_ble_gap_device_name_set BLE command.
jinu 0:6ba9b94b8997 234 *
jinu 0:6ba9b94b8997 235 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 236 *
jinu 0:6ba9b94b8997 237 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 238 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 239 *
jinu 0:6ba9b94b8997 240 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 241 */
jinu 0:6ba9b94b8997 242 static uint32_t gap_device_name_set_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 243 {
jinu 0:6ba9b94b8997 244 uint32_t result_code;
jinu 0:6ba9b94b8997 245
jinu 0:6ba9b94b8997 246 const uint32_t err_code = ble_gap_device_name_set_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 247 // @note: Should never fail.
jinu 0:6ba9b94b8997 248 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 249
jinu 0:6ba9b94b8997 250 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 251
jinu 0:6ba9b94b8997 252 return result_code;
jinu 0:6ba9b94b8997 253 }
jinu 0:6ba9b94b8997 254
jinu 0:6ba9b94b8997 255
jinu 0:6ba9b94b8997 256 uint32_t sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const * const p_write_perm,
jinu 0:6ba9b94b8997 257 uint8_t const * const p_dev_name,
jinu 0:6ba9b94b8997 258 uint16_t len)
jinu 0:6ba9b94b8997 259 {
jinu 0:6ba9b94b8997 260 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 261
jinu 0:6ba9b94b8997 262 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 263 // documentation.
jinu 0:6ba9b94b8997 264
jinu 0:6ba9b94b8997 265 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 266 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 267 const uint32_t err_code = ble_gap_device_name_set_req_enc(p_write_perm,
jinu 0:6ba9b94b8997 268 p_dev_name,
jinu 0:6ba9b94b8997 269 len,
jinu 0:6ba9b94b8997 270 &(p_buffer[1]),
jinu 0:6ba9b94b8997 271 &buffer_length);
jinu 0:6ba9b94b8997 272 // @note: Should never fail.
jinu 0:6ba9b94b8997 273 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 274
jinu 0:6ba9b94b8997 275 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 276 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 277 (++buffer_length),
jinu 0:6ba9b94b8997 278 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 279 gap_device_name_set_rsp_dec);
jinu 0:6ba9b94b8997 280
jinu 0:6ba9b94b8997 281 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 282 }
jinu 0:6ba9b94b8997 283
jinu 0:6ba9b94b8997 284
jinu 0:6ba9b94b8997 285 /**@brief Command response callback function for @ref sd_ble_gap_appearance_set BLE command.
jinu 0:6ba9b94b8997 286 *
jinu 0:6ba9b94b8997 287 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 288 *
jinu 0:6ba9b94b8997 289 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 290 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 291 *
jinu 0:6ba9b94b8997 292 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 293 */
jinu 0:6ba9b94b8997 294 static uint32_t gap_appearance_set_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 295 {
jinu 0:6ba9b94b8997 296 uint32_t result_code;
jinu 0:6ba9b94b8997 297
jinu 0:6ba9b94b8997 298 const uint32_t err_code = ble_gap_appearance_set_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 299 // @note: Should never fail.
jinu 0:6ba9b94b8997 300 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 301
jinu 0:6ba9b94b8997 302 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 303
jinu 0:6ba9b94b8997 304 return result_code;
jinu 0:6ba9b94b8997 305 }
jinu 0:6ba9b94b8997 306
jinu 0:6ba9b94b8997 307
jinu 0:6ba9b94b8997 308 uint32_t sd_ble_gap_appearance_set(uint16_t appearance)
jinu 0:6ba9b94b8997 309 {
jinu 0:6ba9b94b8997 310 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 311
jinu 0:6ba9b94b8997 312 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 313 // documentation.
jinu 0:6ba9b94b8997 314
jinu 0:6ba9b94b8997 315 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 316 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 317 const uint32_t err_code = ble_gap_appearance_set_req_enc(appearance,
jinu 0:6ba9b94b8997 318 &(p_buffer[1]),
jinu 0:6ba9b94b8997 319 &buffer_length);
jinu 0:6ba9b94b8997 320 // @note: Should never fail.
jinu 0:6ba9b94b8997 321 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 322
jinu 0:6ba9b94b8997 323 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 324 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 325 (++buffer_length),
jinu 0:6ba9b94b8997 326 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 327 gap_appearance_set_rsp_dec);
jinu 0:6ba9b94b8997 328
jinu 0:6ba9b94b8997 329 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 330 }
jinu 0:6ba9b94b8997 331
jinu 0:6ba9b94b8997 332
jinu 0:6ba9b94b8997 333 /**@brief Command response callback function for @ref sd_ble_gap_ppcp_set BLE command.
jinu 0:6ba9b94b8997 334 *
jinu 0:6ba9b94b8997 335 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 336 *
jinu 0:6ba9b94b8997 337 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 338 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 339 *
jinu 0:6ba9b94b8997 340 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 341 */
jinu 0:6ba9b94b8997 342 static uint32_t gap_ppcp_set_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 343 {
jinu 0:6ba9b94b8997 344 uint32_t result_code;
jinu 0:6ba9b94b8997 345
jinu 0:6ba9b94b8997 346 const uint32_t err_code = ble_gap_ppcp_set_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 347 // @note: Should never fail.
jinu 0:6ba9b94b8997 348 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 349
jinu 0:6ba9b94b8997 350 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 351
jinu 0:6ba9b94b8997 352 return result_code;
jinu 0:6ba9b94b8997 353 }
jinu 0:6ba9b94b8997 354
jinu 0:6ba9b94b8997 355
jinu 0:6ba9b94b8997 356 uint32_t sd_ble_gap_ppcp_set(ble_gap_conn_params_t const * const p_conn_params)
jinu 0:6ba9b94b8997 357 {
jinu 0:6ba9b94b8997 358 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 359
jinu 0:6ba9b94b8997 360 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 361 // documentation.
jinu 0:6ba9b94b8997 362
jinu 0:6ba9b94b8997 363 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 364 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 365 const uint32_t err_code = ble_gap_ppcp_set_req_enc(p_conn_params,
jinu 0:6ba9b94b8997 366 &(p_buffer[1]),
jinu 0:6ba9b94b8997 367 &buffer_length);
jinu 0:6ba9b94b8997 368 // @note: Should never fail.
jinu 0:6ba9b94b8997 369 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 370
jinu 0:6ba9b94b8997 371 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 372 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 373 (++buffer_length),
jinu 0:6ba9b94b8997 374 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 375 gap_ppcp_set_rsp_dec);
jinu 0:6ba9b94b8997 376
jinu 0:6ba9b94b8997 377 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 378 }
jinu 0:6ba9b94b8997 379
jinu 0:6ba9b94b8997 380
jinu 0:6ba9b94b8997 381 /**@brief Command response callback function for @ref sd_ble_gap_adv_data_set BLE command.
jinu 0:6ba9b94b8997 382 *
jinu 0:6ba9b94b8997 383 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 384 *
jinu 0:6ba9b94b8997 385 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 386 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 387 *
jinu 0:6ba9b94b8997 388 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 389 */
jinu 0:6ba9b94b8997 390 static uint32_t gap_adv_data_set_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 391 {
jinu 0:6ba9b94b8997 392 uint32_t result_code;
jinu 0:6ba9b94b8997 393
jinu 0:6ba9b94b8997 394 const uint32_t err_code = ble_gap_adv_data_set_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 395 // @note: Should never fail.
jinu 0:6ba9b94b8997 396 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 397
jinu 0:6ba9b94b8997 398 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 399
jinu 0:6ba9b94b8997 400 return result_code;
jinu 0:6ba9b94b8997 401 }
jinu 0:6ba9b94b8997 402
jinu 0:6ba9b94b8997 403
jinu 0:6ba9b94b8997 404 uint32_t sd_ble_gap_adv_data_set(uint8_t const * const p_data,
jinu 0:6ba9b94b8997 405 uint8_t dlen,
jinu 0:6ba9b94b8997 406 uint8_t const * const p_sr_data,
jinu 0:6ba9b94b8997 407 uint8_t srdlen)
jinu 0:6ba9b94b8997 408 {
jinu 0:6ba9b94b8997 409 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 410
jinu 0:6ba9b94b8997 411 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 412 // documentation.
jinu 0:6ba9b94b8997 413
jinu 0:6ba9b94b8997 414 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 415 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 416 const uint32_t err_code = ble_gap_adv_data_set_req_enc(p_data,
jinu 0:6ba9b94b8997 417 dlen,
jinu 0:6ba9b94b8997 418 p_sr_data,
jinu 0:6ba9b94b8997 419 srdlen,
jinu 0:6ba9b94b8997 420 &(p_buffer[1]),
jinu 0:6ba9b94b8997 421 &buffer_length);
jinu 0:6ba9b94b8997 422 // @note: Should never fail.
jinu 0:6ba9b94b8997 423 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 424
jinu 0:6ba9b94b8997 425 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 426 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 427 (++buffer_length),
jinu 0:6ba9b94b8997 428 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 429 gap_adv_data_set_rsp_dec);
jinu 0:6ba9b94b8997 430
jinu 0:6ba9b94b8997 431 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 432 }
jinu 0:6ba9b94b8997 433
jinu 0:6ba9b94b8997 434
jinu 0:6ba9b94b8997 435 /**@brief Command response callback function for @ref sd_ble_gap_conn_param_update BLE command.
jinu 0:6ba9b94b8997 436 *
jinu 0:6ba9b94b8997 437 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 438 *
jinu 0:6ba9b94b8997 439 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 440 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 441 *
jinu 0:6ba9b94b8997 442 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 443 */
jinu 0:6ba9b94b8997 444 static uint32_t gap_conn_param_update_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 445 {
jinu 0:6ba9b94b8997 446 uint32_t result_code;
jinu 0:6ba9b94b8997 447
jinu 0:6ba9b94b8997 448 const uint32_t err_code = ble_gap_conn_param_update_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 449 // @note: Should never fail.
jinu 0:6ba9b94b8997 450 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 451
jinu 0:6ba9b94b8997 452 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 453
jinu 0:6ba9b94b8997 454 return result_code;
jinu 0:6ba9b94b8997 455 }
jinu 0:6ba9b94b8997 456
jinu 0:6ba9b94b8997 457
jinu 0:6ba9b94b8997 458 uint32_t sd_ble_gap_conn_param_update(uint16_t conn_handle,
jinu 0:6ba9b94b8997 459 ble_gap_conn_params_t const * const p_conn_params)
jinu 0:6ba9b94b8997 460 {
jinu 0:6ba9b94b8997 461 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 462
jinu 0:6ba9b94b8997 463 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 464 // documentation.
jinu 0:6ba9b94b8997 465
jinu 0:6ba9b94b8997 466 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 467 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 468 const uint32_t err_code = ble_gap_conn_param_update_req_enc(conn_handle,
jinu 0:6ba9b94b8997 469 p_conn_params,
jinu 0:6ba9b94b8997 470 &(p_buffer[1]),
jinu 0:6ba9b94b8997 471 &buffer_length);
jinu 0:6ba9b94b8997 472 // @note: Should never fail.
jinu 0:6ba9b94b8997 473 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 474
jinu 0:6ba9b94b8997 475 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 476 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 477 (++buffer_length),
jinu 0:6ba9b94b8997 478 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 479 gap_conn_param_update_rsp_dec);
jinu 0:6ba9b94b8997 480
jinu 0:6ba9b94b8997 481 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 482 }
jinu 0:6ba9b94b8997 483
jinu 0:6ba9b94b8997 484
jinu 0:6ba9b94b8997 485 /**@brief Command response callback function for @ref sd_ble_gap_disconnect BLE command.
jinu 0:6ba9b94b8997 486 *
jinu 0:6ba9b94b8997 487 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 488 *
jinu 0:6ba9b94b8997 489 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 490 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 491 *
jinu 0:6ba9b94b8997 492 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 493 */
jinu 0:6ba9b94b8997 494 static uint32_t gap_disconnect_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 495 {
jinu 0:6ba9b94b8997 496 uint32_t result_code;
jinu 0:6ba9b94b8997 497
jinu 0:6ba9b94b8997 498 const uint32_t err_code = ble_gap_disconnect_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 499 // @note: Should never fail.
jinu 0:6ba9b94b8997 500 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 501
jinu 0:6ba9b94b8997 502 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 503
jinu 0:6ba9b94b8997 504 return result_code;
jinu 0:6ba9b94b8997 505 }
jinu 0:6ba9b94b8997 506
jinu 0:6ba9b94b8997 507
jinu 0:6ba9b94b8997 508 uint32_t sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)
jinu 0:6ba9b94b8997 509 {
jinu 0:6ba9b94b8997 510 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 511
jinu 0:6ba9b94b8997 512 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 513 // documentation.
jinu 0:6ba9b94b8997 514
jinu 0:6ba9b94b8997 515 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 516 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 517 const uint32_t err_code = ble_gap_disconnect_req_enc(conn_handle,
jinu 0:6ba9b94b8997 518 hci_status_code,
jinu 0:6ba9b94b8997 519 &(p_buffer[1]),
jinu 0:6ba9b94b8997 520 &buffer_length);
jinu 0:6ba9b94b8997 521 // @note: Should never fail.
jinu 0:6ba9b94b8997 522 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 523
jinu 0:6ba9b94b8997 524 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 525 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 526 (++buffer_length),
jinu 0:6ba9b94b8997 527 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 528 gap_disconnect_rsp_dec);
jinu 0:6ba9b94b8997 529
jinu 0:6ba9b94b8997 530 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 531 }
jinu 0:6ba9b94b8997 532
jinu 0:6ba9b94b8997 533
jinu 0:6ba9b94b8997 534 /**@brief Command response callback function for @ref sd_ble_gap_sec_info_reply BLE command.
jinu 0:6ba9b94b8997 535 *
jinu 0:6ba9b94b8997 536 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 537 *
jinu 0:6ba9b94b8997 538 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 539 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 540 *
jinu 0:6ba9b94b8997 541 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 542 */
jinu 0:6ba9b94b8997 543 static uint32_t gap_sec_info_reply_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 544 {
jinu 0:6ba9b94b8997 545 uint32_t result_code;
jinu 0:6ba9b94b8997 546
jinu 0:6ba9b94b8997 547 const uint32_t err_code = ble_gap_sec_info_reply_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 548 // @note: Should never fail.
jinu 0:6ba9b94b8997 549 APP_ERROR_CHECK_BOOL(err_code != NRF_ERROR_INVALID_DATA);
jinu 0:6ba9b94b8997 550
jinu 0:6ba9b94b8997 551 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 552
jinu 0:6ba9b94b8997 553 return result_code;
jinu 0:6ba9b94b8997 554 }
jinu 0:6ba9b94b8997 555
jinu 0:6ba9b94b8997 556
jinu 0:6ba9b94b8997 557 uint32_t sd_ble_gap_sec_info_reply(uint16_t conn_handle,
jinu 0:6ba9b94b8997 558 ble_gap_enc_info_t const * const p_enc_info,
jinu 0:6ba9b94b8997 559 ble_gap_sign_info_t const * const p_sign_info)
jinu 0:6ba9b94b8997 560 {
jinu 0:6ba9b94b8997 561 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 562
jinu 0:6ba9b94b8997 563 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 564 // documentation.
jinu 0:6ba9b94b8997 565
jinu 0:6ba9b94b8997 566 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 567 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 568 const uint32_t err_code = ble_gap_sec_info_reply_req_enc(conn_handle,
jinu 0:6ba9b94b8997 569 p_enc_info,
jinu 0:6ba9b94b8997 570 p_sign_info,
jinu 0:6ba9b94b8997 571 &(p_buffer[1]),
jinu 0:6ba9b94b8997 572 &buffer_length);
jinu 0:6ba9b94b8997 573 // @note: Should never fail.
jinu 0:6ba9b94b8997 574 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 575
jinu 0:6ba9b94b8997 576 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 577 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 578 (++buffer_length),
jinu 0:6ba9b94b8997 579 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 580 gap_sec_info_reply_rsp_dec);
jinu 0:6ba9b94b8997 581
jinu 0:6ba9b94b8997 582 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 583 }
jinu 0:6ba9b94b8997 584
jinu 0:6ba9b94b8997 585
jinu 0:6ba9b94b8997 586 /**@brief Command response callback function for @ref sd_ble_gap_sec_params_reply BLE command.
jinu 0:6ba9b94b8997 587 *
jinu 0:6ba9b94b8997 588 * Callback for decoding the command response return code.
jinu 0:6ba9b94b8997 589 *
jinu 0:6ba9b94b8997 590 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 591 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 592 *
jinu 0:6ba9b94b8997 593 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 594 */
jinu 0:6ba9b94b8997 595 static uint32_t gap_sec_params_reply_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 596 {
jinu 0:6ba9b94b8997 597 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 598
jinu 0:6ba9b94b8997 599 const uint32_t err_code = ble_gap_sec_params_reply_rsp_dec(p_buffer, length, &result_code);
jinu 0:6ba9b94b8997 600 // @note: Should never fail.
jinu 0:6ba9b94b8997 601 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 602
jinu 0:6ba9b94b8997 603 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 604
jinu 0:6ba9b94b8997 605 return result_code;
jinu 0:6ba9b94b8997 606 }
jinu 0:6ba9b94b8997 607
jinu 0:6ba9b94b8997 608
jinu 0:6ba9b94b8997 609 uint32_t sd_ble_gap_sec_params_reply(uint16_t conn_handle,
jinu 0:6ba9b94b8997 610 uint8_t sec_status,
jinu 0:6ba9b94b8997 611 ble_gap_sec_params_t const * const p_sec_params)
jinu 0:6ba9b94b8997 612 {
jinu 0:6ba9b94b8997 613 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 614
jinu 0:6ba9b94b8997 615 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 616 // documentation.
jinu 0:6ba9b94b8997 617
jinu 0:6ba9b94b8997 618 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 619 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 620 const uint32_t err_code = ble_gap_sec_params_reply_req_enc(conn_handle,
jinu 0:6ba9b94b8997 621 sec_status,
jinu 0:6ba9b94b8997 622 p_sec_params,
jinu 0:6ba9b94b8997 623 &(p_buffer[1]),
jinu 0:6ba9b94b8997 624 &buffer_length);
jinu 0:6ba9b94b8997 625 // @note: Should never fail.
jinu 0:6ba9b94b8997 626 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 627
jinu 0:6ba9b94b8997 628 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 629 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 630 (++buffer_length),
jinu 0:6ba9b94b8997 631 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 632 gap_sec_params_reply_rsp_dec);
jinu 0:6ba9b94b8997 633
jinu 0:6ba9b94b8997 634 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 635 }
jinu 0:6ba9b94b8997 636
jinu 0:6ba9b94b8997 637
jinu 0:6ba9b94b8997 638 /**@brief Command response callback function for @ref sd_ble_gap_ppcp_get BLE command.
jinu 0:6ba9b94b8997 639 *
jinu 0:6ba9b94b8997 640 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 641 *
jinu 0:6ba9b94b8997 642 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 643 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 644 *
jinu 0:6ba9b94b8997 645 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 646 */
jinu 0:6ba9b94b8997 647 static uint32_t gap_ppcp_get_reply_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 648 {
jinu 0:6ba9b94b8997 649 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 650
jinu 0:6ba9b94b8997 651 const uint32_t err_code = ble_gap_ppcp_get_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 652 length,
jinu 0:6ba9b94b8997 653 m_output_params.gap_ppcp_get_out_params.p_conn_params,
jinu 0:6ba9b94b8997 654 &result_code);
jinu 0:6ba9b94b8997 655 // @note: Should never fail.
jinu 0:6ba9b94b8997 656 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 657
jinu 0:6ba9b94b8997 658 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 659
jinu 0:6ba9b94b8997 660 return result_code;
jinu 0:6ba9b94b8997 661 }
jinu 0:6ba9b94b8997 662
jinu 0:6ba9b94b8997 663
jinu 0:6ba9b94b8997 664 uint32_t sd_ble_gap_ppcp_get(ble_gap_conn_params_t * const p_conn_params)
jinu 0:6ba9b94b8997 665 {
jinu 0:6ba9b94b8997 666 m_output_params.gap_ppcp_get_out_params.p_conn_params = p_conn_params;
jinu 0:6ba9b94b8997 667
jinu 0:6ba9b94b8997 668 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 669
jinu 0:6ba9b94b8997 670 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 671 // documentation.
jinu 0:6ba9b94b8997 672
jinu 0:6ba9b94b8997 673 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 674 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 675 const uint32_t err_code = ble_gap_ppcp_get_req_enc(p_conn_params,
jinu 0:6ba9b94b8997 676 &(p_buffer[1]),
jinu 0:6ba9b94b8997 677 &buffer_length);
jinu 0:6ba9b94b8997 678 // @note: Should never fail.
jinu 0:6ba9b94b8997 679 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 680
jinu 0:6ba9b94b8997 681 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 682 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 683 (++buffer_length),
jinu 0:6ba9b94b8997 684 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 685 gap_ppcp_get_reply_rsp_dec);
jinu 0:6ba9b94b8997 686
jinu 0:6ba9b94b8997 687 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 688 }
jinu 0:6ba9b94b8997 689
jinu 0:6ba9b94b8997 690 /**@brief Command response callback function for @ref sd_ble_gap_address_get BLE command.
jinu 0:6ba9b94b8997 691 *
jinu 0:6ba9b94b8997 692 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 693 *
jinu 0:6ba9b94b8997 694 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 695 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 696 *
jinu 0:6ba9b94b8997 697 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 698 */
jinu 0:6ba9b94b8997 699 static uint32_t gap_address_get_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 700 {
jinu 0:6ba9b94b8997 701 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 702
jinu 0:6ba9b94b8997 703 const uint32_t err_code = ble_gap_address_get_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 704 length,
jinu 0:6ba9b94b8997 705 (ble_gap_addr_t *)mp_out_params[0],
jinu 0:6ba9b94b8997 706 &result_code);
jinu 0:6ba9b94b8997 707 // @note: Should never fail.
jinu 0:6ba9b94b8997 708 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 709
jinu 0:6ba9b94b8997 710 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 711
jinu 0:6ba9b94b8997 712 return result_code;
jinu 0:6ba9b94b8997 713 }
jinu 0:6ba9b94b8997 714
jinu 0:6ba9b94b8997 715
jinu 0:6ba9b94b8997 716 uint32_t sd_ble_gap_address_get(ble_gap_addr_t * const p_addr)
jinu 0:6ba9b94b8997 717 {
jinu 0:6ba9b94b8997 718 mp_out_params[0] = p_addr;
jinu 0:6ba9b94b8997 719
jinu 0:6ba9b94b8997 720 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 721
jinu 0:6ba9b94b8997 722 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 723 // documentation.
jinu 0:6ba9b94b8997 724
jinu 0:6ba9b94b8997 725 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 726 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 727 const uint32_t err_code = ble_gap_address_get_req_enc(p_addr,
jinu 0:6ba9b94b8997 728 &(p_buffer[1]),
jinu 0:6ba9b94b8997 729 &buffer_length);
jinu 0:6ba9b94b8997 730 // @note: Should never fail.
jinu 0:6ba9b94b8997 731 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 732
jinu 0:6ba9b94b8997 733 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 734 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 735 (++buffer_length),
jinu 0:6ba9b94b8997 736 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 737 gap_address_get_rsp_dec);
jinu 0:6ba9b94b8997 738
jinu 0:6ba9b94b8997 739 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 740 }
jinu 0:6ba9b94b8997 741
jinu 0:6ba9b94b8997 742 /**@brief Command response callback function for @ref sd_ble_gap_address_set BLE command.
jinu 0:6ba9b94b8997 743 *
jinu 0:6ba9b94b8997 744 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 745 *
jinu 0:6ba9b94b8997 746 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 747 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 748 *
jinu 0:6ba9b94b8997 749 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 750 */
jinu 0:6ba9b94b8997 751 static uint32_t gap_address_set_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 752 {
jinu 0:6ba9b94b8997 753 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 754
jinu 0:6ba9b94b8997 755 const uint32_t err_code = ble_gap_address_set_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 756 length,
jinu 0:6ba9b94b8997 757 &result_code);
jinu 0:6ba9b94b8997 758 // @note: Should never fail.
jinu 0:6ba9b94b8997 759 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 760
jinu 0:6ba9b94b8997 761 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 762
jinu 0:6ba9b94b8997 763 return result_code;
jinu 0:6ba9b94b8997 764 }
jinu 0:6ba9b94b8997 765
jinu 0:6ba9b94b8997 766
jinu 0:6ba9b94b8997 767 uint32_t sd_ble_gap_address_set(uint8_t addr_cycle_mode, ble_gap_addr_t const * const p_addr)
jinu 0:6ba9b94b8997 768 {
jinu 0:6ba9b94b8997 769
jinu 0:6ba9b94b8997 770 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 771
jinu 0:6ba9b94b8997 772 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 773 // documentation.
jinu 0:6ba9b94b8997 774
jinu 0:6ba9b94b8997 775 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 776 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 777 const uint32_t err_code = ble_gap_address_set_req_enc(addr_cycle_mode,
jinu 0:6ba9b94b8997 778 p_addr,
jinu 0:6ba9b94b8997 779 &(p_buffer[1]),
jinu 0:6ba9b94b8997 780 &buffer_length);
jinu 0:6ba9b94b8997 781 // @note: Should never fail.
jinu 0:6ba9b94b8997 782 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 783
jinu 0:6ba9b94b8997 784 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 785 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 786 (++buffer_length),
jinu 0:6ba9b94b8997 787 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 788 gap_address_set_rsp_dec);
jinu 0:6ba9b94b8997 789
jinu 0:6ba9b94b8997 790 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 791 }
jinu 0:6ba9b94b8997 792
jinu 0:6ba9b94b8997 793 /**@brief Command response callback function for @ref sd_ble_gap_adv_stop BLE command.
jinu 0:6ba9b94b8997 794 *
jinu 0:6ba9b94b8997 795 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 796 *
jinu 0:6ba9b94b8997 797 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 798 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 799 *
jinu 0:6ba9b94b8997 800 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 801 */
jinu 0:6ba9b94b8997 802 static uint32_t gap_adv_stop_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 803 {
jinu 0:6ba9b94b8997 804 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 805
jinu 0:6ba9b94b8997 806 const uint32_t err_code = ble_gap_adv_stop_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 807 length,
jinu 0:6ba9b94b8997 808 &result_code);
jinu 0:6ba9b94b8997 809 // @note: Should never fail.
jinu 0:6ba9b94b8997 810 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 811
jinu 0:6ba9b94b8997 812 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 813
jinu 0:6ba9b94b8997 814 return result_code;
jinu 0:6ba9b94b8997 815 }
jinu 0:6ba9b94b8997 816
jinu 0:6ba9b94b8997 817
jinu 0:6ba9b94b8997 818 uint32_t sd_ble_gap_adv_stop(void)
jinu 0:6ba9b94b8997 819 {
jinu 0:6ba9b94b8997 820 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 821
jinu 0:6ba9b94b8997 822 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 823 // documentation.
jinu 0:6ba9b94b8997 824
jinu 0:6ba9b94b8997 825 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 826 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 827 const uint32_t err_code = ble_gap_adv_stop_req_enc(&(p_buffer[1]),
jinu 0:6ba9b94b8997 828 &buffer_length);
jinu 0:6ba9b94b8997 829 // @note: Should never fail.
jinu 0:6ba9b94b8997 830 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 831
jinu 0:6ba9b94b8997 832 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 833 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 834 (++buffer_length),
jinu 0:6ba9b94b8997 835 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 836 gap_adv_stop_rsp_dec);
jinu 0:6ba9b94b8997 837
jinu 0:6ba9b94b8997 838 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 839 }
jinu 0:6ba9b94b8997 840
jinu 0:6ba9b94b8997 841 /**@brief Command response callback function for @ref sd_ble_gap_auth_key_reply BLE command.
jinu 0:6ba9b94b8997 842 *
jinu 0:6ba9b94b8997 843 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 844 *
jinu 0:6ba9b94b8997 845 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 846 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 847 *
jinu 0:6ba9b94b8997 848 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 849 */
jinu 0:6ba9b94b8997 850 static uint32_t gap_auth_key_reply_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 851 {
jinu 0:6ba9b94b8997 852 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 853
jinu 0:6ba9b94b8997 854 const uint32_t err_code = ble_gap_auth_key_reply_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 855 length,
jinu 0:6ba9b94b8997 856 &result_code);
jinu 0:6ba9b94b8997 857 // @note: Should never fail.
jinu 0:6ba9b94b8997 858 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 859
jinu 0:6ba9b94b8997 860 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 861
jinu 0:6ba9b94b8997 862 return result_code;
jinu 0:6ba9b94b8997 863 }
jinu 0:6ba9b94b8997 864
jinu 0:6ba9b94b8997 865
jinu 0:6ba9b94b8997 866 uint32_t sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const * const key)
jinu 0:6ba9b94b8997 867 {
jinu 0:6ba9b94b8997 868 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 869
jinu 0:6ba9b94b8997 870 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 871 // documentation.
jinu 0:6ba9b94b8997 872
jinu 0:6ba9b94b8997 873 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 874 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 875 const uint32_t err_code = ble_gap_auth_key_reply_req_enc(conn_handle, key_type, key,
jinu 0:6ba9b94b8997 876 &(p_buffer[1]),&buffer_length);
jinu 0:6ba9b94b8997 877 // @note: Should never fail.
jinu 0:6ba9b94b8997 878 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 879
jinu 0:6ba9b94b8997 880 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 881 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 882 (++buffer_length),
jinu 0:6ba9b94b8997 883 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 884 gap_auth_key_reply_rsp_dec);
jinu 0:6ba9b94b8997 885
jinu 0:6ba9b94b8997 886 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 887 }
jinu 0:6ba9b94b8997 888
jinu 0:6ba9b94b8997 889 /**@brief Command response callback function for @ref sd_ble_gap_authenticate BLE command.
jinu 0:6ba9b94b8997 890 *
jinu 0:6ba9b94b8997 891 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 892 *
jinu 0:6ba9b94b8997 893 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 894 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 895 *
jinu 0:6ba9b94b8997 896 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 897 */
jinu 0:6ba9b94b8997 898 static uint32_t gap_authenticate_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 899 {
jinu 0:6ba9b94b8997 900 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 901
jinu 0:6ba9b94b8997 902 const uint32_t err_code = ble_gap_authenticate_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 903 length,
jinu 0:6ba9b94b8997 904 &result_code);
jinu 0:6ba9b94b8997 905 // @note: Should never fail.
jinu 0:6ba9b94b8997 906 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 907
jinu 0:6ba9b94b8997 908 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 909
jinu 0:6ba9b94b8997 910 return result_code;
jinu 0:6ba9b94b8997 911 }
jinu 0:6ba9b94b8997 912
jinu 0:6ba9b94b8997 913
jinu 0:6ba9b94b8997 914 uint32_t sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const * const p_sec_params)
jinu 0:6ba9b94b8997 915 {
jinu 0:6ba9b94b8997 916 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 917
jinu 0:6ba9b94b8997 918 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 919 // documentation.
jinu 0:6ba9b94b8997 920
jinu 0:6ba9b94b8997 921 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 922 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 923 const uint32_t err_code = ble_gap_authenticate_req_enc(conn_handle, p_sec_params,
jinu 0:6ba9b94b8997 924 &(p_buffer[1]),&buffer_length);
jinu 0:6ba9b94b8997 925 // @note: Should never fail.
jinu 0:6ba9b94b8997 926 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 927
jinu 0:6ba9b94b8997 928 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 929 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 930 (++buffer_length),
jinu 0:6ba9b94b8997 931 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 932 gap_authenticate_rsp_dec);
jinu 0:6ba9b94b8997 933
jinu 0:6ba9b94b8997 934 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 935 }
jinu 0:6ba9b94b8997 936
jinu 0:6ba9b94b8997 937 /**@brief Command response callback function for @ref sd_ble_gap_conn_sec_get BLE command.
jinu 0:6ba9b94b8997 938 *
jinu 0:6ba9b94b8997 939 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 940 *
jinu 0:6ba9b94b8997 941 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 942 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 943 *
jinu 0:6ba9b94b8997 944 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 945 */
jinu 0:6ba9b94b8997 946 static uint32_t gap_conn_sec_get_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 947 {
jinu 0:6ba9b94b8997 948 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 949
jinu 0:6ba9b94b8997 950 const uint32_t err_code = ble_gap_conn_sec_get_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 951 length,
jinu 0:6ba9b94b8997 952 (ble_gap_conn_sec_t **)&mp_out_params[0],
jinu 0:6ba9b94b8997 953 &result_code);
jinu 0:6ba9b94b8997 954 // @note: Should never fail.
jinu 0:6ba9b94b8997 955 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 956
jinu 0:6ba9b94b8997 957 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 958
jinu 0:6ba9b94b8997 959 return result_code;
jinu 0:6ba9b94b8997 960 }
jinu 0:6ba9b94b8997 961
jinu 0:6ba9b94b8997 962
jinu 0:6ba9b94b8997 963 uint32_t sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t * const p_conn_sec)
jinu 0:6ba9b94b8997 964 {
jinu 0:6ba9b94b8997 965 mp_out_params[0] = p_conn_sec;
jinu 0:6ba9b94b8997 966 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 967
jinu 0:6ba9b94b8997 968 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 969 // documentation.
jinu 0:6ba9b94b8997 970
jinu 0:6ba9b94b8997 971 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 972 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 973 const uint32_t err_code = ble_gap_conn_sec_get_req_enc(conn_handle, p_conn_sec,
jinu 0:6ba9b94b8997 974 &(p_buffer[1]),&buffer_length);
jinu 0:6ba9b94b8997 975 // @note: Should never fail.
jinu 0:6ba9b94b8997 976 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 977
jinu 0:6ba9b94b8997 978 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 979 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 980 (++buffer_length),
jinu 0:6ba9b94b8997 981 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 982 gap_conn_sec_get_rsp_dec);
jinu 0:6ba9b94b8997 983
jinu 0:6ba9b94b8997 984 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 985 }
jinu 0:6ba9b94b8997 986
jinu 0:6ba9b94b8997 987 /**@brief Command response callback function for @ref sd_ble_gap_rssi_start BLE command.
jinu 0:6ba9b94b8997 988 *
jinu 0:6ba9b94b8997 989 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 990 *
jinu 0:6ba9b94b8997 991 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 992 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 993 *
jinu 0:6ba9b94b8997 994 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 995 */
jinu 0:6ba9b94b8997 996 static uint32_t gap_rssi_start_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 997 {
jinu 0:6ba9b94b8997 998 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 999
jinu 0:6ba9b94b8997 1000 const uint32_t err_code = ble_gap_rssi_start_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 1001 length,
jinu 0:6ba9b94b8997 1002 &result_code);
jinu 0:6ba9b94b8997 1003 // @note: Should never fail.
jinu 0:6ba9b94b8997 1004 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 1005
jinu 0:6ba9b94b8997 1006 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 1007
jinu 0:6ba9b94b8997 1008 return result_code;
jinu 0:6ba9b94b8997 1009 }
jinu 0:6ba9b94b8997 1010
jinu 0:6ba9b94b8997 1011
jinu 0:6ba9b94b8997 1012 uint32_t sd_ble_gap_rssi_start(uint16_t conn_handle)
jinu 0:6ba9b94b8997 1013 {
jinu 0:6ba9b94b8997 1014 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 1015
jinu 0:6ba9b94b8997 1016 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 1017 // documentation.
jinu 0:6ba9b94b8997 1018
jinu 0:6ba9b94b8997 1019 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 1020 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 1021 const uint32_t err_code = ble_gap_rssi_start_req_enc(conn_handle,
jinu 0:6ba9b94b8997 1022 &(p_buffer[1]),&buffer_length);
jinu 0:6ba9b94b8997 1023 // @note: Should never fail.
jinu 0:6ba9b94b8997 1024 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 1025
jinu 0:6ba9b94b8997 1026 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 1027 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 1028 (++buffer_length),
jinu 0:6ba9b94b8997 1029 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 1030 gap_rssi_start_rsp_dec);
jinu 0:6ba9b94b8997 1031
jinu 0:6ba9b94b8997 1032 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 1033 }
jinu 0:6ba9b94b8997 1034
jinu 0:6ba9b94b8997 1035 /**@brief Command response callback function for @ref sd_ble_gap_rssi_stop BLE command.
jinu 0:6ba9b94b8997 1036 *
jinu 0:6ba9b94b8997 1037 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 1038 *
jinu 0:6ba9b94b8997 1039 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 1040 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 1041 *
jinu 0:6ba9b94b8997 1042 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 1043 */
jinu 0:6ba9b94b8997 1044 static uint32_t gap_rssi_stop_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 1045 {
jinu 0:6ba9b94b8997 1046 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 1047
jinu 0:6ba9b94b8997 1048 const uint32_t err_code = ble_gap_rssi_stop_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 1049 length,
jinu 0:6ba9b94b8997 1050 &result_code);
jinu 0:6ba9b94b8997 1051 // @note: Should never fail.
jinu 0:6ba9b94b8997 1052 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 1053
jinu 0:6ba9b94b8997 1054 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 1055
jinu 0:6ba9b94b8997 1056 return result_code;
jinu 0:6ba9b94b8997 1057 }
jinu 0:6ba9b94b8997 1058
jinu 0:6ba9b94b8997 1059
jinu 0:6ba9b94b8997 1060 uint32_t sd_ble_gap_rssi_stop(uint16_t conn_handle)
jinu 0:6ba9b94b8997 1061 {
jinu 0:6ba9b94b8997 1062 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 1063
jinu 0:6ba9b94b8997 1064 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 1065 // documentation.
jinu 0:6ba9b94b8997 1066
jinu 0:6ba9b94b8997 1067 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 1068 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 1069 const uint32_t err_code = ble_gap_rssi_stop_req_enc(conn_handle,
jinu 0:6ba9b94b8997 1070 &(p_buffer[1]),&buffer_length);
jinu 0:6ba9b94b8997 1071 // @note: Should never fail.
jinu 0:6ba9b94b8997 1072 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 1073
jinu 0:6ba9b94b8997 1074 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 1075 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 1076 (++buffer_length),
jinu 0:6ba9b94b8997 1077 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 1078 gap_rssi_stop_rsp_dec);
jinu 0:6ba9b94b8997 1079
jinu 0:6ba9b94b8997 1080 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 1081 }
jinu 0:6ba9b94b8997 1082
jinu 0:6ba9b94b8997 1083 /**@brief Command response callback function for @ref sd_ble_gap_tx_power_set BLE command.
jinu 0:6ba9b94b8997 1084 *
jinu 0:6ba9b94b8997 1085 * Callback for decoding the output parameters and the command response return code.
jinu 0:6ba9b94b8997 1086 *
jinu 0:6ba9b94b8997 1087 * @param[in] p_buffer Pointer to begin of command response buffer.
jinu 0:6ba9b94b8997 1088 * @param[in] length Length of data in bytes.
jinu 0:6ba9b94b8997 1089 *
jinu 0:6ba9b94b8997 1090 * @return Decoded command response return code.
jinu 0:6ba9b94b8997 1091 */
jinu 0:6ba9b94b8997 1092 static uint32_t gap_tx_power_set_rsp_dec(const uint8_t * p_buffer, uint32_t length)
jinu 0:6ba9b94b8997 1093 {
jinu 0:6ba9b94b8997 1094 uint32_t result_code = 0;
jinu 0:6ba9b94b8997 1095
jinu 0:6ba9b94b8997 1096 const uint32_t err_code = ble_gap_tx_power_set_rsp_dec(p_buffer,
jinu 0:6ba9b94b8997 1097 length,
jinu 0:6ba9b94b8997 1098 &result_code);
jinu 0:6ba9b94b8997 1099 // @note: Should never fail.
jinu 0:6ba9b94b8997 1100 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 1101
jinu 0:6ba9b94b8997 1102 ble_encode_transport_tx_free();
jinu 0:6ba9b94b8997 1103
jinu 0:6ba9b94b8997 1104 return result_code;
jinu 0:6ba9b94b8997 1105 }
jinu 0:6ba9b94b8997 1106
jinu 0:6ba9b94b8997 1107
jinu 0:6ba9b94b8997 1108 uint32_t sd_ble_gap_tx_power_set(int8_t tx_power)
jinu 0:6ba9b94b8997 1109 {
jinu 0:6ba9b94b8997 1110 uint8_t * p_buffer = ble_encode_transport_tx_alloc();
jinu 0:6ba9b94b8997 1111
jinu 0:6ba9b94b8997 1112 // @note: No NULL check required as error checked by called module as defined in API
jinu 0:6ba9b94b8997 1113 // documentation.
jinu 0:6ba9b94b8997 1114
jinu 0:6ba9b94b8997 1115 p_buffer[0] = BLE_RPC_PKT_CMD;
jinu 0:6ba9b94b8997 1116 uint32_t buffer_length = HCI_TRANSPORT_PKT_DATA_SIZE - 1u;
jinu 0:6ba9b94b8997 1117 const uint32_t err_code = ble_gap_tx_power_set_req_enc(tx_power,
jinu 0:6ba9b94b8997 1118 &(p_buffer[1]),&buffer_length);
jinu 0:6ba9b94b8997 1119 // @note: Should never fail.
jinu 0:6ba9b94b8997 1120 APP_ERROR_CHECK(err_code);
jinu 0:6ba9b94b8997 1121
jinu 0:6ba9b94b8997 1122 // @note: Increment buffer length as internally managed packet type field must be included.
jinu 0:6ba9b94b8997 1123 ble_encode_transport_cmd_write(p_buffer,
jinu 0:6ba9b94b8997 1124 (++buffer_length),
jinu 0:6ba9b94b8997 1125 BLE_ENCODE_WRITE_MODE_RESP,
jinu 0:6ba9b94b8997 1126 gap_tx_power_set_rsp_dec);
jinu 0:6ba9b94b8997 1127
jinu 0:6ba9b94b8997 1128 return NRF_SUCCESS;
jinu 0:6ba9b94b8997 1129 }
jinu 0:6ba9b94b8997 1130
jinu 0:6ba9b94b8997 1131