BLE: Move common type from pal to ble namespace.

pull/8738/head
Vincent Coubard 2018-11-13 10:34:40 +00:00
parent 74c2def5ef
commit 194e2cb4f8
5 changed files with 130 additions and 128 deletions

View File

@ -337,6 +337,25 @@ private:
uint8_t value;
};
/**
* Identify an advertising SID. Range: [0x00, 0x0F]
*/
typedef uint8_t advertising_sid_t;
// Range -127 <= N <= +20
// Special value: 127
// - RSSI not available.
typedef int8_t rssi_t;
/**
* Describe the advertising power.
*
* Value comprised between -127 and +126 are considered power values in dBm while
* the special value 127 can be used as a wildcard to indicates that the host
* has no preference or if the power information is not available.
*/
typedef int8_t advertising_power_t;
/**
* Advertising policy filter modes.
*
@ -888,6 +907,13 @@ struct target_peer_address_type_t : ble::SafeEnum<target_peer_address_type_t, ui
struct phy_t : SafeEnum<phy_t, uint8_t> {
/** struct scoped enum wrapped by the class */
enum type {
/**
* No phy selected.
*
* @note This value can be used to indicate the absence of phy
*/
NONE = 0,
/**
* 1Mbit/s LE.
*
@ -1064,6 +1090,98 @@ struct coded_symbol_per_bit_t :SafeEnum<coded_symbol_per_bit_t, uint8_t> {
SafeEnum<coded_symbol_per_bit_t, uint8_t>(value) { }
};
/**
* Accuracy of the master clock.
*/
struct clock_accuracy_t : SafeEnum<clock_accuracy_t, uint8_t >{
enum type {
/**
* 500 PPM
*/
PPM_500 = 0x00,
/**
* 250 PPM
*/
PPM_250 = 0x01,
/**
* 150 PPM
*/
PPM_150 = 0x02,
/**
* 100 PPM
*/
PPM_100 = 0x03,
/**
* 75 PPM
*/
PPM_75 = 0x04,
/**
* 50 PPM
*/
PPM_50 = 0x05,
/**
* 30 PPM
*/
PPM_30 = 0x06,
/**
* 20 PPM
*/
PPM_20 = 0x07
};
/** Get clock accuracy.
*
* @return Parts per million as a number.
*/
uint16_t get_ppm() {
uint16_t ppm = 0;
switch(value()) {
case PPM_500:
ppm = 500;
break;
case PPM_250:
ppm = 250;
break;
case PPM_150:
ppm = 150;
break;
case PPM_100:
ppm = 100;
break;
case PPM_75:
ppm = 75;
break;
case PPM_50:
ppm = 50;
break;
case PPM_30:
ppm = 30;
break;
case PPM_20:
ppm = 20;
break;
}
return ppm;
}
/**
* Construct a new clock_accuracy_t value.
*/
clock_accuracy_t(type value) : SafeEnum<clock_accuracy_t, uint8_t>(value) { }
explicit clock_accuracy_t(uint8_t raw_value) :
SafeEnum<clock_accuracy_t, uint8_t>(static_cast<type>(raw_value)) { }
};
} // namespace ble
/**

View File

@ -555,7 +555,7 @@ private:
const ble::address_t &address,
phy_t primary_phy,
const phy_t *secondary_phy,
pal::advertising_sid_t advertising_sid,
advertising_sid_t advertising_sid,
pal::advertising_power_t tx_power,
pal::rssi_t rssi,
uint16_t periodic_advertising_interval,
@ -568,7 +568,7 @@ private:
virtual void on_periodic_advertising_sync_established(
pal::hci_error_code_t error,
pal::sync_handle_t sync_handle,
pal::advertising_sid_t advertising_sid,
advertising_sid_t advertising_sid,
pal::connection_peer_address_type_t advertiser_address_type,
const ble::address_t &advertiser_address,
uint16_t periodic_advertising_interval,

View File

@ -754,7 +754,7 @@ typedef uint16_t periodic_advertising_interval_t;
// Range -127 <= N <= +20
// Special value: 127
// - RSSI not available.
typedef int8_t rssi_t;
typedef ble::rssi_t rssi_t;
/**
* Description of an advertising fragment.
@ -831,35 +831,9 @@ struct duplicates_filter_t : SafeEnum<duplicates_filter_t, uint8_t >{
/**
* Identify a periodic advertising sync.
*/
typedef uint16_t sync_handle_t;
typedef ble::periodic_sync_handle_t sync_handle_t;
/**
* Identify an advertising SID. Range: [0x00, 0x0F]
*/
typedef uint8_t advertising_sid_t;
struct advertising_data_status_t : SafeEnum<advertising_data_status_t, uint8_t >{
enum type {
COMPLETE = 0x00,
INCOMPLETE_MORE_DATA = 0x01,
INCOMPLETE_DATA_TRUNCATED = 0x02
};
/**
* Construct a new advertising_data_status_t value.
*/
advertising_data_status_t(type value) :
SafeEnum<advertising_data_status_t, uint8_t>(value) { }
/**
* Explicit constructor from a raw value.
*/
explicit advertising_data_status_t(uint8_t value) :
SafeEnum<advertising_data_status_t, uint8_t>(
static_cast<advertising_data_status_t>(value)
)
{ }
};
typedef ble::advertising_data_status_t advertising_data_status_t;
struct extended_advertising_report_event_type_t {
extended_advertising_report_event_type_t(uint8_t value) : value(value) { }
@ -943,97 +917,7 @@ struct direct_address_type_t : SafeEnum<direct_address_type_t, uint8_t> {
explicit direct_address_type_t(uint8_t raw_value) : SafeEnum(raw_value) { }
};
/**
* Accuracy of the master clock.
*/
struct clock_accuracy_t : SafeEnum<clock_accuracy_t, uint8_t >{
enum type {
/**
* 500 PPM
*/
PPM_500 = 0x00,
/**
* 250 PPM
*/
PPM_250 = 0x01,
/**
* 150 PPM
*/
PPM_150 = 0x02,
/**
* 100 PPM
*/
PPM_100 = 0x03,
/**
* 75 PPM
*/
PPM_75 = 0x04,
/**
* 50 PPM
*/
PPM_50 = 0x05,
/**
* 30 PPM
*/
PPM_30 = 0x06,
/**
* 20 PPM
*/
PPM_20 = 0x07
};
/**
* Construct a new clock_accuracy_t value.
*/
clock_accuracy_t(type value) : SafeEnum<clock_accuracy_t, uint8_t>(value) { }
/** Get clock accuracy.
*
* @return Parts per million as a number.
*/
uint16_t get_ppm() {
uint16_t ppm = 0;
switch(value()) {
case PPM_500:
ppm = 500;
break;
case PPM_250:
ppm = 250;
break;
case PPM_150:
ppm = 150;
break;
case PPM_100:
ppm = 100;
break;
case PPM_75:
ppm = 75;
break;
case PPM_50:
ppm = 50;
break;
case PPM_30:
ppm = 30;
break;
case PPM_20:
ppm = 20;
break;
}
return ppm;
}
explicit clock_accuracy_t(uint8_t raw_value) :
SafeEnum<clock_accuracy_t, uint8_t>(static_cast<type>(raw_value)) { }
};
typedef ble::clock_accuracy_t clock_accuracy_t;
} // namespace pal
} // namespace ble

View File

@ -185,13 +185,13 @@ struct Gap {
* report event.
*/
virtual void on_periodic_advertising_sync_established(
hci_error_code_t error,
sync_handle_t sync_handle,
pal::hci_error_code_t error,
pal::sync_handle_t sync_handle,
advertising_sid_t advertising_sid,
connection_peer_address_type_t advertiser_address_type,
const address_t &advertiser_address,
const ble::address_t &advertiser_address,
uint16_t periodic_advertising_interval,
clock_accuracy_t clock_accuracy
pal::clock_accuracy_t clock_accuracy
) = 0;
/**

View File

@ -2206,7 +2206,7 @@ void GenericGap::on_extended_advertising_report(
const ble::address_t &address,
phy_t primary_phy,
const phy_t *secondary_phy,
pal::advertising_sid_t advertising_sid,
advertising_sid_t advertising_sid,
pal::advertising_power_t tx_power,
pal::rssi_t rssi,
uint16_t periodic_advertising_interval,
@ -2239,7 +2239,7 @@ void GenericGap::on_extended_advertising_report(
void GenericGap::on_periodic_advertising_sync_established(
pal::hci_error_code_t error,
pal::sync_handle_t sync_handle,
pal::advertising_sid_t advertising_sid,
advertising_sid_t advertising_sid,
connection_peer_address_type_t advertiser_address_type,
const ble::address_t &advertiser_address,
uint16_t periodic_advertising_interval,