blob: c643da671299218011fac2fbe0aa1e5523b5ce74 [file] [log] [blame]
/** @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 bluetooth
* @{
*/
/** Company Identifiers (see Bluetooth Assigned Numbers) */
#define BT_COMP_ID_LF 0x05f1 /* The Linux Foundation */
/** 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 */
/* Appearance Values Last Modified on 2023-01-05 */
#define BT_APPEARANCE_UNKNOWN 0x0000 /* Generic Unknown */
#define BT_APPEARANCE_GENERIC_PHONE 0x0040 /* Generic Phone */
#define BT_APPEARANCE_GENERIC_COMPUTER 0x0080 /* Generic Computer */
#define BT_APPEARANCE_COMPUTER_DESKTOP_WORKSTATION 0x0081 /* Desktop Workstation */
#define BT_APPEARANCE_COMPUTER_SERVER_CLASS 0x0082 /* Server-class Computer */
#define BT_APPEARANCE_COMPUTER_LAPTOP 0x0083 /* Laptop */
#define BT_APPEARANCE_COMPUTER_HANDHELD_PCPDA 0x0084 /* Handheld PC/PDA (clamshell) */
#define BT_APPEARANCE_COMPUTER_PALMSIZE_PCPDA 0x0085 /* PalmĀ­size PC/PDA */
#define BT_APPEARANCE_COMPUTER_WEARABLE_COMPUTER 0x0086 /* Wearable computer (watch size) */
#define BT_APPEARANCE_COMPUTER_TABLET 0x0087 /* Tablet */
#define BT_APPEARANCE_COMPUTER_DOCKING_STATION 0x0088 /* Docking Station */
#define BT_APPEARANCE_COMPUTER_ALL_IN_ONE 0x0089 /* All in One */
#define BT_APPEARANCE_COMPUTER_BLADE_SERVER 0x008A /* Blade Server */
#define BT_APPEARANCE_COMPUTER_CONVERTIBLE 0x008B /* Convertible */
#define BT_APPEARANCE_COMPUTER_DETACHABLE 0x008C /* Detachable */
#define BT_APPEARANCE_COMPUTER_IOT_GATEWAY 0x008D /* IoT Gateway */
#define BT_APPEARANCE_COMPUTER_MINI_PC 0x008E /* Mini PC */
#define BT_APPEARANCE_COMPUTER_STICK_PC 0x008F /* Stick PC */
#define BT_APPEARANCE_GENERIC_WATCH 0x00C0 /* Generic Watch */
#define BT_APPEARANCE_SPORTS_WATCH 0x00C1 /* Sports Watch */
#define BT_APPEARANCE_SMARTWATCH 0x00C2 /* Smartwatch */
#define BT_APPEARANCE_GENERIC_CLOCK 0x0100 /* Generic Clock */
#define BT_APPEARANCE_GENERIC_DISPLAY 0x0140 /* Generic Display */
#define BT_APPEARANCE_GENERIC_REMOTE 0x0180 /* Generic Remote Control */
#define BT_APPEARANCE_GENERIC_EYEGLASSES 0x01C0 /* Generic Eye-glasses */
#define BT_APPEARANCE_GENERIC_TAG 0x0200 /* Generic Tag */
#define BT_APPEARANCE_GENERIC_KEYRING 0x0240 /* Generic Keyring */
#define BT_APPEARANCE_GENERIC_MEDIA_PLAYER 0x0280 /* Generic Media Player */
#define BT_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0 /* Generic Barcode Scanner */
#define BT_APPEARANCE_GENERIC_THERMOMETER 0x0300 /* Generic Thermometer */
#define BT_APPEARANCE_THERMOMETER_EAR 0x0301 /* Ear Thermometer */
#define BT_APPEARANCE_GENERIC_HEART_RATE 0x0340 /* Generic Heart Rate Sensor */
#define BT_APPEARANCE_HEART_RATE_BELT 0x0341 /* Heart Rate Belt */
#define BT_APPEARANCE_GENERIC_BLOOD_PRESSURE 0x0380 /* Generic Blood Pressure */
#define BT_APPEARANCE_BLOOD_PRESSURE_ARM 0x0381 /* Arm Blood Pressure */
#define BT_APPEARANCE_BLOOD_PRESSURE_WRIST 0x0382 /* Wrist Blood Pressure */
#define BT_APPEARANCE_GENERIC_HID 0x03C0 /* Generic Human Interface Device */
#define BT_APPEARANCE_HID_KEYBOARD 0x03C1 /* Keyboard */
#define BT_APPEARANCE_HID_MOUSE 0x03C2 /* Mouse */
#define BT_APPEARANCE_HID_JOYSTICK 0x03C3 /* Joystick */
#define BT_APPEARANCE_HID_GAMEPAD 0x03C4 /* Gamepad */
#define BT_APPEARANCE_HID_DIGITIZER_TABLET 0x03C5 /* Digitizer Tablet */
#define BT_APPEARANCE_HID_CARD_READER 0x03C6 /* Card Reader */
#define BT_APPEARANCE_HID_DIGITAL_PEN 0x03C7 /* Digital Pen */
#define BT_APPEARANCE_HID_BARCODE_SCANNER 0x03C8 /* Barcode Scanner */
#define BT_APPEARANCE_HID_TOUCHPAD 0x03C9 /* Touchpad */
#define BT_APPEARANCE_HID_PRESENTATION_REMOTE 0x03CA /* Presentation Remote */
#define BT_APPEARANCE_GENERIC_GLUCOSE 0x0400 /* Generic Glucose Meter */
#define BT_APPEARANCE_GENERIC_WALKING 0x0440 /* Generic Running Walking Sensor */
#define BT_APPEARANCE_WALKING_IN_SHOE 0x0441 /* In-Shoe Running Walking Sensor */
#define BT_APPEARANCE_WALKING_ON_SHOE 0x0442 /* On-Shoe Running Walking Sensor */
#define BT_APPEARANCE_WALKING_ON_HIP 0x0443 /* On-Hip Running Walking Sensor */
#define BT_APPEARANCE_GENERIC_CYCLING 0x0480 /* Generic Cycling */
#define BT_APPEARANCE_CYCLING_COMPUTER 0x0481 /* Cycling Computer */
#define BT_APPEARANCE_CYCLING_SPEED 0x0482 /* Speed Sensor */
#define BT_APPEARANCE_CYCLING_CADENCE 0x0483 /* Cadence Sensor */
#define BT_APPEARANCE_CYCLING_POWER 0x0484 /* Power Sensor */
#define BT_APPEARANCE_CYCLING_SPEED_CADENCE 0x0485 /* Speed and Cadence Sensor */
#define BT_APPEARANCE_GENERIC_CONTROL_DEVICE 0x04C0 /* Generic Control Device */
#define BT_APPEARANCE_CONTROL_SWITCH 0x04C1 /* Switch */
#define BT_APPEARANCE_CONTROL_MULTI_SWITCH 0x04C2 /* Multi-switch */
#define BT_APPEARANCE_CONTROL_BUTTON 0x04C3 /* Button */
#define BT_APPEARANCE_CONTROL_SLIDER 0x04C4 /* Slider */
#define BT_APPEARANCE_CONTROL_ROTARY_SWITCH 0x04C5 /* Rotary Switch */
#define BT_APPEARANCE_CONTROL_TOUCH_PANEL 0x04C6 /* Touch Panel */
#define BT_APPEARANCE_CONTROL_SINGLE_SWITCH 0x04C7 /* Single Switch */
#define BT_APPEARANCE_CONTROL_DOUBLE_SWITCH 0x04C8 /* Double Switch */
#define BT_APPEARANCE_CONTROL_TRIPLE_SWITCH 0x04C9 /* Triple Switch */
#define BT_APPEARANCE_CONTROL_BATTERY_SWITCH 0x04CA /* Battery Switch */
#define BT_APPEARANCE_CONTROL_ENERGY_HARVESTING_SWITCH 0x04CB /* Energy Harvesting Switch */
#define BT_APPEARANCE_CONTROL_PUSH_BUTTON 0x04CC /* Push Button */
#define BT_APPEARANCE_GENERIC_NETWORK_DEVICE 0x0500 /* Generic Network Device */
#define BT_APPEARANCE_NETWORK_ACCESS_POINT 0x0501 /* Access Point */
#define BT_APPEARANCE_NETWORK_MESH_DEVICE 0x0502 /* Mesh Device */
#define BT_APPEARANCE_NETWORK_MESH_PROXY 0x0503 /* Mesh Network Proxy */
#define BT_APPEARANCE_GENERIC_SENSOR 0x0540 /* Generic Sensor */
#define BT_APPEARANCE_SENSOR_MOTION 0x0541 /* Motion Sensor */
#define BT_APPEARANCE_SENSOR_AIR_QUALITY 0x0542 /* Air quality Sensor */
#define BT_APPEARANCE_SENSOR_TEMPERATURE 0x0543 /* Temperature Sensor */
#define BT_APPEARANCE_SENSOR_HUMIDITY 0x0544 /* Humidity Sensor */
#define BT_APPEARANCE_SENSOR_LEAK 0x0545 /* Leak Sensor */
#define BT_APPEARANCE_SENSOR_SMOKE 0x0546 /* Smoke Sensor */
#define BT_APPEARANCE_SENSOR_OCCUPANCY 0x0547 /* Occupancy Sensor */
#define BT_APPEARANCE_SENSOR_CONTACT 0x0548 /* Contact Sensor */
#define BT_APPEARANCE_SENSOR_CARBON_MONOXIDE 0x0549 /* Carbon Monoxide Sensor */
#define BT_APPEARANCE_SENSOR_CARBON_DIOXIDE 0x054A /* Carbon Dioxide Sensor */
#define BT_APPEARANCE_SENSOR_AMBIENT_LIGHT 0x054B /* Ambient Light Sensor */
#define BT_APPEARANCE_SENSOR_ENERGY 0x054C /* Energy Sensor */
#define BT_APPEARANCE_SENSOR_COLOR_LIGHT 0x054D /* Color Light Sensor */
#define BT_APPEARANCE_SENSOR_RAIN 0x054E /* Rain Sensor */
#define BT_APPEARANCE_SENSOR_FIRE 0x054F /* Fire Sensor */
#define BT_APPEARANCE_SENSOR_WIND 0x0550 /* Wind Sensor */
#define BT_APPEARANCE_SENSOR_PROXIMITY 0x0551 /* Proximity Sensor */
#define BT_APPEARANCE_SENSOR_MULTI 0x0552 /* Multi-Sensor */
#define BT_APPEARANCE_SENSOR_FLUSH_MOUNTED 0x0553 /* Flush Mounted Sensor */
#define BT_APPEARANCE_SENSOR_CEILING_MOUNTED 0x0554 /* Ceiling Mounted Sensor */
#define BT_APPEARANCE_SENSOR_WALL_MOUNTED 0x0555 /* Wall Mounted Sensor */
#define BT_APPEARANCE_MULTISENSOR 0x0556 /* Multisensor */
#define BT_APPEARANCE_SENSOR_ENERGY_METER 0x0557 /* Energy Meter */
#define BT_APPEARANCE_SENSOR_FLAME_DETECTOR 0x0558 /* Flame Detector */
#define BT_APPEARANCE_SENSOR_VEHICLE_TIRE_PRESSURE 0x0559 /* Vehicle Tire Pressure Sensor */
#define BT_APPEARANCE_GENERIC_LIGHT_FIXTURES 0x0580 /* Generic Light Fixtures */
#define BT_APPEARANCE_LIGHT_FIXTURES_WALL 0x0581 /* Wall Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_CEILING 0x0582 /* Ceiling Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_FLOOR 0x0583 /* Floor Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_CABINET 0x0584 /* Cabinet Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_DESK 0x0585 /* Desk Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_TROFFER 0x0586 /* Troffer Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_PENDANT 0x0587 /* Pendant Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_IN_GROUND 0x0588 /* In-ground Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_FLOOD 0x0589 /* Flood Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_UNDERWATER 0x058A /* Underwater Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_BOLLARD_WITH 0x058B /* Bollard with Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_PATHWAY 0x058C /* Pathway Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_GARDEN 0x058D /* Garden Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_POLE_TOP 0x058E /* Pole-top Light */
#define BT_APPEARANCE_SPOT_LIGHT 0x058F /* Spotlight */
#define BT_APPEARANCE_LIGHT_FIXTURES_LINEAR 0x0590 /* Linear Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_STREET 0x0591 /* Street Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_SHELVES 0x0592 /* Shelves Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_BAY 0x0593 /* Bay Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_EMERGENCY_EXIT 0x0594 /* Emergency Exit Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_CONTROLLER 0x0595 /* Light Controller */
#define BT_APPEARANCE_LIGHT_FIXTURES_DRIVER 0x0596 /* Light Driver */
#define BT_APPEARANCE_LIGHT_FIXTURES_BULB 0x0597 /* Bulb */
#define BT_APPEARANCE_LIGHT_FIXTURES_LOW_BAY 0x0598 /* Low-bay Light */
#define BT_APPEARANCE_LIGHT_FIXTURES_HIGH_BAY 0x0599 /* High-bay Light */
#define BT_APPEARANCE_GENERIC_FAN 0x05C0 /* Generic Fan */
#define BT_APPEARANCE_FAN_CEILING 0x05C1 /* Ceiling Fan */
#define BT_APPEARANCE_FAN_AXIAL 0x05C2 /* Axial Fan */
#define BT_APPEARANCE_FAN_EXHAUST 0x05C3 /* Exhaust Fan */
#define BT_APPEARANCE_FAN_PEDESTAL 0x05C4 /* Pedestal Fan */
#define BT_APPEARANCE_FAN_DESK 0x05C5 /* Desk Fan */
#define BT_APPEARANCE_FAN_WALL 0x05C6 /* Wall Fan */
#define BT_APPEARANCE_GENERIC_HVAC 0x0600 /* Generic HVAC */
#define BT_APPEARANCE_HVAC_THERMOSTAT 0x0601 /* Thermostat */
#define BT_APPEARANCE_HVAC_HUMIDIFIER 0x0602 /* Humidifier */
#define BT_APPEARANCE_HVAC_DEHUMIDIFIER 0x0603 /* De-humidifier */
#define BT_APPEARANCE_HVAC_HEATER 0x0604 /* Heater */
#define BT_APPEARANCE_HVAC_RADIATOR 0x0605 /* Radiator */
#define BT_APPEARANCE_HVAC_BOILER 0x0606 /* Boiler */
#define BT_APPEARANCE_HVAC_HEAT_PUMP 0x0607 /* Heat Pump */
#define BT_APPEARANCE_HVAC_INFRARED_HEATER 0x0608 /* Infrared Heater */
#define BT_APPEARANCE_HVAC_RADIANT_PANEL_HEATER 0x0609 /* Radiant Panel Heater */
#define BT_APPEARANCE_HVAC_FAN_HEATER 0x060A /* Fan Heater */
#define BT_APPEARANCE_HVAC_AIR_CURTAIN 0x060B /* Air Curtain */
#define BT_APPEARANCE_GENERIC_AIR_CONDITIONING 0x0640 /* Generic Air Conditioning */
#define BT_APPEARANCE_GENERIC_HUMIDIFIER 0x0680 /* Generic Humidifier */
#define BT_APPEARANCE_GENERIC_HEATING 0x06C0 /* Generic Heating */
#define BT_APPEARANCE_HEATING_RADIATOR 0x06C1 /* Radiator */
#define BT_APPEARANCE_HEATING_BOILER 0x06C2 /* Boiler */
#define BT_APPEARANCE_HEATING_HEAT_PUMP 0x06C3 /* Heat Pump */
#define BT_APPEARANCE_HEATING_INFRARED_HEATER 0x06C4 /* Infrared Heater */
#define BT_APPEARANCE_HEATING_RADIANT_PANEL_HEATER 0x06C5 /* Radiant Panel Heater */
#define BT_APPEARANCE_HEATING_FAN_HEATER 0x06C6 /* Fan Heater */
#define BT_APPEARANCE_HEATING_AIR_CURTAIN 0x06C7 /* Air Curtain */
#define BT_APPEARANCE_GENERIC_ACCESS_CONTROL 0x0700 /* Generic Access Control */
#define BT_APPEARANCE_CONTROL_ACCESS_DOOR 0x0701 /* Access Door */
#define BT_APPEARANCE_CONTROL_GARAGE_DOOR 0x0702 /* Garage Door */
#define BT_APPEARANCE_CONTROL_EMERGENCY_EXIT_DOOR 0x0703 /* Emergency Exit Door */
#define BT_APPEARANCE_CONTROL_ACCESS_LOCK 0x0704 /* Access Lock */
#define BT_APPEARANCE_CONTROL_ELEVATOR 0x0705 /* Elevator */
#define BT_APPEARANCE_CONTROL_WINDOW 0x0706 /* Window */
#define BT_APPEARANCE_CONTROL_ENTRANCE_GATE 0x0707 /* Entrance Gate */
#define BT_APPEARANCE_CONTROL_DOOR_LOCK 0x0708 /* Door Lock */
#define BT_APPEARANCE_CONTROL_LOCKER 0x0709 /* Locker */
#define BT_APPEARANCE_GENERIC_MOTORIZED_DEVICE 0x0740 /* Generic Motorized Device */
#define BT_APPEARANCE_MOTORIZED_GATE 0x0741 /* Motorized Gate */
#define BT_APPEARANCE_MOTORIZED_AWNING 0x0742 /* Awning */
#define BT_APPEARANCE_MOTORIZED_BLINDS_OR_SHADES 0x0743 /* Blinds or Shades */
#define BT_APPEARANCE_MOTORIZED_CURTAINS 0x0744 /* Curtains */
#define BT_APPEARANCE_MOTORIZED_SCREEN 0x0745 /* Screen */
#define BT_APPEARANCE_GENERIC_POWER_DEVICE 0x0780 /* Generic Power Device */
#define BT_APPEARANCE_POWER_OUTLET 0x0781 /* Power Outlet */
#define BT_APPEARANCE_POWER_STRIP 0x0782 /* Power Strip */
#define BT_APPEARANCE_POWER_PLUG 0x0783 /* Plug */
#define BT_APPEARANCE_POWER_SUPPLY 0x0784 /* Power Supply */
#define BT_APPEARANCE_POWER_LED_DRIVER 0x0785 /* LED Driver */
#define BT_APPEARANCE_POWER_FLUORESCENT_LAMP_GEAR 0x0786 /* Fluorescent Lamp Gear */
#define BT_APPEARANCE_POWER_HID_LAMP_GEAR 0x0787 /* HID Lamp Gear */
#define BT_APPEARANCE_POWER_CHARGE_CASE 0x0788 /* Charge Case */
#define BT_APPEARANCE_POWER_POWER_BANK 0x0789 /* Power Bank */
#define BT_APPEARANCE_GENERIC_LIGHT_SOURCE 0x07C0 /* Generic Light Source */
#define BT_APPEARANCE_LIGHT_SOURCE_INCANDESCENT_BULB 0x07C1 /* Incandescent Light Bulb */
#define BT_APPEARANCE_LIGHT_SOURCE_LED_LAMP 0x07C2 /* LED Lamp */
#define BT_APPEARANCE_LIGHT_SOURCE_HID_LAMP 0x07C3 /* HID Lamp */
#define BT_APPEARANCE_LIGHT_SOURCE_FLUORESCENT_LAMP 0x07C4 /* Fluorescent Lamp */
#define BT_APPEARANCE_LIGHT_SOURCE_LED_ARRAY 0x07C5 /* LED Array */
#define BT_APPEARANCE_LIGHT_SOURCE_MULTICOLOR_LED_ARRAY 0x07C6 /* Multi-Color LED Array */
#define BT_APPEARANCE_LIGHT_SOURCE_LOW_VOLTAGE_HALOGEN 0x07C7 /* Low voltage halogen */
#define BT_APPEARANCE_LIGHT_SOURCE_OLED 0x07C8 /* Organic light emitting diode */
#define BT_APPEARANCE_GENERIC_WINDOW_COVERING 0x0800 /* Generic Window Covering */
#define BT_APPEARANCE_WINDOW_SHADES 0x0801 /* Window Shades */
#define BT_APPEARANCE_WINDOW_BLINDS 0x0802 /* Window Blinds */
#define BT_APPEARANCE_WINDOW_AWNING 0x0803 /* Window Awning */
#define BT_APPEARANCE_WINDOW_CURTAIN 0x0804 /* Window Curtain */
#define BT_APPEARANCE_WINDOW_EXTERIOR_SHUTTER 0x0805 /* Exterior Shutter */
#define BT_APPEARANCE_WINDOW_EXTERIOR_SCREEN 0x0806 /* Exterior Screen */
#define BT_APPEARANCE_GENERIC_AUDIO_SINK 0x0840 /* Generic Audio Sink */
#define BT_APPEARANCE_AUDIO_SINK_STANDALONE_SPEAKER 0x0841 /* Standalone Speaker */
#define BT_APPEARANCE_AUDIO_SINK_SOUNDBAR 0x0842 /* Soundbar */
#define BT_APPEARANCE_AUDIO_SINK_BOOKSHELF_SPEAKER 0x0843 /* Bookshelf Speaker */
#define BT_APPEARANCE_AUDIO_SINK_STANDMOUNTED_SPEAKER 0x0844 /* Standmounted Speaker */
#define BT_APPEARANCE_AUDIO_SINK_SPEAKERPHONE 0x0845 /* Speakerphone */
#define BT_APPEARANCE_GENERIC_AUDIO_SOURCE 0x0880 /* Generic Audio Source */
#define BT_APPEARANCE_AUDIO_SOURCE_MICROPHONE 0x0881 /* Microphone */
#define BT_APPEARANCE_AUDIO_SOURCE_ALARM 0x0882 /* Alarm */
#define BT_APPEARANCE_AUDIO_SOURCE_BELL 0x0883 /* Bell */
#define BT_APPEARANCE_AUDIO_SOURCE_HORN 0x0884 /* Horn */
#define BT_APPEARANCE_AUDIO_SOURCE_BROADCASTING_DEVICE 0x0885 /* Broadcasting Device */
#define BT_APPEARANCE_AUDIO_SOURCE_SERVICE_DESK 0x0886 /* Service Desk */
#define BT_APPEARANCE_AUDIO_SOURCE_KIOSK 0x0887 /* Kiosk */
#define BT_APPEARANCE_AUDIO_SOURCE_BROADCASTING_ROOM 0x0888 /* Broadcasting Room */
#define BT_APPEARANCE_AUDIO_SOURCE_AUDITORIUM 0x0889 /* Auditorium */
#define BT_APPEARANCE_GENERIC_MOTORIZED_VEHICLE 0x08C0 /* Generic Motorized Vehicle */
#define BT_APPEARANCE_VEHICLE_CAR 0x08C1 /* Car */
#define BT_APPEARANCE_VEHICLE_LARGE_GOODS 0x08C2 /* Large Goods Vehicle */
#define BT_APPEARANCE_VEHICLE_TWO_WHEELED 0x08C3 /* 2-Wheeled Vehicle */
#define BT_APPEARANCE_VEHICLE_MOTORBIKE 0x08C4 /* Motorbike */
#define BT_APPEARANCE_VEHICLE_SCOOTER 0x08C5 /* Scooter */
#define BT_APPEARANCE_VEHICLE_MOPED 0x08C6 /* Moped */
#define BT_APPEARANCE_VEHICLE_THREE_WHEELED 0x08C7 /* 3-Wheeled Vehicle */
#define BT_APPEARANCE_VEHICLE_LIGHT 0x08C8 /* Light Vehicle */
#define BT_APPEARANCE_VEHICLE_QUAD_BIKE 0x08C9 /* Quad Bike */
#define BT_APPEARANCE_VEHICLE_MINIBUS 0x08CA /* Minibus */
#define BT_APPEARANCE_VEHICLE_BUS 0x08CB /* Bus */
#define BT_APPEARANCE_VEHICLE_TROLLEY 0x08CC /* Trolley */
#define BT_APPEARANCE_VEHICLE_AGRICULTURAL 0x08CD /* Agricultural Vehicle */
#define BT_APPEARANCE_VEHICLE_CAMPER_OR_CARAVAN 0x08CE /* Camper/Caravan */
#define BT_APPEARANCE_VEHICLE_RECREATIONAL 0x08CF /* Recreational Vehicle/Motor Home */
#define BT_APPEARANCE_GENERIC_DOMESTIC_APPLIANCE 0x0900 /* Generic Domestic Appliance */
#define BT_APPEARANCE_APPLIANCE_REFRIGERATOR 0x0901 /* Refrigerator */
#define BT_APPEARANCE_APPLIANCE_FREEZER 0x0902 /* Freezer */
#define BT_APPEARANCE_APPLIANCE_OVEN 0x0903 /* Oven */
#define BT_APPEARANCE_APPLIANCE_MICROWAVE 0x0904 /* Microwave */
#define BT_APPEARANCE_APPLIANCE_TOASTER 0x0905 /* Toaster */
#define BT_APPEARANCE_APPLIANCE_WASHING_MACHINE 0x0906 /* Washing Machine */
#define BT_APPEARANCE_APPLIANCE_DRYER 0x0907 /* Dryer */
#define BT_APPEARANCE_APPLIANCE_COFFEE_MAKER 0x0908 /* Coffee maker */
#define BT_APPEARANCE_APPLIANCE_CLOTHES_IRON 0x0909 /* Clothes iron */
#define BT_APPEARANCE_APPLIANCE_CURLING_IRON 0x090A /* Curling iron */
#define BT_APPEARANCE_APPLIANCE_HAIR_DRYER 0x090B /* Hair dryer */
#define BT_APPEARANCE_APPLIANCE_VACUUM_CLEANER 0x090C /* Vacuum cleaner */
#define BT_APPEARANCE_APPLIANCE_ROBOTIC_VACUUM_CLEANER 0x090D /* Robotic vacuum cleaner */
#define BT_APPEARANCE_APPLIANCE_RICE_COOKER 0x090E /* Rice cooker */
#define BT_APPEARANCE_APPLIANCE_CLOTHES_STEAMER 0x090F /* Clothes steamer */
#define BT_APPEARANCE_GENERIC_WEARABLE_AUDIO_DEVICE 0x0940 /* Generic Wearable Audio Device */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_EARBUD 0x0941 /* Earbud */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_HEADSET 0x0942 /* Headset */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_HEADPHONES 0x0943 /* Headphones */
#define BT_APPEARANCE_WEARABLE_AUDIO_DEVICE_NECK_BAND 0x0944 /* Neck Band */
#define BT_APPEARANCE_GENERIC_AIRCRAFT 0x0980 /* Generic Aircraft */
#define BT_APPEARANCE_AIRCRAFT_LIGHT 0x0981 /* Light Aircraft */
#define BT_APPEARANCE_AIRCRAFT_MICROLIGHT 0x0982 /* Microlight */
#define BT_APPEARANCE_AIRCRAFT_PARAGLIDER 0x0983 /* Paraglider */
#define BT_APPEARANCE_AIRCRAFT_LARGE_PASSENGER 0x0984 /* Large Passenger Aircraft */
#define BT_APPEARANCE_GENERIC_AV_EQUIPMENT 0x09C0 /* Generic AV Equipment */
#define BT_APPEARANCE_AV_EQUIPMENT_AMPLIFIER 0x09C1 /* Amplifier */
#define BT_APPEARANCE_AV_EQUIPMENT_RECEIVER 0x09C2 /* Receiver */
#define BT_APPEARANCE_AV_EQUIPMENT_RADIO 0x09C3 /* Radio */
#define BT_APPEARANCE_AV_EQUIPMENT_TUNER 0x09C4 /* Tuner */
#define BT_APPEARANCE_AV_EQUIPMENT_TURNTABLE 0x09C5 /* Turntable */
#define BT_APPEARANCE_AV_EQUIPMENT_CD_PLAYER 0x09C6 /* CD Player */
#define BT_APPEARANCE_AV_EQUIPMENT_DVD_PLAYER 0x09C7 /* DVD Player */
#define BT_APPEARANCE_AV_EQUIPMENT_BLURAY_PLAYER 0x09C8 /* Bluray Player */
#define BT_APPEARANCE_AV_EQUIPMENT_OPTICAL_DISC_PLAYER 0x09C9 /* Optical Disc Player */
#define BT_APPEARANCE_AV_EQUIPMENT_SET_TOP_BOX 0x09CA /* Set-Top Box */
#define BT_APPEARANCE_GENERIC_DISPLAY_EQUIPMENT 0x0A00 /* Generic Display Equipment */
#define BT_APPEARANCE_DISPLAY_EQUIPMENT_TELEVISION 0x0A01 /* Television */
#define BT_APPEARANCE_DISPLAY_EQUIPMENT_MONITOR 0x0A02 /* Monitor */
#define BT_APPEARANCE_DISPLAY_EQUIPMENT_PROJECTOR 0x0A03 /* Projector */
#define BT_APPEARANCE_GENERIC_HEARING_AID 0x0A40 /* Generic Hearing aid */
#define BT_APPEARANCE_HEARING_AID_IN_EAR 0x0A41 /* In-ear hearing aid */
#define BT_APPEARANCE_HEARING_AID_BEHIND_EAR 0x0A42 /* Behind-ear hearing aid */
#define BT_APPEARANCE_HEARING_AID_COCHLEAR_IMPLANT 0x0A43 /* Cochlear Implant */
#define BT_APPEARANCE_GENERIC_GAMING 0x0A80 /* Generic Gaming */
#define BT_APPEARANCE_HOME_VIDEO_GAME_CONSOLE 0x0A81 /* Home Video Game Console */
#define BT_APPEARANCE_PORTABLE_HANDHELD_CONSOLE 0x0A82 /* Portable handheld console */
#define BT_APPEARANCE_GENERIC_SIGNAGE 0x0AC0 /* Generic Signage */
#define BT_APPEARANCE_SIGNAGE_DIGITAL 0x0AC1 /* Digital Signage */
#define BT_APPEARANCE_SIGNAGE_ELECTRONIC_LABEL 0x0AC2 /* Electronic Label */
#define BT_APPEARANCE_GENERIC_PULSE_OXIMETER 0x0C40 /* Generic Pulse Oximeter */
#define BT_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41 /* Fingertip Pulse Oximeter */
#define BT_APPEARANCE_PULSE_OXIMETER_WRIST 0x0C42 /* Wrist Worn Pulse Oximeter */
#define BT_APPEARANCE_GENERIC_WEIGHT_SCALE 0x0C80 /* Generic Weight Scale */
#define BT_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE 0x0CC0 /* Generic Personal Mobility Device */
#define BT_APPEARANCE_MOBILITY_POWERED_WHEELCHAIR 0x0CC1 /* Powered Wheelchair */
#define BT_APPEARANCE_MOBILITY_SCOOTER 0x0CC2 /* Mobility Scooter */
#define BT_APPEARANCE_CONTINUOUS_GLUCOSE_MONITOR 0x0D00 /* Continuous Glucose Monitor */
#define BT_APPEARANCE_GENERIC_INSULIN_PUMP 0x0D40 /* Generic Insulin Pump */
#define BT_APPEARANCE_INSULIN_PUMP_DURABLE 0x0D41 /* Insulin Pump, durable pump */
#define BT_APPEARANCE_INSULIN_PUMP_PATCH 0x0D44 /* Insulin Pump, patch pump */
#define BT_APPEARANCE_INSULIN_PEN 0x0D48 /* Insulin Pen */
#define BT_APPEARANCE_GENERIC_MEDICATION_DELIVERY 0x0D80 /* Generic Medication Delivery */
#define BT_APPEARANCE_GENERIC_SPIROMETER 0x0DC0 /* Generic Spirometer */
#define BT_APPEARANCE_SPIROMETER_HANDHELD 0x0DC1 /* Handheld Spirometer */
#define BT_APPEARANCE_GENERIC_OUTDOOR_SPORTS 0x1440 /* Generic Outdoor Sports Activity */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441 /* Location Display */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV 0x1442 /* Location and Navigation Display */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD 0x1443 /* Location Pod */
#define BT_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444 /* Location and Navigation Pod */
/* Defined GAP timers */
#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
#define BT_GAP_DATA_LEN_DEFAULT 0x001b /* 27 bytes */
#define BT_GAP_DATA_LEN_MAX 0x00fb /* 251 bytes */
#define BT_GAP_DATA_TIME_DEFAULT 0x0148 /* 328 us */
#define BT_GAP_DATA_TIME_MAX 0x4290 /* 17040 us */
#define BT_GAP_SID_MAX 0x0F
#define BT_GAP_PER_ADV_MAX_SKIP 0x01F3
#define BT_GAP_PER_ADV_MIN_TIMEOUT 0x000A
#define BT_GAP_PER_ADV_MAX_TIMEOUT 0x4000
/** Minimum Periodic Advertising Interval (N * 1.25 ms) */
#define BT_GAP_PER_ADV_MIN_INTERVAL 0x0006
/** Maximum Periodic Advertising Interval (N * 1.25 ms) */
#define BT_GAP_PER_ADV_MAX_INTERVAL 0xFFFF
/**
* @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,
BT_GAP_SCA_251_500 = 0,
BT_GAP_SCA_151_250 = 1,
BT_GAP_SCA_101_150 = 2,
BT_GAP_SCA_76_100 = 3,
BT_GAP_SCA_51_75 = 4,
BT_GAP_SCA_31_50 = 5,
BT_GAP_SCA_21_30 = 6,
BT_GAP_SCA_0_20 = 7,
};
/**
* @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_ */