zephyr/include/zephyr/bluetooth/gap.h
Rubin Gerritsen 7c2f26bd2a Bluetooth: Host: Add macros for contiuous scanner
It is often desired to maximize the chances of receiving advertising
when scanning. To achieve this, the scanner should be enabled all the time.

Some controller implementations (like Nordic's SoftDevice Controller)
handle scheduling differently when scan_window = scan_interval.
Having a macro that defines this scanning configuration simplifies
writing applications.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2024-03-14 17:03:44 -05:00

980 lines
41 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** @file
* @brief Bluetooth Generic Access Profile defines and Assigned Numbers.
*/
/*
* Copyright (c) 2019 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_BLUETOOTH_GAP_H_
#define ZEPHYR_INCLUDE_BLUETOOTH_GAP_H_
#include <zephyr/sys/util_macro.h>
#include <zephyr/bluetooth/byteorder.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Bluetooth Generic Access Profile defines and Assigned Numbers.
* @defgroup bt_gap_defines Defines and Assigned Numbers
* @ingroup bt_gap
* @{
*/
/**
* @name Company Identifiers (see Bluetooth Assigned Numbers)
* @{
*/
#define BT_COMP_ID_LF 0x05f1 /**< The Linux Foundation */
/**
* @}
*/
/**
* @name EIR/AD data type definitions
* @{
*/
#define BT_DATA_FLAGS 0x01 /**< AD flags */
#define BT_DATA_UUID16_SOME 0x02 /**< 16-bit UUID, more available */
#define BT_DATA_UUID16_ALL 0x03 /**< 16-bit UUID, all listed */
#define BT_DATA_UUID32_SOME 0x04 /**< 32-bit UUID, more available */
#define BT_DATA_UUID32_ALL 0x05 /**< 32-bit UUID, all listed */
#define BT_DATA_UUID128_SOME 0x06 /**< 128-bit UUID, more available */
#define BT_DATA_UUID128_ALL 0x07 /**< 128-bit UUID, all listed */
#define BT_DATA_NAME_SHORTENED 0x08 /**< Shortened name */
#define BT_DATA_NAME_COMPLETE 0x09 /**< Complete name */
#define BT_DATA_TX_POWER 0x0a /**< Tx Power */
#define BT_DATA_SM_TK_VALUE 0x10 /**< Security Manager TK Value */
#define BT_DATA_SM_OOB_FLAGS 0x11 /**< Security Manager OOB Flags */
#define BT_DATA_PERIPHERAL_INT_RANGE 0x12 /**< Peripheral Connection Interval Range */
#define BT_DATA_SOLICIT16 0x14 /**< Solicit UUIDs, 16-bit */
#define BT_DATA_SOLICIT128 0x15 /**< Solicit UUIDs, 128-bit */
#define BT_DATA_SVC_DATA16 0x16 /**< Service data, 16-bit UUID */
#define BT_DATA_PUB_TARGET_ADDR 0x17 /**< Public Target Address */
#define BT_DATA_RAND_TARGET_ADDR 0x18 /**< Random Target Address */
#define BT_DATA_GAP_APPEARANCE 0x19 /**< GAP appearance */
#define BT_DATA_ADV_INT 0x1a /**< Advertising Interval */
#define BT_DATA_LE_BT_DEVICE_ADDRESS 0x1b /**< LE Bluetooth Device Address */
#define BT_DATA_LE_ROLE 0x1c /**< LE Role */
#define BT_DATA_SIMPLE_PAIRING_HASH 0x1d /**< Simple Pairing Hash C256 */
#define BT_DATA_SIMPLE_PAIRING_RAND 0x1e /**< Simple Pairing Randomizer R256 */
#define BT_DATA_SOLICIT32 0x1f /**< Solicit UUIDs, 32-bit */
#define BT_DATA_SVC_DATA32 0x20 /**< Service data, 32-bit UUID */
#define BT_DATA_SVC_DATA128 0x21 /**< Service data, 128-bit UUID */
#define BT_DATA_LE_SC_CONFIRM_VALUE 0x22 /**< LE SC Confirmation Value */
#define BT_DATA_LE_SC_RANDOM_VALUE 0x23 /**< LE SC Random Value */
#define BT_DATA_URI 0x24 /**< URI */
#define BT_DATA_INDOOR_POS 0x25 /**< Indoor Positioning */
#define BT_DATA_TRANS_DISCOVER_DATA 0x26 /**< Transport Discovery Data */
#define BT_DATA_LE_SUPPORTED_FEATURES 0x27 /**< LE Supported Features */
#define BT_DATA_CHANNEL_MAP_UPDATE_IND 0x28 /**< Channel Map Update Indication */
#define BT_DATA_MESH_PROV 0x29 /**< Mesh Provisioning PDU */
#define BT_DATA_MESH_MESSAGE 0x2a /**< Mesh Networking PDU */
#define BT_DATA_MESH_BEACON 0x2b /**< Mesh Beacon */
#define BT_DATA_BIG_INFO 0x2c /**< BIGInfo */
#define BT_DATA_BROADCAST_CODE 0x2d /**< Broadcast Code */
#define BT_DATA_CSIS_RSI 0x2e /**< CSIS Random Set ID type */
#define BT_DATA_ADV_INT_LONG 0x2f /**< Advertising Interval long */
#define BT_DATA_BROADCAST_NAME 0x30 /**< Broadcast Name */
#define BT_DATA_ENCRYPTED_AD_DATA 0x31 /**< Encrypted Advertising Data */
#define BT_DATA_3D_INFO 0x3D /**< 3D Information Data */
#define BT_DATA_MANUFACTURER_DATA 0xff /**< Manufacturer Specific Data */
#define BT_LE_AD_LIMITED 0x01 /**< Limited Discoverable */
#define BT_LE_AD_GENERAL 0x02 /**< General Discoverable */
#define BT_LE_AD_NO_BREDR 0x04 /**< BR/EDR not supported */
/**
* @}
*/
/**
* @name Appearance Values
*
* Last Modified on 2023-01-05
* @{
*/
/** Generic Unknown */
#define BT_APPEARANCE_UNKNOWN 0x0000
/** Generic Phone */
#define BT_APPEARANCE_GENERIC_PHONE 0x0040
/** Generic Computer */
#define BT_APPEARANCE_GENERIC_COMPUTER 0x0080
/** Desktop Workstation */
#define BT_APPEARANCE_COMPUTER_DESKTOP_WORKSTATION 0x0081
/** Server-class Computer */
#define BT_APPEARANCE_COMPUTER_SERVER_CLASS 0x0082
/** Laptop */
#define BT_APPEARANCE_COMPUTER_LAPTOP 0x0083
/** Handheld PC/PDA (clamshell) */
#define BT_APPEARANCE_COMPUTER_HANDHELD_PCPDA 0x0084
/** Palm­size PC/PDA */
#define BT_APPEARANCE_COMPUTER_PALMSIZE_PCPDA 0x0085
/** Wearable computer (watch size) */
#define BT_APPEARANCE_COMPUTER_WEARABLE_COMPUTER 0x0086
/** Tablet */
#define BT_APPEARANCE_COMPUTER_TABLET 0x0087
/** Docking Station */
#define BT_APPEARANCE_COMPUTER_DOCKING_STATION 0x0088
/** All in One */
#define BT_APPEARANCE_COMPUTER_ALL_IN_ONE 0x0089
/** Blade Server */
#define BT_APPEARANCE_COMPUTER_BLADE_SERVER 0x008A
/** Convertible */
#define BT_APPEARANCE_COMPUTER_CONVERTIBLE 0x008B
/** Detachable */
#define BT_APPEARANCE_COMPUTER_DETACHABLE 0x008C
/** IoT Gateway */
#define BT_APPEARANCE_COMPUTER_IOT_GATEWAY 0x008D
/** Mini PC */
#define BT_APPEARANCE_COMPUTER_MINI_PC 0x008E
/** Stick PC */
#define BT_APPEARANCE_COMPUTER_STICK_PC 0x008F
/** Generic Watch */
#define BT_APPEARANCE_GENERIC_WATCH 0x00C0
/** Sports Watch */
#define BT_APPEARANCE_SPORTS_WATCH 0x00C1
/** Smartwatch */
#define BT_APPEARANCE_SMARTWATCH 0x00C2
/** Generic Clock */
#define BT_APPEARANCE_GENERIC_CLOCK 0x0100
/** Generic Display */
#define BT_APPEARANCE_GENERIC_DISPLAY 0x0140
/** Generic Remote Control */
#define BT_APPEARANCE_GENERIC_REMOTE 0x0180
/** Generic Eye-glasses */
#define BT_APPEARANCE_GENERIC_EYEGLASSES 0x01C0
/** Generic Tag */
#define BT_APPEARANCE_GENERIC_TAG 0x0200
/** Generic Keyring */
#define BT_APPEARANCE_GENERIC_KEYRING 0x0240
/** Generic Media Player */
#define BT_APPEARANCE_GENERIC_MEDIA_PLAYER 0x0280
/** Generic Barcode Scanner */
#define BT_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0
/** Generic Thermometer */
#define BT_APPEARANCE_GENERIC_THERMOMETER 0x0300
/** Ear Thermometer */
#define BT_APPEARANCE_THERMOMETER_EAR 0x0301
/** Generic Heart Rate Sensor */
#define BT_APPEARANCE_GENERIC_HEART_RATE 0x0340
/** Heart Rate Belt */
#define BT_APPEARANCE_HEART_RATE_BELT 0x0341
/** Generic Blood Pressure */
#define BT_APPEARANCE_GENERIC_BLOOD_PRESSURE 0x0380
/** Arm Blood Pressure */
#define BT_APPEARANCE_BLOOD_PRESSURE_ARM 0x0381
/** Wrist Blood Pressure */
#define BT_APPEARANCE_BLOOD_PRESSURE_WRIST 0x0382
/** Generic Human Interface Device */
#define BT_APPEARANCE_GENERIC_HID 0x03C0
/** Keyboard */
#define BT_APPEARANCE_HID_KEYBOARD 0x03C1
/** Mouse */
#define BT_APPEARANCE_HID_MOUSE 0x03C2
/** Joystick */
#define BT_APPEARANCE_HID_JOYSTICK 0x03C3
/** Gamepad */
#define BT_APPEARANCE_HID_GAMEPAD 0x03C4
/** Digitizer Tablet */
#define BT_APPEARANCE_HID_DIGITIZER_TABLET 0x03C5
/** Card Reader */
#define BT_APPEARANCE_HID_CARD_READER 0x03C6
/** Digital Pen */
#define BT_APPEARANCE_HID_DIGITAL_PEN 0x03C7
/** Barcode Scanner */
#define BT_APPEARANCE_HID_BARCODE_SCANNER 0x03C8
/** Touchpad */
#define BT_APPEARANCE_HID_TOUCHPAD 0x03C9
/** Presentation Remote */
#define BT_APPEARANCE_HID_PRESENTATION_REMOTE 0x03CA
/** Generic Glucose Meter */
#define BT_APPEARANCE_GENERIC_GLUCOSE 0x0400
/** Generic Running Walking Sensor */
#define BT_APPEARANCE_GENERIC_WALKING 0x0440
/** In-Shoe Running Walking Sensor */
#define BT_APPEARANCE_WALKING_IN_SHOE 0x0441
/** On-Shoe Running Walking Sensor */
#define BT_APPEARANCE_WALKING_ON_SHOE 0x0442
/** On-Hip Running Walking Sensor */
#define BT_APPEARANCE_WALKING_ON_HIP 0x0443
/** Generic Cycling */
#define BT_APPEARANCE_GENERIC_CYCLING 0x0480
/** Cycling Computer */
#define BT_APPEARANCE_CYCLING_COMPUTER 0x0481
/** Speed Sensor */
#define BT_APPEARANCE_CYCLING_SPEED 0x0482
/** Cadence Sensor */
#define BT_APPEARANCE_CYCLING_CADENCE 0x0483
/** Power Sensor */
#define BT_APPEARANCE_CYCLING_POWER 0x0484
/** Speed and Cadence Sensor */
#define BT_APPEARANCE_CYCLING_SPEED_CADENCE 0x0485
/** Generic Control Device */
#define BT_APPEARANCE_GENERIC_CONTROL_DEVICE 0x04C0
/** Switch */
#define BT_APPEARANCE_CONTROL_SWITCH 0x04C1
/** Multi-switch */
#define BT_APPEARANCE_CONTROL_MULTI_SWITCH 0x04C2
/** Button */
#define BT_APPEARANCE_CONTROL_BUTTON 0x04C3
/** Slider */
#define BT_APPEARANCE_CONTROL_SLIDER 0x04C4
/** Rotary Switch */
#define BT_APPEARANCE_CONTROL_ROTARY_SWITCH 0x04C5
/** Touch Panel */
#define BT_APPEARANCE_CONTROL_TOUCH_PANEL 0x04C6
/** Single Switch */
#define BT_APPEARANCE_CONTROL_SINGLE_SWITCH 0x04C7
/** Double Switch */
#define BT_APPEARANCE_CONTROL_DOUBLE_SWITCH 0x04C8
/** Triple Switch */
#define BT_APPEARANCE_CONTROL_TRIPLE_SWITCH 0x04C9
/** Battery Switch */
#define BT_APPEARANCE_CONTROL_BATTERY_SWITCH 0x04CA
/** Energy Harvesting Switch */
#define BT_APPEARANCE_CONTROL_ENERGY_HARVESTING_SWITCH 0x04CB
/** Push Button */
#define BT_APPEARANCE_CONTROL_PUSH_BUTTON 0x04CC
/** Generic Network Device */
#define BT_APPEARANCE_GENERIC_NETWORK_DEVICE 0x0500
/** Access Point */
#define BT_APPEARANCE_NETWORK_ACCESS_POINT 0x0501
/** Mesh Device */
#define BT_APPEARANCE_NETWORK_MESH_DEVICE 0x0502
/** Mesh Network Proxy */
#define BT_APPEARANCE_NETWORK_MESH_PROXY 0x0503
/** Generic Sensor */
#define BT_APPEARANCE_GENERIC_SENSOR 0x0540
/** Motion Sensor */
#define BT_APPEARANCE_SENSOR_MOTION 0x0541
/** Air quality Sensor */
#define BT_APPEARANCE_SENSOR_AIR_QUALITY 0x0542
/** Temperature Sensor */
#define BT_APPEARANCE_SENSOR_TEMPERATURE 0x0543
/** Humidity Sensor */
#define BT_APPEARANCE_SENSOR_HUMIDITY 0x0544
/** Leak Sensor */
#define BT_APPEARANCE_SENSOR_LEAK 0x0545
/** Smoke Sensor */
#define BT_APPEARANCE_SENSOR_SMOKE 0x0546
/** Occupancy Sensor */
#define BT_APPEARANCE_SENSOR_OCCUPANCY 0x0547
/** Contact Sensor */
#define BT_APPEARANCE_SENSOR_CONTACT 0x0548
/** Carbon Monoxide Sensor */
#define BT_APPEARANCE_SENSOR_CARBON_MONOXIDE 0x0549
/** Carbon Dioxide Sensor */
#define BT_APPEARANCE_SENSOR_CARBON_DIOXIDE 0x054A
/** Ambient Light Sensor */
#define BT_APPEARANCE_SENSOR_AMBIENT_LIGHT 0x054B
/** Energy Sensor */
#define BT_APPEARANCE_SENSOR_ENERGY 0x054C
/** Color Light Sensor */
#define BT_APPEARANCE_SENSOR_COLOR_LIGHT 0x054D
/** Rain Sensor */
#define BT_APPEARANCE_SENSOR_RAIN 0x054E
/** Fire Sensor */
#define BT_APPEARANCE_SENSOR_FIRE 0x054F
/** Wind Sensor */
#define BT_APPEARANCE_SENSOR_WIND 0x0550
/** Proximity Sensor */
#define BT_APPEARANCE_SENSOR_PROXIMITY 0x0551
/** Multi-Sensor */
#define BT_APPEARANCE_SENSOR_MULTI 0x0552
/** Flush Mounted Sensor */
#define BT_APPEARANCE_SENSOR_FLUSH_MOUNTED 0x0553
/** Ceiling Mounted Sensor */
#define BT_APPEARANCE_SENSOR_CEILING_MOUNTED 0x0554
/** Wall Mounted Sensor */
#define BT_APPEARANCE_SENSOR_WALL_MOUNTED 0x0555
/** Multisensor */
#define BT_APPEARANCE_MULTISENSOR 0x0556
/** Energy Meter */
#define BT_APPEARANCE_SENSOR_ENERGY_METER 0x0557
/** Flame Detector */
#define BT_APPEARANCE_SENSOR_FLAME_DETECTOR 0x0558
/** Vehicle Tire Pressure Sensor */
#define BT_APPEARANCE_SENSOR_VEHICLE_TIRE_PRESSURE 0x0559
/** Generic Light Fixtures */
#define BT_APPEARANCE_GENERIC_LIGHT_FIXTURES 0x0580
/** Wall Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_WALL 0x0581
/** Ceiling Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_CEILING 0x0582
/** Floor Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_FLOOR 0x0583
/** Cabinet Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_CABINET 0x0584
/** Desk Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_DESK 0x0585
/** Troffer Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_TROFFER 0x0586
/** Pendant Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_PENDANT 0x0587
/** In-ground Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_IN_GROUND 0x0588
/** Flood Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_FLOOD 0x0589
/** Underwater Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_UNDERWATER 0x058A
/** Bollard with Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_BOLLARD_WITH 0x058B
/** Pathway Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_PATHWAY 0x058C
/** Garden Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_GARDEN 0x058D
/** Pole-top Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_POLE_TOP 0x058E
/** Spotlight */
#define BT_APPEARANCE_SPOT_LIGHT 0x058F
/** Linear Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_LINEAR 0x0590
/** Street Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_STREET 0x0591
/** Shelves Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_SHELVES 0x0592
/** Bay Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_BAY 0x0593
/** Emergency Exit Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_EMERGENCY_EXIT 0x0594
/** Light Controller */
#define BT_APPEARANCE_LIGHT_FIXTURES_CONTROLLER 0x0595
/** Light Driver */
#define BT_APPEARANCE_LIGHT_FIXTURES_DRIVER 0x0596
/** Bulb */
#define BT_APPEARANCE_LIGHT_FIXTURES_BULB 0x0597
/** Low-bay Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_LOW_BAY 0x0598
/** High-bay Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_HIGH_BAY 0x0599
/** Generic Fan */
#define BT_APPEARANCE_GENERIC_FAN 0x05C0
/** Ceiling Fan */
#define BT_APPEARANCE_FAN_CEILING 0x05C1
/** Axial Fan */
#define BT_APPEARANCE_FAN_AXIAL 0x05C2
/** Exhaust Fan */
#define BT_APPEARANCE_FAN_EXHAUST 0x05C3
/** Pedestal Fan */
#define BT_APPEARANCE_FAN_PEDESTAL 0x05C4
/** Desk Fan */
#define BT_APPEARANCE_FAN_DESK 0x05C5
/** Wall Fan */
#define BT_APPEARANCE_FAN_WALL 0x05C6
/** Generic HVAC */
#define BT_APPEARANCE_GENERIC_HVAC 0x0600
/** Thermostat */
#define BT_APPEARANCE_HVAC_THERMOSTAT 0x0601
/** Humidifier */
#define BT_APPEARANCE_HVAC_HUMIDIFIER 0x0602
/** De-humidifier */
#define BT_APPEARANCE_HVAC_DEHUMIDIFIER 0x0603
/** Heater */
#define BT_APPEARANCE_HVAC_HEATER 0x0604
/** Radiator */
#define BT_APPEARANCE_HVAC_RADIATOR 0x0605
/** Boiler */
#define BT_APPEARANCE_HVAC_BOILER 0x0606
/** Heat Pump */
#define BT_APPEARANCE_HVAC_HEAT_PUMP 0x0607
/** Infrared Heater */
#define BT_APPEARANCE_HVAC_INFRARED_HEATER 0x0608
/** Radiant Panel Heater */
#define BT_APPEARANCE_HVAC_RADIANT_PANEL_HEATER 0x0609
/** Fan Heater */
#define BT_APPEARANCE_HVAC_FAN_HEATER 0x060A
/** Air Curtain */
#define BT_APPEARANCE_HVAC_AIR_CURTAIN 0x060B
/** Generic Air Conditioning */
#define BT_APPEARANCE_GENERIC_AIR_CONDITIONING 0x0640
/** Generic Humidifier */
#define BT_APPEARANCE_GENERIC_HUMIDIFIER 0x0680
/** Generic Heating */
#define BT_APPEARANCE_GENERIC_HEATING 0x06C0
/** Radiator */
#define BT_APPEARANCE_HEATING_RADIATOR 0x06C1
/** Boiler */
#define BT_APPEARANCE_HEATING_BOILER 0x06C2
/** Heat Pump */
#define BT_APPEARANCE_HEATING_HEAT_PUMP 0x06C3
/** Infrared Heater */
#define BT_APPEARANCE_HEATING_INFRARED_HEATER 0x06C4
/** Radiant Panel Heater */
#define BT_APPEARANCE_HEATING_RADIANT_PANEL_HEATER 0x06C5
/** Fan Heater */
#define BT_APPEARANCE_HEATING_FAN_HEATER 0x06C6
/** Air Curtain */
#define BT_APPEARANCE_HEATING_AIR_CURTAIN 0x06C7
/** Generic Access Control */
#define BT_APPEARANCE_GENERIC_ACCESS_CONTROL 0x0700
/** Access Door */
#define BT_APPEARANCE_CONTROL_ACCESS_DOOR 0x0701
/** Garage Door */
#define BT_APPEARANCE_CONTROL_GARAGE_DOOR 0x0702
/** Emergency Exit Door */
#define BT_APPEARANCE_CONTROL_EMERGENCY_EXIT_DOOR 0x0703
/** Access Lock */
#define BT_APPEARANCE_CONTROL_ACCESS_LOCK 0x0704
/** Elevator */
#define BT_APPEARANCE_CONTROL_ELEVATOR 0x0705
/** Window */
#define BT_APPEARANCE_CONTROL_WINDOW 0x0706
/** Entrance Gate */
#define BT_APPEARANCE_CONTROL_ENTRANCE_GATE 0x0707
/** Door Lock */
#define BT_APPEARANCE_CONTROL_DOOR_LOCK 0x0708
/** Locker */
#define BT_APPEARANCE_CONTROL_LOCKER 0x0709
/** Generic Motorized Device */
#define BT_APPEARANCE_GENERIC_MOTORIZED_DEVICE 0x0740
/** Motorized Gate */
#define BT_APPEARANCE_MOTORIZED_GATE 0x0741
/** Awning */
#define BT_APPEARANCE_MOTORIZED_AWNING 0x0742
/** Blinds or Shades */
#define BT_APPEARANCE_MOTORIZED_BLINDS_OR_SHADES 0x0743
/** Curtains */
#define BT_APPEARANCE_MOTORIZED_CURTAINS 0x0744
/** Screen */
#define BT_APPEARANCE_MOTORIZED_SCREEN 0x0745
/** Generic Power Device */
#define BT_APPEARANCE_GENERIC_POWER_DEVICE 0x0780
/** Power Outlet */
#define BT_APPEARANCE_POWER_OUTLET 0x0781
/** Power Strip */
#define BT_APPEARANCE_POWER_STRIP 0x0782
/** Plug */
#define BT_APPEARANCE_POWER_PLUG 0x0783
/** Power Supply */
#define BT_APPEARANCE_POWER_SUPPLY 0x0784
/** LED Driver */
#define BT_APPEARANCE_POWER_LED_DRIVER 0x0785
/** Fluorescent Lamp Gear */
#define BT_APPEARANCE_POWER_FLUORESCENT_LAMP_GEAR 0x0786
/** HID Lamp Gear */
#define BT_APPEARANCE_POWER_HID_LAMP_GEAR 0x0787
/** Charge Case */
#define BT_APPEARANCE_POWER_CHARGE_CASE 0x0788
/** Power Bank */
#define BT_APPEARANCE_POWER_POWER_BANK 0x0789
/** Generic Light Source */
#define BT_APPEARANCE_GENERIC_LIGHT_SOURCE 0x07C0
/** Incandescent Light Bulb */
#define BT_APPEARANCE_LIGHT_SOURCE_INCANDESCENT_BULB 0x07C1
/** LED Lamp */
#define BT_APPEARANCE_LIGHT_SOURCE_LED_LAMP 0x07C2
/** HID Lamp */
#define BT_APPEARANCE_LIGHT_SOURCE_HID_LAMP 0x07C3
/** Fluorescent Lamp */
#define BT_APPEARANCE_LIGHT_SOURCE_FLUORESCENT_LAMP 0x07C4
/** LED Array */
#define BT_APPEARANCE_LIGHT_SOURCE_LED_ARRAY 0x07C5
/** Multi-Color LED Array */
#define BT_APPEARANCE_LIGHT_SOURCE_MULTICOLOR_LED_ARRAY 0x07C6
/** Low voltage halogen */
#define BT_APPEARANCE_LIGHT_SOURCE_LOW_VOLTAGE_HALOGEN 0x07C7
/** Organic light emitting diode */
#define BT_APPEARANCE_LIGHT_SOURCE_OLED 0x07C8
/** Generic Window Covering */
#define BT_APPEARANCE_GENERIC_WINDOW_COVERING 0x0800
/** Window Shades */
#define BT_APPEARANCE_WINDOW_SHADES 0x0801
/** Window Blinds */
#define BT_APPEARANCE_WINDOW_BLINDS 0x0802
/** Window Awning */
#define BT_APPEARANCE_WINDOW_AWNING 0x0803
/** Window Curtain */
#define BT_APPEARANCE_WINDOW_CURTAIN 0x0804
/** Exterior Shutter */
#define BT_APPEARANCE_WINDOW_EXTERIOR_SHUTTER 0x0805
/** Exterior Screen */
#define BT_APPEARANCE_WINDOW_EXTERIOR_SCREEN 0x0806
/** Generic Audio Sink */
#define BT_APPEARANCE_GENERIC_AUDIO_SINK 0x0840
/** Standalone Speaker */
#define BT_APPEARANCE_AUDIO_SINK_STANDALONE_SPEAKER 0x0841
/** Soundbar */
#define BT_APPEARANCE_AUDIO_SINK_SOUNDBAR 0x0842
/** Bookshelf Speaker */
#define BT_APPEARANCE_AUDIO_SINK_BOOKSHELF_SPEAKER 0x0843
/** Standmounted Speaker */
#define BT_APPEARANCE_AUDIO_SINK_STANDMOUNTED_SPEAKER 0x0844
/** Speakerphone */
#define BT_APPEARANCE_AUDIO_SINK_SPEAKERPHONE 0x0845
/** Generic Audio Source */
#define BT_APPEARANCE_GENERIC_AUDIO_SOURCE 0x0880
/** Microphone */
#define BT_APPEARANCE_AUDIO_SOURCE_MICROPHONE 0x0881
/** Alarm */
#define BT_APPEARANCE_AUDIO_SOURCE_ALARM 0x0882
/** Bell */
#define BT_APPEARANCE_AUDIO_SOURCE_BELL 0x0883
/** Horn */
#define BT_APPEARANCE_AUDIO_SOURCE_HORN 0x0884
/** Broadcasting Device */
#define BT_APPEARANCE_AUDIO_SOURCE_BROADCASTING_DEVICE 0x0885
/** Service Desk */
#define BT_APPEARANCE_AUDIO_SOURCE_SERVICE_DESK 0x0886
/** Kiosk */
#define BT_APPEARANCE_AUDIO_SOURCE_KIOSK 0x0887
/** Broadcasting Room */
#define BT_APPEARANCE_AUDIO_SOURCE_BROADCASTING_ROOM 0x0888
/** Auditorium */
#define BT_APPEARANCE_AUDIO_SOURCE_AUDITORIUM 0x0889
/** Generic Motorized Vehicle */
#define BT_APPEARANCE_GENERIC_MOTORIZED_VEHICLE 0x08C0
/** Car */
#define BT_APPEARANCE_VEHICLE_CAR 0x08C1
/** Large Goods Vehicle */
#define BT_APPEARANCE_VEHICLE_LARGE_GOODS 0x08C2
/** 2-Wheeled Vehicle */
#define BT_APPEARANCE_VEHICLE_TWO_WHEELED 0x08C3
/** Motorbike */
#define BT_APPEARANCE_VEHICLE_MOTORBIKE 0x08C4
/** Scooter */
#define BT_APPEARANCE_VEHICLE_SCOOTER 0x08C5
/** Moped */
#define BT_APPEARANCE_VEHICLE_MOPED 0x08C6
/** 3-Wheeled Vehicle */
#define BT_APPEARANCE_VEHICLE_THREE_WHEELED 0x08C7
/** Light Vehicle */
#define BT_APPEARANCE_VEHICLE_LIGHT 0x08C8
/** Quad Bike */
#define BT_APPEARANCE_VEHICLE_QUAD_BIKE 0x08C9
/** Minibus */
#define BT_APPEARANCE_VEHICLE_MINIBUS 0x08CA
/** Bus */
#define BT_APPEARANCE_VEHICLE_BUS 0x08CB
/** Trolley */
#define BT_APPEARANCE_VEHICLE_TROLLEY 0x08CC
/** Agricultural Vehicle */
#define BT_APPEARANCE_VEHICLE_AGRICULTURAL 0x08CD
/** Camper/Caravan */
#define BT_APPEARANCE_VEHICLE_CAMPER_OR_CARAVAN 0x08CE
/** Recreational Vehicle/Motor Home */
#define BT_APPEARANCE_VEHICLE_RECREATIONAL 0x08CF
/** Generic Domestic Appliance */
#define BT_APPEARANCE_GENERIC_DOMESTIC_APPLIANCE 0x0900
/** Refrigerator */
#define BT_APPEARANCE_APPLIANCE_REFRIGERATOR 0x0901
/** Freezer */
#define BT_APPEARANCE_APPLIANCE_FREEZER 0x0902
/** Oven */
#define BT_APPEARANCE_APPLIANCE_OVEN 0x0903
/** Microwave */
#define BT_APPEARANCE_APPLIANCE_MICROWAVE 0x0904
/** Toaster */
#define BT_APPEARANCE_APPLIANCE_TOASTER 0x0905
/** Washing Machine */
#define BT_APPEARANCE_APPLIANCE_WASHING_MACHINE 0x0906
/** Dryer */
#define BT_APPEARANCE_APPLIANCE_DRYER 0x0907
/** Coffee maker */
#define BT_APPEARANCE_APPLIANCE_COFFEE_MAKER 0x0908
/** Clothes iron */
#define BT_APPEARANCE_APPLIANCE_CLOTHES_IRON 0x0909
/** Curling iron */
#define BT_APPEARANCE_APPLIANCE_CURLING_IRON 0x090A
/** Hair dryer */
#define BT_APPEARANCE_APPLIANCE_HAIR_DRYER 0x090B
/** Vacuum cleaner */
#define BT_APPEARANCE_APPLIANCE_VACUUM_CLEANER 0x090C
/** Robotic vacuum cleaner */
#define BT_APPEARANCE_APPLIANCE_ROBOTIC_VACUUM_CLEANER 0x090D
/** Rice cooker */
#define BT_APPEARANCE_APPLIANCE_RICE_COOKER 0x090E
/** Clothes steamer */
#define BT_APPEARANCE_APPLIANCE_CLOTHES_STEAMER 0x090F
/** Generic Wearable Audio Device */
#define BT_APPEARANCE_GENERIC_WEARABLE_AUDIO_DEVICE 0x0940
/** Earbud */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_EARBUD 0x0941
/** Headset */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_HEADSET 0x0942
/** Headphones */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_HEADPHONES 0x0943
/** Neck Band */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_NECK_BAND 0x0944
/** Generic Aircraft */
#define BT_APPEARANCE_GENERIC_AIRCRAFT 0x0980
/** Light Aircraft */
#define BT_APPEARANCE_AIRCRAFT_LIGHT 0x0981
/** Microlight */
#define BT_APPEARANCE_AIRCRAFT_MICROLIGHT 0x0982
/** Paraglider */
#define BT_APPEARANCE_AIRCRAFT_PARAGLIDER 0x0983
/** Large Passenger Aircraft */
#define BT_APPEARANCE_AIRCRAFT_LARGE_PASSENGER 0x0984
/** Generic AV Equipment */
#define BT_APPEARANCE_GENERIC_AV_EQUIPMENT 0x09C0
/** Amplifier */
#define BT_APPEARANCE_AV_EQUIPMENT_AMPLIFIER 0x09C1
/** Receiver */
#define BT_APPEARANCE_AV_EQUIPMENT_RECEIVER 0x09C2
/** Radio */
#define BT_APPEARANCE_AV_EQUIPMENT_RADIO 0x09C3
/** Tuner */
#define BT_APPEARANCE_AV_EQUIPMENT_TUNER 0x09C4
/** Turntable */
#define BT_APPEARANCE_AV_EQUIPMENT_TURNTABLE 0x09C5
/** CD Player */
#define BT_APPEARANCE_AV_EQUIPMENT_CD_PLAYER 0x09C6
/** DVD Player */
#define BT_APPEARANCE_AV_EQUIPMENT_DVD_PLAYER 0x09C7
/** Bluray Player */
#define BT_APPEARANCE_AV_EQUIPMENT_BLURAY_PLAYER 0x09C8
/** Optical Disc Player */
#define BT_APPEARANCE_AV_EQUIPMENT_OPTICAL_DISC_PLAYER 0x09C9
/** Set-Top Box */
#define BT_APPEARANCE_AV_EQUIPMENT_SET_TOP_BOX 0x09CA
/** Generic Display Equipment */
#define BT_APPEARANCE_GENERIC_DISPLAY_EQUIPMENT 0x0A00
/** Television */
#define BT_APPEARANCE_DISPLAY_EQUIPMENT_TELEVISION 0x0A01
/** Monitor */
#define BT_APPEARANCE_DISPLAY_EQUIPMENT_MONITOR 0x0A02
/** Projector */
#define BT_APPEARANCE_DISPLAY_EQUIPMENT_PROJECTOR 0x0A03
/** Generic Hearing aid */
#define BT_APPEARANCE_GENERIC_HEARING_AID 0x0A40
/** In-ear hearing aid */
#define BT_APPEARANCE_HEARING_AID_IN_EAR 0x0A41
/** Behind-ear hearing aid */
#define BT_APPEARANCE_HEARING_AID_BEHIND_EAR 0x0A42
/** Cochlear Implant */
#define BT_APPEARANCE_HEARING_AID_COCHLEAR_IMPLANT 0x0A43
/** Generic Gaming */
#define BT_APPEARANCE_GENERIC_GAMING 0x0A80
/** Home Video Game Console */
#define BT_APPEARANCE_HOME_VIDEO_GAME_CONSOLE 0x0A81
/** Portable handheld console */
#define BT_APPEARANCE_PORTABLE_HANDHELD_CONSOLE 0x0A82
/** Generic Signage */
#define BT_APPEARANCE_GENERIC_SIGNAGE 0x0AC0
/** Digital Signage */
#define BT_APPEARANCE_SIGNAGE_DIGITAL 0x0AC1
/** Electronic Label */
#define BT_APPEARANCE_SIGNAGE_ELECTRONIC_LABEL 0x0AC2
/** Generic Pulse Oximeter */
#define BT_APPEARANCE_GENERIC_PULSE_OXIMETER 0x0C40
/** Fingertip Pulse Oximeter */
#define BT_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41
/** Wrist Worn Pulse Oximeter */
#define BT_APPEARANCE_PULSE_OXIMETER_WRIST 0x0C42
/** Generic Weight Scale */
#define BT_APPEARANCE_GENERIC_WEIGHT_SCALE 0x0C80
/** Generic Personal Mobility Device */
#define BT_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE 0x0CC0
/** Powered Wheelchair */
#define BT_APPEARANCE_MOBILITY_POWERED_WHEELCHAIR 0x0CC1
/** Mobility Scooter */
#define BT_APPEARANCE_MOBILITY_SCOOTER 0x0CC2
/** Continuous Glucose Monitor */
#define BT_APPEARANCE_CONTINUOUS_GLUCOSE_MONITOR 0x0D00
/** Generic Insulin Pump */
#define BT_APPEARANCE_GENERIC_INSULIN_PUMP 0x0D40
/** Insulin Pump, durable pump */
#define BT_APPEARANCE_INSULIN_PUMP_DURABLE 0x0D41
/** Insulin Pump, patch pump */
#define BT_APPEARANCE_INSULIN_PUMP_PATCH 0x0D44
/** Insulin Pen */
#define BT_APPEARANCE_INSULIN_PEN 0x0D48
/** Generic Medication Delivery */
#define BT_APPEARANCE_GENERIC_MEDICATION_DELIVERY 0x0D80
/** Generic Spirometer */
#define BT_APPEARANCE_GENERIC_SPIROMETER 0x0DC0
/** Handheld Spirometer */
#define BT_APPEARANCE_SPIROMETER_HANDHELD 0x0DC1
/** Generic Outdoor Sports Activity */
#define BT_APPEARANCE_GENERIC_OUTDOOR_SPORTS 0x1440
/** Location Display */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441
/** Location and Navigation Display */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV 0x1442
/** Location Pod */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD 0x1443
/** Location and Navigation Pod */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444
/**
* @}
*/
/**
* @name Defined GAP timers
* @{
*/
#define BT_GAP_SCAN_FAST_INTERVAL_MIN 0x0030 /* 30 ms */
#define BT_GAP_SCAN_FAST_INTERVAL 0x0060 /* 60 ms */
#define BT_GAP_SCAN_FAST_WINDOW 0x0030 /* 30 ms */
#define BT_GAP_SCAN_SLOW_INTERVAL_1 0x0800 /* 1.28 s */
#define BT_GAP_SCAN_SLOW_WINDOW_1 0x0012 /* 11.25 ms */
#define BT_GAP_SCAN_SLOW_INTERVAL_2 0x1000 /* 2.56 s */
#define BT_GAP_SCAN_SLOW_WINDOW_2 0x0012 /* 11.25 ms */
#define BT_GAP_ADV_FAST_INT_MIN_1 0x0030 /* 30 ms */
#define BT_GAP_ADV_FAST_INT_MAX_1 0x0060 /* 60 ms */
#define BT_GAP_ADV_FAST_INT_MIN_2 0x00a0 /* 100 ms */
#define BT_GAP_ADV_FAST_INT_MAX_2 0x00f0 /* 150 ms */
#define BT_GAP_ADV_SLOW_INT_MIN 0x0640 /* 1 s */
#define BT_GAP_ADV_SLOW_INT_MAX 0x0780 /* 1.2 s */
#define BT_GAP_PER_ADV_FAST_INT_MIN_1 0x0018 /* 30 ms */
#define BT_GAP_PER_ADV_FAST_INT_MAX_1 0x0030 /* 60 ms */
#define BT_GAP_PER_ADV_FAST_INT_MIN_2 0x0050 /* 100 ms */
#define BT_GAP_PER_ADV_FAST_INT_MAX_2 0x0078 /* 150 ms */
#define BT_GAP_PER_ADV_SLOW_INT_MIN 0x0320 /* 1 s */
#define BT_GAP_PER_ADV_SLOW_INT_MAX 0x03C0 /* 1.2 s */
#define BT_GAP_INIT_CONN_INT_MIN 0x0018 /* 30 ms */
#define BT_GAP_INIT_CONN_INT_MAX 0x0028 /* 50 ms */
/**
* @}
*/
/** LE PHY types */
enum {
/** Convenience macro for when no PHY is set. */
BT_GAP_LE_PHY_NONE = 0,
/** LE 1M PHY */
BT_GAP_LE_PHY_1M = BIT(0),
/** LE 2M PHY */
BT_GAP_LE_PHY_2M = BIT(1),
/** LE Coded PHY */
BT_GAP_LE_PHY_CODED = BIT(2),
};
/** Advertising PDU types */
enum {
/** Scannable and connectable advertising. */
BT_GAP_ADV_TYPE_ADV_IND = 0x00,
/** Directed connectable advertising. */
BT_GAP_ADV_TYPE_ADV_DIRECT_IND = 0x01,
/** Non-connectable and scannable advertising. */
BT_GAP_ADV_TYPE_ADV_SCAN_IND = 0x02,
/** Non-connectable and non-scannable advertising. */
BT_GAP_ADV_TYPE_ADV_NONCONN_IND = 0x03,
/** Additional advertising data requested by an active scanner. */
BT_GAP_ADV_TYPE_SCAN_RSP = 0x04,
/** Extended advertising, see advertising properties. */
BT_GAP_ADV_TYPE_EXT_ADV = 0x05,
};
/** Advertising PDU properties */
enum {
/** Connectable advertising. */
BT_GAP_ADV_PROP_CONNECTABLE = BIT(0),
/** Scannable advertising. */
BT_GAP_ADV_PROP_SCANNABLE = BIT(1),
/** Directed advertising. */
BT_GAP_ADV_PROP_DIRECTED = BIT(2),
/** Additional advertising data requested by an active scanner. */
BT_GAP_ADV_PROP_SCAN_RESPONSE = BIT(3),
/** Extended advertising. */
BT_GAP_ADV_PROP_EXT_ADV = BIT(4),
};
/** Maximum advertising data length. */
#define BT_GAP_ADV_MAX_ADV_DATA_LEN 31
/** Maximum extended advertising data length.
*
* @note The maximum advertising data length that can be sent by an extended
* advertiser is defined by the controller.
*/
#define BT_GAP_ADV_MAX_EXT_ADV_DATA_LEN 1650
#define BT_GAP_TX_POWER_INVALID 0x7f
#define BT_GAP_RSSI_INVALID 0x7f
#define BT_GAP_SID_INVALID 0xff
#define BT_GAP_NO_TIMEOUT 0x0000
/* The maximum allowed high duty cycle directed advertising timeout, 1.28
* seconds in 10 ms unit.
*/
#define BT_GAP_ADV_HIGH_DUTY_CYCLE_MAX_TIMEOUT 128
/** Default data length */
#define BT_GAP_DATA_LEN_DEFAULT 0x001b /* 27 bytes */
/** Maximum data length */
#define BT_GAP_DATA_LEN_MAX 0x00fb /* 251 bytes */
/** Default data time */
#define BT_GAP_DATA_TIME_DEFAULT 0x0148 /* 328 us */
/** Maximum data time */
#define BT_GAP_DATA_TIME_MAX 0x4290 /* 17040 us */
/** Maximum advertising set number */
#define BT_GAP_SID_MAX 0x0F
/** Maximum number of consecutive periodic advertisement events that can be
* skipped after a successful receive.
*/
#define BT_GAP_PER_ADV_MAX_SKIP 0x01F3
/** Minimum Periodic Advertising Timeout (N * 10 ms) */
#define BT_GAP_PER_ADV_MIN_TIMEOUT 0x000A /* 100 ms */
/** Maximum Periodic Advertising Timeout (N * 10 ms) */
#define BT_GAP_PER_ADV_MAX_TIMEOUT 0x4000 /* 163.84 s */
/** Minimum Periodic Advertising Interval (N * 1.25 ms) */
#define BT_GAP_PER_ADV_MIN_INTERVAL 0x0006 /* 7.5 ms */
/** Maximum Periodic Advertising Interval (N * 1.25 ms) */
#define BT_GAP_PER_ADV_MAX_INTERVAL 0xFFFF /* 81.91875 s */
/**
* @brief Convert periodic advertising interval (N * 1.25 ms) to milliseconds
*
* 5 / 4 represents 1.25 ms unit.
*/
#define BT_GAP_PER_ADV_INTERVAL_TO_MS(interval) ((interval) * 5 / 4)
/** Constant Tone Extension (CTE) types */
enum {
/** Angle of Arrival */
BT_GAP_CTE_AOA = 0x00,
/** Angle of Departure with 1 us slots */
BT_GAP_CTE_AOD_1US = 0x01,
/** Angle of Departure with 2 us slots */
BT_GAP_CTE_AOD_2US = 0x02,
/** No extensions */
BT_GAP_CTE_NONE = 0xFF,
};
/** @brief Peripheral sleep clock accuracy (SCA) in ppm (parts per million) */
enum {
BT_GAP_SCA_UNKNOWN = 0, /**< Unknown */
BT_GAP_SCA_251_500 = 0, /**< 251 ppm to 500 ppm */
BT_GAP_SCA_151_250 = 1, /**< 151 ppm to 250 ppm */
BT_GAP_SCA_101_150 = 2, /**< 101 ppm to 150 ppm */
BT_GAP_SCA_76_100 = 3, /**< 76 ppm to 100 ppm */
BT_GAP_SCA_51_75 = 4, /**< 51 ppm to 75 ppm */
BT_GAP_SCA_31_50 = 5, /**< 31 ppm to 50 ppm */
BT_GAP_SCA_21_30 = 6, /**< 21 ppm to 30 ppm */
BT_GAP_SCA_0_20 = 7, /**< 0 ppm to 20 ppm */
};
/**
* @brief Encode 40 least significant bits of 64-bit LE Supported Features into array values
* in little-endian format.
*
* Helper macro to encode 40 least significant bits of 64-bit LE Supported Features value into
* advertising data. The number of bits that are encoded is a number of LE Supported Features
* defined by BT 5.3 Core specification.
*
* Example of how to encode the `0x000000DFF00DF00D` into advertising data.
*
* @code
* BT_DATA_BYTES(BT_DATA_LE_SUPPORTED_FEATURES, BT_LE_SUPP_FEAT_40_ENCODE(0x000000DFF00DF00D))
* @endcode
*
* @param w64 LE Supported Features value (64-bits)
*
* @return The comma separated values for LE Supported Features value that
* may be used directly as an argument for @ref BT_DATA_BYTES.
*/
#define BT_LE_SUPP_FEAT_40_ENCODE(w64) BT_BYTES_LIST_LE40(w64)
/** @brief Encode 4 least significant bytes of 64-bit LE Supported Features into
* 4 bytes long array of values in little-endian format.
*
* Helper macro to encode 64-bit LE Supported Features value into advertising
* data. The macro encodes 4 least significant bytes into advertising data.
* Other 4 bytes are not encoded.
*
* Example of how to encode the `0x000000DFF00DF00D` into advertising data.
*
* @code
* BT_DATA_BYTES(BT_DATA_LE_SUPPORTED_FEATURES, BT_LE_SUPP_FEAT_32_ENCODE(0x000000DFF00DF00D))
* @endcode
*
* @param w64 LE Supported Features value (64-bits)
*
* @return The comma separated values for LE Supported Features value that
* may be used directly as an argument for @ref BT_DATA_BYTES.
*/
#define BT_LE_SUPP_FEAT_32_ENCODE(w64) BT_BYTES_LIST_LE32(w64)
/**
* @brief Encode 3 least significant bytes of 64-bit LE Supported Features into
* 3 bytes long array of values in little-endian format.
*
* Helper macro to encode 64-bit LE Supported Features value into advertising
* data. The macro encodes 3 least significant bytes into advertising data.
* Other 5 bytes are not encoded.
*
* Example of how to encode the `0x000000DFF00DF00D` into advertising data.
*
* @code
* BT_DATA_BYTES(BT_DATA_LE_SUPPORTED_FEATURES, BT_LE_SUPP_FEAT_24_ENCODE(0x000000DFF00DF00D))
* @endcode
*
* @param w64 LE Supported Features value (64-bits)
*
* @return The comma separated values for LE Supported Features value that
* may be used directly as an argument for @ref BT_DATA_BYTES.
*/
#define BT_LE_SUPP_FEAT_24_ENCODE(w64) BT_BYTES_LIST_LE24(w64)
/**
* @brief Encode 2 least significant bytes of 64-bit LE Supported Features into
* 2 bytes long array of values in little-endian format.
*
* Helper macro to encode 64-bit LE Supported Features value into advertising
* data. The macro encodes 3 least significant bytes into advertising data.
* Other 6 bytes are not encoded.
*
* Example of how to encode the `0x000000DFF00DF00D` into advertising data.
*
* @code
* BT_DATA_BYTES(BT_DATA_LE_SUPPORTED_FEATURES, BT_LE_SUPP_FEAT_16_ENCODE(0x000000DFF00DF00D))
* @endcode
*
* @param w64 LE Supported Features value (64-bits)
*
* @return The comma separated values for LE Supported Features value that
* may be used directly as an argument for @ref BT_DATA_BYTES.
*/
#define BT_LE_SUPP_FEAT_16_ENCODE(w64) BT_BYTES_LIST_LE16(w64)
/**
* @brief Encode the least significant byte of 64-bit LE Supported Features into
* single byte long array.
*
* Helper macro to encode 64-bit LE Supported Features value into advertising
* data. The macro encodes the least significant byte into advertising data.
* Other 7 bytes are not encoded.
*
* Example of how to encode the `0x000000DFF00DF00D` into advertising data.
*
* @code
* BT_DATA_BYTES(BT_DATA_LE_SUPPORTED_FEATURES, BT_LE_SUPP_FEAT_8_ENCODE(0x000000DFF00DF00D))
* @endcode
*
* @param w64 LE Supported Features value (64-bits)
*
* @return The value of least significant byte of LE Supported Features value
* that may be used directly as an argument for @ref BT_DATA_BYTES.
*/
#define BT_LE_SUPP_FEAT_8_ENCODE(w64) \
(((w64) >> 0) & 0xFF)
/**
* @brief Validate whether LE Supported Features value does not use bits that are reserved for
* future use.
*
* Helper macro to check if @p w64 has zeros as bits 40-63. The macro is compliant with BT 5.3
* Core Specification where bits 0-40 has assigned values. In case of invalid value, build time
* error is reported.
*/
#define BT_LE_SUPP_FEAT_VALIDATE(w64) \
BUILD_ASSERT(!((w64) & (~BIT64_MASK(40))), \
"RFU bit in LE Supported Features are not zeros.")
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_BLUETOOTH_GAP_H_ */