High level Bluetooth Low Energy API and radio abstraction layer

Dependents:   BLE_ANCS_SDAPI BLE_temperature BLE_HeartRate BLE_ANCS_SDAPI_IRC ... more

Overview

The BLE_API is a high level abstraction for using Bluetooth Low Energy on multiple platforms. For details and examples using the BLE_API please see the BLE_API Summary Page. Or click on the API Documentation tab above.

Supported Services

Supported services can be found in the BLE_API/services folder.

Committer:
vcoubard
Date:
Wed Apr 06 19:15:30 2016 +0100
Revision:
1179:4ab722f8dca0
Parent:
1162:2cb412b35d95
Child:
1183:1589830dbdb7
Synchronized with git rev ca632aaf
Author: Andres Amaya Garcia
Update Gap state after advertising times out

The BLE API was not updating the Gap internal state when the advertising stops
because of a user timeout. This commit fixes the issue by updating the internal
state structure in Gap just before the registered callbacks are notified of the
advertising timeout.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vcoubard 1162:2cb412b35d95 1 /* mbed Microcontroller Library
vcoubard 1162:2cb412b35d95 2 * Copyright (c) 2006-2013 ARM Limited
vcoubard 1162:2cb412b35d95 3 *
vcoubard 1162:2cb412b35d95 4 * Licensed under the Apache License, Version 2.0 (the "License");
vcoubard 1162:2cb412b35d95 5 * you may not use this file except in compliance with the License.
vcoubard 1162:2cb412b35d95 6 * You may obtain a copy of the License at
vcoubard 1162:2cb412b35d95 7 *
vcoubard 1162:2cb412b35d95 8 * http://www.apache.org/licenses/LICENSE-2.0
vcoubard 1162:2cb412b35d95 9 *
vcoubard 1162:2cb412b35d95 10 * Unless required by applicable law or agreed to in writing, software
vcoubard 1162:2cb412b35d95 11 * distributed under the License is distributed on an "AS IS" BASIS,
vcoubard 1162:2cb412b35d95 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
vcoubard 1162:2cb412b35d95 13 * See the License for the specific language governing permissions and
vcoubard 1162:2cb412b35d95 14 * limitations under the License.
vcoubard 1162:2cb412b35d95 15 */
vcoubard 1162:2cb412b35d95 16
vcoubard 1162:2cb412b35d95 17 #ifndef __GATT_CALLBACK_PARAM_TYPES_H__
vcoubard 1162:2cb412b35d95 18 #define __GATT_CALLBACK_PARAM_TYPES_H__
vcoubard 1162:2cb412b35d95 19
vcoubard 1162:2cb412b35d95 20 struct GattWriteCallbackParams {
vcoubard 1162:2cb412b35d95 21 enum WriteOp_t {
vcoubard 1162:2cb412b35d95 22 OP_INVALID = 0x00, /**< Invalid operation. */
vcoubard 1162:2cb412b35d95 23 OP_WRITE_REQ = 0x01, /**< Write request. */
vcoubard 1162:2cb412b35d95 24 OP_WRITE_CMD = 0x02, /**< Write command. */
vcoubard 1162:2cb412b35d95 25 OP_SIGN_WRITE_CMD = 0x03, /**< Signed write command. */
vcoubard 1162:2cb412b35d95 26 OP_PREP_WRITE_REQ = 0x04, /**< Prepare write request. */
vcoubard 1162:2cb412b35d95 27 OP_EXEC_WRITE_REQ_CANCEL = 0x05, /**< Execute write request: cancel all prepared writes. */
vcoubard 1162:2cb412b35d95 28 OP_EXEC_WRITE_REQ_NOW = 0x06, /**< Execute write request: immediately execute all prepared writes. */
vcoubard 1162:2cb412b35d95 29 };
vcoubard 1162:2cb412b35d95 30
vcoubard 1179:4ab722f8dca0 31 Gap::Handle_t connHandle;
vcoubard 1179:4ab722f8dca0 32 GattAttribute::Handle_t handle;
vcoubard 1179:4ab722f8dca0 33 WriteOp_t writeOp; /**< Type of write operation. */
vcoubard 1179:4ab722f8dca0 34 uint16_t offset; /**< Offset for the write operation. */
vcoubard 1179:4ab722f8dca0 35 uint16_t len;
vcoubard 1179:4ab722f8dca0 36 const uint8_t *data; /* @note: Data might not persist beyond the callback; make a local copy if needed. */
vcoubard 1162:2cb412b35d95 37 };
vcoubard 1162:2cb412b35d95 38
vcoubard 1162:2cb412b35d95 39 struct GattReadCallbackParams {
vcoubard 1179:4ab722f8dca0 40 Gap::Handle_t connHandle;
vcoubard 1179:4ab722f8dca0 41 GattAttribute::Handle_t handle;
vcoubard 1179:4ab722f8dca0 42 uint16_t offset; /**< Offset for the read operation. */
vcoubard 1179:4ab722f8dca0 43 uint16_t len;
vcoubard 1179:4ab722f8dca0 44 const uint8_t *data; /* @note: Data might not persist beyond the callback; make a local copy if needed. */
vcoubard 1162:2cb412b35d95 45 };
vcoubard 1162:2cb412b35d95 46
vcoubard 1162:2cb412b35d95 47 enum GattAuthCallbackReply_t {
vcoubard 1162:2cb412b35d95 48 AUTH_CALLBACK_REPLY_SUCCESS = 0x00, /**< Success. */
vcoubard 1162:2cb412b35d95 49 AUTH_CALLBACK_REPLY_ATTERR_INVALID_HANDLE = 0x0101, /**< ATT Error: Invalid attribute handle. */
vcoubard 1162:2cb412b35d95 50 AUTH_CALLBACK_REPLY_ATTERR_READ_NOT_PERMITTED = 0x0102, /**< ATT Error: Read not permitted. */
vcoubard 1162:2cb412b35d95 51 AUTH_CALLBACK_REPLY_ATTERR_WRITE_NOT_PERMITTED = 0x0103, /**< ATT Error: Write not permitted. */
vcoubard 1162:2cb412b35d95 52 AUTH_CALLBACK_REPLY_ATTERR_INSUF_AUTHENTICATION = 0x0105, /**< ATT Error: Authenticated link required. */
vcoubard 1162:2cb412b35d95 53 AUTH_CALLBACK_REPLY_ATTERR_INVALID_OFFSET = 0x0107, /**< ATT Error: The specified offset was past the end of the attribute. */
vcoubard 1162:2cb412b35d95 54 AUTH_CALLBACK_REPLY_ATTERR_INSUF_AUTHORIZATION = 0x0108, /**< ATT Error: Used in ATT as "insufficient authorization". */
vcoubard 1162:2cb412b35d95 55 AUTH_CALLBACK_REPLY_ATTERR_PREPARE_QUEUE_FULL = 0x0109, /**< ATT Error: Used in ATT as "prepare queue full". */
vcoubard 1162:2cb412b35d95 56 AUTH_CALLBACK_REPLY_ATTERR_ATTRIBUTE_NOT_FOUND = 0x010A, /**< ATT Error: Used in ATT as "attribute not found". */
vcoubard 1162:2cb412b35d95 57 AUTH_CALLBACK_REPLY_ATTERR_ATTRIBUTE_NOT_LONG = 0x010B, /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */
vcoubard 1162:2cb412b35d95 58 AUTH_CALLBACK_REPLY_ATTERR_INVALID_ATT_VAL_LENGTH = 0x010D, /**< ATT Error: Invalid value size. */
vcoubard 1162:2cb412b35d95 59 AUTH_CALLBACK_REPLY_ATTERR_INSUF_RESOURCES = 0x0111, /**< ATT Error: Encrypted link required. */
vcoubard 1162:2cb412b35d95 60 };
vcoubard 1162:2cb412b35d95 61
vcoubard 1162:2cb412b35d95 62 struct GattWriteAuthCallbackParams {
vcoubard 1179:4ab722f8dca0 63 Gap::Handle_t connHandle;
vcoubard 1179:4ab722f8dca0 64 GattAttribute::Handle_t handle;
vcoubard 1179:4ab722f8dca0 65 uint16_t offset; /**< Offset for the write operation. */
vcoubard 1179:4ab722f8dca0 66 uint16_t len; /**< Length of the incoming data. */
vcoubard 1179:4ab722f8dca0 67 const uint8_t *data; /**< Incoming data, variable length. */
vcoubard 1179:4ab722f8dca0 68 GattAuthCallbackReply_t authorizationReply; /* This is the out parameter that the callback
vcoubard 1179:4ab722f8dca0 69 * needs to set to AUTH_CALLBACK_REPLY_SUCCESS
vcoubard 1179:4ab722f8dca0 70 * for the request to proceed. */
vcoubard 1162:2cb412b35d95 71 };
vcoubard 1162:2cb412b35d95 72
vcoubard 1162:2cb412b35d95 73 struct GattReadAuthCallbackParams {
vcoubard 1179:4ab722f8dca0 74 Gap::Handle_t connHandle;
vcoubard 1179:4ab722f8dca0 75 GattAttribute::Handle_t handle;
vcoubard 1179:4ab722f8dca0 76 uint16_t offset; /**< Offset for the read operation. */
vcoubard 1179:4ab722f8dca0 77 uint16_t len; /**< Optional: new length of the outgoing data. */
vcoubard 1179:4ab722f8dca0 78 uint8_t *data; /**< Optional: new outgoing data. Leave at NULL if data is unchanged. */
vcoubard 1179:4ab722f8dca0 79 GattAuthCallbackReply_t authorizationReply; /* This is the out parameter that the callback
vcoubard 1179:4ab722f8dca0 80 * needs to set to AUTH_CALLBACK_REPLY_SUCCESS
vcoubard 1179:4ab722f8dca0 81 * for the request to proceed. */
vcoubard 1162:2cb412b35d95 82 };
vcoubard 1162:2cb412b35d95 83
vcoubard 1179:4ab722f8dca0 84 /* For encapsulating handle-value update events (notifications or indications) generated at the remote server. */
vcoubard 1162:2cb412b35d95 85 struct GattHVXCallbackParams {
vcoubard 1179:4ab722f8dca0 86 Gap::Handle_t connHandle;
vcoubard 1179:4ab722f8dca0 87 GattAttribute::Handle_t handle; /**< Attribute Handle to which the HVx operation applies. */
vcoubard 1179:4ab722f8dca0 88 HVXType_t type; /**< Indication or Notification, see @ref HVXType_t. */
vcoubard 1179:4ab722f8dca0 89 uint16_t len; /**< Attribute data length. */
vcoubard 1179:4ab722f8dca0 90 const uint8_t *data; /**< Attribute data, variable length. */
vcoubard 1162:2cb412b35d95 91 };
vcoubard 1162:2cb412b35d95 92
rgrover1 716:11b41f651697 93 #endif /*__GATT_CALLBACK_PARAM_TYPES_H__*/