High level Bluetooth Low Energy API and radio abstraction layer

Fork of BLE_API by Bluetooth Low Energy

Revision:
1179:4ab722f8dca0
Parent:
1164:7e84487d45fc
Child:
1183:1589830dbdb7
--- a/ble/GattClient.h	Wed Apr 06 19:15:28 2016 +0100
+++ b/ble/GattClient.h	Wed Apr 06 19:15:30 2016 +0100
@@ -28,52 +28,21 @@
 
 class GattClient {
 public:
-    /**
-     * Type for the registered callbacks added to the data read callchain.
-     * Refer to GattClient::onDataRead().
-     */
     typedef FunctionPointerWithContext<const GattReadCallbackParams*> ReadCallback_t;
-    /**
-     * Type for the data read event callchain. Refer to GattClient::onDataRead().
-     */
     typedef CallChainOfFunctionPointersWithContext<const GattReadCallbackParams*> ReadCallbackChain_t;
 
-    /**
-     * Enumerator for write operations.
-     */
     enum WriteOp_t {
         GATT_OP_WRITE_REQ = 0x01,  /**< Write request. */
         GATT_OP_WRITE_CMD = 0x02,  /**< Write command. */
     };
 
-    /**
-     * Type for the registered callbacks added to the data write callchain.
-     * Refer to GattClient::onDataWrite().
-     */
     typedef FunctionPointerWithContext<const GattWriteCallbackParams*> WriteCallback_t;
-    /**
-     * Type for the data write event callchain. Refer to GattClient::onDataWrite().
-     */
     typedef CallChainOfFunctionPointersWithContext<const GattWriteCallbackParams*> WriteCallbackChain_t;
 
-    /**
-     * Type for the registered callbacks added to the update event callchain.
-     * Refer to GattClient::onHVX().
-     */
     typedef FunctionPointerWithContext<const GattHVXCallbackParams*> HVXCallback_t;
-    /**
-     * Type for the update event callchain. Refer to GattClient::onHVX().
-     */
     typedef CallChainOfFunctionPointersWithContext<const GattHVXCallbackParams*> HVXCallbackChain_t;
 
-    /**
-     * Type for the registered callbacks added to the shutdown callchain.
-     * Refer to GattClient::onShutdown().
-     */
     typedef FunctionPointerWithContext<const GattClient *> GattClientShutdownCallback_t;
-    /**
-     * Type for the shutdown event callchain. Refer to GattClient::onShutown().
-     */
     typedef CallChainOfFunctionPointersWithContext<const GattClient *> GattClientShutdownCallbackChain_t;
 
     /*
@@ -87,40 +56,40 @@
      * will be invoked at the end. Service discovery can be terminated prematurely,
      * if needed, using terminateServiceDiscovery().
      *
-     * @param[in]  connectionHandle
-     *              Handle for the connection with the peer.
-     * @param[in]  sc
-     *              This is the application callback for a matching service. Taken as
-     *              NULL by default. Note: service discovery may still be active
-     *              when this callback is issued; calling asynchronous BLE-stack
-     *              APIs from within this application callback might cause the
-     *              stack to abort service discovery. If this becomes an issue, it
-     *              may be better to make a local copy of the discoveredService and
-     *              wait for service discovery to terminate before operating on the
-     *              service.
-     * @param[in]  cc
-     *              This is the application callback for a matching characteristic.
-     *              Taken as NULL by default. Note: service discovery may still be
-     *              active when this callback is issued; calling asynchronous
-     *              BLE-stack APIs from within this application callback might cause
-     *              the stack to abort service discovery. If this becomes an issue,
-     *              it may be better to make a local copy of the discoveredCharacteristic
-     *              and wait for service discovery to terminate before operating on the
-     *              characteristic.
-     * @param[in]  matchingServiceUUID
-     *              UUID-based filter for specifying a service in which the application is
-     *              interested. By default it is set as the wildcard UUID_UNKNOWN,
-     *              in which case it matches all services. If characteristic-UUID
-     *              filter (below) is set to the wildcard value, then a service
-     *              callback will be invoked for the matching service (or for every
-     *              service if the service filter is a wildcard).
-     * @param[in]  matchingCharacteristicUUIDIn
-     *              UUID-based filter for specifying characteristic in which the application
-     *              is interested. By default it is set as the wildcard UUID_UKNOWN
-     *              to match against any characteristic. If both service-UUID
-     *              filter and characteristic-UUID filter are used with non-wildcard
-     *              values, then only a single characteristic callback is
-     *              invoked for the matching characteristic.
+     * @param  connectionHandle
+     *           Handle for the connection with the peer.
+     * @param  sc
+     *           This is the application callback for a matching service. Taken as
+     *           NULL by default. Note: service discovery may still be active
+     *           when this callback is issued; calling asynchronous BLE-stack
+     *           APIs from within this application callback might cause the
+     *           stack to abort service discovery. If this becomes an issue, it
+     *           may be better to make a local copy of the discoveredService and
+     *           wait for service discovery to terminate before operating on the
+     *           service.
+     * @param  cc
+     *           This is the application callback for a matching characteristic.
+     *           Taken as NULL by default. Note: service discovery may still be
+     *           active when this callback is issued; calling asynchronous
+     *           BLE-stack APIs from within this application callback might cause
+     *           the stack to abort service discovery. If this becomes an issue,
+     *           it may be better to make a local copy of the discoveredCharacteristic
+     *           and wait for service discovery to terminate before operating on the
+     *           characteristic.
+     * @param  matchingServiceUUID
+     *           UUID-based filter for specifying a service in which the application is
+     *           interested. By default it is set as the wildcard UUID_UNKNOWN,
+     *           in which case it matches all services. If characteristic-UUID
+     *           filter (below) is set to the wildcard value, then a service
+     *           callback will be invoked for the matching service (or for every
+     *           service if the service filter is a wildcard).
+     * @param  matchingCharacteristicUUIDIn
+     *           UUID-based filter for specifying characteristic in which the application
+     *           is interested. By default it is set as the wildcard UUID_UKNOWN
+     *           to match against any characteristic. If both service-UUID
+     *           filter and characteristic-UUID filter are used with non-wildcard
+     *           values, then only a single characteristic callback is
+     *           invoked for the matching characteristic.
      *
      * @note     Using wildcard values for both service-UUID and characteristic-
      *           UUID will result in complete service discovery: callbacks being
@@ -157,21 +126,20 @@
      * at the end. Service discovery can be terminated prematurely, if needed,
      * using terminateServiceDiscovery().
      *
-     * @param[in]  connectionHandle
-     *              Handle for the connection with the peer.
-     * @param[in]  callback
-     *              This is the application callback for a matching service.
-     *              Note: service discovery may still be active
-     *              when this callback is issued; calling asynchronous BLE-stack
-     *              APIs from within this application callback might cause the
-     *              stack to abort service discovery. If this becomes an issue, it
-     *              may be better to make a local copy of the discoveredService and
-     *              wait for service discovery to terminate before operating on the
-     *              service.
-     * @param[in]  matchingServiceUUID
-     *              UUID-based filter for specifying a service in which the application is
-     *              interested. By default it is set as the wildcard UUID_UNKNOWN,
-     *              in which case it matches all services.
+     * @param  connectionHandle
+     *           Handle for the connection with the peer.
+     * @param  sc
+     *           This is the application callback for a matching service. Note: service discovery may still be active
+     *           when this callback is issued; calling asynchronous BLE-stack
+     *           APIs from within this application callback might cause the
+     *           stack to abort service discovery. If this becomes an issue, it
+     *           may be better to make a local copy of the discoveredService and
+     *           wait for service discovery to terminate before operating on the
+     *           service.
+     * @param  matchingServiceUUID
+     *           UUID-based filter for specifying a service in which the application is
+     *           interested. By default it is set as the wildcard UUID_UNKNOWN,
+     *           in which case it matches all services.
      *
      * @return
      *           BLE_ERROR_NONE if service discovery is launched successfully; else an appropriate error.
@@ -194,19 +162,18 @@
      * at the end. Service discovery can be terminated prematurely, if needed,
      * using terminateServiceDiscovery().
      *
-     * @param[in]  connectionHandle
-     *              Handle for the connection with the peer.
-     * @param[in]  callback
-     *              This is the application callback for a matching service.
-     *              Note: service discovery may still be active
-     *              when this callback is issued; calling asynchronous BLE-stack
-     *              APIs from within this application callback might cause the
-     *              stack to abort service discovery. If this becomes an issue, it
-     *              may be better to make a local copy of the discoveredService and
-     *              wait for service discovery to terminate before operating on the
-     *              service.
-     * @param[in]  startHandle, endHandle
-     *              Handle range within which to limit the search.
+     * @param  connectionHandle
+     *           Handle for the connection with the peer.
+     * @param  sc
+     *           This is the application callback for a matching service. Note: service discovery may still be active
+     *           when this callback is issued; calling asynchronous BLE-stack
+     *           APIs from within this application callback might cause the
+     *           stack to abort service discovery. If this becomes an issue, it
+     *           may be better to make a local copy of the discoveredService and
+     *           wait for service discovery to terminate before operating on the
+     *           service.
+     * @param  startHandle, endHandle
+     *           Handle range within which to limit the search.
      *
      * @return
      *           BLE_ERROR_NONE if service discovery is launched successfully; else an appropriate error.
@@ -225,9 +192,7 @@
     }
 
     /**
-     * Check if service-discovery is currently active.
-     *
-     * @return true if service-discovery is active, false otherwise.
+     * Is service-discovery currently active?
      */
     virtual bool isServiceDiscoveryActive(void) const {
         return false; /* Requesting action from porters: override this API if this capability is supported. */
@@ -241,19 +206,7 @@
         /* Requesting action from porters: override this API if this capability is supported. */
     }
 
-    /**
-     * Initiate a GATT Client read procedure by attribute-handle.
-     *
-     * @param[in] connHandle
-     *              Handle for the connection with the peer.
-     * @param[in] attributeHandle
-     *              Handle of the attribute to read data from.
-     * @param[in] offset
-     *              The offset from the start of the attribute value to be read.
-     *
-     * @return
-     *          BLE_ERROR_NONE if read procedure was successfully started.
-     */
+    /* Initiate a GATT Client read procedure by attribute-handle. */
     virtual ble_error_t read(Gap::Handle_t connHandle, GattAttribute::Handle_t attributeHandle, uint16_t offset) const {
         /* Avoid compiler warnings about unused variables. */
         (void)connHandle;
@@ -278,9 +231,6 @@
      *              Length of the new value.
      * @param[in] value
      *              New value being written.
-     *
-     * @return
-     *          BLE_ERROR_NONE if write procedure was successfully started.
      */
     virtual ble_error_t write(GattClient::WriteOp_t    cmd,
                               Gap::Handle_t            connHandle,
@@ -301,28 +251,18 @@
 public:
     /**
      * Set up a callback for read response events.
-     *
-     * @param[in] callback
-     *              Event handler being registered.
-     *
-     * @note It is possible to chain together multiple onDataRead callbacks
-     * (potentially from different modules of an application).
-     *
-     * @note It is possible to unregister a callback using
-     * onDataRead().detach(callbackToRemove).
+     * It is possible to remove registered callbacks using
+     * onDataRead().detach(callbackToRemove)
      */
     void onDataRead(ReadCallback_t callback) {
         onDataReadCallbackChain.add(callback);
     }
 
     /**
-     * @brief Provide access to the callchain of read event callbacks.
-     *
-     * @return A reference to the read event callback chain.
-     *
-     * @note It is possible to register callbacks using onDataRead().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onDataRead().detach(callback).
+     * @brief provide access to the callchain of read callbacks
+     * It is possible to register callbacks using onDataRead().add(callback);
+     * It is possible to unregister callbacks using onDataRead().detach(callback)
+     * @return The read callbacks chain
      */
     ReadCallbackChain_t& onDataRead() {
         return onDataReadCallbackChain;
@@ -330,27 +270,19 @@
 
     /**
      * Set up a callback for write response events.
-     *
-     * @param[in] callback
-     *              Event handler being registered.
-     *
-     * @note It is possible to remove registered callbacks using
+     * It is possible to remove registered callbacks using
      * onDataWritten().detach(callbackToRemove).
-     *
-     * @note  Write commands (issued using writeWoResponse) don't generate a response.
+     * @Note: Write commands (issued using writeWoResponse) don't generate a response.
      */
     void onDataWritten(WriteCallback_t callback) {
         onDataWriteCallbackChain.add(callback);
     }
 
     /**
-     * @brief Provide access to the callchain of data written callbacks.
-     *
-     * @return A reference to the data written callbacks chain.
-     *
-     * @note It is possible to register callbacks using onDataWritten().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onDataWritten().detach(callback).
+     * @brief provide access to the callchain of data written callbacks
+     * It is possible to register callbacks using onDataWritten().add(callback);
+     * It is possible to unregister callbacks using onDataWritten().detach(callback)
+     * @return The data written callbacks chain
      */
     WriteCallbackChain_t& onDataWritten() {
         return onDataWriteCallbackChain;
@@ -358,13 +290,10 @@
 
     /**
      * Set up a callback for write response events.
-     *
-     * @param[in] callback
-     *              Event handler being registered.
+     * @Note: Write commands (issued using writeWoResponse) don't generate a response.
      *
-     * @note  Write commands (issued using writeWoResponse) don't generate a response.
-     *
-     * @deprecated Please use GattServer::onDataWritten() instead.
+     * @note: This API is now *deprecated* and will be dropped in the future.
+     * Please use onDataWritten() instead.
      */
     void onDataWrite(WriteCallback_t callback) {
         onDataWritten(callback);
@@ -372,9 +301,6 @@
 
     /**
      * Set up a callback for when serviceDiscovery terminates.
-     *
-     * @param[in] callback
-     *              Event handler being registered.
      */
     virtual void onServiceDiscoveryTermination(ServiceDiscovery::TerminationCallback_t callback) {
         (void)callback; /* Avoid compiler warnings about ununsed variables. */
@@ -383,21 +309,18 @@
     }
 
     /**
-     * @brief Launch discovery of descriptors for a given characteristic.
-     *
+     * @brief launch discovery of descriptors for a given characteristic
      * @details This function will discover all descriptors available for a
-     *          specific characteristic.
+     * specific characteristic.
      *
-     * @param[in] characteristic
-     *              The characteristic targeted by this discovery procedure.
-     * @param[in] discoveryCallback
-     *              User function called each time a descriptor is found during
-     *              the procedure.
-     * @param[in] terminationCallback
-     *              User provided function which will be called once the
-     *              discovery procedure is terminating. This will get called
-     *              when all the descriptors have been discovered or if an
-     *              error occur during the discovery procedure.
+     * @param characteristic[in] The characteristic targeted by this discovery
+     * procedure
+     * @param discoveryCallback[in] User function called each time a descriptor
+     * is found during the procedure.
+     * @param terminationCallback[in] User provided function which will be called
+     * once the discovery procedure is terminating. This will get called when all
+     * the descriptors have been discovered or if an error occur during the discovery
+     * procedure.
      *
      * @return
      *   BLE_ERROR_NONE if characteristic descriptor discovery is launched
@@ -415,14 +338,10 @@
     }
 
     /**
-     * @brief Indicate if the discovery of characteristic descriptors is active
-     *        for a given characteristic or not.
-     *
-     * @param[in] characteristic
-     *              The characteristic concerned by the descriptors discovery.
-     *
-     * @return true if a descriptors discovery is active for the characteristic
-     *         in input; otherwise false.
+     * @brief Indicate if the discovery of characteristic descriptors is active for a given characteristic
+     * or not.
+     * @param characteristic[in] The characteristic concerned by the descriptors discovery.
+     * @return true if a descriptors discovery is active for the characteristic in input; otherwise false.
      */
     virtual bool isCharacteristicDescriptorDiscoveryActive(const DiscoveredCharacteristic& characteristic) const
      {
@@ -432,13 +351,10 @@
 
     /**
      * @brief Terminate an ongoing characteristic descriptor discovery.
-     *
-     * @details This should result in an invocation of the TerminationCallback if
-     *          the characteristic descriptor discovery is active.
-     *
-     * @param[in] characteristic
-     *              The characteristic on which the running descriptors
-     *              discovery should be stopped.
+     * @detail This should result in an invocation of the TerminationCallback if
+     * the characteristic descriptor discovery is active.
+     * @param characteristic[in] The characteristic on which the running descriptors
+     * discovery should be stopped.
      */
     virtual void terminateCharacteristicDescriptorDiscovery(const DiscoveredCharacteristic& characteristic) {
         /* Requesting action from porter(s): override this API if this capability is supported. */
@@ -446,12 +362,10 @@
     }
 
     /**
-     * Set up a callback for when the GATT Client receives an update event
+     * Set up a callback for when the GATT client receives an update event
      * corresponding to a change in the value of a characteristic on the remote
-     * GATT Server.
-     *
-     * @note It is possible to unregister callbacks using
-     *       onHVX().detach(callbackToRemove).
+     * GATT server.
+     * It is possible to remove registered callbacks using onHVX().detach(callbackToRemove).
      */
     void onHVX(HVXCallback_t callback) {
         onHVXCallbackChain.add(callback);
@@ -462,60 +376,38 @@
      * GattClient instance is about to shutdown (possibly as a result of a call
      * to BLE::shutdown()).
      *
-     * @param[in] callback
-     *              Event handler being registered.
+     * @Note: It is possible to chain together multiple onShutdown callbacks
+     * (potentially from different modules of an application) to be notified
+     * before the GattClient is shutdown.
      *
-     * @note  It is possible to chain together multiple onShutdown callbacks
-     *        (potentially from different modules of an application) to be notified
-     *        before the GattClient is shutdown.
+     * @Note: It is also possible to set up a callback into a member function of
+     * some object.
      *
-     * @note  It is also possible to set up a callback into a member function of
-     *        some object.
-     *
-     * @note It is possible to unregister a callback using onShutdown().detach(callback).
+     * @Note It is possible to unregister a callback using onShutdown().detach(callback)
      */
     void onShutdown(const GattClientShutdownCallback_t& callback) {
         shutdownCallChain.add(callback);
     }
-
-    /**
-     * Same as GattClient::onShutdown(), but allows the possibility to add an object
-     * reference and member function as handler for shutdown event
-     * callbacks.
-     *
-     * @param[in] objPtr
-     *              Pointer to the object of a class defining the member callback
-     *              function (@p memberPtr).
-     * @param[in] memberPtr
-     *              The member callback (within the context of an object) to be
-     *              invoked.
-     */
     template <typename T>
     void onShutdown(T *objPtr, void (T::*memberPtr)(void)) {
         shutdownCallChain.add(objPtr, memberPtr);
     }
 
     /**
-     * @brief Provide access to the callchain of shutdown event callbacks.
-     *
-     * @return A reference to the shutdown event callbacks chain.
-     *
-     * @note It is possible to register callbacks using onShutdown().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onShutdown().detach(callback).
+     * @brief provide access to the callchain of shutdown event callbacks
+     * It is possible to register callbacks using onShutdown().add(callback);
+     * It is possible to unregister callbacks using onShutdown().detach(callback)
+     * @return The shutdown event callbacks chain
      */
     GattClientShutdownCallbackChain_t& onShutdown() {
         return shutdownCallChain;
     }
 
     /**
-     * @brief provide access to the callchain of HVX callbacks.
-     *
-     * @return A reference to the HVX callbacks chain.
-     *
-     * @note It is possible to register callbacks using onHVX().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onHVX().detach(callback).
+     * @brief provide access to the callchain of HVX callbacks
+     * It is possible to register callbacks using onHVX().add(callback);
+     * It is possible to unregister callbacks using onHVX().detach(callback)
+     * @return The HVX callbacks chain
      */
     HVXCallbackChain_t& onHVX() {
         return onHVXCallbackChain;
@@ -554,41 +446,14 @@
 
     /* Entry points for the underlying stack to report events back to the user. */
 public:
-    /**
-     * Helper function that notifies all registered handlers of an occurrence
-     * of a data read event. This function is meant to be called from the
-     * BLE stack specific implementation when a data read event occurs.
-     *
-     * @param[in] params
-     *              The data read parameters passed to the registered
-     *              handlers.
-     */
     void processReadResponse(const GattReadCallbackParams *params) {
         onDataReadCallbackChain(params);
     }
 
-    /**
-     * Helper function that notifies all registered handlers of an occurrence
-     * of a data written event. This function is meant to be called from the
-     * BLE stack specific implementation when a data written event occurs.
-     *
-     * @param[in] params
-     *              The data written parameters passed to the registered
-     *              handlers.
-     */
     void processWriteResponse(const GattWriteCallbackParams *params) {
         onDataWriteCallbackChain(params);
     }
 
-    /**
-     * Helper function that notifies all registered handlers of an occurrence
-     * of an update event. This function is meant to be called from the
-     * BLE stack specific implementation when an update event occurs.
-     *
-     * @param[in] params
-     *              The update event parameters passed to the registered
-     *              handlers.
-     */
     void processHVXEvent(const GattHVXCallbackParams *params) {
         if (onHVXCallbackChain) {
             onHVXCallbackChain(params);
@@ -596,25 +461,9 @@
     }
 
 protected:
-    /**
-     * Callchain containing all registered callback handlers for data read
-     * events.
-     */
     ReadCallbackChain_t               onDataReadCallbackChain;
-    /**
-     * Callchain containing all registered callback handlers for data write
-     * events.
-     */
     WriteCallbackChain_t              onDataWriteCallbackChain;
-    /**
-     * Callchain containing all registered callback handlers for update
-     * events.
-     */
     HVXCallbackChain_t                onHVXCallbackChain;
-    /**
-     * Callchain containing all registered callback handlers for shutdown
-     * events.
-     */
     GattClientShutdownCallbackChain_t shutdownCallChain;
 
 private:
@@ -623,4 +472,4 @@
     GattClient& operator=(const GattClient &);
 };
 
-#endif /* ifndef __GATT_CLIENT_H__ */
\ No newline at end of file
+#endif // ifndef __GATT_CLIENT_H__
\ No newline at end of file