Minor temporary patch to allow DFU packet callback

Fork of BLE_API by Bluetooth Low Energy

Committer:
ktownsend
Date:
Thu Dec 12 02:20:54 2013 +0000
Revision:
4:50a31ff5f974
Parent:
2:ffc5216bd2cc
Child:
6:425638944835
More GAP refactoring

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ktownsend 2:ffc5216bd2cc 1 #include <stdio.h>
ktownsend 2:ffc5216bd2cc 2 #include <string.h>
ktownsend 2:ffc5216bd2cc 3
ktownsend 4:50a31ff5f974 4 #include "blecommon.h"
ktownsend 2:ffc5216bd2cc 5 #include "GapAdvertisingParams.h"
ktownsend 2:ffc5216bd2cc 6
ktownsend 2:ffc5216bd2cc 7 /**************************************************************************/
ktownsend 2:ffc5216bd2cc 8 /*!
ktownsend 4:50a31ff5f974 9 @brief Instantiates a new GapAdvertisingParams instance
ktownsend 4:50a31ff5f974 10
ktownsend 4:50a31ff5f974 11 @param[in] connectionMode
ktownsend 4:50a31ff5f974 12 The GAP connection mode to use for this device. Valid
ktownsend 4:50a31ff5f974 13 values are defined in \ref ConnectionMode
ktownsend 2:ffc5216bd2cc 14
ktownsend 4:50a31ff5f974 15 @para
ktownsend 4:50a31ff5f974 16 NON_CONNECTABLE - All connections to the peripheral device
ktownsend 4:50a31ff5f974 17 will be refused.
ktownsend 4:50a31ff5f974 18
ktownsend 4:50a31ff5f974 19 @para
ktownsend 4:50a31ff5f974 20 DIRECTED_CONNECTABLE - Only connections from a pre-defined
ktownsend 4:50a31ff5f974 21 central device will be accepted.
ktownsend 4:50a31ff5f974 22
ktownsend 4:50a31ff5f974 23 @para
ktownsend 4:50a31ff5f974 24 UNDIRECTED_CONNECTABLE - Any central device can connect to
ktownsend 4:50a31ff5f974 25 this peripheral.
ktownsend 4:50a31ff5f974 26
ktownsend 4:50a31ff5f974 27 @note See Bluetooth Core Specification 4.0 (Vol. 3),
ktownsend 4:50a31ff5f974 28 Part C, Section 9.3 for further information on GAP
ktownsend 4:50a31ff5f974 29 connection modes
ktownsend 4:50a31ff5f974 30
ktownsend 4:50a31ff5f974 31 @param[in] interval
ktownsend 4:50a31ff5f974 32 Advertising interval between 0x20 and 0x4000 (32 and 16384)
ktownsend 4:50a31ff5f974 33 in 0.625ms intervals (20ms to 10.24s).
ktownsend 4:50a31ff5f974 34
ktownsend 4:50a31ff5f974 35 @para
ktownsend 4:50a31ff5f974 36 Increasing this value will allow central devices to detect
ktownsend 4:50a31ff5f974 37 your peripheral faster at the expense of more power being
ktownsend 4:50a31ff5f974 38 used by the radio due to the higher data transmit rate.
ktownsend 4:50a31ff5f974 39
ktownsend 4:50a31ff5f974 40 @note This field must be set to 0 if connectionMode is equal
ktownsend 4:50a31ff5f974 41 to \ref DIRECTED_CONNECTABLE
ktownsend 4:50a31ff5f974 42
ktownsend 4:50a31ff5f974 43 @param[in] timeout
ktownsend 4:50a31ff5f974 44 Advertising timeout between 0x1 and 0x3FFF (1 and 16383)
ktownsend 4:50a31ff5f974 45 in seconds. Enter 0 to disable the advertising timeout.
ktownsend 4:50a31ff5f974 46
ktownsend 2:ffc5216bd2cc 47 @section EXAMPLE
ktownsend 2:ffc5216bd2cc 48
ktownsend 2:ffc5216bd2cc 49 @code
ktownsend 2:ffc5216bd2cc 50
ktownsend 2:ffc5216bd2cc 51 @endcode
ktownsend 2:ffc5216bd2cc 52 */
ktownsend 2:ffc5216bd2cc 53 /**************************************************************************/
ktownsend 4:50a31ff5f974 54 GapAdvertisingParams::GapAdvertisingParams(ConnectionMode connectionMode, uint16_t interval, uint16_t timeout)
ktownsend 2:ffc5216bd2cc 55 {
ktownsend 4:50a31ff5f974 56 _connectionMode = connectionMode;
ktownsend 2:ffc5216bd2cc 57 _interval = interval;
ktownsend 2:ffc5216bd2cc 58 _timeout = timeout;
ktownsend 4:50a31ff5f974 59
ktownsend 4:50a31ff5f974 60 /* Interval checks */
ktownsend 4:50a31ff5f974 61 if (_connectionMode == DIRECTED_CONNECTABLE)
ktownsend 4:50a31ff5f974 62 {
ktownsend 4:50a31ff5f974 63 /* Interval must be 0 in directed connectable mode */
ktownsend 4:50a31ff5f974 64 _interval = 0;
ktownsend 4:50a31ff5f974 65 }
ktownsend 4:50a31ff5f974 66 else
ktownsend 4:50a31ff5f974 67 {
ktownsend 4:50a31ff5f974 68 /* Stay within interval limits */
ktownsend 4:50a31ff5f974 69 if (_interval < GAP_ADV_PARAMS_INTERVAL_MIN)
ktownsend 4:50a31ff5f974 70 {
ktownsend 4:50a31ff5f974 71 _interval = GAP_ADV_PARAMS_INTERVAL_MIN;
ktownsend 4:50a31ff5f974 72 }
ktownsend 4:50a31ff5f974 73 if (_interval > GAP_ADV_PARAMS_INTERVAL_MAX)
ktownsend 4:50a31ff5f974 74 {
ktownsend 4:50a31ff5f974 75 _interval = GAP_ADV_PARAMS_INTERVAL_MAX;
ktownsend 4:50a31ff5f974 76 }
ktownsend 4:50a31ff5f974 77 }
ktownsend 4:50a31ff5f974 78
ktownsend 4:50a31ff5f974 79 /* Timeout checks */
ktownsend 4:50a31ff5f974 80 if (timeout)
ktownsend 4:50a31ff5f974 81 {
ktownsend 4:50a31ff5f974 82 /* Stay within timeout limits */
ktownsend 4:50a31ff5f974 83 if (_timeout > GAP_ADV_PARAMS_TIMEOUT_MAX)
ktownsend 4:50a31ff5f974 84 {
ktownsend 4:50a31ff5f974 85 _timeout = GAP_ADV_PARAMS_TIMEOUT_MAX;
ktownsend 4:50a31ff5f974 86 }
ktownsend 4:50a31ff5f974 87 }
ktownsend 2:ffc5216bd2cc 88 }
ktownsend 2:ffc5216bd2cc 89
ktownsend 2:ffc5216bd2cc 90 /**************************************************************************/
ktownsend 2:ffc5216bd2cc 91 /*!
ktownsend 2:ffc5216bd2cc 92 Destructor
ktownsend 2:ffc5216bd2cc 93 */
ktownsend 2:ffc5216bd2cc 94 /**************************************************************************/
ktownsend 2:ffc5216bd2cc 95 GapAdvertisingParams::~GapAdvertisingParams(void)
ktownsend 2:ffc5216bd2cc 96 {
ktownsend 2:ffc5216bd2cc 97 }