Minor fixes
Fork of BLE_API by
Embed:
(wiki syntax)
Show/hide line numbers
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 /**************************************************************************/ 00021 /*! 00022 \brief 00023 This class provides a wrapper for the core advertising parameters, 00024 including the advertising type (Connectable Undirected, 00025 Non Connectable Undirected, etc.), as well as the advertising and 00026 timeout intervals. 00027 00028 \par 00029 See the following for more information on advertising types: 00030 00031 \li \c Bluetooth Core Specification 4.0 (Vol. 6), Part B, Section 2.3.1 00032 \li \c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 9.3 00033 */ 00034 /**************************************************************************/ 00035 class GapAdvertisingParams { 00036 public: 00037 static const unsigned GAP_ADV_PARAMS_INTERVAL_MIN = 0x0020; 00038 static const unsigned GAP_ADV_PARAMS_INTERVAL_MIN_NONCON = 0x00A0; 00039 static const unsigned GAP_ADV_PARAMS_INTERVAL_MAX = 0x4000; 00040 static const unsigned GAP_ADV_PARAMS_TIMEOUT_MAX = 0x3FFF; 00041 00042 /*! 00043 * Encapsulates the peripheral advertising modes, which determine how 00044 * the device appears to other central devices in hearing range 00045 */ 00046 enum AdvertisingType_t { 00047 ADV_CONNECTABLE_UNDIRECTED, /**< Vol 3, Part C, Section 9.3.4 and Vol 6, Part B, Section 2.3.1.1 */ 00048 ADV_CONNECTABLE_DIRECTED, /**< Vol 3, Part C, Section 9.3.3 and Vol 6, Part B, Section 2.3.1.2 */ 00049 ADV_SCANNABLE_UNDIRECTED, /**< Include support for Scan Response payloads, see Vol 6, Part B, Section 2.3.1.4 */ 00050 ADV_NON_CONNECTABLE_UNDIRECTED /**< Vol 3, Part C, Section 9.3.2 and Vol 6, Part B, Section 2.3.1.3 */ 00051 }; 00052 typedef enum AdvertisingType_t AdvertisingType; /* deprecated type alias. */ 00053 00054 public: 00055 GapAdvertisingParams(AdvertisingType_t advType = ADV_CONNECTABLE_UNDIRECTED, 00056 uint16_t interval = GAP_ADV_PARAMS_INTERVAL_MIN_NONCON, 00057 uint16_t timeout = 0) : _advType(advType), _interval(interval), _timeout(timeout) { 00058 /* Interval checks */ 00059 if (_advType == ADV_CONNECTABLE_DIRECTED) { 00060 /* Interval must be 0 in directed connectable mode */ 00061 _interval = 0; 00062 } else if (_advType == ADV_NON_CONNECTABLE_UNDIRECTED) { 00063 /* Min interval is slightly larger than in other modes */ 00064 if (_interval < GAP_ADV_PARAMS_INTERVAL_MIN_NONCON) { 00065 _interval = GAP_ADV_PARAMS_INTERVAL_MIN_NONCON; 00066 } 00067 if (_interval > GAP_ADV_PARAMS_INTERVAL_MAX) { 00068 _interval = GAP_ADV_PARAMS_INTERVAL_MAX; 00069 } 00070 } else { 00071 /* Stay within interval limits */ 00072 if (_interval < GAP_ADV_PARAMS_INTERVAL_MIN) { 00073 _interval = GAP_ADV_PARAMS_INTERVAL_MIN; 00074 } 00075 if (_interval > GAP_ADV_PARAMS_INTERVAL_MAX) { 00076 _interval = GAP_ADV_PARAMS_INTERVAL_MAX; 00077 } 00078 } 00079 00080 /* Timeout checks */ 00081 if (timeout) { 00082 /* Stay within timeout limits */ 00083 if (_timeout > GAP_ADV_PARAMS_TIMEOUT_MAX) { 00084 _timeout = GAP_ADV_PARAMS_TIMEOUT_MAX; 00085 } 00086 } 00087 } 00088 00089 AdvertisingType_t getAdvertisingType(void) const {return _advType; } 00090 uint16_t getInterval(void) const {return _interval;} 00091 uint16_t getTimeout(void) const {return _timeout; } 00092 00093 void setAdvertisingType(AdvertisingType_t newAdvType) {_advType = newAdvType; } 00094 void setInterval(uint16_t newInterval) {_interval = newInterval;} 00095 void setTimeout(uint16_t newTimeout) {_timeout = newTimeout; } 00096 00097 private: 00098 AdvertisingType_t _advType; 00099 uint16_t _interval; 00100 uint16_t _timeout; 00101 }; 00102 00103 #endif // ifndef __GAP_ADVERTISING_PARAMS_H__
Generated on Wed Jul 13 2022 00:39:22 by 1.7.2