test code 123

Dependencies:   mbed

Fork of LinkNode-Test by Qi Yao

Committer:
youkee
Date:
Thu Sep 01 05:14:03 2016 +0000
Revision:
0:1ad0e04b1bc5
change internal time from 1s to 200ms

Who changed what in which revision?

UserRevisionLine numberNew contents of line
youkee 0:1ad0e04b1bc5 1 /* mbed Microcontroller Library
youkee 0:1ad0e04b1bc5 2 * Copyright (c) 2006-2013 ARM Limited
youkee 0:1ad0e04b1bc5 3 *
youkee 0:1ad0e04b1bc5 4 * Licensed under the Apache License, Version 2.0 (the "License");
youkee 0:1ad0e04b1bc5 5 * you may not use this file except in compliance with the License.
youkee 0:1ad0e04b1bc5 6 * You may obtain a copy of the License at
youkee 0:1ad0e04b1bc5 7 *
youkee 0:1ad0e04b1bc5 8 * http://www.apache.org/licenses/LICENSE-2.0
youkee 0:1ad0e04b1bc5 9 *
youkee 0:1ad0e04b1bc5 10 * Unless required by applicable law or agreed to in writing, software
youkee 0:1ad0e04b1bc5 11 * distributed under the License is distributed on an "AS IS" BASIS,
youkee 0:1ad0e04b1bc5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
youkee 0:1ad0e04b1bc5 13 * See the License for the specific language governing permissions and
youkee 0:1ad0e04b1bc5 14 * limitations under the License.
youkee 0:1ad0e04b1bc5 15 */
youkee 0:1ad0e04b1bc5 16
youkee 0:1ad0e04b1bc5 17 #ifndef __GATT_CLIENT_H__
youkee 0:1ad0e04b1bc5 18 #define __GATT_CLIENT_H__
youkee 0:1ad0e04b1bc5 19
youkee 0:1ad0e04b1bc5 20 #include "Gap.h"
youkee 0:1ad0e04b1bc5 21 #include "GattAttribute.h"
youkee 0:1ad0e04b1bc5 22 #include "ServiceDiscovery.h"
youkee 0:1ad0e04b1bc5 23
youkee 0:1ad0e04b1bc5 24 #include "GattCallbackParamTypes.h"
youkee 0:1ad0e04b1bc5 25
youkee 0:1ad0e04b1bc5 26 #include "CallChainOfFunctionPointersWithContext.h"
youkee 0:1ad0e04b1bc5 27
youkee 0:1ad0e04b1bc5 28 class GattClient {
youkee 0:1ad0e04b1bc5 29 public:
youkee 0:1ad0e04b1bc5 30 typedef FunctionPointerWithContext<const GattReadCallbackParams*> ReadCallback_t;
youkee 0:1ad0e04b1bc5 31 typedef CallChainOfFunctionPointersWithContext<const GattReadCallbackParams*> ReadCallbackChain_t;
youkee 0:1ad0e04b1bc5 32
youkee 0:1ad0e04b1bc5 33 enum WriteOp_t {
youkee 0:1ad0e04b1bc5 34 GATT_OP_WRITE_REQ = 0x01, /**< Write request. */
youkee 0:1ad0e04b1bc5 35 GATT_OP_WRITE_CMD = 0x02, /**< Write command. */
youkee 0:1ad0e04b1bc5 36 };
youkee 0:1ad0e04b1bc5 37
youkee 0:1ad0e04b1bc5 38 typedef FunctionPointerWithContext<const GattWriteCallbackParams*> WriteCallback_t;
youkee 0:1ad0e04b1bc5 39 typedef CallChainOfFunctionPointersWithContext<const GattWriteCallbackParams*> WriteCallbackChain_t;
youkee 0:1ad0e04b1bc5 40
youkee 0:1ad0e04b1bc5 41 typedef FunctionPointerWithContext<const GattHVXCallbackParams*> HVXCallback_t;
youkee 0:1ad0e04b1bc5 42 typedef CallChainOfFunctionPointersWithContext<const GattHVXCallbackParams*> HVXCallbackChain_t;
youkee 0:1ad0e04b1bc5 43
youkee 0:1ad0e04b1bc5 44 /*
youkee 0:1ad0e04b1bc5 45 * The following functions are meant to be overridden in the platform-specific sub-class.
youkee 0:1ad0e04b1bc5 46 */
youkee 0:1ad0e04b1bc5 47 public:
youkee 0:1ad0e04b1bc5 48 /**
youkee 0:1ad0e04b1bc5 49 * Launch service discovery. Once launched, application callbacks will be
youkee 0:1ad0e04b1bc5 50 * invoked for matching services or characteristics. isServiceDiscoveryActive()
youkee 0:1ad0e04b1bc5 51 * can be used to determine status, and a termination callback (if one was set up)
youkee 0:1ad0e04b1bc5 52 * will be invoked at the end. Service discovery can be terminated prematurely,
youkee 0:1ad0e04b1bc5 53 * if needed, using terminateServiceDiscovery().
youkee 0:1ad0e04b1bc5 54 *
youkee 0:1ad0e04b1bc5 55 * @param connectionHandle
youkee 0:1ad0e04b1bc5 56 * Handle for the connection with the peer.
youkee 0:1ad0e04b1bc5 57 * @param sc
youkee 0:1ad0e04b1bc5 58 * This is the application callback for a matching service. Taken as
youkee 0:1ad0e04b1bc5 59 * NULL by default. Note: service discovery may still be active
youkee 0:1ad0e04b1bc5 60 * when this callback is issued; calling asynchronous BLE-stack
youkee 0:1ad0e04b1bc5 61 * APIs from within this application callback might cause the
youkee 0:1ad0e04b1bc5 62 * stack to abort service discovery. If this becomes an issue, it
youkee 0:1ad0e04b1bc5 63 * may be better to make a local copy of the discoveredService and
youkee 0:1ad0e04b1bc5 64 * wait for service discovery to terminate before operating on the
youkee 0:1ad0e04b1bc5 65 * service.
youkee 0:1ad0e04b1bc5 66 * @param cc
youkee 0:1ad0e04b1bc5 67 * This is the application callback for a matching characteristic.
youkee 0:1ad0e04b1bc5 68 * Taken as NULL by default. Note: service discovery may still be
youkee 0:1ad0e04b1bc5 69 * active when this callback is issued; calling asynchronous
youkee 0:1ad0e04b1bc5 70 * BLE-stack APIs from within this application callback might cause
youkee 0:1ad0e04b1bc5 71 * the stack to abort service discovery. If this becomes an issue,
youkee 0:1ad0e04b1bc5 72 * it may be better to make a local copy of the discoveredCharacteristic
youkee 0:1ad0e04b1bc5 73 * and wait for service discovery to terminate before operating on the
youkee 0:1ad0e04b1bc5 74 * characteristic.
youkee 0:1ad0e04b1bc5 75 * @param matchingServiceUUID
youkee 0:1ad0e04b1bc5 76 * UUID-based filter for specifying a service in which the application is
youkee 0:1ad0e04b1bc5 77 * interested. By default it is set as the wildcard UUID_UNKNOWN,
youkee 0:1ad0e04b1bc5 78 * in which case it matches all services. If characteristic-UUID
youkee 0:1ad0e04b1bc5 79 * filter (below) is set to the wildcard value, then a service
youkee 0:1ad0e04b1bc5 80 * callback will be invoked for the matching service (or for every
youkee 0:1ad0e04b1bc5 81 * service if the service filter is a wildcard).
youkee 0:1ad0e04b1bc5 82 * @param matchingCharacteristicUUIDIn
youkee 0:1ad0e04b1bc5 83 * UUID-based filter for specifying characteristic in which the application
youkee 0:1ad0e04b1bc5 84 * is interested. By default it is set as the wildcard UUID_UKNOWN
youkee 0:1ad0e04b1bc5 85 * to match against any characteristic. If both service-UUID
youkee 0:1ad0e04b1bc5 86 * filter and characteristic-UUID filter are used with non-wildcard
youkee 0:1ad0e04b1bc5 87 * values, then only a single characteristic callback is
youkee 0:1ad0e04b1bc5 88 * invoked for the matching characteristic.
youkee 0:1ad0e04b1bc5 89 *
youkee 0:1ad0e04b1bc5 90 * @note Using wildcard values for both service-UUID and characteristic-
youkee 0:1ad0e04b1bc5 91 * UUID will result in complete service discovery: callbacks being
youkee 0:1ad0e04b1bc5 92 * called for every service and characteristic.
youkee 0:1ad0e04b1bc5 93 *
youkee 0:1ad0e04b1bc5 94 * @note Providing NULL for the characteristic callback will result in
youkee 0:1ad0e04b1bc5 95 * characteristic discovery being skipped for each matching
youkee 0:1ad0e04b1bc5 96 * service. This allows for an inexpensive method to discover only
youkee 0:1ad0e04b1bc5 97 * services.
youkee 0:1ad0e04b1bc5 98 *
youkee 0:1ad0e04b1bc5 99 * @return
youkee 0:1ad0e04b1bc5 100 * BLE_ERROR_NONE if service discovery is launched successfully; else an appropriate error.
youkee 0:1ad0e04b1bc5 101 */
youkee 0:1ad0e04b1bc5 102 virtual ble_error_t launchServiceDiscovery(Gap::Handle_t connectionHandle,
youkee 0:1ad0e04b1bc5 103 ServiceDiscovery::ServiceCallback_t sc = NULL,
youkee 0:1ad0e04b1bc5 104 ServiceDiscovery::CharacteristicCallback_t cc = NULL,
youkee 0:1ad0e04b1bc5 105 const UUID &matchingServiceUUID = UUID::ShortUUIDBytes_t(BLE_UUID_UNKNOWN),
youkee 0:1ad0e04b1bc5 106 const UUID &matchingCharacteristicUUIDIn = UUID::ShortUUIDBytes_t(BLE_UUID_UNKNOWN)) {
youkee 0:1ad0e04b1bc5 107 /* Avoid compiler warnings about unused variables. */
youkee 0:1ad0e04b1bc5 108 (void)connectionHandle;
youkee 0:1ad0e04b1bc5 109 (void)sc;
youkee 0:1ad0e04b1bc5 110 (void)cc;
youkee 0:1ad0e04b1bc5 111 (void)matchingServiceUUID;
youkee 0:1ad0e04b1bc5 112 (void)matchingCharacteristicUUIDIn;
youkee 0:1ad0e04b1bc5 113
youkee 0:1ad0e04b1bc5 114 return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 115 }
youkee 0:1ad0e04b1bc5 116
youkee 0:1ad0e04b1bc5 117 /**
youkee 0:1ad0e04b1bc5 118 * Launch service discovery for services. Once launched, service discovery will remain
youkee 0:1ad0e04b1bc5 119 * active with service-callbacks being issued back into the application for matching
youkee 0:1ad0e04b1bc5 120 * services. isServiceDiscoveryActive() can be used to
youkee 0:1ad0e04b1bc5 121 * determine status, and a termination callback (if set up) will be invoked
youkee 0:1ad0e04b1bc5 122 * at the end. Service discovery can be terminated prematurely, if needed,
youkee 0:1ad0e04b1bc5 123 * using terminateServiceDiscovery().
youkee 0:1ad0e04b1bc5 124 *
youkee 0:1ad0e04b1bc5 125 * @param connectionHandle
youkee 0:1ad0e04b1bc5 126 * Handle for the connection with the peer.
youkee 0:1ad0e04b1bc5 127 * @param sc
youkee 0:1ad0e04b1bc5 128 * This is the application callback for a matching service. Note: service discovery may still be active
youkee 0:1ad0e04b1bc5 129 * when this callback is issued; calling asynchronous BLE-stack
youkee 0:1ad0e04b1bc5 130 * APIs from within this application callback might cause the
youkee 0:1ad0e04b1bc5 131 * stack to abort service discovery. If this becomes an issue, it
youkee 0:1ad0e04b1bc5 132 * may be better to make a local copy of the discoveredService and
youkee 0:1ad0e04b1bc5 133 * wait for service discovery to terminate before operating on the
youkee 0:1ad0e04b1bc5 134 * service.
youkee 0:1ad0e04b1bc5 135 * @param matchingServiceUUID
youkee 0:1ad0e04b1bc5 136 * UUID-based filter for specifying a service in which the application is
youkee 0:1ad0e04b1bc5 137 * interested. By default it is set as the wildcard UUID_UNKNOWN,
youkee 0:1ad0e04b1bc5 138 * in which case it matches all services.
youkee 0:1ad0e04b1bc5 139 *
youkee 0:1ad0e04b1bc5 140 * @return
youkee 0:1ad0e04b1bc5 141 * BLE_ERROR_NONE if service discovery is launched successfully; else an appropriate error.
youkee 0:1ad0e04b1bc5 142 */
youkee 0:1ad0e04b1bc5 143 virtual ble_error_t discoverServices(Gap::Handle_t connectionHandle,
youkee 0:1ad0e04b1bc5 144 ServiceDiscovery::ServiceCallback_t callback,
youkee 0:1ad0e04b1bc5 145 const UUID &matchingServiceUUID = UUID::ShortUUIDBytes_t(BLE_UUID_UNKNOWN)) {
youkee 0:1ad0e04b1bc5 146 return launchServiceDiscovery(connectionHandle, callback, NULL, matchingServiceUUID); /* We take advantage of the property
youkee 0:1ad0e04b1bc5 147 * that providing NULL for the characteristic callback will result in
youkee 0:1ad0e04b1bc5 148 * characteristic discovery being skipped for each matching
youkee 0:1ad0e04b1bc5 149 * service. This allows for an inexpensive method to discover only
youkee 0:1ad0e04b1bc5 150 * services. Porters are free to override this. */
youkee 0:1ad0e04b1bc5 151 }
youkee 0:1ad0e04b1bc5 152
youkee 0:1ad0e04b1bc5 153 /**
youkee 0:1ad0e04b1bc5 154 * Launch service discovery for services. Once launched, service discovery will remain
youkee 0:1ad0e04b1bc5 155 * active with service-callbacks being issued back into the application for matching
youkee 0:1ad0e04b1bc5 156 * services. isServiceDiscoveryActive() can be used to
youkee 0:1ad0e04b1bc5 157 * determine status, and a termination callback (if set up) will be invoked
youkee 0:1ad0e04b1bc5 158 * at the end. Service discovery can be terminated prematurely, if needed,
youkee 0:1ad0e04b1bc5 159 * using terminateServiceDiscovery().
youkee 0:1ad0e04b1bc5 160 *
youkee 0:1ad0e04b1bc5 161 * @param connectionHandle
youkee 0:1ad0e04b1bc5 162 * Handle for the connection with the peer.
youkee 0:1ad0e04b1bc5 163 * @param sc
youkee 0:1ad0e04b1bc5 164 * This is the application callback for a matching service. Note: service discovery may still be active
youkee 0:1ad0e04b1bc5 165 * when this callback is issued; calling asynchronous BLE-stack
youkee 0:1ad0e04b1bc5 166 * APIs from within this application callback might cause the
youkee 0:1ad0e04b1bc5 167 * stack to abort service discovery. If this becomes an issue, it
youkee 0:1ad0e04b1bc5 168 * may be better to make a local copy of the discoveredService and
youkee 0:1ad0e04b1bc5 169 * wait for service discovery to terminate before operating on the
youkee 0:1ad0e04b1bc5 170 * service.
youkee 0:1ad0e04b1bc5 171 * @param startHandle, endHandle
youkee 0:1ad0e04b1bc5 172 * Handle range within which to limit the search.
youkee 0:1ad0e04b1bc5 173 *
youkee 0:1ad0e04b1bc5 174 * @return
youkee 0:1ad0e04b1bc5 175 * BLE_ERROR_NONE if service discovery is launched successfully; else an appropriate error.
youkee 0:1ad0e04b1bc5 176 */
youkee 0:1ad0e04b1bc5 177 virtual ble_error_t discoverServices(Gap::Handle_t connectionHandle,
youkee 0:1ad0e04b1bc5 178 ServiceDiscovery::ServiceCallback_t callback,
youkee 0:1ad0e04b1bc5 179 GattAttribute::Handle_t startHandle,
youkee 0:1ad0e04b1bc5 180 GattAttribute::Handle_t endHandle) {
youkee 0:1ad0e04b1bc5 181 /* Avoid compiler warnings about unused variables. */
youkee 0:1ad0e04b1bc5 182 (void)connectionHandle;
youkee 0:1ad0e04b1bc5 183 (void)callback;
youkee 0:1ad0e04b1bc5 184 (void)startHandle;
youkee 0:1ad0e04b1bc5 185 (void)endHandle;
youkee 0:1ad0e04b1bc5 186
youkee 0:1ad0e04b1bc5 187 return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 188 }
youkee 0:1ad0e04b1bc5 189
youkee 0:1ad0e04b1bc5 190 /**
youkee 0:1ad0e04b1bc5 191 * Is service-discovery currently active?
youkee 0:1ad0e04b1bc5 192 */
youkee 0:1ad0e04b1bc5 193 virtual bool isServiceDiscoveryActive(void) const {
youkee 0:1ad0e04b1bc5 194 return false; /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 195 }
youkee 0:1ad0e04b1bc5 196
youkee 0:1ad0e04b1bc5 197 /**
youkee 0:1ad0e04b1bc5 198 * Terminate an ongoing service discovery. This should result in an
youkee 0:1ad0e04b1bc5 199 * invocation of TerminationCallback if service-discovery is active.
youkee 0:1ad0e04b1bc5 200 */
youkee 0:1ad0e04b1bc5 201 virtual void terminateServiceDiscovery(void) {
youkee 0:1ad0e04b1bc5 202 /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 203 }
youkee 0:1ad0e04b1bc5 204
youkee 0:1ad0e04b1bc5 205 /* Initiate a GATT Client read procedure by attribute-handle. */
youkee 0:1ad0e04b1bc5 206 virtual ble_error_t read(Gap::Handle_t connHandle, GattAttribute::Handle_t attributeHandle, uint16_t offset) const {
youkee 0:1ad0e04b1bc5 207 /* Avoid compiler warnings about unused variables. */
youkee 0:1ad0e04b1bc5 208 (void)connHandle;
youkee 0:1ad0e04b1bc5 209 (void)attributeHandle;
youkee 0:1ad0e04b1bc5 210 (void)offset;
youkee 0:1ad0e04b1bc5 211
youkee 0:1ad0e04b1bc5 212 return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 213 }
youkee 0:1ad0e04b1bc5 214
youkee 0:1ad0e04b1bc5 215 /**
youkee 0:1ad0e04b1bc5 216 * Initiate a GATT Client write procedure.
youkee 0:1ad0e04b1bc5 217 *
youkee 0:1ad0e04b1bc5 218 * @param[in] cmd
youkee 0:1ad0e04b1bc5 219 * Command can be either a write-request (which generates a
youkee 0:1ad0e04b1bc5 220 * matching response from the peripheral), or a write-command
youkee 0:1ad0e04b1bc5 221 * (which doesn't require the connected peer to respond).
youkee 0:1ad0e04b1bc5 222 * @param[in] connHandle
youkee 0:1ad0e04b1bc5 223 * Connection handle.
youkee 0:1ad0e04b1bc5 224 * @param[in] attributeHandle
youkee 0:1ad0e04b1bc5 225 * Handle for the target attribtue on the remote GATT server.
youkee 0:1ad0e04b1bc5 226 * @param[in] length
youkee 0:1ad0e04b1bc5 227 * Length of the new value.
youkee 0:1ad0e04b1bc5 228 * @param[in] value
youkee 0:1ad0e04b1bc5 229 * New value being written.
youkee 0:1ad0e04b1bc5 230 */
youkee 0:1ad0e04b1bc5 231 virtual ble_error_t write(GattClient::WriteOp_t cmd,
youkee 0:1ad0e04b1bc5 232 Gap::Handle_t connHandle,
youkee 0:1ad0e04b1bc5 233 GattAttribute::Handle_t attributeHandle,
youkee 0:1ad0e04b1bc5 234 size_t length,
youkee 0:1ad0e04b1bc5 235 const uint8_t *value) const {
youkee 0:1ad0e04b1bc5 236 /* Avoid compiler warnings about unused variables. */
youkee 0:1ad0e04b1bc5 237 (void)cmd;
youkee 0:1ad0e04b1bc5 238 (void)connHandle;
youkee 0:1ad0e04b1bc5 239 (void)attributeHandle;
youkee 0:1ad0e04b1bc5 240 (void)length;
youkee 0:1ad0e04b1bc5 241 (void)value;
youkee 0:1ad0e04b1bc5 242
youkee 0:1ad0e04b1bc5 243 return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 244 }
youkee 0:1ad0e04b1bc5 245
youkee 0:1ad0e04b1bc5 246 /* Event callback handlers. */
youkee 0:1ad0e04b1bc5 247 public:
youkee 0:1ad0e04b1bc5 248 /**
youkee 0:1ad0e04b1bc5 249 * Set up a callback for read response events.
youkee 0:1ad0e04b1bc5 250 * It is possible to remove registered callbacks using
youkee 0:1ad0e04b1bc5 251 * onDataRead().detach(callbackToRemove)
youkee 0:1ad0e04b1bc5 252 */
youkee 0:1ad0e04b1bc5 253 void onDataRead(ReadCallback_t callback) {
youkee 0:1ad0e04b1bc5 254 onDataReadCallbackChain.add(callback);
youkee 0:1ad0e04b1bc5 255 }
youkee 0:1ad0e04b1bc5 256
youkee 0:1ad0e04b1bc5 257 /**
youkee 0:1ad0e04b1bc5 258 * @brief provide access to the callchain of read callbacks
youkee 0:1ad0e04b1bc5 259 * It is possible to register callbacks using onDataRead().add(callback);
youkee 0:1ad0e04b1bc5 260 * It is possible to unregister callbacks using onDataRead().detach(callback)
youkee 0:1ad0e04b1bc5 261 * @return The read callbacks chain
youkee 0:1ad0e04b1bc5 262 */
youkee 0:1ad0e04b1bc5 263 ReadCallbackChain_t& onDataRead() {
youkee 0:1ad0e04b1bc5 264 return onDataReadCallbackChain;
youkee 0:1ad0e04b1bc5 265 }
youkee 0:1ad0e04b1bc5 266
youkee 0:1ad0e04b1bc5 267 /**
youkee 0:1ad0e04b1bc5 268 * Set up a callback for write response events.
youkee 0:1ad0e04b1bc5 269 * It is possible to remove registered callbacks using
youkee 0:1ad0e04b1bc5 270 * onDataWritten().detach(callbackToRemove).
youkee 0:1ad0e04b1bc5 271 * @Note: Write commands (issued using writeWoResponse) don't generate a response.
youkee 0:1ad0e04b1bc5 272 */
youkee 0:1ad0e04b1bc5 273 void onDataWritten(WriteCallback_t callback) {
youkee 0:1ad0e04b1bc5 274 onDataWriteCallbackChain.add(callback);
youkee 0:1ad0e04b1bc5 275 }
youkee 0:1ad0e04b1bc5 276
youkee 0:1ad0e04b1bc5 277 /**
youkee 0:1ad0e04b1bc5 278 * @brief provide access to the callchain of data written callbacks
youkee 0:1ad0e04b1bc5 279 * It is possible to register callbacks using onDataWritten().add(callback);
youkee 0:1ad0e04b1bc5 280 * It is possible to unregister callbacks using onDataWritten().detach(callback)
youkee 0:1ad0e04b1bc5 281 * @return The data written callbacks chain
youkee 0:1ad0e04b1bc5 282 */
youkee 0:1ad0e04b1bc5 283 WriteCallbackChain_t& onDataWritten() {
youkee 0:1ad0e04b1bc5 284 return onDataWriteCallbackChain;
youkee 0:1ad0e04b1bc5 285 }
youkee 0:1ad0e04b1bc5 286
youkee 0:1ad0e04b1bc5 287 /**
youkee 0:1ad0e04b1bc5 288 * Set up a callback for write response events.
youkee 0:1ad0e04b1bc5 289 * @Note: Write commands (issued using writeWoResponse) don't generate a response.
youkee 0:1ad0e04b1bc5 290 *
youkee 0:1ad0e04b1bc5 291 * @note: This API is now *deprecated* and will be dropped in the future.
youkee 0:1ad0e04b1bc5 292 * Please use onDataWritten() instead.
youkee 0:1ad0e04b1bc5 293 */
youkee 0:1ad0e04b1bc5 294 void onDataWrite(WriteCallback_t callback) {
youkee 0:1ad0e04b1bc5 295 onDataWritten(callback);
youkee 0:1ad0e04b1bc5 296 }
youkee 0:1ad0e04b1bc5 297
youkee 0:1ad0e04b1bc5 298 /**
youkee 0:1ad0e04b1bc5 299 * Set up a callback for when serviceDiscovery terminates.
youkee 0:1ad0e04b1bc5 300 */
youkee 0:1ad0e04b1bc5 301 virtual void onServiceDiscoveryTermination(ServiceDiscovery::TerminationCallback_t callback) {
youkee 0:1ad0e04b1bc5 302 (void)callback; /* Avoid compiler warnings about ununsed variables. */
youkee 0:1ad0e04b1bc5 303
youkee 0:1ad0e04b1bc5 304 /* Requesting action from porters: override this API if this capability is supported. */
youkee 0:1ad0e04b1bc5 305 }
youkee 0:1ad0e04b1bc5 306
youkee 0:1ad0e04b1bc5 307 /**
youkee 0:1ad0e04b1bc5 308 * Set up a callback for when the GATT client receives an update event
youkee 0:1ad0e04b1bc5 309 * corresponding to a change in the value of a characteristic on the remote
youkee 0:1ad0e04b1bc5 310 * GATT server.
youkee 0:1ad0e04b1bc5 311 * It is possible to remove registered callbacks using onHVX().detach(callbackToRemove).
youkee 0:1ad0e04b1bc5 312 */
youkee 0:1ad0e04b1bc5 313 void onHVX(HVXCallback_t callback) {
youkee 0:1ad0e04b1bc5 314 onHVXCallbackChain.add(callback);
youkee 0:1ad0e04b1bc5 315 }
youkee 0:1ad0e04b1bc5 316
youkee 0:1ad0e04b1bc5 317
youkee 0:1ad0e04b1bc5 318 /**
youkee 0:1ad0e04b1bc5 319 * @brief provide access to the callchain of HVX callbacks
youkee 0:1ad0e04b1bc5 320 * It is possible to register callbacks using onHVX().add(callback);
youkee 0:1ad0e04b1bc5 321 * It is possible to unregister callbacks using onHVX().detach(callback)
youkee 0:1ad0e04b1bc5 322 * @return The HVX callbacks chain
youkee 0:1ad0e04b1bc5 323 */
youkee 0:1ad0e04b1bc5 324 HVXCallbackChain_t& onHVX() {
youkee 0:1ad0e04b1bc5 325 return onHVXCallbackChain;
youkee 0:1ad0e04b1bc5 326 }
youkee 0:1ad0e04b1bc5 327
youkee 0:1ad0e04b1bc5 328 protected:
youkee 0:1ad0e04b1bc5 329 GattClient() {
youkee 0:1ad0e04b1bc5 330 /* Empty */
youkee 0:1ad0e04b1bc5 331 }
youkee 0:1ad0e04b1bc5 332
youkee 0:1ad0e04b1bc5 333 /* Entry points for the underlying stack to report events back to the user. */
youkee 0:1ad0e04b1bc5 334 public:
youkee 0:1ad0e04b1bc5 335 void processReadResponse(const GattReadCallbackParams *params) {
youkee 0:1ad0e04b1bc5 336 onDataReadCallbackChain(params);
youkee 0:1ad0e04b1bc5 337 }
youkee 0:1ad0e04b1bc5 338
youkee 0:1ad0e04b1bc5 339 void processWriteResponse(const GattWriteCallbackParams *params) {
youkee 0:1ad0e04b1bc5 340 onDataWriteCallbackChain(params);
youkee 0:1ad0e04b1bc5 341 }
youkee 0:1ad0e04b1bc5 342
youkee 0:1ad0e04b1bc5 343 void processHVXEvent(const GattHVXCallbackParams *params) {
youkee 0:1ad0e04b1bc5 344 if (onHVXCallbackChain) {
youkee 0:1ad0e04b1bc5 345 onHVXCallbackChain(params);
youkee 0:1ad0e04b1bc5 346 }
youkee 0:1ad0e04b1bc5 347 }
youkee 0:1ad0e04b1bc5 348
youkee 0:1ad0e04b1bc5 349 protected:
youkee 0:1ad0e04b1bc5 350 ReadCallbackChain_t onDataReadCallbackChain;
youkee 0:1ad0e04b1bc5 351 WriteCallbackChain_t onDataWriteCallbackChain;
youkee 0:1ad0e04b1bc5 352 HVXCallbackChain_t onHVXCallbackChain;
youkee 0:1ad0e04b1bc5 353
youkee 0:1ad0e04b1bc5 354 private:
youkee 0:1ad0e04b1bc5 355 /* Disallow copy and assignment. */
youkee 0:1ad0e04b1bc5 356 GattClient(const GattClient &);
youkee 0:1ad0e04b1bc5 357 GattClient& operator=(const GattClient &);
youkee 0:1ad0e04b1bc5 358 };
youkee 0:1ad0e04b1bc5 359
youkee 0:1ad0e04b1bc5 360 #endif // ifndef __GATT_CLIENT_H__