Minor temporary patch to allow DFU packet callback

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Mon Mar 23 16:28:09 2015 +0000
Revision:
325:501ad8b8bbe5
Parent:
300:d9a39f759a6a
Synchronized with git rev c7a2b9bb
Author: Rohit Grover
Release 0.3.0
==============

Enhancements
~~~~~~~~~~~~

* BLEDevice::setAdvertisingInterval() uses milliseconds as the unit for its
argument. If advertising interval is set to 0, advertising is stopped. If
advertising interval is smaller than the minimum value supported, then the
minimum value is used instead.

* Add an enumeration called GattCharacteristicAuthCBReply_t to capture a
status code from read/write authorization callback. Previously it used to
return only a bool.

* Add APIs for getMinAdvertisingInterval() and variants.

Bugfixes
~~~~~~~~

* URIBeaconConfigService uses better write-authorization filters. It now
passes tests defined in Google's validator app.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 264:eea11cfb6753 1 /* mbed Microcontroller Library
rgrover1 264:eea11cfb6753 2 * Copyright (c) 2006-2013 ARM Limited
rgrover1 264:eea11cfb6753 3 *
rgrover1 264:eea11cfb6753 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 264:eea11cfb6753 5 * you may not use this file except in compliance with the License.
rgrover1 264:eea11cfb6753 6 * You may obtain a copy of the License at
rgrover1 264:eea11cfb6753 7 *
rgrover1 264:eea11cfb6753 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 264:eea11cfb6753 9 *
rgrover1 264:eea11cfb6753 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 264:eea11cfb6753 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 264:eea11cfb6753 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 264:eea11cfb6753 13 * See the License for the specific language governing permissions and
rgrover1 264:eea11cfb6753 14 * limitations under the License.
rgrover1 264:eea11cfb6753 15 */
rgrover1 264:eea11cfb6753 16
rgrover1 264:eea11cfb6753 17 #ifndef __GATT_CHARACTERISTIC_CALLBACK_PARAMS_H__
rgrover1 264:eea11cfb6753 18 #define __GATT_CHARACTERISTIC_CALLBACK_PARAMS_H__
rgrover1 264:eea11cfb6753 19
rgrover1 264:eea11cfb6753 20 struct GattCharacteristicWriteCBParams {
rgrover1 264:eea11cfb6753 21 GattAttribute::Handle_t charHandle;
rgrover1 264:eea11cfb6753 22 enum Type {
rgrover1 264:eea11cfb6753 23 GATTS_CHAR_OP_INVALID = 0x00, /**< Invalid Operation. */
rgrover1 264:eea11cfb6753 24 GATTS_CHAR_OP_WRITE_REQ = 0x01, /**< Write Request. */
rgrover1 264:eea11cfb6753 25 GATTS_CHAR_OP_WRITE_CMD = 0x02, /**< Write Command. */
rgrover1 264:eea11cfb6753 26 GATTS_CHAR_OP_SIGN_WRITE_CMD = 0x03, /**< Signed Write Command. */
rgrover1 264:eea11cfb6753 27 GATTS_CHAR_OP_PREP_WRITE_REQ = 0x04, /**< Prepare Write Request. */
rgrover1 264:eea11cfb6753 28 GATTS_CHAR_OP_EXEC_WRITE_REQ_CANCEL = 0x05, /**< Execute Write Request: Cancel all prepared writes. */
rgrover1 264:eea11cfb6753 29 GATTS_CHAR_OP_EXEC_WRITE_REQ_NOW = 0x06, /**< Execute Write Request: Immediately execute all prepared writes. */
rgrover1 264:eea11cfb6753 30 } op; /**< Type of write operation, */
rgrover1 264:eea11cfb6753 31 uint16_t offset; /**< Offset for the write operation. */
rgrover1 264:eea11cfb6753 32 uint16_t len; /**< Length of the incoming data. */
rgrover1 264:eea11cfb6753 33 const uint8_t *data; /**< Incoming data, variable length. */
rgrover1 264:eea11cfb6753 34 };
rgrover1 264:eea11cfb6753 35
rgrover1 300:d9a39f759a6a 36 struct GattCharacteristicReadCBParams {
rgrover1 300:d9a39f759a6a 37 GattAttribute::Handle_t charHandle;
rgrover1 300:d9a39f759a6a 38 enum Type {
rgrover1 300:d9a39f759a6a 39 GATTS_CHAR_OP_INVALID = 0x00, /**< Invalid Operation. */
rgrover1 300:d9a39f759a6a 40 GATTS_CHAR_OP_READ_REQ = 0x0A, /**< Read Request. */
rgrover1 300:d9a39f759a6a 41 } op; /**< Type of write operation, */
rgrover1 300:d9a39f759a6a 42 uint16_t offset; /**< Offset for the read operation. */
rgrover1 300:d9a39f759a6a 43 uint16_t *len; /**< Length of the outgoing data. */
rgrover1 300:d9a39f759a6a 44 uint8_t *data; /**< Outgoing data, variable length. */
rgrover1 300:d9a39f759a6a 45 };
rgrover1 300:d9a39f759a6a 46
rgrover1 325:501ad8b8bbe5 47 enum GattCharacteristicAuthCBReply_t {
rgrover1 325:501ad8b8bbe5 48 AUTH_CALLBACK_REPLY_SUCCESS = 0x00, /**< Success. */
rgrover1 325:501ad8b8bbe5 49 AUTH_CALLBACK_REPLY_ATTERR_INVALID_HANDLE = 0x0101, /**< ATT Error: Invalid Attribute Handle. */
rgrover1 325:501ad8b8bbe5 50 AUTH_CALLBACK_REPLY_ATTERR_READ_NOT_PERMITTED = 0x0102, /**< ATT Error: Read not permitted. */
rgrover1 325:501ad8b8bbe5 51 AUTH_CALLBACK_REPLY_ATTERR_WRITE_NOT_PERMITTED = 0x0103, /**< ATT Error: Write not permitted. */
rgrover1 325:501ad8b8bbe5 52 AUTH_CALLBACK_REPLY_ATTERR_INSUF_AUTHENTICATION = 0x0105, /**< ATT Error: Authenticated link required. */
rgrover1 325:501ad8b8bbe5 53 AUTH_CALLBACK_REPLY_ATTERR_INVALID_OFFSET = 0x0107, /**< ATT Error: Offset specified was past the end of the attribute. */
rgrover1 325:501ad8b8bbe5 54 AUTH_CALLBACK_REPLY_ATTERR_INSUF_AUTHORIZATION = 0x0108, /**< ATT Error: Used in ATT as Insufficient Authorisation. */
rgrover1 325:501ad8b8bbe5 55 AUTH_CALLBACK_REPLY_ATTERR_PREPARE_QUEUE_FULL = 0x0109, /**< ATT Error: Used in ATT as Prepare Queue Full. */
rgrover1 325:501ad8b8bbe5 56 AUTH_CALLBACK_REPLY_ATTERR_ATTRIBUTE_NOT_FOUND = 0x010A, /**< ATT Error: Used in ATT as Attribute not found. */
rgrover1 325:501ad8b8bbe5 57 AUTH_CALLBACK_REPLY_ATTERR_ATTRIBUTE_NOT_LONG = 0x010B, /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */
rgrover1 325:501ad8b8bbe5 58 AUTH_CALLBACK_REPLY_ATTERR_INVALID_ATT_VAL_LENGTH = 0x010D, /**< ATT Error: Invalid value size. */
rgrover1 325:501ad8b8bbe5 59 AUTH_CALLBACK_REPLY_ATTERR_INSUF_RESOURCES = 0x0111, /**< ATT Error: Encrypted link required. */
rgrover1 325:501ad8b8bbe5 60 };
rgrover1 325:501ad8b8bbe5 61
rgrover1 264:eea11cfb6753 62 struct GattCharacteristicWriteAuthCBParams {
rgrover1 264:eea11cfb6753 63 GattAttribute::Handle_t charHandle;
rgrover1 264:eea11cfb6753 64 uint16_t offset; /**< Offset for the write operation. */
rgrover1 264:eea11cfb6753 65 uint16_t len; /**< Length of the incoming data. */
rgrover1 264:eea11cfb6753 66 const uint8_t *data; /**< Incoming data, variable length. */
rgrover1 325:501ad8b8bbe5 67 GattCharacteristicAuthCBReply_t authorizationReply; /* This is the out parameter which needs to be set to true by the callback if the
rgrover1 325:501ad8b8bbe5 68 * request is to proceed; false otherwise. */
rgrover1 264:eea11cfb6753 69 };
rgrover1 264:eea11cfb6753 70
rgrover1 264:eea11cfb6753 71 struct GattCharacteristicReadAuthCBParams {
rgrover1 264:eea11cfb6753 72 GattAttribute::Handle_t charHandle;
rgrover1 265:a0504765a357 73 uint16_t offset; /**< Offset for the read operation. */
rgrover1 265:a0504765a357 74 uint16_t len; /**< Optional: new length of the outgoing data. */
rgrover1 265:a0504765a357 75 uint8_t *data; /**< Optional: new outgoing data. Leave at NULL if data is unchanged. */
rgrover1 325:501ad8b8bbe5 76 GattCharacteristicAuthCBReply_t authorizationReply; /* This is the out parameter which needs to be set to true by the callback if the
rgrover1 325:501ad8b8bbe5 77 * request is to proceed; false otherwise. */
rgrover1 264:eea11cfb6753 78 };
rgrover1 264:eea11cfb6753 79
rgrover1 264:eea11cfb6753 80 #endif /*__GATT_CHARACTERISTIC_CALLBACK_PARAMS_H__*/