mirror of https://github.com/ARMmbed/mbed-os.git
we need clamping while we wait for c++17
parent
a3820c89c5
commit
216dd6dcc7
|
@ -32,6 +32,16 @@
|
|||
|
||||
namespace ble {
|
||||
|
||||
/* replace with std::clamp when it arrives */
|
||||
template<typename T, typename R>
|
||||
void clamp(T& value, const R& min, const R& max) {
|
||||
if (value > max) {
|
||||
value = max;
|
||||
} else if (value < min) {
|
||||
value = min;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Opaque reference to a connection.
|
||||
*
|
||||
|
|
|
@ -22,14 +22,6 @@
|
|||
#include "blecommon.h"
|
||||
#include "SafeEnum.h"
|
||||
|
||||
/* TODO: std::clamp */
|
||||
#define CLAMP(value, min, max) \
|
||||
if (value > max) { \
|
||||
value = max; \
|
||||
} else if (value < min) { \
|
||||
value = min; \
|
||||
}
|
||||
|
||||
/**
|
||||
* @addtogroup ble
|
||||
* @{
|
||||
|
@ -140,11 +132,11 @@ public:
|
|||
_maxInterval = 0;
|
||||
} else if (_advType == ble::ADV_NON_CONNECTABLE_UNDIRECTED) {
|
||||
/* Min interval is slightly larger than in other modes. */
|
||||
CLAMP(_minInterval, GAP_ADV_PARAMS_INTERVAL_MIN_NONCON, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
CLAMP(_maxInterval, GAP_ADV_PARAMS_INTERVAL_MIN_NONCON, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
ble::clamp(_minInterval, GAP_ADV_PARAMS_INTERVAL_MIN_NONCON, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
ble::clamp(_maxInterval, GAP_ADV_PARAMS_INTERVAL_MIN_NONCON, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
} else {
|
||||
CLAMP(_minInterval, GAP_ADV_PARAMS_INTERVAL_MIN, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
CLAMP(_maxInterval, GAP_ADV_PARAMS_INTERVAL_MIN, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
ble::clamp(_minInterval, GAP_ADV_PARAMS_INTERVAL_MIN, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
ble::clamp(_maxInterval, GAP_ADV_PARAMS_INTERVAL_MIN, GAP_ADV_PARAMS_INTERVAL_MAX);
|
||||
}
|
||||
|
||||
/* Timeout checks. */
|
||||
|
|
|
@ -59,6 +59,9 @@ public:
|
|||
_scanInterval[phy_index] = scanInterval_us / 625;
|
||||
_scanWindow[phy_index] = scanWindow_us / 625;
|
||||
|
||||
ble::clamp(_scanInterval[phy_index], 0x0004, 0xFFFF);
|
||||
ble::clamp(_scanWindow[phy_index], 0x0006, 0x0C80);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -274,14 +277,14 @@ private:
|
|||
ble::scanning_policy_mode_t _filterPolicy;
|
||||
ble::own_address_type_t _ownAddressType;
|
||||
|
||||
uint16_t _scanInterval[MAX_PARAM_PHYS]; /* 0.625 */
|
||||
uint16_t _scanWindow[MAX_PARAM_PHYS]; /* 0.625 */
|
||||
uint16_t _minConnectionInterval[MAX_PARAM_PHYS]; /* 1.25 */
|
||||
uint16_t _maxConnectionInterval[MAX_PARAM_PHYS]; /* 1.25 */
|
||||
uint16_t _slaveLatency[MAX_PARAM_PHYS]; /* 0.625 */
|
||||
uint16_t _connectionSupervisionTimeout[MAX_PARAM_PHYS]; /* 10 */
|
||||
uint16_t _minEventLength[MAX_PARAM_PHYS]; /* 0.625 */
|
||||
uint16_t _maxEventLength[MAX_PARAM_PHYS]; /* 0.625 */
|
||||
uint16_t _scanInterval[MAX_PARAM_PHYS]; /* 0.625 ms */
|
||||
uint16_t _scanWindow[MAX_PARAM_PHYS]; /* 0.625 ms */
|
||||
uint16_t _minConnectionInterval[MAX_PARAM_PHYS]; /* 1.25 ms */
|
||||
uint16_t _maxConnectionInterval[MAX_PARAM_PHYS]; /* 1.25 ms */
|
||||
uint16_t _slaveLatency[MAX_PARAM_PHYS]; /* events */
|
||||
uint16_t _connectionSupervisionTimeout[MAX_PARAM_PHYS]; /* 10 ms */
|
||||
uint16_t _minEventLength[MAX_PARAM_PHYS]; /* 0.625 ms */
|
||||
uint16_t _maxEventLength[MAX_PARAM_PHYS]; /* 0.625 ms */
|
||||
|
||||
bool _enabledPhy[MAX_PARAM_PHYS];
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue