More GAP tweeks, still need to integrate Scan Response since it's more important than I thought

This commit is contained in:
ktownsend 2013-12-13 00:41:11 +00:00
parent 94142f321f
commit 3d4940b867
3 changed files with 30 additions and 22 deletions

View File

@ -8,24 +8,30 @@
/*!
@brief Instantiates a new GapAdvertisingParams instance
@param[in] connectionMode
The GAP connection mode to use for this device. Valid
values are defined in \ref ConnectionMode
@param[in] advType
The GAP advertising mode to use for this device. Valid
values are defined in \ref AdvertisingType
@para
NON_CONNECTABLE - All connections to the peripheral device
will be refused.
ADV_NON_CONNECTABLE_UNDIRECTED - All connections to the
peripheral device will be refused.
@para
DIRECTED_CONNECTABLE - Only connections from a pre-defined
central device will be accepted.
ADV_CONNECTABLE_DIRECTED - Only connections from a
pre-defined central device will be accepted.
@para
UNDIRECTED_CONNECTABLE - Any central device can connect to
this peripheral.
ADV_CONNECTABLE_UNDIRECTED - Any central device can connect
to this peripheral.
@para
ADV_SCANNABLE_UNDIRECTED - Any central device can connect
to this peripheral, and the secondary Scan Response
payload will be included or available to central devices.
@note See Bluetooth Core Specification 4.0 (Vol. 3),
Part C, Section 9.3 for further information on GAP
Part C, Section 9.3 and Core Specification 4.0 (Vol. 6),
Part B, Section 2.3.1 for further information on GAP
connection modes
@param[in] interval
@ -38,7 +44,7 @@
used by the radio due to the higher data transmit rate.
@note This field must be set to 0 if connectionMode is equal
to \ref DIRECTED_CONNECTABLE
to \ref ADV_CONNECTABLE_DIRECTED
@param[in] timeout
Advertising timeout between 0x1 and 0x3FFF (1 and 16383)
@ -51,14 +57,14 @@
@endcode
*/
/**************************************************************************/
GapAdvertisingParams::GapAdvertisingParams(ConnectionMode connectionMode, uint16_t interval, uint16_t timeout)
GapAdvertisingParams::GapAdvertisingParams(AdvertisingType advType, uint16_t interval, uint16_t timeout)
{
_connectionMode = connectionMode;
_advType = advType;
_interval = interval;
_timeout = timeout;
/* Interval checks */
if (_connectionMode == DIRECTED_CONNECTABLE)
if (_advType == ADV_CONNECTABLE_DIRECTED)
{
/* Interval must be 0 in directed connectable mode */
_interval = 0;

View File

@ -10,21 +10,23 @@
class GapAdvertisingParams
{
public:
/* See Bluetooth Core Specification 4.0 (Vol. 6), Part B, Section 2.3.1 */
/* See Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 9.3 */
enum ConnectionMode
enum AdvertisingType
{
NON_CONNECTABLE, /**< Section 9.3.2 */
DIRECTED_CONNECTABLE, /**< Section 9.3.3 */
UNDIRECTED_CONNECTABLE /**< Section 9.3.4 */
ADV_CONNECTABLE_UNDIRECTED, /**< Vol 3, Part C, Section 9.3.4 and Vol 6, Part B, Section 2.3.1.1 */
ADV_CONNECTABLE_DIRECTED, /**< Vol 3, Part C, Section 9.3.3 and Vol 6, Part B, Section 2.3.1.2 */
ADV_NON_CONNECTABLE_UNDIRECTED, /**< Vol 3, Part C, Section 9.3.2 and Vol 6, Part B, Section 2.3.1.3 */
ADV_SCANNABLE_UNDIRECTED /**< Include support for Scan Response payloads, see Vol 6, Part B, Section 2.3.1.4 */
};
GapAdvertisingParams(ConnectionMode connectionMode = GapAdvertisingParams::UNDIRECTED_CONNECTABLE,
uint16_t interval = GAP_ADV_PARAMS_INTERVAL_MIN,
GapAdvertisingParams(AdvertisingType advType = GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED,
uint16_t interval = GAP_ADV_PARAMS_INTERVAL_MIN,
uint16_t timeout = 0);
virtual ~GapAdvertisingParams(void);
private:
ConnectionMode _connectionMode;
AdvertisingType _advType;
uint16_t _interval;
uint16_t _timeout;
};

View File

@ -32,7 +32,7 @@ GattCharacteristic thermInterval ( 0x2A21, 2, 2, BLE_GATT_CHAR_PROPERTIES_READ )
/* Indicate = device (server) sends data when it changes and client confirms reception */
/* GAP Advertising Example (iBeacon) */
GapAdvertisingParams advParams ( GapAdvertisingParams::NON_CONNECTABLE );
GapAdvertisingParams advParams ( GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED );
GapAdvertisingData advData;
uint8_t iBeaconPayload[25] = { 0x4C, 0x00, 0x02, 0x15, 0xE2, 0x0A, 0x39, 0xF4, 0x73, 0xF5, 0x4B, 0xC4, 0xA1, 0x2F, 0x17, 0xD1, 0xAD, 0x07, 0xA9, 0x61, 0x00, 0x00, 0x00, 0x00, 0xC8 };