BLE_API

Revision:
1179:4ab722f8dca0
Parent:
1160:c6c088802d38
Child:
1180:e11b058d005e
--- a/ble/Gap.h	Wed Apr 06 19:15:28 2016 +0100
+++ b/ble/Gap.h	Wed Apr 06 19:15:30 2016 +0100
@@ -40,24 +40,23 @@
     /**
      * Address-type for BLEProtocol addresses.
      *
-     * @deprecated Use BLEProtocol::AddressType_t instead.
+     * @note: deprecated. Use BLEProtocol::AddressType_t instead.
      */
     typedef BLEProtocol::AddressType_t AddressType_t;
 
     /**
      * Address-type for BLEProtocol addresses.
-     *
-     * @deprecated Use BLEProtocol::AddressType_t instead.
+     * @note: deprecated. Use BLEProtocol::AddressType_t instead.
      */
     typedef BLEProtocol::AddressType_t addr_type_t;
 
     /**
      * Address-type for BLEProtocol addresses.
+     * \deprecated: Use BLEProtocol::AddressType_t instead.
      *
-     * @deprecated Use BLEProtocol::AddressType_t instead. The following
-     *             constants have been left in their deprecated state to
-     *             transparenly support existing applications which may have
-     *             used Gap::ADDR_TYPE_*.
+     * DEPRECATION ALERT: The following constants have been left in their
+     * deprecated state to transparenly support existing applications which may
+     * have used Gap::ADDR_TYPE_*.
      */
     enum DeprecatedAddressType_t {
         ADDR_TYPE_PUBLIC                        = BLEProtocol::AddressType::PUBLIC,
@@ -66,27 +65,11 @@
         ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE = BLEProtocol::AddressType::RANDOM_PRIVATE_NON_RESOLVABLE
     };
 
-    /**
-     * Length (in octets) of the BLE MAC address.
-     */
-    static const unsigned ADDR_LEN = BLEProtocol::ADDR_LEN;
-    /**
-     * 48-bit address, LSB format.
-     *
-     * @deprecated Use BLEProtocol::AddressBytes_t instead.
-     */
-    typedef BLEProtocol::AddressBytes_t Address_t;
-    /**
-     * 48-bit address, LSB format.
-     *
-     * @deprecated Use BLEProtocol::AddressBytes_t instead.
-     */
-    typedef BLEProtocol::AddressBytes_t address_t;
+    static const unsigned ADDR_LEN = BLEProtocol::ADDR_LEN; /**< Length (in octets) of the BLE MAC address. */
+    typedef BLEProtocol::AddressBytes_t Address_t; /**< 48-bit address, LSB format. @Note: Deprecated. Use BLEProtocol::AddressBytes_t instead. */
+    typedef BLEProtocol::AddressBytes_t address_t; /**< 48-bit address, LSB format. @Note: Deprecated. Use BLEProtocol::AddressBytes_t instead. */
 
 public:
-    /**
-     * Enumeration for timeout sources.
-     */
     enum TimeoutSource_t {
         TIMEOUT_SRC_ADVERTISING      = 0x00, /**< Advertising timeout. */
         TIMEOUT_SRC_SECURITY_REQUEST = 0x01, /**< Security request timeout. */
@@ -154,94 +137,51 @@
      * @experimental
      */
     struct Whitelist_t {
-        BLEProtocol::Address_t *addresses; /**< List of BLE addresses in the whitelist. */
-        uint8_t                 size;      /**< Total number of BLE addresses in this whitelist */
-        uint8_t                 capacity;  /**< Maximum number of BLE addresses that can be added to this whitelist. */
+        BLEProtocol::Address_t *addresses;
+        uint8_t                 size;
+        uint8_t                 capacity;
     };
 
 
-    /**
-     * Describes the current state of the device (more than one bit can be set).
-     */
+    /* Describes the current state of the device (more than one bit can be set). */
     struct GapState_t {
         unsigned advertising : 1; /**< Peripheral is currently advertising. */
         unsigned connected   : 1; /**< Peripheral is connected to a central. */
     };
 
-    /**
-     * Type for connection handle.
-     */
-    typedef uint16_t Handle_t;
+    typedef uint16_t Handle_t; /* Type for connection handle. */
 
-    /**
-     * Structure containing GAP connection parameters. When in peripheral role
-     * the connection parameters are suggestions. The choice of the connection
-     * parameters is eventually up to the central.
-     */
     typedef struct {
-        uint16_t minConnectionInterval;        /**< Minimum Connection Interval in 1.25 ms units, see BLE_GAP_CP_LIMITS.*/
-        uint16_t maxConnectionInterval;        /**< Maximum Connection Interval in 1.25 ms units, see BLE_GAP_CP_LIMITS.*/
-        uint16_t slaveLatency;                 /**< Slave Latency in number of connection events, see BLE_GAP_CP_LIMITS.*/
-        uint16_t connectionSupervisionTimeout; /**< Connection Supervision Timeout in 10 ms units, see BLE_GAP_CP_LIMITS.*/
+        uint16_t minConnectionInterval;        /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/
+        uint16_t maxConnectionInterval;        /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/
+        uint16_t slaveLatency;                 /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/
+        uint16_t connectionSupervisionTimeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/
     } ConnectionParams_t;
 
-    /**
-     * Enumeration for the possible GAP roles of a BLE device.
-     */
     enum Role_t {
         PERIPHERAL  = 0x1, /**< Peripheral Role. */
         CENTRAL     = 0x2, /**< Central Role.    */
     };
 
-    /**
-     * Structure containing data and metadata of a scanned advertising packet.
-     */
     struct AdvertisementCallbackParams_t {
-        BLEProtocol::AddressBytes_t              peerAddr;           /**< The peer's BLE address. */
-        int8_t                                   rssi;               /**< The advertisement packet RSSI value. */
-        bool                                     isScanResponse;     /**< Whether this packet is the response to a scan request. */
-        GapAdvertisingParams::AdvertisingType_t  type;               /**< The type of advertisement. */
-        uint8_t                                  advertisingDataLen; /**< Length of the advertisement data. */
-        const uint8_t                           *advertisingData;    /**< Pointer to the advertisement packet's data. */
+        BLEProtocol::AddressBytes_t              peerAddr;
+        int8_t                                   rssi;
+        bool                                     isScanResponse;
+        GapAdvertisingParams::AdvertisingType_t  type;
+        uint8_t                                  advertisingDataLen;
+        const uint8_t                           *advertisingData;
     };
-
-    /**
-     * Type for the handlers of advertisement callback events. Refer to
-     * Gap::startScan().
-     */
     typedef FunctionPointerWithContext<const AdvertisementCallbackParams_t *> AdvertisementReportCallback_t;
 
-    /**
-     * Encapsulates the parameters of a connection. This information is passed
-     * to the registered handler of connection events. Refer to Gap::onConnection().
-     */
     struct ConnectionCallbackParams_t {
-        Handle_t                    handle;           /**< The ID for this connection */
-        Role_t                      role;             /**< This device's role in the connection */
-        BLEProtocol::AddressType_t  peerAddrType;     /**< The peer's BLE address type */
-        BLEProtocol::AddressBytes_t peerAddr;         /**< The peer's BLE address */
-        BLEProtocol::AddressType_t  ownAddrType;      /**< This device's BLE address type */
-        BLEProtocol::AddressBytes_t ownAddr;          /**< This devices's BLE address */
-        const ConnectionParams_t   *connectionParams; /**< The currently configured connection parameters */
+        Handle_t                    handle;
+        Role_t                      role;
+        BLEProtocol::AddressType_t  peerAddrType;
+        BLEProtocol::AddressBytes_t peerAddr;
+        BLEProtocol::AddressType_t  ownAddrType;
+        BLEProtocol::AddressBytes_t ownAddr;
+        const ConnectionParams_t   *connectionParams;
 
-        /**
-         * Constructor for ConnectionCallbackParams_t.
-         *
-         * @param[in] handleIn
-         *              Value for ConnectionCallbackParams_t::handle
-         * @param[in] roleIn
-         *              Value for ConnectionCallbackParams_t::role
-         * @param[in] peerAddrTypeIn
-         *              Value for ConnectionCallbackParams_t::peerAddrType
-         * @param[in] peerAddrIn
-         *              Value for ConnectionCallbackParams_t::peerAddr
-         * @param[in] ownAddrTypeIn
-         *              Value for ConnectionCallbackParams_t::ownAddrType
-         * @param[in] ownAddrIn
-         *              Value for ConnectionCallbackParams_t::ownAddr
-         * @param[in] connectionParamsIn
-         *              Value for ConnectionCallbackParams_t::connectionParams
-         */
         ConnectionCallbackParams_t(Handle_t                    handleIn,
                                    Role_t                      roleIn,
                                    BLEProtocol::AddressType_t  peerAddrTypeIn,
@@ -261,22 +201,10 @@
         }
     };
 
-    /**
-     * Structure that encapsulates information about a disconnection event.
-     * Refer to Gap::onDisconnection().
-     */
     struct DisconnectionCallbackParams_t {
-        Handle_t              handle; /**< The ID of the connection that caused the disconnection event */
-        DisconnectionReason_t reason; /**< The reason of the disconnection event */
+        Handle_t              handle;
+        DisconnectionReason_t reason;
 
-        /**
-         * Constructor for DisconnectionCallbackParams_t.
-         *
-         * @param[in] handleIn
-         *              Value for DisconnectionCallbackParams_t::handle.
-         * @param[in] reasonIn
-         *              Value for DisconnectionCallbackParams_t::reason.
-         */
         DisconnectionCallbackParams_t(Handle_t              handleIn,
                                       DisconnectionReason_t reasonIn) :
             handle(handleIn),
@@ -285,63 +213,22 @@
     };
 
     static const uint16_t UNIT_1_25_MS  = 1250; /**< Number of microseconds in 1.25 milliseconds. */
-    /**
-     * Helper function to convert from units of milliseconds to GAP duration
-     * units.
-     *
-     * @param[in] durationInMillis
-     *              The duration in milliseconds.
-     *
-     * @return The duration in GAP duration units.
-     */
     static uint16_t MSEC_TO_GAP_DURATION_UNITS(uint32_t durationInMillis) {
         return (durationInMillis * 1000) / UNIT_1_25_MS;
     }
 
-    /**
-     * Type for the registered callbacks added to the timeout event callchain.
-     * Refer to Gap::onTimeout().
-     */
     typedef FunctionPointerWithContext<TimeoutSource_t> TimeoutEventCallback_t;
-    /**
-     * Type for the timeout event callchain. Refer to Gap::onTimeout().
-     */
     typedef CallChainOfFunctionPointersWithContext<TimeoutSource_t> TimeoutEventCallbackChain_t;
 
-    /**
-     * Type for the registered callbacks added to the connection event
-     * callchain. Refer to Gap::onConnection().
-     */
     typedef FunctionPointerWithContext<const ConnectionCallbackParams_t *> ConnectionEventCallback_t;
-    /**
-     * Type for the connection event callchain. Refer to Gap::onConnection().
-     */
     typedef CallChainOfFunctionPointersWithContext<const ConnectionCallbackParams_t *> ConnectionEventCallbackChain_t;
 
-    /**
-     * Type for the registered callbacks added to the disconnection event
-     * callchain. Refer to Gap::onDisconnetion().
-     */
     typedef FunctionPointerWithContext<const DisconnectionCallbackParams_t*> DisconnectionEventCallback_t;
-    /**
-     * Type for the disconnection event callchain. Refer to Gap::onDisconnection().
-     */
     typedef CallChainOfFunctionPointersWithContext<const DisconnectionCallbackParams_t*> DisconnectionEventCallbackChain_t;
 
-    /**
-     * Type for the handlers of radio notification callback events. Refer to
-     * Gap::onRadioNotification().
-     */
     typedef FunctionPointerWithContext<bool> RadioNotificationEventCallback_t;
 
-    /**
-     * Type for the handlers of shutdown callback events. Refer to
-     * Gap::onShutdown().
-     */
     typedef FunctionPointerWithContext<const Gap *> GapShutdownCallback_t;
-    /**
-     * Type for the shutdown event callchain. Refer to Gap::onShutdown().
-     */
     typedef CallChainOfFunctionPointersWithContext<const Gap *> GapShutdownCallbackChain_t;
 
     /*
@@ -352,11 +239,6 @@
      * Set the BTLE MAC address and type. Please note that the address format is
      * least significant byte first (LSB). Please refer to BLEProtocol::AddressBytes_t.
      *
-     * @param[in] type
-     *              The type of the BLE address to set.
-     * @param[in] address
-     *              The BLE address to set.
-     *
      * @return BLE_ERROR_NONE on success.
      */
     virtual ble_error_t setAddress(BLEProtocol::AddressType_t type, const BLEProtocol::AddressBytes_t address) {
@@ -370,11 +252,6 @@
     /**
      * Fetch the BTLE MAC address and type.
      *
-     * @param[out]  typeP
-     *                  The current BLE address type.
-     * @param[out]  address
-     *                  The current BLE address.
-     *
      * @return BLE_ERROR_NONE on success.
      */
     virtual ble_error_t getAddress(BLEProtocol::AddressType_t *typeP, BLEProtocol::AddressBytes_t address) {
@@ -386,44 +263,28 @@
     }
 
     /**
-     * Get the minimum advertising interval in milliseconds for connectable
-     * undirected and connectable directed event types supported by the
-     * underlying BLE stack.
-     *
      * @return Minimum Advertising interval in milliseconds for connectable
-     *         undirected and connectable directed event types.
+     *      undirected and connectable directed event types.
      */
     virtual uint16_t getMinAdvertisingInterval(void) const {
         return 0; /* Requesting action from porter(s): override this API if this capability is supported. */
     }
 
     /**
-     * Get the minimum advertising interval in milliseconds for scannable
-     * undirected and non-connectable undirected even types supported by the
-     * underlying BLE stack.
-     *
      * @return Minimum Advertising interval in milliseconds for scannable
-     *         undirected and non-connectable undirected event types.
+     *      undirected and non-connectable undirected event types.
      */
     virtual uint16_t getMinNonConnectableAdvertisingInterval(void) const {
         return 0; /* Requesting action from porter(s): override this API if this capability is supported. */
     }
 
     /**
-     * Get the maximum advertising interval in milliseconds for all event types
-     * supported by the underlying BLE stack.
-     *
      * @return Maximum Advertising interval in milliseconds.
      */
     virtual uint16_t getMaxAdvertisingInterval(void) const {
         return 0xFFFF; /* Requesting action from porter(s): override this API if this capability is supported. */
     }
 
-    /**
-     * Stop advertising. The current advertising parameters remain in effect.
-     *
-     * @retval BLE_ERROR_NONE if successfully stopped advertising procedure.
-     */
     virtual ble_error_t stopAdvertising(void) {
         return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
     }
@@ -440,18 +301,17 @@
     /**
      * Create a connection (GAP Link Establishment).
      *
-     * @param[in] peerAddr
-     *              48-bit address, LSB format.
-     * @param[in] peerAddrType
-     *              Address type of the peer.
-     * @param[in] connectionParams
-     *              Connection parameters.
-     * @param[in] scanParams
-     *              Paramters to be used while scanning for the peer.
-     *
+     * @param peerAddr
+     *          48-bit address, LSB format.
+     * @param peerAddrType
+     *          Address type of the peer.
+     * @param connectionParams
+     *         Connection parameters.
+     * @param scanParams
+     *          Paramters to be used while scanning for the peer.
      * @return  BLE_ERROR_NONE if connection establishment procedure is started
-     *          successfully. The connectionCallChain (if set) will be invoked upon
-     *          a connection event.
+     *     successfully. The connectionCallChain (if set) will be invoked upon
+     *     a connection event.
      */
     virtual ble_error_t connect(const BLEProtocol::AddressBytes_t  peerAddr,
                                 BLEProtocol::AddressType_t         peerAddrType,
@@ -469,12 +329,11 @@
     /**
      * Create a connection (GAP Link Establishment).
      *
-     * @deprecated  This funtion overloads Gap::connect(const BLEProtocol::Address_t  peerAddr,
-     *                                                  BLEProtocol::AddressType_t    peerAddrType,
-     *                                                  const ConnectionParams_t     *connectionParams,
-     *                                                  const GapScanningParams      *scanParams)
-     *              to maintain backward compatibility for change from Gap::AddressType_t to
-     *              BLEProtocol::AddressType_t.
+     * \deprecated: This funtion overloads Gap::connect(const BLEProtocol::Address_t  peerAddr,
+                                                        BLEProtocol::AddressType_t    peerAddrType,
+                                                        const ConnectionParams_t     *connectionParams,
+                                                        const GapScanningParams      *scanParams)
+     *      to maintain backward compatibility for change from Gap::AddressType_t to BLEProtocol::AddressType_t
      */
     ble_error_t connect(const BLEProtocol::AddressBytes_t  peerAddr,
                         DeprecatedAddressType_t            peerAddrType,
@@ -489,12 +348,8 @@
      * be communicated to the application with an invocation of the
      * disconnectionCallback.
      *
-     * @param[in] reason
-     *              The reason for disconnection; to be sent back to the peer.
-     * @param[in] connectionHandle
-     *              The handle of the connection to disconnect from.
-     *
-     * @return  BLE_ERROR_NONE if disconnection was successful.
+     * @param  reason
+     *           The reason for disconnection; to be sent back to the peer.
      */
     virtual ble_error_t disconnect(Handle_t connectionHandle, DisconnectionReason_t reason) {
         /* avoid compiler warnings about unused variables */
@@ -509,15 +364,13 @@
      * be communicated to the application with an invocation of the
      * disconnectionCallback.
      *
-     * @param[in] reason
-     *              The reason for disconnection; to be sent back to the peer.
-     *
-     * @return  BLE_ERROR_NONE if disconnection was successful.
+     * @param  reason
+     *           The reason for disconnection; to be sent back to the peer.
      *
-     * @deprecated This version of disconnect() doesn't take a connection handle. It
-     *             works reliably only for stacks that are limited to a single
-     *             connection. Use instead Gap::disconnect(Handle_t connectionHandle,
-     *             DisconnectionReason_t reason) instead.
+     * @note: This version of disconnect() doesn't take a connection handle. It
+     * works reliably only for stacks that are limited to a single
+     * connection. This API should be considered *deprecated* in favour of the
+     * alternative, which takes a connection handle. It will be dropped in the future.
      */
     virtual ble_error_t disconnect(DisconnectionReason_t reason) {
         /* Avoid compiler warnings about unused variables. */
@@ -536,7 +389,7 @@
      *               for this is owned by the caller.
      *
      * @return BLE_ERROR_NONE if the parameters were successfully filled into
-     *         the given structure pointed to by params.
+     * the given structure pointed to by params.
      */
     virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params) {
         /* Avoid compiler warnings about unused variables. */
@@ -552,9 +405,6 @@
      *
      * @param[in] params
      *               The structure containing the desired parameters.
-     *
-     * @return BLE_ERROR_NONE if the preferred connection params were set
-     *         correctly.
      */
     virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params) {
         /* Avoid compiler warnings about unused variables. */
@@ -564,18 +414,16 @@
     }
 
     /**
-     * Update connection parameters. In the central role this will initiate a
-     * Link Layer connection parameter update procedure. In the peripheral role,
-     * this will send the corresponding L2CAP request and wait for the central
-     * to perform the procedure.
+     * Update connection parameters.
+     * In the central role this will initiate a Link Layer connection parameter update procedure.
+     * In the peripheral role, this will send the corresponding L2CAP request and wait for
+     * the central to perform the procedure.
      *
      * @param[in] handle
      *              Connection Handle.
      * @param[in] params
      *              Pointer to desired connection parameters. If NULL is provided on a peripheral role,
      *              the parameters in the PPCP characteristic of the GAP service will be used instead.
-     *
-     * @return BLE_ERROR_NONE if the connection parameters were updated correctly.
      */
     virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params) {
         /* avoid compiler warnings about unused variables */
@@ -587,11 +435,8 @@
 
     /**
      * Set the device name characteristic in the GAP service.
-     *
      * @param[in] deviceName
      *              The new value for the device-name. This is a UTF-8 encoded, <b>NULL-terminated</b> string.
-     *
-     * @return BLE_ERROR_NONE if the device name was set correctly.
      */
     virtual ble_error_t setDeviceName(const uint8_t *deviceName) {
         /* Avoid compiler warnings about unused variables. */
@@ -602,25 +447,21 @@
 
     /**
      * Get the value of the device name characteristic in the GAP service.
-     *
      * @param[out]    deviceName
      *                  Pointer to an empty buffer where the UTF-8 *non NULL-
      *                  terminated* string will be placed. Set this
      *                  value to NULL in order to obtain the deviceName-length
      *                  from the 'length' parameter.
      *
-     * @param[in,out] lengthP
+     * @param[in/out] lengthP
      *                  (on input) Length of the buffer pointed to by deviceName;
      *                  (on output) the complete device name length (without the
      *                     null terminator).
      *
-     * @return BLE_ERROR_NONE if the device name was fetched correctly from the
-     *         underlying BLE stack.
-     *
      * @note If the device name is longer than the size of the supplied buffer,
-     *       length will return the complete device name length, and not the
-     *       number of bytes actually returned in deviceName. The application may
-     *       use this information to retry with a suitable buffer size.
+     *     length will return the complete device name length, and not the
+     *     number of bytes actually returned in deviceName. The application may
+     *     use this information to retry with a suitable buffer size.
      */
     virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP) {
         /* avoid compiler warnings about unused variables */
@@ -632,11 +473,8 @@
 
     /**
      * Set the appearance characteristic in the GAP service.
-     *
      * @param[in] appearance
      *              The new value for the device-appearance.
-     *
-     * @return BLE_ERROR_NONE if the new appearance was set correctly.
      */
     virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance) {
         /* Avoid compiler warnings about unused variables. */
@@ -647,12 +485,8 @@
 
     /**
      * Get the appearance characteristic in the GAP service.
-     *
      * @param[out] appearance
-     *               The current device-appearance value.
-     *
-     * @return BLE_ERROR_NONE if the device-appearance was fetched correctly
-     *         from the underlying BLE stack.
+     *               The new value for the device-appearance.
      */
     virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP) {
         /* Avoid compiler warnings about unused variables. */
@@ -663,12 +497,7 @@
 
     /**
      * Set the radio's transmit power.
-     *
-     * @param[in] txPower
-     *              Radio's transmit power in dBm.
-     *
-     * @return BLE_ERROR_NONE if the new radio's transmit power was set
-     *         correctly.
+     * @param[in] txPower Radio transmit power in dBm.
      */
     virtual ble_error_t setTxPower(int8_t txPower) {
         /* Avoid compiler warnings about unused variables. */
@@ -694,14 +523,8 @@
     }
 
     /**
-     * Get the maximum size of the whitelist.
-     *
      * @return Maximum size of the whitelist.
      *
-     * @note If using mbed OS the size of the whitelist can be configured by
-     *       setting the YOTTA_CFG_WHITELIST_MAX_SIZE macro in your yotta
-     *       config file.
-     *
      * @experimental
      */
     virtual uint8_t getMaxWhitelistSize(void) const
@@ -713,7 +536,7 @@
      * Get the internal whitelist to be used by the Link Layer when scanning,
      * advertising or initiating a connection depending on the filter policies.
      *
-     * @param[in,out]   whitelist
+     * @param[in/out]   whitelist
      *                  (on input) whitelist.capacity contains the maximum number
      *                  of addresses to be returned.
      *                  (on output) The populated whitelist with copies of the
@@ -851,15 +674,6 @@
 
 protected:
     /* Override the following in the underlying adaptation layer to provide the functionality of scanning. */
-
-    /**
-     * Start scanning procedure in the underlying BLE stack.
-     *
-     * @param[in] scanningParams
-     *              The GAP scanning parameters.
-     *
-     * @return BLE_ERROR_NONE if the scan procedure started successfully.
-     */
     virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams) {
         (void)scanningParams;
         return BLE_ERROR_NOT_IMPLEMENTED; /* Requesting action from porter(s): override this API if this capability is supported. */
@@ -870,10 +684,8 @@
      */
 public:
     /**
-     * Get the current GAP state of the device using a bitmask that
+     * Returns the current GAP state of the device using a bitmask that
      * describes whether the device is advertising or connected.
-     *
-     * @return The current GAP state of the device.
      */
     GapState_t getState(void) const {
         return state;
@@ -881,17 +693,12 @@
 
     /**
      * Set the GAP advertising mode to use for this device.
-     *
-     * @param[in] advType
-     *              The new type of the advertising packets.
      */
     void setAdvertisingType(GapAdvertisingParams::AdvertisingType_t advType) {
         _advParams.setAdvertisingType(advType);
     }
 
     /**
-     * Set the advertising interval.
-     *
      * @param[in] interval
      *              Advertising interval in units of milliseconds. Advertising
      *              is disabled if interval is 0. If interval is smaller than
@@ -902,15 +709,15 @@
      *              This field must be set to 0 if connectionMode is equal
      *              to ADV_CONNECTABLE_DIRECTED.
      *
-     * @note  Decreasing this value will allow central devices to detect a
-     *        peripheral faster, at the expense of more power being used by the radio
-     *        due to the higher data transmit rate.
+     * @note: Decreasing this value will allow central devices to detect a
+     * peripheral faster, at the expense of more power being used by the radio
+     * due to the higher data transmit rate.
      *
-     * @note  [WARNING] This API previously used 0.625ms as the unit for its
-     *        @p interval argument. That required an explicit conversion from
-     *        milliseconds using Gap::MSEC_TO_GAP_DURATION_UNITS(). This conversion is
-     *        no longer required as the new units are milliseconds. Any application
-     *        code depending on the old semantics needs to be updated accordingly.
+     * @Note: [WARNING] This API previously used 0.625ms as the unit for its
+     * 'interval' argument. That required an explicit conversion from
+     * milliseconds using Gap::MSEC_TO_GAP_DURATION_UNITS(). This conversion is
+     * no longer required as the new units are milliseconds. Any application
+     * code depending on the old semantics needs to be updated accordingly.
      */
     void setAdvertisingInterval(uint16_t interval) {
         if (interval == 0) {
@@ -922,9 +729,6 @@
     }
 
     /**
-     * Set the advertising timeout. The length of time to advertise for before
-     * a timeout event is generated.
-     *
      * @param[in] timeout
      *              Advertising timeout (in seconds) between 0x1 and 0x3FFF (1
      *              and 16383). Use 0 to disable the advertising timeout.
@@ -935,8 +739,6 @@
 
     /**
      * Start advertising.
-     *
-     * @return BLE_ERROR_NONE if the device started advertising successfully.
      */
     ble_error_t startAdvertising(void) {
         setAdvertisingData(); /* Update the underlying stack. */
@@ -963,9 +765,6 @@
      *              The flags to be added. Please refer to
      *              GapAdvertisingData::Flags for valid flags. Multiple
      *              flags may be specified in combination.
-     *
-     * @return BLE_ERROR_NONE if the data was successfully added to the
-     *         advertising payload.
      */
     ble_error_t accumulateAdvertisingPayload(uint8_t flags) {
         ble_error_t rc;
@@ -982,11 +781,8 @@
      * as an additional 31 bytes if the advertising payload is too
      * small.
      *
-     * @param[in]  app
-     *              The appearance of the peripheral.
-     *
-     * @return BLE_ERROR_NONE if the data was successfully added to the
-     *         advertising payload.
+     * @param  app
+     *         The appearance of the peripheral.
      */
     ble_error_t accumulateAdvertisingPayload(GapAdvertisingData::Appearance app) {
         setAppearance(app);
@@ -1005,11 +801,8 @@
      * as an additional 31 bytes if the advertising payload is too
      * small.
      *
-     * @param[in]  power
-     *              The max transmit power to be used by the controller (in dBm).
-     *
-     * @return BLE_ERROR_NONE if the data was successfully added to the
-     *         advertising payload.
+     * @param  power
+     *         The max transmit power to be used by the controller (in dBm).
      */
     ble_error_t accumulateAdvertisingPayloadTxPower(int8_t power) {
         ble_error_t rc;
@@ -1026,12 +819,9 @@
      * The SCAN_RESPONSE message may be used as an additional 31 bytes if the
      * advertising payload is too small.
      *
-     * @param[in]  type
-     *              The type describing the variable length data.
-     * @param[in]  data
-     *              Data bytes.
-     * @param[in]  len
-     *              Length of data.
+     * @param  type The type describing the variable length data.
+     * @param  data Data bytes.
+     * @param  len  Length of data.
      *
      * @return BLE_ERROR_NONE if the advertisement payload was updated based on
      *         matching AD type; otherwise, an appropriate error.
@@ -1060,14 +850,11 @@
      * Update a particular ADV field in the advertising payload (based on
      * matching type).
      *
-     * @param[in] type
-     *              The ADV type field describing the variable length data.
-     * @param[in] data
-     *              Data bytes.
-     * @param[in] len
-     *              Length of data.
+     * @param[in] type  The ADV type field describing the variable length data.
+     * @param[in] data  Data bytes.
+     * @param[in] len   Length of data.
      *
-     * @note  If advertisements are enabled, then the update will take effect immediately.
+     * @note: If advertisements are enabled, then the update will take effect immediately.
      *
      * @return BLE_ERROR_NONE if the advertisement payload was updated based on
      *         matching AD type; otherwise, an appropriate error.
@@ -1088,15 +875,7 @@
     /**
      * Set up a particular, user-constructed advertisement payload for the
      * underlying stack. It would be uncommon for this API to be used directly;
-     * there are other APIs to build an advertisement payload (refer to
-     * Gap::accumulateAdvertisingPayload()).
-     *
-     * @param[in]   payload
-     *                  A reference to a user constructed advertisement
-     *                  payload.
-     *
-     * @return BLE_ERROR_NONE if the advertisement payload was successfully
-     *         set.
+     * there are other APIs to build an advertisement payload (see above).
      */
     ble_error_t setAdvertisingPayload(const GapAdvertisingData &payload) {
         _advPayload = payload;
@@ -1104,11 +883,8 @@
     }
 
     /**
-     * Get a reference to the advertising payload.
-     *
-     * @return  Read back advertising data.
-     *
-     * @note Useful for storing and restoring payload.
+     * @return  Read back advertising data. Useful for storing and
+     *          restoring payload.
      */
     const GapAdvertisingData &getAdvertisingPayload(void) const {
         return _advPayload;
@@ -1118,15 +894,9 @@
      * Accumulate a variable length byte-stream as an AD structure in the
      * scanResponse payload.
      *
-     * @param[in] type
-     *              The type describing the variable length data.
-     * @param[in] data
-     *              Data bytes.
-     * @param[in] len
-     *              Length of data.
-     *
-     * @return BLE_ERROR_NONE if the data was successfully added to the scan
-     *         response payload.
+     * @param[in] type The type describing the variable length data.
+     * @param[in] data Data bytes.
+     * @param[in] len  Length of data.
      */
     ble_error_t accumulateScanResponse(GapAdvertisingData::DataType type, const uint8_t *data, uint8_t len) {
         ble_error_t rc;
@@ -1139,10 +909,10 @@
 
     /**
      * Reset any scan response prepared from prior calls to
-     * Gap::accumulateScanResponse().
+     * accumulateScanResponse().
      *
-     * @note This should be followed by a call to Gap::setAdvertisingPayload() or
-     *       Gap::startAdvertising() before the update takes effect.
+     * Note: This should be followed by a call to setAdvertisingPayload() or
+     * startAdvertising() before the update takes effect.
      */
     void clearScanResponse(void) {
         _scanResponse.clear();
@@ -1151,7 +921,6 @@
 
     /**
      * Set up parameters for GAP scanning (observer mode).
-     *
      * @param[in] interval
      *              Scan interval (in milliseconds) [valid values lie between 2.5ms and 10.24s].
      * @param[in] window
@@ -1162,19 +931,17 @@
      *              Set to True if active-scanning is required. This is used to fetch the
      *              scan response from a peer if possible.
      *
-     * @return BLE_ERROR_NONE if the scan parameters were correctly set.
+     * The scanning window divided by the interval determines the duty cycle for
+     * scanning. For example, if the interval is 100ms and the window is 10ms,
+     * then the controller will scan for 10 percent of the time. It is possible
+     * to have the interval and window set to the same value. In this case,
+     * scanning is continuous, with a change of scanning frequency once every
+     * interval.
      *
-     * @note The scanning window divided by the interval determines the duty cycle for
-     *       scanning. For example, if the interval is 100ms and the window is 10ms,
-     *       then the controller will scan for 10 percent of the time. It is possible
-     *       to have the interval and window set to the same value. In this case,
-     *       scanning is continuous, with a change of scanning frequency once every
-     *       interval.
+     * Once the scanning parameters have been configured, scanning can be
+     * enabled by using startScan().
      *
-     * @note Once the scanning parameters have been configured, scanning can be
-     *       enabled by using startScan().
-     *
-     * @note  The scan interval and window are recommendations to the BLE stack.
+     * @Note: The scan interval and window are recommendations to the BLE stack.
      */
     ble_error_t setScanParams(uint16_t interval       = GapScanningParams::SCAN_INTERVAL_MAX,
                               uint16_t window         = GapScanningParams::SCAN_WINDOW_MAX,
@@ -1193,21 +960,18 @@
 
     /**
      * Set up the scanInterval parameter for GAP scanning (observer mode).
-     *
      * @param[in] interval
      *              Scan interval (in milliseconds) [valid values lie between 2.5ms and 10.24s].
      *
-     * @return BLE_ERROR_NONE if the scan interval was correctly set.
+     * The scanning window divided by the interval determines the duty cycle for
+     * scanning. For example, if the interval is 100ms and the window is 10ms,
+     * then the controller will scan for 10 percent of the time. It is possible
+     * to have the interval and window set to the same value. In this case,
+     * scanning is continuous, with a change of scanning frequency once every
+     * interval.
      *
-     * @note The scanning window divided by the interval determines the duty cycle for
-     *       scanning. For example, if the interval is 100ms and the window is 10ms,
-     *       then the controller will scan for 10 percent of the time. It is possible
-     *       to have the interval and window set to the same value. In this case,
-     *       scanning is continuous, with a change of scanning frequency once every
-     *       interval.
-     *
-     * @note Once the scanning parameters have been configured, scanning can be
-     *       enabled by using startScan().
+     * Once the scanning parameters have been configured, scanning can be
+     * enabled by using startScan().
      */
     ble_error_t setScanInterval(uint16_t interval) {
         return _scanningParams.setInterval(interval);
@@ -1215,24 +979,21 @@
 
     /**
      * Set up the scanWindow parameter for GAP scanning (observer mode).
-     *
      * @param[in] window
      *              Scan Window (in milliseconds) [valid values lie between 2.5ms and 10.24s].
      *
-     * @return BLE_ERROR_NONE if the scan window was correctly set.
+     * The scanning window divided by the interval determines the duty cycle for
+     * scanning. For example, if the interval is 100ms and the window is 10ms,
+     * then the controller will scan for 10 percent of the time. It is possible
+     * to have the interval and window set to the same value. In this case,
+     * scanning is continuous, with a change of scanning frequency once every
+     * interval.
      *
-     * @note The scanning window divided by the interval determines the duty cycle for
-     *       scanning. For example, if the interval is 100ms and the window is 10ms,
-     *       then the controller will scan for 10 percent of the time. It is possible
-     *       to have the interval and window set to the same value. In this case,
-     *       scanning is continuous, with a change of scanning frequency once every
-     *       interval.
+     * Once the scanning parameters have been configured, scanning can be
+     * enabled by using startScan().
      *
-     * @note Once the scanning parameters have been configured, scanning can be
-     *       enabled by using startScan().
-     *
-     * @note If scanning is already active, the updated value of scanWindow will be
-     *       propagated to the underlying BLE stack.
+     * If scanning is already active, the updated value of scanWindow will be
+     * propagated to the underlying BLE stack.
      */
     ble_error_t setScanWindow(uint16_t window) {
         ble_error_t rc;
@@ -1250,17 +1011,14 @@
 
     /**
      * Set up parameters for GAP scanning (observer mode).
-     *
      * @param[in] timeout
      *              Scan timeout (in seconds) between 0x0001 and 0xFFFF; 0x0000 disables the timeout.
      *
-     * @return BLE_ERROR_NONE if the scan timeout was correctly set.
+     * Once the scanning parameters have been configured, scanning can be
+     * enabled by using startScan().
      *
-     * @note Once the scanning parameters have been configured, scanning can be
-     *       enabled by using startScan().
-     *
-     * @note If scanning is already active, the updated value of scanTimeout will be
-     *       propagated to the underlying BLE stack.
+     * If scanning is already active, the updated value of scanTimeout will be
+     * propagated to the underlying BLE stack.
      */
     ble_error_t setScanTimeout(uint16_t timeout) {
         ble_error_t rc;
@@ -1277,19 +1035,16 @@
     }
 
     /**
-     * Modify the active scanning parameter for GAP scanning (observer mode).
-     * This is used to fetch the scan response from a peer if possible.
-     *
+     * Set up parameters for GAP scanning (observer mode).
      * @param[in] activeScanning
-     *              Set to True if active-scanning is required.
+     *              Set to True if active-scanning is required. This is used to fetch the
+     *              scan response from a peer if possible.
      *
-     * @return BLE_ERROR_NONE if active scanning was successfully set.
+     * Once the scanning parameters have been configured, scanning can be
+     * enabled by using startScan().
      *
-     * @note Once the scanning parameters have been configured, scanning can be
-     *       enabled by using startScan().
-     *
-     * @note If scanning is already in progress, then active-scanning will be enabled
-     *       for the underlying BLE stack.
+     * If scanning is already in progress, then active-scanning will be enabled
+     * for the underlying BLE stack.
      */
     ble_error_t setActiveScanning(bool activeScanning) {
         _scanningParams.setActiveScanning(activeScanning);
@@ -1310,9 +1065,6 @@
      *              The application-specific callback to be invoked upon
      *              receiving every advertisement report. This can be passed in
      *              as NULL, in which case scanning may not be enabled at all.
-     *
-     * @return BLE_ERROR_NONE if the device successfully started the scan
-     *         procedure.
      */
     ble_error_t startScan(void (*callback)(const AdvertisementCallbackParams_t *params)) {
         ble_error_t err = BLE_ERROR_NONE;
@@ -1327,19 +1079,7 @@
     }
 
     /**
-     * Same as Gap::startScan(), but allows the possibility to add an object
-     * reference and member function as handler for advertisement event
-     * callbacks.
-     *
-     * @param[in] object
-     *              Pointer to the object of a class defining the member callback
-     *              function (@p callbackMember).
-     * @param[in] callbackMember
-     *              The member callback (within the context of an object) to be
-     *              invoked.
-     *
-     * @return BLE_ERROR_NONE if the device successfully started the scan
-     *         procedure.
+     * Same as above, but this takes an (object, method) pair for a callback.
      */
     template<typename T>
     ble_error_t startScan(T *object, void (T::*callbackMember)(const AdvertisementCallbackParams_t *params)) {
@@ -1376,58 +1116,21 @@
     }
 
 private:
-    /**
-     * Helper function used to set the advertising data in the underlying BLE stack.
-     *
-     * @return BLE_ERROR_NONE if the advertising data was successfully set.
-     */
     ble_error_t setAdvertisingData(void) {
         return setAdvertisingData(_advPayload, _scanResponse);
     }
 
 private:
-    /**
-     * Functionality that is BLE stack-dependent and must be implemented by the
-     * ported. This is a helper function to set the advertising data in the
-     * BLE stack.
-     *
-     * @param[in] advData
-     *              The new advertising data.
-     * @param[in] scanResponse
-     *              The new scan response data.
-     *
-     * @return BLE_ERROR_NONE if the advertising data was set successfully.
-     */
     virtual ble_error_t setAdvertisingData(const GapAdvertisingData &advData, const GapAdvertisingData &scanResponse) = 0;
-
-    /**
-     * Functionality that is BLE stack-dependent and must be implemented by the
-     * ported. This is a helper function to start the advertising procedure in
-     * the underlying BLE stack.
-     *
-     * @param[in]
-     *              The advertising parameters.
-     *
-     * @return BLE_ERROR_NONE if the advertising procedure was successfully
-     *         started.
-     */
     virtual ble_error_t startAdvertising(const GapAdvertisingParams &) = 0;
 
 public:
     /**
-     * Accessor to read back currently active advertising parameters.
-     *
-     * @return A reference to the current advertising parameters.
+     * Accessors to read back currently active advertising params.
      */
     GapAdvertisingParams &getAdvertisingParams(void) {
         return _advParams;
     }
-
-    /**
-     * A const alternative to Gap::getAdvertisingParams().
-     *
-     * @return A const reference to the current advertising parameters.
-     */
     const GapAdvertisingParams &getAdvertisingParams(void) const {
         return _advParams;
     }
@@ -1437,9 +1140,6 @@
      * the underlying stack. It would be uncommon for this API to be used
      * directly; there are other APIs to tweak advertisement parameters
      * individually.
-     *
-     * @param[in]   newParams
-     *                  The new advertising parameters.
      */
     void setAdvertisingParams(const GapAdvertisingParams &newParams) {
         _advParams = newParams;
@@ -1450,24 +1150,17 @@
     /**
      * Set up a callback for timeout events. Refer to TimeoutSource_t for
      * possible event types.
-     *
-     * @param[in] callback
-     *              Event handler being registered.
-     *
-     * @note It is possible to unregister callbacks using onTimeout().detach(callback).
+     * @note It is possible to unregister callbacks using onTimeout().detach(callback)
      */
     void onTimeout(TimeoutEventCallback_t callback) {
         timeoutCallbackChain.add(callback);
     }
 
     /**
-     * @brief Provide access to the callchain of timeout event callbacks.
-     *
-     * @note It is possible to register callbacks using onTimeout().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onTimeout().detach(callback).
-     *
-     * @return A reference to the timeout event callbacks chain.
+     * @brief provide access to the callchain of timeout event callbacks
+     * It is possible to register callbacks using onTimeout().add(callback);
+     * It is possible to unregister callbacks using onTimeout().detach(callback)
+     * @return The timeout event callbacks chain
      */
     TimeoutEventCallbackChain_t& onTimeout() {
         return timeoutCallbackChain;
@@ -1475,41 +1168,18 @@
 
     /**
      * Append to a chain of callbacks to be invoked upon GAP connection.
-     *
-     * @param[in] callback
-     *              Event handler being registered.
-     *
      * @note It is possible to unregister callbacks using onConnection().detach(callback)
      */
-    void onConnection(ConnectionEventCallback_t callback) {
-        connectionCallChain.add(callback);
-    }
+    void onConnection(ConnectionEventCallback_t callback) {connectionCallChain.add(callback);}
+
+    template<typename T>
+    void onConnection(T *tptr, void (T::*mptr)(const ConnectionCallbackParams_t*)) {connectionCallChain.add(tptr, mptr);}
 
     /**
-     * Same as Gap::onConnection(), but allows the possibility to add an object
-     * reference and member function as handler for connection event
-     * callbacks.
-     *
-     * @param[in] tptr
-     *              Pointer to the object of a class defining the member callback
-     *              function (@p mptr).
-     * @param[in] mptr
-     *              The member callback (within the context of an object) to be
-     *              invoked.
-     */
-    template<typename T>
-    void onConnection(T *tptr, void (T::*mptr)(const ConnectionCallbackParams_t*)) {
-        connectionCallChain.add(tptr, mptr);
-    }
-
-    /**
-     * @brief Provide access to the callchain of connection event callbacks.
-     *
-     * @return A reference to the connection event callbacks chain.
-     *
-     * @note It is possible to register callbacks using onConnection().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onConnection().detach(callback).
+     * @brief provide access to the callchain of connection event callbacks
+     * It is possible to register callbacks using onConnection().add(callback);
+     * It is possible to unregister callbacks using onConnection().detach(callback)
+     * @return The connection event callbacks chain
      */
     ConnectionEventCallbackChain_t& onConnection() {
         return connectionCallChain;
@@ -1517,41 +1187,18 @@
 
     /**
      * Append to a chain of callbacks to be invoked upon GAP disconnection.
-     *
-     * @param[in] callback
-                    Event handler being registered.
-     *
-     * @note It is possible to unregister callbacks using onDisconnection().detach(callback).
+     * @note It is possible to unregister callbacks using onDisconnection().detach(callback)
      */
-    void onDisconnection(DisconnectionEventCallback_t callback) {
-        disconnectionCallChain.add(callback);
-    }
+    void onDisconnection(DisconnectionEventCallback_t callback) {disconnectionCallChain.add(callback);}
+
+    template<typename T>
+    void onDisconnection(T *tptr, void (T::*mptr)(const DisconnectionCallbackParams_t*)) {disconnectionCallChain.add(tptr, mptr);}
 
     /**
-     * Same as Gap::onDisconnection(), but allows the possibility to add an object
-     * reference and member function as handler for disconnection event
-     * callbacks.
-     *
-     * @param[in] tptr
-     *              Pointer to the object of a class defining the member callback
-     *              function (@p mptr).
-     * @param[in] mptr
-     *              The member callback (within the context of an object) to be
-     *              invoked.
-     */
-    template<typename T>
-    void onDisconnection(T *tptr, void (T::*mptr)(const DisconnectionCallbackParams_t*)) {
-        disconnectionCallChain.add(tptr, mptr);
-    }
-
-    /**
-     * @brief Provide access to the callchain of disconnection event callbacks.
-     *
-     * @return A reference to the disconnection event callback chain.
-     *
-     * @note It is possible to register callbacks using onDisconnection().add(callback).
-     *
-     * @note It is possible to unregister callbacks using onDisconnection().detach(callback).
+     * @brief provide access to the callchain of disconnection event callbacks
+     * It is possible to register callbacks using onDisconnection().add(callback);
+     * It is possible to unregister callbacks using onDisconnection().detach(callback)
+     * @return The disconnection event callbacks chain
      */
     DisconnectionEventCallbackChain_t& onDisconnection() {
         return disconnectionCallChain;
@@ -1571,26 +1218,22 @@
      * devices, to manage peak current drawn during periods when the radio is on,
      * or to trigger sensor data collection for transmission in the Radio Event.
      *
-     * @param[in] callback
-     *              The application handler to be invoked in response to a radio
-     *              ACTIVE/INACTIVE event.
+     * @param callback
+     *          The application handler to be invoked in response to a radio
+     *          ACTIVE/INACTIVE event.
+     *
+     * Or in the other version:
+     *
+     * @param tptr
+     *          Pointer to the object of a class defining the member callback
+     *          function (mptr).
+     * @param mptr
+     *          The member callback (within the context of an object) to be
+     *          invoked in response to a radio ACTIVE/INACTIVE event.
      */
     void onRadioNotification(void (*callback)(bool param)) {
         radioNotificationCallback.attach(callback);
     }
-
-    /**
-     * Same as Gap::onRadioNotification(), but allows the posibility to
-     * register an object reference and member function as handler for radio
-     * notification events.
-     *
-     * @param[in] tptr
-     *              Pointer to the object of a class defining the member callback
-     *              function (@p mptr).
-     * @param[in] mptr
-     *              The member callback (within the context of an object) to be
-     *              invoked in response to a radio ACTIVE/INACTIVE event.
-     */
     template <typename T>
     void onRadioNotification(T *tptr, void (T::*mptr)(bool)) {
         radioNotificationCallback.attach(tptr, mptr);
@@ -1601,48 +1244,28 @@
      * Gap instance is about to shutdown (possibly as a result of a call
      * to BLE::shutdown()).
      *
-     * @param[in] callback
-     *              The handler that is being registered to be notified of
-     *              shutdown events.
-     *
-     * @note  It is possible to chain together multiple onShutdown callbacks
+     * @Note: It is possible to chain together multiple onShutdown callbacks
      * (potentially from different modules of an application) to be notified
      * before the Gap instance is shutdown.
      *
-     * @note  It is also possible to set up a callback into a member function of
+     * @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 GapShutdownCallback_t& callback) {
         shutdownCallChain.add(callback);
     }
-
-    /**
-     * Same as Gap::onShutdown(), but allows the posibility to
-     * register an object reference and member function as handler for shutdown
-     * events.
-     *
-     * @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 in response to a shutdown event.
-     */
     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 callback 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
      */
     GapShutdownCallbackChain_t& onShutdown() {
         return shutdownCallChain;
@@ -1661,7 +1284,7 @@
      *
      * @return BLE_ERROR_NONE on success.
      *
-     * @note  Currently a call to reset() does not reset the advertising and
+     * @note: Currently a call to reset() does not reset the advertising and
      * scan parameters to default values.
      */
     virtual ble_error_t reset(void) {
@@ -1691,9 +1314,6 @@
     }
 
 protected:
-    /**
-     * Construct a Gap instance.
-     */
     Gap() :
         _advParams(),
         _advPayload(),
@@ -1712,26 +1332,6 @@
 
     /* 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 connection event. This function is meant to be called from the
-     * BLE stack specific implementation when a connection event occurs.
-     *
-     * @param[in] handle
-     *              The ID of the connection that generated the event.
-     * @param[in] role
-     *              The role of this BLE device in the connection.
-     * @param[in] peerAddrType
-     *              The peer's BLE address type.
-     * @param[in] peerAddr
-     *              The peer's BLE address.
-     * @param[in] ownAddrType
-     *              This device's BLE address type.
-     * @param[in] ownAddr
-     *              This device's BLE address.
-     * @param[in] connectionParams
-     *              The parameters configured for this connection.
-     */
     void processConnectionEvent(Handle_t                           handle,
                                 Role_t                             role,
                                 BLEProtocol::AddressType_t         peerAddrType,
@@ -1744,40 +1344,12 @@
         connectionCallChain.call(&callbackParams);
     }
 
-    /**
-     * Helper function that notifies all registered handlers of an occurrence
-     * of a disconnection event. This function is meant to be called from the
-     * BLE stack specific implementation when a disconnection event occurs.
-     *
-     * @param[in] handle
-     *              The ID of the connection that generated the event.
-     * @param[in] reason
-     *              The reason for disconnection.
-     */
     void processDisconnectionEvent(Handle_t handle, DisconnectionReason_t reason) {
         state.connected = 0;
         DisconnectionCallbackParams_t callbackParams(handle, reason);
         disconnectionCallChain.call(&callbackParams);
     }
 
-    /**
-     * Helper function that notifies the registered handler of a scanned
-     * advertisement packet. This function is meant to be called from the
-     * BLE stack specific implementation when a such event occurs.
-     *
-     * @param[in] peerAddr
-     *              The peer's BLE address.
-     * @param[in] rssi
-     *              The advertisement packet RSSI value.
-     * @param[in] isScanReponse
-     *              Whether this packet is the response to a scan request.
-     * @param[in] type
-     *              The type of advertisement.
-     * @param[in] advertisingDataLen
-     *              Length of the advertisement data.
-     * @param[in] advertisingData
-     *              Pointer to the advertisement packet's data.
-     */
     void processAdvertisementReport(const BLEProtocol::AddressBytes_t        peerAddr,
                                     int8_t                                   rssi,
                                     bool                                     isScanResponse,
@@ -1794,79 +1366,33 @@
         onAdvertisementReport.call(&params);
     }
 
-    /**
-     * Helper function that notifies all registered handlers of an occurrence
-     * of a timeout event. This function is meant to be called from the
-     * BLE stack specific implementation when a timeout event occurs.
-     *
-     * @param[in] source
-     *              The source of the timout event.
-     */
     void processTimeoutEvent(TimeoutSource_t source) {
+        if (source == TIMEOUT_SRC_ADVERTISING) {
+            /* Update gap state if the source is an advertising timeout */
+            state.advertising = 0;
+        }
         if (timeoutCallbackChain) {
             timeoutCallbackChain(source);
         }
     }
 
 protected:
-    /**
-     * Currently set advertising parameters.
-     */
     GapAdvertisingParams             _advParams;
-    /**
-     * Currently set advertising data.
-     */
     GapAdvertisingData               _advPayload;
-    /**
-     * Currently set scanning parameters.
-     */
     GapScanningParams                _scanningParams;
-    /**
-     * Currently set scan response data.
-     */
     GapAdvertisingData               _scanResponse;
 
-    /**
-     * The current GAP state.
-     */
     GapState_t                       state;
-    /**
-     * Whether active scanning is set. This is used to fetch the scan response
-     * from a peer if possible.
-     */
     bool                             scanningActive;
 
 protected:
-    /**
-     * Callchain containing all registered callback handlers for timeout
-     * events.
-     */
     TimeoutEventCallbackChain_t       timeoutCallbackChain;
-    /**
-     * The registered callback handler for radio notification events.
-     */
     RadioNotificationEventCallback_t  radioNotificationCallback;
-    /**
-     * The registered callback handler for scanned advertisement packet
-     * notifications.
-     */
     AdvertisementReportCallback_t     onAdvertisementReport;
-    /**
-     * Callchain containing all registered callback handlers for connection
-     * events.
-     */
     ConnectionEventCallbackChain_t    connectionCallChain;
-    /**
-     * Callchain containing all registered callback handlers for disconnection
-     * events.
-     */
     DisconnectionEventCallbackChain_t disconnectionCallChain;
 
 private:
-    /**
-     * Callchain containing all registered callback handlers for shutdown
-     * events.
-     */
     GapShutdownCallbackChain_t shutdownCallChain;
 
 private: