mirror of https://github.com/ARMmbed/mbed-os.git
BLE: Move advertising data types in their own file.
parent
be7cc41da4
commit
09ba26ce4b
|
@ -25,8 +25,8 @@
|
|||
#include "platform/NonCopyable.h"
|
||||
|
||||
#include "ble/blecommon.h"
|
||||
#include "ble/SafeEnum.h"
|
||||
#include "UUID.h"
|
||||
#include "ble/gap/AdvertisingDataTypes.h"
|
||||
#include "ble/gap/Types.h"
|
||||
|
||||
namespace ble {
|
||||
|
@ -38,507 +38,6 @@ namespace ble {
|
|||
* @{
|
||||
*/
|
||||
|
||||
/*!
|
||||
* List of standard Advertising Data types.
|
||||
*
|
||||
* These AD types are used to describe the capabilities of the peripheral
|
||||
* and are inserted inside the advertising or scan response payloads.
|
||||
*
|
||||
* @par Source
|
||||
*
|
||||
* @li @c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18.
|
||||
* @li @c https://www.bluetooth.org/en-us/specification/assigned-numbers/generic-access-profile.
|
||||
*/
|
||||
struct adv_data_type_t : SafeEnum<adv_data_type_t, uint8_t> {
|
||||
/** struct scoped enum wrapped by the class */
|
||||
enum type {
|
||||
/**
|
||||
* Flags, refer to AdvertisingData::Flags_t.
|
||||
*/
|
||||
FLAGS = 0x01,
|
||||
|
||||
/**
|
||||
* Incomplete list of 16-bit Service IDs.
|
||||
*/
|
||||
INCOMPLETE_LIST_16BIT_SERVICE_IDS = 0x02,
|
||||
|
||||
/**
|
||||
* Complete list of 16-bit Service IDs.
|
||||
*/
|
||||
COMPLETE_LIST_16BIT_SERVICE_IDS = 0x03,
|
||||
|
||||
/**
|
||||
* Incomplete list of 32-bit Service IDs (not relevant for Bluetooth 4.0).
|
||||
*/
|
||||
INCOMPLETE_LIST_32BIT_SERVICE_IDS = 0x04,
|
||||
|
||||
/**
|
||||
* Complete list of 32-bit Service IDs (not relevant for Bluetooth 4.0).
|
||||
*/
|
||||
COMPLETE_LIST_32BIT_SERVICE_IDS = 0x05,
|
||||
|
||||
/**
|
||||
* Incomplete list of 128-bit Service IDs.
|
||||
*/
|
||||
INCOMPLETE_LIST_128BIT_SERVICE_IDS = 0x06,
|
||||
|
||||
/**
|
||||
* Complete list of 128-bit Service IDs.
|
||||
*/
|
||||
COMPLETE_LIST_128BIT_SERVICE_IDS = 0x07,
|
||||
|
||||
/**
|
||||
* Shortened Local Name.
|
||||
*/
|
||||
SHORTENED_LOCAL_NAME = 0x08,
|
||||
|
||||
/**
|
||||
* Complete Local Name.
|
||||
*/
|
||||
COMPLETE_LOCAL_NAME = 0x09,
|
||||
|
||||
/**
|
||||
* TX Power Level (in dBm).
|
||||
*/
|
||||
TX_POWER_LEVEL = 0x0A,
|
||||
|
||||
/**
|
||||
* Device ID.
|
||||
*/
|
||||
DEVICE_ID = 0x10,
|
||||
|
||||
/**
|
||||
* Slave Connection Interval Range.
|
||||
*/
|
||||
SLAVE_CONNECTION_INTERVAL_RANGE = 0x12,
|
||||
|
||||
/**
|
||||
* List of 128-bit service UUIDs the device is looking for.
|
||||
*/
|
||||
LIST_16BIT_SOLICITATION_IDS = 0x14,
|
||||
|
||||
/**
|
||||
* List of 128-bit service UUIDs the device is looking for.
|
||||
*/
|
||||
LIST_128BIT_SOLICITATION_IDS = 0x15,
|
||||
|
||||
/**
|
||||
* Service Data.
|
||||
*/
|
||||
SERVICE_DATA = 0x16,
|
||||
|
||||
/**
|
||||
* Service Data.
|
||||
*/
|
||||
SERVICE_DATA_16BIT_ID = 0x16,
|
||||
|
||||
/**
|
||||
* Service Data.
|
||||
*/
|
||||
SERVICE_DATA_128BIT_ID = 0x21,
|
||||
|
||||
/**
|
||||
* Appearance, refer to AdvertisingData::Appearance_t.
|
||||
*/
|
||||
APPEARANCE = 0x19,
|
||||
|
||||
/**
|
||||
* Advertising Interval.
|
||||
*/
|
||||
ADVERTISING_INTERVAL = 0x1A,
|
||||
|
||||
/**
|
||||
* Manufacturer Specific Data.
|
||||
*/
|
||||
MANUFACTURER_SPECIFIC_DATA = 0xFF
|
||||
};
|
||||
|
||||
/**
|
||||
* Construct a new instance of adv_data_type_t.
|
||||
*/
|
||||
adv_data_type_t(type value) : SafeEnum(value)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set of advertising flags.
|
||||
*
|
||||
* @note LE_LIMITED_DISCOVERABLE and LE_GENERAL_DISCOVERABLE are mutually
|
||||
* exclusive
|
||||
*
|
||||
* @li @c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 18.1.
|
||||
*/
|
||||
struct adv_data_flags_t {
|
||||
enum {
|
||||
LE_LIMITED_DISCOVERABLE = 0x01, /**< Discoverable for a limited period of time.*/
|
||||
LE_GENERAL_DISCOVERABLE = 0x02, /**< Discoverable at any moment. */
|
||||
BREDR_NOT_SUPPORTED = 0x04, /**< LE only and does not support Bluetooth Enhanced DataRate. */
|
||||
SIMULTANEOUS_LE_BREDR_C = 0x08, /**< Not relevant - dual mode only. */
|
||||
SIMULTANEOUS_LE_BREDR_H = 0x10 /**< Not relevant - dual mode only. */
|
||||
};
|
||||
|
||||
static const uint8_t default_flags = BREDR_NOT_SUPPORTED | LE_GENERAL_DISCOVERABLE;
|
||||
|
||||
/** Create from raw value */
|
||||
adv_data_flags_t(uint8_t value = 0) : _value(value)
|
||||
{
|
||||
}
|
||||
|
||||
adv_data_flags_t &setGeneralDiscoverable(bool enable = true)
|
||||
{
|
||||
_value &= ~0x03;
|
||||
if (enable) {
|
||||
_value |= LE_GENERAL_DISCOVERABLE;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setLimitedDiscoverable(bool enable = true)
|
||||
{
|
||||
_value &= ~0x03;
|
||||
if (enable) {
|
||||
_value |= LE_LIMITED_DISCOVERABLE;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setBredrNotSupported(bool enable = true)
|
||||
{
|
||||
_value &= ~BREDR_NOT_SUPPORTED;
|
||||
if (enable) {
|
||||
_value |= BREDR_NOT_SUPPORTED;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setSimultaneousLeBredrC(bool enable = true)
|
||||
{
|
||||
_value &= ~SIMULTANEOUS_LE_BREDR_C;
|
||||
if (enable) {
|
||||
_value |= SIMULTANEOUS_LE_BREDR_C;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setSimultaneousLeBredrH(bool enable = true)
|
||||
{
|
||||
_value &= ~SIMULTANEOUS_LE_BREDR_H;
|
||||
if (enable) {
|
||||
_value |= SIMULTANEOUS_LE_BREDR_H;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getGeneralDiscoverable()
|
||||
{
|
||||
return _value & LE_GENERAL_DISCOVERABLE;
|
||||
}
|
||||
|
||||
bool getlimitedDiscoverable()
|
||||
{
|
||||
return _value & LE_LIMITED_DISCOVERABLE;
|
||||
}
|
||||
|
||||
bool getBrEdrNotSupported()
|
||||
{
|
||||
return _value & BREDR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
bool getSimultaneousLeBredrC()
|
||||
{
|
||||
return _value & SIMULTANEOUS_LE_BREDR_C;
|
||||
}
|
||||
|
||||
bool getSimultaneousLeBredrH()
|
||||
{
|
||||
return _value & SIMULTANEOUS_LE_BREDR_H;
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
_value = 0;
|
||||
}
|
||||
|
||||
uint8_t value()
|
||||
{
|
||||
return _value;
|
||||
}
|
||||
|
||||
private:
|
||||
uint8_t _value;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Enumeration of values for the adv_data_type_t::APPEARANCE.
|
||||
*
|
||||
* These values describe the physical shape or appearance of the device.
|
||||
*
|
||||
* @par Source
|
||||
*
|
||||
* @li @c Bluetooth Core Specification Supplement, Part A, Section 1.12.
|
||||
* @li @c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 12.2.
|
||||
* @li @c https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml.
|
||||
*/
|
||||
struct adv_data_appearance_t : SafeEnum<adv_data_appearance_t, uint16_t> {
|
||||
/** struct scoped enum wrapped by the class */
|
||||
enum type {
|
||||
/**
|
||||
* Unknown or unspecified appearance type.
|
||||
*/
|
||||
UNKNOWN = 0,
|
||||
|
||||
/**
|
||||
* Generic Phone.
|
||||
*/
|
||||
GENERIC_PHONE = 64,
|
||||
|
||||
/**
|
||||
* Generic Computer.
|
||||
*/
|
||||
GENERIC_COMPUTER = 128,
|
||||
|
||||
/**
|
||||
* Generic Watch.
|
||||
*/
|
||||
GENERIC_WATCH = 192,
|
||||
|
||||
/**
|
||||
* Sports Watch.
|
||||
*/
|
||||
WATCH_SPORTS_WATCH = 193,
|
||||
|
||||
/**
|
||||
* Generic Clock.
|
||||
*/
|
||||
GENERIC_CLOCK = 256,
|
||||
|
||||
/**
|
||||
* Generic Display.
|
||||
*/
|
||||
GENERIC_DISPLAY = 320,
|
||||
|
||||
/**
|
||||
* Generic Remote Control.
|
||||
*/
|
||||
GENERIC_REMOTE_CONTROL = 384,
|
||||
|
||||
/**
|
||||
* Generic Eye Glasses.
|
||||
*/
|
||||
GENERIC_EYE_GLASSES = 448,
|
||||
|
||||
/**
|
||||
* Generic Tag.
|
||||
*/
|
||||
GENERIC_TAG = 512,
|
||||
|
||||
/**
|
||||
* Generic Keyring.
|
||||
*/
|
||||
GENERIC_KEYRING = 576,
|
||||
|
||||
/**
|
||||
* Generic Media Player.
|
||||
*/
|
||||
GENERIC_MEDIA_PLAYER = 640,
|
||||
|
||||
/**
|
||||
* Generic Bar Code Scanner.
|
||||
*/
|
||||
GENERIC_BARCODE_SCANNER = 704,
|
||||
|
||||
/**
|
||||
* Generic Thermometer.
|
||||
*/
|
||||
GENERIC_THERMOMETER = 768,
|
||||
|
||||
/**
|
||||
* Ear Thermometer.
|
||||
*/
|
||||
THERMOMETER_EAR = 769,
|
||||
|
||||
/**
|
||||
* Generic Heart Rate Sensor.
|
||||
*/
|
||||
GENERIC_HEART_RATE_SENSOR = 832,
|
||||
|
||||
/**
|
||||
* Belt Heart Rate Sensor.
|
||||
*/
|
||||
HEART_RATE_SENSOR_HEART_RATE_BELT = 833,
|
||||
|
||||
/**
|
||||
* Generic Blood Pressure.
|
||||
*/
|
||||
GENERIC_BLOOD_PRESSURE = 896,
|
||||
|
||||
/**
|
||||
* Arm Blood Pressure.
|
||||
*/
|
||||
BLOOD_PRESSURE_ARM = 897,
|
||||
|
||||
/**
|
||||
* Wrist Blood Pressure.
|
||||
*/
|
||||
BLOOD_PRESSURE_WRIST = 898,
|
||||
|
||||
/**
|
||||
* Human Interface Device (HID).
|
||||
*/
|
||||
HUMAN_INTERFACE_DEVICE_HID = 960,
|
||||
|
||||
/**
|
||||
* Keyboard.
|
||||
*/
|
||||
KEYBOARD = 961,
|
||||
|
||||
/**
|
||||
* Mouse.
|
||||
*/
|
||||
MOUSE = 962,
|
||||
|
||||
/**
|
||||
* Joystick.
|
||||
*/
|
||||
JOYSTICK = 963,
|
||||
|
||||
/**
|
||||
* Gamepad.
|
||||
*/
|
||||
GAMEPAD = 964,
|
||||
|
||||
/**
|
||||
* Digitizer Tablet.
|
||||
*/
|
||||
DIGITIZER_TABLET = 965,
|
||||
|
||||
/**
|
||||
* Card Reader.
|
||||
*/
|
||||
CARD_READER = 966,
|
||||
|
||||
/**
|
||||
* Digital Pen.
|
||||
*/
|
||||
DIGITAL_PEN = 967,
|
||||
|
||||
/**
|
||||
* Bar Code Scanner.
|
||||
*/
|
||||
BARCODE_SCANNER = 968,
|
||||
|
||||
/**
|
||||
* Generic Glucose Meter.
|
||||
*/
|
||||
GENERIC_GLUCOSE_METER = 1024,
|
||||
|
||||
/**
|
||||
* Generic Running/Walking Sensor.
|
||||
*/
|
||||
GENERIC_RUNNING_WALKING_SENSOR = 1088,
|
||||
|
||||
/**
|
||||
* In Shoe Running/Walking Sensor.
|
||||
*/
|
||||
RUNNING_WALKING_SENSOR_IN_SHOE = 1089,
|
||||
|
||||
/**
|
||||
* On Shoe Running/Walking Sensor.
|
||||
*/
|
||||
RUNNING_WALKING_SENSOR_ON_SHOE = 1090,
|
||||
|
||||
/**
|
||||
* On Hip Running/Walking Sensor.
|
||||
*/
|
||||
RUNNING_WALKING_SENSOR_ON_HIP = 1091,
|
||||
|
||||
/**
|
||||
* Generic Cycling.
|
||||
*/
|
||||
GENERIC_CYCLING = 1152,
|
||||
|
||||
/**
|
||||
* Cycling Computer.
|
||||
*/
|
||||
CYCLING_CYCLING_COMPUTER = 1153,
|
||||
|
||||
/**
|
||||
* Cycling Speed Sensor.
|
||||
*/
|
||||
CYCLING_SPEED_SENSOR = 1154,
|
||||
|
||||
/**
|
||||
* Cycling Cadence Sensor.
|
||||
*/
|
||||
CYCLING_CADENCE_SENSOR = 1155,
|
||||
|
||||
/**
|
||||
* Cycling Power Sensor.
|
||||
*/
|
||||
CYCLING_POWER_SENSOR = 1156,
|
||||
|
||||
/**
|
||||
* Cycling Speed and Cadence Sensor.
|
||||
*/
|
||||
CYCLING_SPEED_AND_CADENCE_SENSOR = 1157,
|
||||
|
||||
/**
|
||||
* Generic Pulse Oximeter.
|
||||
*/
|
||||
PULSE_OXIMETER_GENERIC = 3136,
|
||||
|
||||
/**
|
||||
* Fingertip Pulse Oximeter.
|
||||
*/
|
||||
PULSE_OXIMETER_FINGERTIP = 3137,
|
||||
|
||||
/**
|
||||
* Wrist Worn Pulse Oximeter.
|
||||
*/
|
||||
PULSE_OXIMETER_WRIST_WORN = 3138,
|
||||
|
||||
/**
|
||||
* Generic Weight Scale.
|
||||
*/
|
||||
GENERIC_WEIGHT_SCALE = 3200,
|
||||
|
||||
/**
|
||||
* Generic Outdoor.
|
||||
*/
|
||||
OUTDOOR_GENERIC = 5184,
|
||||
|
||||
/**
|
||||
* Outdoor Location Display Device.
|
||||
*/
|
||||
OUTDOOR_LOCATION_DISPLAY_DEVICE = 5185,
|
||||
|
||||
/**
|
||||
* Outdoor Location and Navigation Display Device.
|
||||
*/
|
||||
OUTDOOR_LOCATION_AND_NAVIGATION_DISPLAY_DEVICE = 5186,
|
||||
|
||||
/**
|
||||
* Outdoor Location Pod.
|
||||
*/
|
||||
OUTDOOR_LOCATION_POD = 5187,
|
||||
|
||||
/**
|
||||
* Outdoor Location and Navigation Pod.
|
||||
*/
|
||||
OUTDOOR_LOCATION_AND_NAVIGATION_POD = 5188
|
||||
};
|
||||
|
||||
/**
|
||||
* Construct a new instance of adv_data_appearance_t.
|
||||
*/
|
||||
adv_data_appearance_t(type value) : SafeEnum(value)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Build advertising data.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,534 @@
|
|||
/* mbed Microcontroller Library
|
||||
* Copyright (c) 2006-2013 ARM Limited
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef BLE_GAP_ADVERTISINGDATATYPES_H
|
||||
#define BLE_GAP_ADVERTISINGDATATYPES_H
|
||||
|
||||
#include "ble/SafeEnum.h"
|
||||
|
||||
namespace ble {
|
||||
|
||||
/**
|
||||
* @addtogroup ble
|
||||
* @{
|
||||
* @addtogroup gap
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*!
|
||||
* List of standard Advertising Data types.
|
||||
*
|
||||
* These AD types are used to describe the capabilities of the peripheral
|
||||
* and are inserted inside the advertising or scan response payloads.
|
||||
*
|
||||
* @par Source
|
||||
*
|
||||
* @li @c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18.
|
||||
* @li @c https://www.bluetooth.org/en-us/specification/assigned-numbers/generic-access-profile.
|
||||
*/
|
||||
struct adv_data_type_t : SafeEnum<adv_data_type_t, uint8_t> {
|
||||
/** struct scoped enum wrapped by the class */
|
||||
enum type {
|
||||
/**
|
||||
* Flags, refer to AdvertisingData::Flags_t.
|
||||
*/
|
||||
FLAGS = 0x01,
|
||||
|
||||
/**
|
||||
* Incomplete list of 16-bit Service IDs.
|
||||
*/
|
||||
INCOMPLETE_LIST_16BIT_SERVICE_IDS = 0x02,
|
||||
|
||||
/**
|
||||
* Complete list of 16-bit Service IDs.
|
||||
*/
|
||||
COMPLETE_LIST_16BIT_SERVICE_IDS = 0x03,
|
||||
|
||||
/**
|
||||
* Incomplete list of 32-bit Service IDs (not relevant for Bluetooth 4.0).
|
||||
*/
|
||||
INCOMPLETE_LIST_32BIT_SERVICE_IDS = 0x04,
|
||||
|
||||
/**
|
||||
* Complete list of 32-bit Service IDs (not relevant for Bluetooth 4.0).
|
||||
*/
|
||||
COMPLETE_LIST_32BIT_SERVICE_IDS = 0x05,
|
||||
|
||||
/**
|
||||
* Incomplete list of 128-bit Service IDs.
|
||||
*/
|
||||
INCOMPLETE_LIST_128BIT_SERVICE_IDS = 0x06,
|
||||
|
||||
/**
|
||||
* Complete list of 128-bit Service IDs.
|
||||
*/
|
||||
COMPLETE_LIST_128BIT_SERVICE_IDS = 0x07,
|
||||
|
||||
/**
|
||||
* Shortened Local Name.
|
||||
*/
|
||||
SHORTENED_LOCAL_NAME = 0x08,
|
||||
|
||||
/**
|
||||
* Complete Local Name.
|
||||
*/
|
||||
COMPLETE_LOCAL_NAME = 0x09,
|
||||
|
||||
/**
|
||||
* TX Power Level (in dBm).
|
||||
*/
|
||||
TX_POWER_LEVEL = 0x0A,
|
||||
|
||||
/**
|
||||
* Device ID.
|
||||
*/
|
||||
DEVICE_ID = 0x10,
|
||||
|
||||
/**
|
||||
* Slave Connection Interval Range.
|
||||
*/
|
||||
SLAVE_CONNECTION_INTERVAL_RANGE = 0x12,
|
||||
|
||||
/**
|
||||
* List of 128-bit service UUIDs the device is looking for.
|
||||
*/
|
||||
LIST_16BIT_SOLICITATION_IDS = 0x14,
|
||||
|
||||
/**
|
||||
* List of 128-bit service UUIDs the device is looking for.
|
||||
*/
|
||||
LIST_128BIT_SOLICITATION_IDS = 0x15,
|
||||
|
||||
/**
|
||||
* Service Data.
|
||||
*/
|
||||
SERVICE_DATA = 0x16,
|
||||
|
||||
/**
|
||||
* Service Data.
|
||||
*/
|
||||
SERVICE_DATA_16BIT_ID = 0x16,
|
||||
|
||||
/**
|
||||
* Service Data.
|
||||
*/
|
||||
SERVICE_DATA_128BIT_ID = 0x21,
|
||||
|
||||
/**
|
||||
* Appearance, refer to AdvertisingData::Appearance_t.
|
||||
*/
|
||||
APPEARANCE = 0x19,
|
||||
|
||||
/**
|
||||
* Advertising Interval.
|
||||
*/
|
||||
ADVERTISING_INTERVAL = 0x1A,
|
||||
|
||||
/**
|
||||
* Manufacturer Specific Data.
|
||||
*/
|
||||
MANUFACTURER_SPECIFIC_DATA = 0xFF
|
||||
};
|
||||
|
||||
/**
|
||||
* Construct a new instance of adv_data_type_t.
|
||||
*/
|
||||
adv_data_type_t(type value) : SafeEnum(value)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set of advertising flags.
|
||||
*
|
||||
* @note LE_LIMITED_DISCOVERABLE and LE_GENERAL_DISCOVERABLE are mutually
|
||||
* exclusive
|
||||
*
|
||||
* @li @c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 18.1.
|
||||
*/
|
||||
struct adv_data_flags_t {
|
||||
enum {
|
||||
LE_LIMITED_DISCOVERABLE = 0x01, /**< Discoverable for a limited period of time.*/
|
||||
LE_GENERAL_DISCOVERABLE = 0x02, /**< Discoverable at any moment. */
|
||||
BREDR_NOT_SUPPORTED = 0x04, /**< LE only and does not support Bluetooth Enhanced DataRate. */
|
||||
SIMULTANEOUS_LE_BREDR_C = 0x08, /**< Not relevant - dual mode only. */
|
||||
SIMULTANEOUS_LE_BREDR_H = 0x10 /**< Not relevant - dual mode only. */
|
||||
};
|
||||
|
||||
static const uint8_t default_flags = BREDR_NOT_SUPPORTED | LE_GENERAL_DISCOVERABLE;
|
||||
|
||||
/** Create from raw value */
|
||||
adv_data_flags_t(uint8_t value = 0) : _value(value)
|
||||
{
|
||||
}
|
||||
|
||||
adv_data_flags_t &setGeneralDiscoverable(bool enable = true)
|
||||
{
|
||||
_value &= ~0x03;
|
||||
if (enable) {
|
||||
_value |= LE_GENERAL_DISCOVERABLE;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setLimitedDiscoverable(bool enable = true)
|
||||
{
|
||||
_value &= ~0x03;
|
||||
if (enable) {
|
||||
_value |= LE_LIMITED_DISCOVERABLE;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setBredrNotSupported(bool enable = true)
|
||||
{
|
||||
_value &= ~BREDR_NOT_SUPPORTED;
|
||||
if (enable) {
|
||||
_value |= BREDR_NOT_SUPPORTED;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setSimultaneousLeBredrC(bool enable = true)
|
||||
{
|
||||
_value &= ~SIMULTANEOUS_LE_BREDR_C;
|
||||
if (enable) {
|
||||
_value |= SIMULTANEOUS_LE_BREDR_C;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
adv_data_flags_t &setSimultaneousLeBredrH(bool enable = true)
|
||||
{
|
||||
_value &= ~SIMULTANEOUS_LE_BREDR_H;
|
||||
if (enable) {
|
||||
_value |= SIMULTANEOUS_LE_BREDR_H;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool getGeneralDiscoverable()
|
||||
{
|
||||
return _value & LE_GENERAL_DISCOVERABLE;
|
||||
}
|
||||
|
||||
bool getlimitedDiscoverable()
|
||||
{
|
||||
return _value & LE_LIMITED_DISCOVERABLE;
|
||||
}
|
||||
|
||||
bool getBrEdrNotSupported()
|
||||
{
|
||||
return _value & BREDR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
bool getSimultaneousLeBredrC()
|
||||
{
|
||||
return _value & SIMULTANEOUS_LE_BREDR_C;
|
||||
}
|
||||
|
||||
bool getSimultaneousLeBredrH()
|
||||
{
|
||||
return _value & SIMULTANEOUS_LE_BREDR_H;
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
_value = 0;
|
||||
}
|
||||
|
||||
uint8_t value()
|
||||
{
|
||||
return _value;
|
||||
}
|
||||
|
||||
private:
|
||||
uint8_t _value;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Enumeration of values for the adv_data_type_t::APPEARANCE.
|
||||
*
|
||||
* These values describe the physical shape or appearance of the device.
|
||||
*
|
||||
* @par Source
|
||||
*
|
||||
* @li @c Bluetooth Core Specification Supplement, Part A, Section 1.12.
|
||||
* @li @c Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 12.2.
|
||||
* @li @c https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml.
|
||||
*/
|
||||
struct adv_data_appearance_t : SafeEnum<adv_data_appearance_t, uint16_t> {
|
||||
/** struct scoped enum wrapped by the class */
|
||||
enum type {
|
||||
/**
|
||||
* Unknown or unspecified appearance type.
|
||||
*/
|
||||
UNKNOWN = 0,
|
||||
|
||||
/**
|
||||
* Generic Phone.
|
||||
*/
|
||||
GENERIC_PHONE = 64,
|
||||
|
||||
/**
|
||||
* Generic Computer.
|
||||
*/
|
||||
GENERIC_COMPUTER = 128,
|
||||
|
||||
/**
|
||||
* Generic Watch.
|
||||
*/
|
||||
GENERIC_WATCH = 192,
|
||||
|
||||
/**
|
||||
* Sports Watch.
|
||||
*/
|
||||
WATCH_SPORTS_WATCH = 193,
|
||||
|
||||
/**
|
||||
* Generic Clock.
|
||||
*/
|
||||
GENERIC_CLOCK = 256,
|
||||
|
||||
/**
|
||||
* Generic Display.
|
||||
*/
|
||||
GENERIC_DISPLAY = 320,
|
||||
|
||||
/**
|
||||
* Generic Remote Control.
|
||||
*/
|
||||
GENERIC_REMOTE_CONTROL = 384,
|
||||
|
||||
/**
|
||||
* Generic Eye Glasses.
|
||||
*/
|
||||
GENERIC_EYE_GLASSES = 448,
|
||||
|
||||
/**
|
||||
* Generic Tag.
|
||||
*/
|
||||
GENERIC_TAG = 512,
|
||||
|
||||
/**
|
||||
* Generic Keyring.
|
||||
*/
|
||||
GENERIC_KEYRING = 576,
|
||||
|
||||
/**
|
||||
* Generic Media Player.
|
||||
*/
|
||||
GENERIC_MEDIA_PLAYER = 640,
|
||||
|
||||
/**
|
||||
* Generic Bar Code Scanner.
|
||||
*/
|
||||
GENERIC_BARCODE_SCANNER = 704,
|
||||
|
||||
/**
|
||||
* Generic Thermometer.
|
||||
*/
|
||||
GENERIC_THERMOMETER = 768,
|
||||
|
||||
/**
|
||||
* Ear Thermometer.
|
||||
*/
|
||||
THERMOMETER_EAR = 769,
|
||||
|
||||
/**
|
||||
* Generic Heart Rate Sensor.
|
||||
*/
|
||||
GENERIC_HEART_RATE_SENSOR = 832,
|
||||
|
||||
/**
|
||||
* Belt Heart Rate Sensor.
|
||||
*/
|
||||
HEART_RATE_SENSOR_HEART_RATE_BELT = 833,
|
||||
|
||||
/**
|
||||
* Generic Blood Pressure.
|
||||
*/
|
||||
GENERIC_BLOOD_PRESSURE = 896,
|
||||
|
||||
/**
|
||||
* Arm Blood Pressure.
|
||||
*/
|
||||
BLOOD_PRESSURE_ARM = 897,
|
||||
|
||||
/**
|
||||
* Wrist Blood Pressure.
|
||||
*/
|
||||
BLOOD_PRESSURE_WRIST = 898,
|
||||
|
||||
/**
|
||||
* Human Interface Device (HID).
|
||||
*/
|
||||
HUMAN_INTERFACE_DEVICE_HID = 960,
|
||||
|
||||
/**
|
||||
* Keyboard.
|
||||
*/
|
||||
KEYBOARD = 961,
|
||||
|
||||
/**
|
||||
* Mouse.
|
||||
*/
|
||||
MOUSE = 962,
|
||||
|
||||
/**
|
||||
* Joystick.
|
||||
*/
|
||||
JOYSTICK = 963,
|
||||
|
||||
/**
|
||||
* Gamepad.
|
||||
*/
|
||||
GAMEPAD = 964,
|
||||
|
||||
/**
|
||||
* Digitizer Tablet.
|
||||
*/
|
||||
DIGITIZER_TABLET = 965,
|
||||
|
||||
/**
|
||||
* Card Reader.
|
||||
*/
|
||||
CARD_READER = 966,
|
||||
|
||||
/**
|
||||
* Digital Pen.
|
||||
*/
|
||||
DIGITAL_PEN = 967,
|
||||
|
||||
/**
|
||||
* Bar Code Scanner.
|
||||
*/
|
||||
BARCODE_SCANNER = 968,
|
||||
|
||||
/**
|
||||
* Generic Glucose Meter.
|
||||
*/
|
||||
GENERIC_GLUCOSE_METER = 1024,
|
||||
|
||||
/**
|
||||
* Generic Running/Walking Sensor.
|
||||
*/
|
||||
GENERIC_RUNNING_WALKING_SENSOR = 1088,
|
||||
|
||||
/**
|
||||
* In Shoe Running/Walking Sensor.
|
||||
*/
|
||||
RUNNING_WALKING_SENSOR_IN_SHOE = 1089,
|
||||
|
||||
/**
|
||||
* On Shoe Running/Walking Sensor.
|
||||
*/
|
||||
RUNNING_WALKING_SENSOR_ON_SHOE = 1090,
|
||||
|
||||
/**
|
||||
* On Hip Running/Walking Sensor.
|
||||
*/
|
||||
RUNNING_WALKING_SENSOR_ON_HIP = 1091,
|
||||
|
||||
/**
|
||||
* Generic Cycling.
|
||||
*/
|
||||
GENERIC_CYCLING = 1152,
|
||||
|
||||
/**
|
||||
* Cycling Computer.
|
||||
*/
|
||||
CYCLING_CYCLING_COMPUTER = 1153,
|
||||
|
||||
/**
|
||||
* Cycling Speed Sensor.
|
||||
*/
|
||||
CYCLING_SPEED_SENSOR = 1154,
|
||||
|
||||
/**
|
||||
* Cycling Cadence Sensor.
|
||||
*/
|
||||
CYCLING_CADENCE_SENSOR = 1155,
|
||||
|
||||
/**
|
||||
* Cycling Power Sensor.
|
||||
*/
|
||||
CYCLING_POWER_SENSOR = 1156,
|
||||
|
||||
/**
|
||||
* Cycling Speed and Cadence Sensor.
|
||||
*/
|
||||
CYCLING_SPEED_AND_CADENCE_SENSOR = 1157,
|
||||
|
||||
/**
|
||||
* Generic Pulse Oximeter.
|
||||
*/
|
||||
PULSE_OXIMETER_GENERIC = 3136,
|
||||
|
||||
/**
|
||||
* Fingertip Pulse Oximeter.
|
||||
*/
|
||||
PULSE_OXIMETER_FINGERTIP = 3137,
|
||||
|
||||
/**
|
||||
* Wrist Worn Pulse Oximeter.
|
||||
*/
|
||||
PULSE_OXIMETER_WRIST_WORN = 3138,
|
||||
|
||||
/**
|
||||
* Generic Weight Scale.
|
||||
*/
|
||||
GENERIC_WEIGHT_SCALE = 3200,
|
||||
|
||||
/**
|
||||
* Generic Outdoor.
|
||||
*/
|
||||
OUTDOOR_GENERIC = 5184,
|
||||
|
||||
/**
|
||||
* Outdoor Location Display Device.
|
||||
*/
|
||||
OUTDOOR_LOCATION_DISPLAY_DEVICE = 5185,
|
||||
|
||||
/**
|
||||
* Outdoor Location and Navigation Display Device.
|
||||
*/
|
||||
OUTDOOR_LOCATION_AND_NAVIGATION_DISPLAY_DEVICE = 5186,
|
||||
|
||||
/**
|
||||
* Outdoor Location Pod.
|
||||
*/
|
||||
OUTDOOR_LOCATION_POD = 5187,
|
||||
|
||||
/**
|
||||
* Outdoor Location and Navigation Pod.
|
||||
*/
|
||||
OUTDOOR_LOCATION_AND_NAVIGATION_POD = 5188
|
||||
};
|
||||
|
||||
/**
|
||||
* Construct a new instance of adv_data_appearance_t.
|
||||
*/
|
||||
adv_data_appearance_t(type value) : SafeEnum(value)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace ble
|
||||
|
||||
#endif //BLE_GAP_ADVERTISINGDATATYPES_H
|
Loading…
Reference in New Issue