Holla back

Fork of BLE_API by Bluetooth Low Energy

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers GapAdvertisingParams.h Source File

GapAdvertisingParams.h

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2013 ARM Limited
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *     http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015 */
00016 
00017 #ifndef __GAP_ADVERTISING_PARAMS_H__
00018 #define __GAP_ADVERTISING_PARAMS_H__
00019 
00020 #include "blecommon.h"
00021 
00022 #define GAP_ADV_PARAMS_INTERVAL_MIN        (0x0020)
00023 #define GAP_ADV_PARAMS_INTERVAL_MIN_NONCON (0x00A0)
00024 #define GAP_ADV_PARAMS_INTERVAL_MAX        (0x1000)
00025 #define GAP_ADV_PARAMS_TIMEOUT_MAX         (0x3FFF)
00026 
00027 /**************************************************************************/
00028 /*!
00029     \brief
00030     This class provides a wrapper for the core advertising parameters,
00031     including the advertising type (Connectable Undirected,
00032     Non Connectable Undirected, etc.), as well as the advertising and
00033     timeout intervals.
00034 
00035     \par
00036     See the following for more information on advertising types:
00037 
00038     \li \c Bluetooth Core Specification 4.0 (Vol. 6), Part B, Section 2.3.1
00039     \li \c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 9.3
00040 
00041     \par EXAMPLE
00042 
00043     \code
00044 
00045     // ToDo
00046 
00047     \endcode
00048 */
00049 /**************************************************************************/
00050 class GapAdvertisingParams
00051 {
00052 public:
00053     /**************************************************************************/
00054     /*!
00055         \brief
00056         Encapsulates the peripheral advertising modes, which determine how
00057         the device appears to other central devices in hearing range
00058 
00059         \par
00060         See the following for more information on advertising types:
00061 
00062         \li \c Bluetooth Core Specification 4.0 (Vol. 6), Part B, Section 2.3.1
00063         \li \c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 9.3
00064     */
00065     /**************************************************************************/
00066     enum AdvertisingType {
00067         ADV_CONNECTABLE_UNDIRECTED,     /**< Vol 3, Part C, Section 9.3.4 and Vol 6, Part B, Section 2.3.1.1 */
00068         ADV_CONNECTABLE_DIRECTED,       /**< Vol 3, Part C, Section 9.3.3 and Vol 6, Part B, Section 2.3.1.2 */
00069         ADV_SCANNABLE_UNDIRECTED,       /**< Include support for Scan Response payloads, see Vol 6, Part B, Section 2.3.1.4 */
00070         ADV_NON_CONNECTABLE_UNDIRECTED  /**< Vol 3, Part C, Section 9.3.2 and Vol 6, Part B, Section 2.3.1.3 */
00071     };
00072 
00073     GapAdvertisingParams(AdvertisingType advType  = GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED,
00074                          uint16_t        interval = GAP_ADV_PARAMS_INTERVAL_MIN_NONCON,
00075                          uint16_t        timeout  = 0);
00076     virtual ~GapAdvertisingParams (void);
00077 
00078     void setAdvertisingType(AdvertisingType newAdvType);
00079     void setInterval(uint16_t newInterval);
00080     void setTimeout(uint16_t  newTimeout);
00081 
00082     virtual AdvertisingType getAdvertisingType(void) const;
00083     virtual uint16_t        getInterval(void) const;
00084     virtual uint16_t        getTimeout(void) const;
00085 
00086 private:
00087     AdvertisingType _advType;
00088     uint16_t        _interval;
00089     uint16_t        _timeout;
00090 };
00091 
00092 inline void
00093 GapAdvertisingParams::setAdvertisingType(AdvertisingType newAdvType) {
00094     _advType = newAdvType;
00095 }
00096 
00097 inline void
00098 GapAdvertisingParams::setInterval(uint16_t newInterval) {
00099     _interval = newInterval;
00100 }
00101 
00102 inline void
00103 GapAdvertisingParams::setTimeout(uint16_t  newTimeout) {
00104     _timeout = newTimeout;
00105 }
00106 
00107 
00108 /**************************************************************************/
00109 /*!
00110     \brief returns the current Advertising Type value
00111 */
00112 /**************************************************************************/
00113 inline GapAdvertisingParams::AdvertisingType
00114 GapAdvertisingParams::getAdvertisingType(void) const
00115 {
00116     return _advType;
00117 }
00118 
00119 /**************************************************************************/
00120 /*!
00121     \brief returns the current Advertising Delay (in units of 0.625ms)
00122 */
00123 /**************************************************************************/
00124 inline uint16_t
00125 GapAdvertisingParams::getInterval(void) const
00126 {
00127     return _interval;
00128 }
00129 
00130 /**************************************************************************/
00131 /*!
00132     \brief returns the current Advertising Timeout (in seconds)
00133 */
00134 /**************************************************************************/
00135 inline uint16_t
00136 GapAdvertisingParams::getTimeout(void) const
00137 {
00138     return _timeout;
00139 }
00140 
00141 #endif // ifndef __GAP_ADVERTISING_PARAMS_H__