BLE: merge ble::advertising_type_t and pal::advertising_type_t.

pull/8738/head
Vincent Coubard 2018-11-15 11:08:07 +00:00
parent b4c704c807
commit db55540952
4 changed files with 51 additions and 103 deletions

View File

@ -73,7 +73,7 @@ public:
* @note If value in input are out of range, they will be normalized. * @note If value in input are out of range, they will be normalized.
*/ */
AdvertisingParameters( AdvertisingParameters(
ble::advertising_type_t advType = ADV_CONNECTABLE_UNDIRECTED, advertising_type_t advType = advertising_type_t::ADV_CONNECTABLE_UNDIRECTED,
adv_interval_t minInterval = adv_interval_t(DEFAULT_ADVERTISING_INTERVAL_MIN), adv_interval_t minInterval = adv_interval_t(DEFAULT_ADVERTISING_INTERVAL_MIN),
adv_interval_t maxInterval = adv_interval_t(DEFAULT_ADVERTISING_INTERVAL_MAX) adv_interval_t maxInterval = adv_interval_t(DEFAULT_ADVERTISING_INTERVAL_MAX)
) : ) :
@ -97,7 +97,7 @@ public:
_includeHeaderTxPower(false) _includeHeaderTxPower(false)
{ {
/* Min interval is slightly larger than in other modes. */ /* Min interval is slightly larger than in other modes. */
if (_advType == ADV_NON_CONNECTABLE_UNDIRECTED) { if (_advType == advertising_type_t::ADV_NON_CONNECTABLE_UNDIRECTED) {
_minInterval = adv_interval_t(std::max(_minInterval.value(), GAP_ADV_PARAMS_INTERVAL_MIN_NONCON)); _minInterval = adv_interval_t(std::max(_minInterval.value(), GAP_ADV_PARAMS_INTERVAL_MIN_NONCON));
_maxInterval = adv_interval_t(std::max(_maxInterval.value(), GAP_ADV_PARAMS_INTERVAL_MIN_NONCON)); _maxInterval = adv_interval_t(std::max(_maxInterval.value(), GAP_ADV_PARAMS_INTERVAL_MIN_NONCON));
} }

View File

@ -58,42 +58,56 @@ typedef uint16_t periodic_sync_handle_t;
* It determine how the device appears to other scanner and peripheral * It determine how the device appears to other scanner and peripheral
* devices in the scanning range. * devices in the scanning range.
*/ */
enum advertising_type_t { struct advertising_type_t : SafeEnum<advertising_type_t, uint8_t> {
/** enum type {
* Device is connectable, scannable and doesn't expect connection from a /**
* specific peer. * Device is connectable, scannable and doesn't expect connection from a
* * specific peer.
* @see Vol 3, Part C, Section 9.3.4 and Vol 6, Part B, Section 2.3.1.1. *
*/ * @see Vol 3, Part C, Section 9.3.4 and Vol 6, Part B, Section 2.3.1.1.
ADV_CONNECTABLE_UNDIRECTED, */
ADV_CONNECTABLE_UNDIRECTED = 0x00,
ADV_IND = 0x00,
/**
* Device is connectable and expects connection from a specific peer.
* (3.75 ms or smaller Advertising Interval)
* @see Vol 3, Part C, Section 9.3.3 and Vol 6, Part B, Section 2.3.1.2.
*/
ADV_CONNECTABLE_DIRECTED = 0x01,
ADV_DIRECT_IND = 0x01,
/**
* Device is scannable but not connectable.
*
* @see Vol 6, Part B, Section 2.3.1.4.
*/
ADV_SCANNABLE_UNDIRECTED = 0x02,
ADV_SCAN_IND = 0x02,
/**
* Device is not connectable and not scannable.
*
* @see Vol 3, Part C, Section 9.3.2 and Vol 6, Part B, Section 2.3.1.3.
*/
ADV_NON_CONNECTABLE_UNDIRECTED = 0x03,
ADV_NONCONN_IND = 0x03,
/**
* Device is connectable and expects connection from a specific peer (sent at long user set intervals).
*/
ADV_CONNECTABLE_DIRECTED_LOW_DUTY = 0x04,
ADV_DIRECT_IND_LOW_DUTY_CYCLE = 0x04
};
/** /**
* Device is connectable and expects connection from a specific peer. * Construct a new advertising_type_t value.
* (3.75 ms or smaller Advertising Interval)
* @see Vol 3, Part C, Section 9.3.3 and Vol 6, Part B, Section 2.3.1.2.
*/ */
ADV_CONNECTABLE_DIRECTED, advertising_type_t(type value) :
SafeEnum<advertising_type_t, uint8_t>(value) { }
/**
* Device is scannable but not connectable.
*
* @see Vol 6, Part B, Section 2.3.1.4.
*/
ADV_SCANNABLE_UNDIRECTED,
/**
* Device is not connectable and not scannable.
*
* @see Vol 3, Part C, Section 9.3.2 and Vol 6, Part B, Section 2.3.1.3.
*/
ADV_NON_CONNECTABLE_UNDIRECTED,
/**
* Device is connectable and expects connection from a specific peer (sent at long user set intervals).
*/
ADV_CONNECTABLE_DIRECTED_LOW_DUTY
}; };
/** Used to indicate if the packet is complete and if it's truncated. /** Used to indicate if the packet is complete and if it's truncated.
*/ */
struct advertising_data_status_t : SafeEnum<advertising_data_status_t, uint8_t >{ struct advertising_data_status_t : SafeEnum<advertising_data_status_t, uint8_t >{

View File

@ -24,44 +24,7 @@
namespace ble { namespace ble {
namespace pal { namespace pal {
/** typedef ble::advertising_type_t advertising_type_t;
* Type of advertising the LE subsystem can use when it advertise.
*/
struct advertising_type_t : SafeEnum<advertising_type_t, uint8_t> {
enum type {
/**
* Connectable and scannable undirected advertising.
*/
ADV_IND = 0x00,
/**
* Connectable high duty cycle directed advertising.
*/
ADV_DIRECT_IND = 0x01,
/**
* Scannable undirected advertising.
*/
ADV_SCAN_IND = 0x02,
/**
* Non connectable undirected advertising.
*/
ADV_NONCONN_IND = 0x03,
/**
* Connectable low duty cycle directed advertising.
*/
ADV_DIRECT_IND_LOW_DUTY_CYCLE = 0x04
};
/**
* Construct a new advertising_type_t value.
*/
advertising_type_t(type value) :
SafeEnum<advertising_type_t, uint8_t>(value) { }
};
/** /**
* Type used to model the own address used during the following GAP operations: * Type used to model the own address used during the following GAP operations:
@ -602,7 +565,7 @@ struct advertising_event_properties_t {
omit_advertiser_address(false), omit_advertiser_address(false),
include_tx_power(false) include_tx_power(false)
{ {
switch ((advertising_type_t::type) adv_type.value()) { switch (adv_type.value()) {
case advertising_type_t::ADV_IND: case advertising_type_t::ADV_IND:
connectable = true; connectable = true;
scannable = true; scannable = true;
@ -625,34 +588,6 @@ struct advertising_event_properties_t {
} }
} }
explicit advertising_event_properties_t(ble::advertising_type_t adv_type) :
connectable(false),
scannable(false),
directed(false),
high_duty_cycle(false),
use_legacy_pdu(true),
omit_advertiser_address(false),
include_tx_power(false)
{
switch (adv_type) {
case ADV_CONNECTABLE_UNDIRECTED:
connectable = true;
scannable = true;
break;
case ADV_CONNECTABLE_DIRECTED:
case ADV_CONNECTABLE_DIRECTED_LOW_DUTY:
connectable = true;
directed = true;
break;
case ADV_SCANNABLE_UNDIRECTED:
scannable = true;
break;
case ADV_NON_CONNECTABLE_UNDIRECTED:
break;
}
}
/** /**
* If set the advertising event is connectable. * If set the advertising event is connectable.
*/ */

View File

@ -1761,7 +1761,7 @@ ble_error_t GenericGap::setAdvertisingParams(
return _pal_gap.set_advertising_parameters( return _pal_gap.set_advertising_parameters(
params.getMinPrimaryInterval().value(), params.getMinPrimaryInterval().value(),
params.getMaxPrimaryInterval().value(), params.getMaxPrimaryInterval().value(),
(pal::advertising_type_t::type) params.getType(), params.getType(),
(pal::own_address_type_t::type) params.getOwnAddressType().value(), (pal::own_address_type_t::type) params.getOwnAddressType().value(),
(pal::advertising_peer_address_type_t::type) params.getPeerAddressType().value(), (pal::advertising_peer_address_type_t::type) params.getPeerAddressType().value(),
params.getPeerAddress(), params.getPeerAddress(),
@ -1782,8 +1782,7 @@ ble_error_t GenericGap::setExtendedAdvertisingParameters(
return BLE_ERROR_INVALID_PARAM; return BLE_ERROR_INVALID_PARAM;
} }
pal::advertising_event_properties_t event_properties( pal::advertising_event_properties_t event_properties(params.getType());
(pal::advertising_type_t::type)params.getType());
event_properties.include_tx_power = params.getTxPowerInHeader(); event_properties.include_tx_power = params.getTxPowerInHeader();
event_properties.omit_advertiser_address = params.getAnonymousAdvertising(); event_properties.omit_advertiser_address = params.getAnonymousAdvertising();
event_properties.use_legacy_pdu = params.getUseLegacyPDU(); event_properties.use_legacy_pdu = params.getUseLegacyPDU();