1 /****************************************************************************** 2 * 3 * Copyright (C) 2025 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 #ifndef BLE_APPEARANCE_H 20 #define BLE_APPEARANCE_H 21 22 #include <cstdint> 23 24 #include "bt_dev_class.h" 25 26 /** 27 * BLE appearance values as per BT spec assigned numbers. 28 * Definitions and mapping from BLE appearance to COD. 29 * The set represents: 30 * - BLE Appearance string 31 * - BLE Appearance value 32 * - Class of device Service 33 * - COD Major Class 34 * - COD Minor Class 35 * 36 * Note: To add mapping for a new BLE appearance value for a category, add a 37 * new macro to the appropriate APPEARANCE_TO_COD_XXXX macro, and then 38 * add this APPEARANCE_TO_COD_XXXX macro to the APPEARANCE_TO_COD macro 39 * (if not already added). 40 */ 41 42 /* Category Unknown [15:6] 0x000 */ 43 #define APPEARANCE_TO_COD_UNKNOWN(X) \ 44 X(BLE_APPEARANCE_UNKNOWN, 0x0000, COD_SERVICE_NA, COD_MAJOR_UNCLASSIFIED, COD_MINOR_UNCATEGORIZED) 45 46 /* Category Phone [15:6] 0x001 */ 47 #define APPEARANCE_TO_COD_PHONE(X) \ 48 X(BLE_APPEARANCE_GENERIC_PHONE, 0x0040, COD_SERVICE_NA, COD_MAJOR_PHONE, \ 49 COD_MAJOR_PHONE_MINOR_UNCATEGORIZED) 50 51 /* Category Computer [15:6] 0x002 */ 52 #define BLE_APPEARANCE_DESKTOP_WORKSTATION 0x81 53 #define BLE_APPEARANCE_SERVER_CLASS_COMPUTER 0x82 54 #define BLE_APPEARANCE_LAPTOP 0x83 55 #define BLE_APPEARANCE_HANDHELD_PC_PDA 0x84 56 #define BLE_APPEARANCE_PALM_SIZE_PC_PDA 0x85 57 #define BLE_APPEARANCE_WEARABLE_COMPUTER_WATCH_SIZE 0x86 58 #define BLE_APPEARANCE_TABLET 0x87 59 #define BLE_APPEARANCE_DOCKING_STATION 0x88 60 #define BLE_APPEARANCE_ALL_IN_ONE 0x89 61 #define BLE_APPEARANCE_BLADE_SERVER 0x8A 62 #define BLE_APPEARANCE_CONVERTIBLE 0x8B 63 #define BLE_APPEARANCE_DETACHABLE 0x8C 64 #define BLE_APPEARANCE_IOT_GATEWAY 0x8D 65 #define BLE_APPEARANCE_MINI_PC 0x8E 66 #define BLE_APPEARANCE_STICK_PC 0x8F 67 #define APPEARANCE_TO_COD_COMPUTER(X) \ 68 X(BLE_APPEARANCE_GENERIC_COMPUTER, 0x0080, COD_SERVICE_NA, COD_MAJOR_COMPUTER, \ 69 COD_MAJOR_COMPUTER_MINOR_UNCATEGORIZED) 70 71 /* Category Watch [15:6] 0x003 */ 72 #define BLE_APPEARANCE_SMART_WATCH 0x00C2 73 #define APPEARANCE_TO_COD_WATCH(X) \ 74 X(BLE_APPEARANCE_GENERIC_WATCH, 0x00C0, COD_SERVICE_NA, COD_MAJOR_WEARABLE, \ 75 COD_MAJOR_WEARABLE_MINOR_WRIST_WATCH) \ 76 X(BLE_APPEARANCE_SPORTS_WATCH, 0x00C1, COD_SERVICE_NA, COD_MAJOR_WEARABLE, \ 77 COD_MAJOR_WEARABLE_MINOR_WRIST_WATCH) 78 79 /* Category Clock [15:6] 0x004 */ 80 #define BLE_APPEARANCE_GENERIC_CLOCK 0x0100 81 82 /* Category Display [15:6] 0x005 */ 83 #define APPEARANCE_TO_COD_DISPLAY(X) \ 84 X(BLE_APPEARANCE_GENERIC_DISPLAY, 0x0140, COD_SERVICE_NA, COD_MAJOR_IMAGING, \ 85 COD_MAJOR_IMAGING_MINOR_DISPLAY) 86 87 /* Category Remote Control [15:6] 0x006 */ 88 #define APPEARANCE_TO_COD_REMOTE_CONTROL(X) \ 89 X(BLE_APPEARANCE_GENERIC_REMOTE, 0x0180, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 90 COD_MAJOR_PERIPH_MINOR_REMOTE_CONTROL) 91 92 /* Category Eye-glasses [15:6] 0x007 */ 93 #define APPEARANCE_TO_COD_EYEGLASSES(X) \ 94 X(BLE_APPEARANCE_GENERIC_EYEGLASSES, 0x01C0, COD_SERVICE_NA, COD_MAJOR_WEARABLE, \ 95 COD_MAJOR_WEARABLE_MINOR_GLASSES) 96 97 /* Category Tag [15:6] 0x008 */ 98 #define BLE_APPEARANCE_GENERIC_TAG 0x0200 99 100 /* Category Keyring [15:6] 0x009 */ 101 #define BLE_APPEARANCE_GENERIC_KEYRING 0x0240 102 103 /* Category Media Player [15:6] 0x00A */ 104 #define APPEARANCE_TO_COD_MEDIA_PLAYER(X) \ 105 X(BLE_APPEARANCE_GENERIC_MEDIA_PLAYER, 0x0280, COD_SERVICE_NA, COD_MAJOR_AUDIO, \ 106 COD_MINOR_UNCATEGORIZED) 107 108 /* Category Barcode Scanner [15:6] 0x00B */ 109 #define APPEARANCE_TO_COD_BARCODE_SCANNER(X) \ 110 X(BLE_APPEARANCE_GENERIC_BARCODE_SCANNER, 0x02C0, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 111 COD_MAJOR_PERIPH_MINOR_UNCATEGORIZED) 112 113 /* Category Thermometer [15:6] 0x00C */ 114 #define APPEARANCE_TO_COD_THERMOMETER(X) \ 115 X(BLE_APPEARANCE_GENERIC_THERMOMETER, 0x0300, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 116 COD_MAJOR_HEALTH_MINOR_THERMOMETER) \ 117 X(BLE_APPEARANCE_THERMOMETER_EAR, 0x0301, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 118 COD_MAJOR_HEALTH_MINOR_THERMOMETER) 119 120 /* Category Heart Rate Sensor [15:6] 0x00D */ 121 #define APPEARANCE_TO_COD_HEART_RATE_SENSOR(X) \ 122 X(BLE_APPEARANCE_GENERIC_HEART_RATE, 0x0340, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 123 COD_MAJOR_HEALTH_MINOR_HEART_PULSE_MONITOR) \ 124 X(BLE_APPEARANCE_HEART_RATE_BELT, 0x0341, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 125 COD_MAJOR_HEALTH_MINOR_HEART_PULSE_MONITOR) 126 127 /* Category Blood Pressure [15:6] 0x00E */ 128 #define APPEARANCE_TO_COD_BLOOD_PRESSURE(X) \ 129 X(BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE, 0x0380, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 130 COD_MAJOR_HEALTH_MINOR_BLOOD_MONITOR) \ 131 X(BLE_APPEARANCE_BLOOD_PRESSURE_ARM, 0x0381, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 132 COD_MAJOR_HEALTH_MINOR_BLOOD_MONITOR) \ 133 X(BLE_APPEARANCE_BLOOD_PRESSURE_WRIST, 0x0382, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 134 COD_MAJOR_HEALTH_MINOR_BLOOD_MONITOR) 135 136 /* Category HID [15:6] 0x00F */ 137 #define BLE_APPEARANCE_HID_TOUCHPAD 0x03C9 138 #define BLE_APPEARANCE_HID_PRESENTATION_REMOTE 0x03CA 139 #define APPEARANCE_TO_COD_HID(X) \ 140 X(BLE_APPEARANCE_GENERIC_HID, 0x03C0, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 141 COD_MAJOR_PERIPH_MINOR_UNCATEGORIZED) \ 142 X(BLE_APPEARANCE_HID_KEYBOARD, 0x03C1, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 143 COD_MAJOR_PERIPH_MINOR_KEYBOARD) \ 144 X(BLE_APPEARANCE_HID_MOUSE, 0x03C2, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 145 COD_MAJOR_PERIPH_MINOR_POINTING) \ 146 X(BLE_APPEARANCE_HID_JOYSTICK, 0x03C3, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 147 COD_MAJOR_PERIPH_MINOR_JOYSTICK) \ 148 X(BLE_APPEARANCE_HID_GAMEPAD, 0x03C4, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 149 COD_MAJOR_PERIPH_MINOR_GAMEPAD) \ 150 X(BLE_APPEARANCE_HID_DIGITIZER_TABLET, 0x03C5, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 151 COD_MAJOR_PERIPH_MINOR_DIGITIZING_TABLET) \ 152 X(BLE_APPEARANCE_HID_CARD_READER, 0x03C6, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 153 COD_MAJOR_PERIPH_MINOR_CARD_READER) \ 154 X(BLE_APPEARANCE_HID_DIGITAL_PEN, 0x03C7, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 155 COD_MAJOR_PERIPH_MINOR_DIGITAL_PEN) \ 156 X(BLE_APPEARANCE_HID_BARCODE_SCANNER, 0x03C8, COD_SERVICE_NA, COD_MAJOR_PERIPHERAL, \ 157 COD_MAJOR_PERIPH_MINOR_UNCATEGORIZED) 158 159 /* Category Glucose Meter [15:6] 0x010 */ 160 #define APPEARANCE_TO_COD_GLUCOSE_METER(X) \ 161 X(BLE_APPEARANCE_GENERIC_GLUCOSE, 0x0400, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 162 COD_MAJOR_HEALTH_MINOR_GLUCOSE_METER) 163 164 /* Category Running Walking Sensor [15:6] 0x011 */ 165 #define APPEARANCE_TO_COD_RUNNING_WALKING_SENSOR(X) \ 166 X(BLE_APPEARANCE_GENERIC_WALKING, 0x0440, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 167 COD_MAJOR_HEALTH_MINOR_STEP_COUNTER) \ 168 X(BLE_APPEARANCE_WALKING_IN_SHOE, 0x0441, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 169 COD_MAJOR_HEALTH_MINOR_STEP_COUNTER) \ 170 X(BLE_APPEARANCE_WALKING_ON_SHOE, 0x0442, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 171 COD_MAJOR_HEALTH_MINOR_STEP_COUNTER) \ 172 X(BLE_APPEARANCE_WALKING_ON_HIP, 0x0443, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 173 COD_MAJOR_HEALTH_MINOR_STEP_COUNTER) 174 175 /* Category Cycling [15:6] 0x012 */ 176 #define BLE_APPEARANCE_GENERIC_CYCLING 0x0480 177 #define BLE_APPEARANCE_CYCLING_COMPUTER 0x0481 178 #define BLE_APPEARANCE_CYCLING_SPEED 0x0482 179 #define BLE_APPEARANCE_CYCLING_CADENCE 0x0483 180 #define BLE_APPEARANCE_CYCLING_POWER 0x0484 181 #define BLE_APPEARANCE_CYCLING_SPEED_CADENCE 0x0485 182 183 /* Category Control Device [15:6] 0x013 */ 184 #define BLE_APPEARANCE_GENERIC_CONTROL_DEVICE 0x04C0 185 #define BLE_APPEARANCE_SWITCH 0x04C1 186 #define BLE_APPEARANCE_MULTI_SWITCH 0x04C2 187 #define BLE_APPEARANCE_SWITCH_BUTTON 0x04C3 188 #define BLE_APPEARANCE_SWITCH_SLIDER 0x04C4 189 #define BLE_APPEARANCE_ROTARY_SWITCH 0x04C5 190 #define BLE_APPEARANCE_TOUCH_PANEL 0x04C6 191 #define BLE_APPEARANCE_SINGLE_SWITCH 0x04C7 192 #define BLE_APPEARANCE_DOUBLE_SWITCH 0x04C8 193 #define BLE_APPEARANCE_TRIPLE_SWITCH 0x04C9 194 #define BLE_APPEARANCE_BATTERY_SWITCH 0x04CA 195 #define BLE_APPEARANCE_ENERGY_HARVESTING_SWITCH 0x04CB 196 #define BLE_APPEARANCE_SWITCH_PUSH_BUTTON 0x04CC 197 #define BLE_APPEARANCE_SWITCH_DIAL 0x04CD 198 199 /* Category Network Device [15:6] 0x014 */ 200 #define BLE_APPEARANCE_GENERIC_NETWORK_DEVICE 0x0500 201 #define BLE_APPEARANCE_NETWORK_DEVICE_ACCESS_POINT 0x0501 202 #define BLE_APPEARANCE_NETWORK_DEVICE_MESH_DEVICE 0x0502 203 #define BLE_APPEARANCE_NETWORK_DEVICE_MESH_NETWORK_PROXY 0x0503 204 205 /* Category Sensor [15:6] 0x015 */ 206 #define BLE_APPEARANCE_GENERIC_SENSOR 0x0540 207 #define BLE_APPEARANCE_MOTION_SENSOR 0x0541 208 #define BLE_APPEARANCE_AIR_QUALITY_SENSOR 0x0542 209 #define BLE_APPEARANCE_TEMPERATURE_SENSOR 0x0543 210 #define BLE_APPEARANCE_HUMIDITY_SENSOR 0x0544 211 #define BLE_APPEARANCE_LEAK_SENSOR 0x05 212 #define BLE_APPEARANCE_SMOKE_SENSOR 0x0546 213 #define BLE_APPEARANCE_OCCUPANCY_SENSOR 0x0547 214 #define BLE_APPEARANCE_CONTACT_SENSOR 0x0548 215 #define BLE_APPEARANCE_CARBON_MONOXIDE_SENSOR 0x0549 216 #define BLE_APPEARANCE_CARBON_DIOXIDE_SENSOR 0x054A 217 #define BLE_APPEARANCE_AMBIENT_LIGHT_SENSOR 0x054B 218 #define BLE_APPEARANCE_ENERGY_SENSOR 0x054C 219 #define BLE_APPEARANCE_COLOR_LIGHT_SENSOR 0x054D 220 #define BLE_APPEARANCE_RAIN_SENSOR 0x054E 221 #define BLE_APPEARANCE_FIRE_SENSOR 0x054F 222 #define BLE_APPEARANCE_WIND_SENSOR 0x0550 223 #define BLE_APPEARANCE_PROXIMITY_SENSOR 0x0551 224 #define BLE_APPEARANCE_MULTI_SENSOR 0x0552 225 #define BLE_APPEARANCE_FLUSH_MOUNTED_SENSOR 0x0553 226 #define BLE_APPEARANCE_CEILING_MOUNTED_SENSOR 0x0554 227 #define BLE_APPEARANCE_WALL_MOUNTED_SENSOR 0x0555 228 #define BLE_APPEARANCE_MULTISENSOR 0x0556 229 #define BLE_APPEARANCE_SENSOR_ENERGY_METER 0x0557 230 #define BLE_APPEARANCE_SENSOR_FLAME_DETECTOR 0x0558 231 #define BLE_APPEARANCE_VEHICLE_TIRE_PRESSURE_SENSOR 0x0559 232 233 /* Category Light Fixtures [15:6] 0x016 */ 234 #define BLE_APPEARANCE_GENERIC_LIGHT_FIXTURE 0x0580 235 #define BLE_APPEARANCE_WALL_LIGHT 0x0581 236 #define BLE_APPEARANCE_CEILING_LIGHT 0x0582 237 #define BLE_APPEARANCE_FLOOR_LIGHT 0x0583 238 #define BLE_APPEARANCE_CABINET_LIGHT 0x0584 239 #define BLE_APPEARANCE_DESK_LIGHT 0x0585 240 #define BLE_APPEARANCE_TROFFER_LIGHT 0x0586 241 #define BLE_APPEARANCE_PENDANT_LIGHT 0x0587 242 #define BLE_APPEARANCE_IN_GROUND_LIGHT 0x0588 243 #define BLE_APPEARANCE_FLOOD_LIGHT 0x0589 244 #define BLE_APPEARANCE_UNDERWATER_LIGHT 0x058A 245 #define BLE_APPEARANCE_BOLLARD_WITH_LIGHT 0x058B 246 #define BLE_APPEARANCE_PATHWAY_LIGHT 0x058C 247 #define BLE_APPEARANCE_GARDEN_LIGHT 0x058D 248 #define BLE_APPEARANCE_POLE_TOP_LIGHT 0x058E 249 #define BLE_APPEARANCE_SPOTLIGHT 0x058F 250 #define BLE_APPEARANCE_LINEAR_LIGHT 0x0590 251 #define BLE_APPEARANCE_STREET_LIGHT 0x0591 252 #define BLE_APPEARANCE_SHELVES_LIGHT 0x0592 253 #define BLE_APPEARANCE_BAY_LIGHT 0x0593 254 #define BLE_APPEARANCE_EMERGENCY_EXIT_LIGHT 0x0594 255 #define BLE_APPEARANCE_LIGHT_CONTROLLER 0x0595 256 #define BLE_APPEARANCE_LIGHT_DRIVER 0x0596 257 #define BLE_APPEARANCE_BULB 0x0597 258 #define BLE_APPEARANCE_LOW_BAY_LIGHT 0x0598 259 #define BLE_APPEARANCE_HIGH_BAY_LIGHT 0x0599 260 261 /* Category Fan [15:6] 0x017 */ 262 #define BLE_APPEARANCE_GENERIC_FAN 0x05C0 263 #define BLE_APPEARANCE_CEILING_FAN 0x05C1 264 #define BLE_APPEARANCE_AXIAL_FAN 0x05C2 265 #define BLE_APPEARANCE_EXHAUST_FAN 0x05C3 266 #define BLE_APPEARANCE_PEDESTAL_FAN 0x05C4 267 #define BLE_APPEARANCE_DESK_FAN 0x05C5 268 #define BLE_APPEARANCE_WALL_FAN 0x05C6 269 270 /* Category HVAC [15:6] 0x018 */ 271 #define BLE_APPEARANCE_GENERIC_HVAC 0x0600 272 #define BLE_APPEARANCE_HVAC_THERMOSTAT 0x0601 273 #define BLE_APPEARANCE_HVAC_HUMIDIFIER 0x0602 274 #define BLE_APPEARANCE_HVAC_DEHUMIDIFIER 0x0603 275 #define BLE_APPEARANCE_HVAC_HEATER 0x0604 276 #define BLE_APPEARANCE_HVAC_RADIATOR 0x0605 277 #define BLE_APPEARANCE_HVAC_BOILER 0x0606 278 #define BLE_APPEARANCE_HVAC_HEAT_PUMP 0x0607 279 #define BLE_APPEARANCE_HVAC_INFRARED_HEATER 0x0608 280 #define BLE_APPEARANCE_HVAC_RADIANT_PANEL_HEATER 0x0609 281 #define BLE_APPEARANCE_HVAC_FAN_HEATER 0x060A 282 #define BLE_APPEARANCE_HVAC_AIR_CURTAIN 0x060B 283 284 /* Category Air Conditioning [15:6] 0x019 */ 285 #define BLE_APPEARANCE_GENERIC_AIR_CONDITIONING 0x0640 286 287 /* Category Humidifier [15:6] 0x01A */ 288 #define BLE_APPEARANCE_GENERIC_HUMIDIFIER 0x0680 289 290 /* Category Heating [15:6] 0x01B */ 291 #define BLE_APPEARANCE_GENERIC_HEATING 0x06C0 292 #define BLE_APPEARANCE_HEATING_RADIATOR 0x06C1 293 #define BLE_APPEARANCE_HEATING_BOILER 0x06C2 294 #define BLE_APPEARANCE_HEATING_HEAT_PUMP 0x06C3 295 #define BLE_APPEARANCE_HEATING_INFRARED_HEATER 0x06C4 296 #define BLE_APPEARANCE_HEATING_RADIANT_PANEL_HEATER 0x06C5 297 #define BLE_APPEARANCE_HEATING_FAN_HEATER 0x06C6 298 #define BLE_APPEARANCE_HEATING_AIR_CURTAIN 0x06C7 299 300 /* Category Access Control [15:6] 0x01C */ 301 #define BLE_APPEARANCE_GENERIC_ACCESS_CONTROL 0x0700 302 #define BLE_APPEARANCE_ACCESS_DOOR 0x0701 303 #define BLE_APPEARANCE_ACCESS_CONTROL_GARAGE_DOOR 0x0702 304 #define BLE_APPEARANCE_ACCESS_CONTROL_EMERGENCY_EXIT_DOOR 0x0703 305 #define BLE_APPEARANCE_ACCESS_CONTROL_ACCESS_LOCK 0x0704 306 #define BLE_APPEARANCE_ACCESS_CONTROL_ELEVATOR 0x0705 307 #define BLE_APPEARANCE_ACCESS_CONTROL_WINDOW 0x0706 308 #define BLE_APPEARANCE_ACCESS_CONTROL_ENTRANCE_GATE 0x0707 309 #define BLE_APPEARANCE_ACCESS_CONTROL_DOOR_LOCK 0x0708 310 #define BLE_APPEARANCE_ACCESS_CONTROL_LOCKER 0x0709 311 312 /* Category Motorized Device [15:6] 0x01D */ 313 #define BLE_APPEARANCE_GENERIC_MOTORIZED_DEVICE 0x0740 314 #define BLE_APPEARANCE_MOTORIZED_GATE 0x0741 315 #define BLE_APPEARANCE_MOTORIZED_AWNING 0x0742 316 #define BLE_APPEARANCE_MOTORIZED_BLINDS_OR_SHADES 0x0743 317 #define BLE_APPEARANCE_MOTORIZED_CURTAINS 0x0744 318 #define BLE_APPEARANCE_MOTORIZED_SCREEN 0x0745 319 320 /* Category Power Device [15:6] 0x01E */ 321 #define BLE_APPEARANCE_GENERIC_POWER_DEVICE 0x0780 322 #define BLE_APPEARANCE_POWER_OUTLET 0x0781 323 #define BLE_APPEARANCE_POWER_STRIP 0x0782 324 #define BLE_APPEARANCE_POWER_PLUG 0x0783 325 #define BLE_APPEARANCE_POWER_SUPPLY 0x0784 326 327 /* Category Light Source [15:6] 0x01F */ 328 #define BLE_APPEARANCE_GENERIC_LIGHT_SOURCE 0x07C0 329 #define BLE_APPEARANCE_LIGHT_SOURCE_INCANDESCENT_LIGHT_BULB 0x07C1 330 #define BLE_APPEARANCE_LIGHT_SOURCE_LED_LAMP 0x07C2 331 #define BLE_APPEARANCE_LIGHT_SOURCE_HID_LAMP 0x07C3 332 #define BLE_APPEARANCE_LIGHT_SOURCE_FLUORESCENT_LAMP 0x07C4 333 #define BLE_APPEARANCE_LIGHT_SOURCE_LED_ARRAY 0x07C5 334 #define BLE_APPEARANCE_LIGHT_SOURCE_MULTI_COLOR_LED_ARRAY 0x07C6 335 #define BLE_APPEARANCE_LIGHT_SOURCE_LOW_VOLTAGE_HALOGEN 0x07C7 336 #define BLE_APPEARANCE_LIGHT_SOURCE_ORGANIC_LIGHT_EMITTING_DIODE_OLED 0x07C8 337 338 /* Category Window Covering [15:6] 0x020 */ 339 #define BLE_APPEARANCE_GENERIC_WINDOW_COVERING 0x0800 340 #define BLE_APPEARANCE_WINDOW_COVERING_WINDOW_SHADES 0x0801 341 #define BLE_APPEARANCE_WINDOW_COVERING_WINDOW_BLINDS 0x0802 342 #define BLE_APPEARANCE_WINDOW_COVERING_WINDOW_AWNING 0x0803 343 #define BLE_APPEARANCE_WINDOW_COVERING_WINDOW_CURTAIN 0x0804 344 #define BLE_APPEARANCE_WINDOW_COVERING_EXTERIOR_SHUTTER 0x0805 345 #define BLE_APPEARANCE_WINDOW_COVERING_EXTERIOR_SCREEN 0x0806 346 347 /* Category Audio Sink [15:6] 0x021 */ 348 #define BLE_APPEARANCE_GENERIC_AUDIO_SINK 0x0840 349 #define BLE_APPEARANCE_AUDIO_SINK_STANDALONE_SPEAKER 0x0841 350 #define BLE_APPEARANCE_AUDIO_SINK_SOUNDBAR 0x0842 351 #define BLE_APPEARANCE_AUDIO_SINK_BOOKSHELF_SPEAKER 0x0843 352 #define BLE_APPEARANCE_AUDIO_SINK_STANDMOUNTED_SPEAKER 0x0844 353 #define BLE_APPEARANCE_AUDIO_SINK_SPEAKERPHONE 0x0845 354 355 /* Category Audio Source [15:6] 0x022 */ 356 #define BLE_APPEARANCE_GENERIC_AUDIO_SOURCE 0x0880 357 #define BLE_APPEARANCE_AUDIO_SOURCE_MICROPHONE 0x0881 358 #define BLE_APPEARANCE_AUDIO_SOURCE_ALARM 0x0882 359 #define BLE_APPEARANCE_AUDIO_SOURCE_BELL 0x0883 360 #define BLE_APPEARANCE_AUDIO_SOURCE_HORN 0x0884 361 #define BLE_APPEARANCE_AUDIO_SOURCE_BROADCASTING_DEVICE 0x0885 362 #define BLE_APPEARANCE_AUDIO_SOURCE_SERVICE_DESK 0x0886 363 #define BLE_APPEARANCE_AUDIO_SOURCE_KIOSK 0x0887 364 #define BLE_APPEARANCE_AUDIO_SOURCE_BROADCASTING_ROOM 0x0888 365 #define BLE_APPEARANCE_AUDIO_SOURCE_AUDITORIUM 0x0889 366 367 /* Category Motorized Vehicle [15:6] 0x023 */ 368 #define BLE_APPEARANCE_GENERIC_MOTORIZED_VEHICLE 0x08C0 369 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_CAR 0x08C1 370 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_LARGE_GOODS 0x08C2 371 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_2_WHEELED 0x08C3 372 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_MOTORBIKE 0x08C4 373 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_SCOOTER 0x08C5 374 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_MOPED 0x08C6 375 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_3_WHEELED 0x08C7 376 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_LIGHT_VEHICLE 0x08C8 377 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_QUAD_BIKE 0x08C9 378 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_MINIBUS 0x08CA 379 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_BUS 0x08CB 380 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_TROLLEY 0x08CC 381 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_AGRICULTURAL_VEHICLE 0x08CD 382 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_CAMPER_CARAVAN 0x08CE 383 #define BLE_APPEARANCE_MOTORIZED_VEHICLE_RECREATIONAL_VEHICLE_MOTOR_HOME 0x08CF 384 385 /* Category Domestic Appliance [15:6] 0x024 */ 386 #define BLE_APPEARANCE_GENERIC_DOMESTIC_APPLIANCE 0x0900 387 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_REFRIGERATOR 0x0901 388 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_FREEZER 0x0902 389 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_OVEN 0x0903 390 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_MICROWAVE 0x0904 391 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_TOASTER 0x0905 392 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_WASHING_MACHINE 0x0906 393 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_DRYER 0x0907 394 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_COFFEE_MAKER 0x0908 395 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_CLOTHES_IRON 0x0909 396 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_CURLING_IRON 0x090A 397 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_HAIR_DRYER 0x090B 398 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_VACUUM_CLEANER 0x090C 399 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_ROBOTIC_VACUUM_CLEANER 0x090D 400 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_RICE_COOKER 0x090E 401 #define BLE_APPEARANCE_DOMESTIC_APPLIANCE_CLOTHES_STEAMER 0x090F 402 403 /* Category Wearable Audio Device [15:6] 0x025 */ 404 #define APPEARANCE_TO_COD_WEARABLE_AUDIO_DEVICE(X) \ 405 X(BLE_APPEARANCE_GENERIC_WEARABLE_AUDIO_DEVICE, 0x0940, \ 406 (COD_SERVICE_AUDIO | COD_SERVICE_RENDERING) >> 8, (COD_MAJOR_AUDIO | COD_SERVICE_LE_AUDIO), \ 407 COD_MAJOR_AUDIO_MINOR_WEARABLE_HEADSET) \ 408 X(BLE_APPEARANCE_WEARABLE_AUDIO_DEVICE_EARBUD, 0x0941, \ 409 (COD_SERVICE_AUDIO | COD_SERVICE_RENDERING) >> 8, (COD_MAJOR_AUDIO | COD_SERVICE_LE_AUDIO), \ 410 COD_MAJOR_AUDIO_MINOR_WEARABLE_HEADSET) \ 411 X(BLE_APPEARANCE_WEARABLE_AUDIO_DEVICE_HEADSET, 0x0942, \ 412 (COD_SERVICE_AUDIO | COD_SERVICE_RENDERING) >> 8, (COD_MAJOR_AUDIO | COD_SERVICE_LE_AUDIO), \ 413 COD_MAJOR_AUDIO_MINOR_WEARABLE_HEADSET) \ 414 X(BLE_APPEARANCE_WEARABLE_AUDIO_DEVICE_HEADPHONES, 0x0943, \ 415 (COD_SERVICE_AUDIO | COD_SERVICE_RENDERING) >> 8, (COD_MAJOR_AUDIO | COD_SERVICE_LE_AUDIO), \ 416 COD_MAJOR_AUDIO_MINOR_WEARABLE_HEADSET) \ 417 X(BLE_APPEARANCE_WEARABLE_AUDIO_DEVICE_NECK_BAND, 0x0944, \ 418 (COD_SERVICE_AUDIO | COD_SERVICE_RENDERING) >> 8, (COD_MAJOR_AUDIO | COD_SERVICE_LE_AUDIO), \ 419 COD_MAJOR_AUDIO_MINOR_WEARABLE_HEADSET) 420 421 /* Category Aircraft [15:6] 0x026 */ 422 #define BLE_APPEARANCE_GENERIC_AIRCRAFT 0x0980 423 #define BLE_APPEARANCE_AIRCRAFT_LIGHT 0x0981 424 #define BLE_APPEARANCE_AIRCRAFT_MICROLIGHT 0x0982 425 #define BLE_APPEARANCE_AIRCRAFT_PARAGLIDER 0x0983 426 #define BLE_APPEARANCE_AIRCRAFT_LARGE_PASSENGER 0x0984 427 428 /* Category Audio/Video Equipment [15:6] 0x027 */ 429 #define BLE_APPEARANCE_GENERIC_AV_EQUIPMENT 0x09C0 430 #define BLE_APPEARANCE_AV_EQUIPMENT_AMPLIFIER 0x09C1 431 #define BLE_APPEARANCE_AV_EQUIPMENT_RECEIVER 0x09C2 432 #define BLE_APPEARANCE_AV_EQUIPMENT_RADIO 0x09C3 433 #define BLE_APPEARANCE_AV_EQUIPMENT_TUNER 0x09C4 434 #define BLE_APPEARANCE_AV_EQUIPMENT_TURNTABLE 0x09C5 435 #define BLE_APPEARANCE_AV_EQUIPMENT_CD_PLAYER 0x09C6 436 #define BLE_APPEARANCE_AV_EQUIPMENT_DVD_PLAYER 0x09C7 437 #define BLE_APPEARANCE_AV_EQUIPMENT_BLU_RAY_PLAYER 0x09C8 438 #define BLE_APPEARANCE_AV_EQUIPMENT_OPTICAL_DISC_PLAYER 0x09C9 439 #define BLE_APPEARANCE_AV_EQUIPMENT_SET_TOP_BOX 0x09CA 440 441 /* Category Display Equipment [15:6] 0x028 */ 442 #define BLE_APPEARANCE_GENERIC_DISPLAY_EQUIPMENT 0x0A00 443 #define BLE_APPEARANCE_DISPLAY_EQUIPMENT_TELEVISION 0x0A01 444 #define BLE_APPEARANCE_DISPLAY_EQUIPMENT_MONITOR 0x0A02 445 #define BLE_APPEARANCE_DISPLAY_EQUIPMENT_PROJECTOR 0x0A03 446 447 /* Category Hearing Aid [15:6] 0x029 */ 448 #define BLE_APPEARANCE_GENERIC_HEARING_AID 0x0A40 449 #define BLE_APPEARANCE_HEARING_AID_IN_EAR 0x0A41 450 #define BLE_APPEARANCE_HEARING_AID_BEHIND_EAR 0x0A42 451 #define BLE_APPEARANCE_HEARING_AID_COCHLLEAR_IMPLANT 0x0A43 452 453 /* Category Gaming [15:6] 0x02A */ 454 #define BLE_APPEARANCE_GENERIC_GAMING 0x0A80 455 #define BLE_APPEARANCE_GAMING_HOME_VIDEO_GAME_CONSOLE 0x0A81 456 #define BLE_APPEARANCE_GAMING_PORTABLE_HANDHELD_CONSOLE 0x0A82 457 458 /* Category Signage [15:6] 0x02B */ 459 #define BLE_APPEARANCE_GENERIC_SIGNAGE 0x0AC0 460 #define BLE_APPEARANCE_SIGNAGE_DIGITAL 0x0AC1 461 #define BLE_APPEARANCE_SIGNAGE_ELECTRONIC_LABEL 0x0AC2 462 463 /* Category Pulse Oximeter [15:6] 0x031 */ 464 #define APPEARANCE_TO_COD_PULSE_OXIMETER(X) \ 465 X(BLE_APPEARANCE_GENERIC_PULSE_OXIMETER, 0x0C40, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 466 COD_MAJOR_HEALTH_MINOR_PULSE_OXIMETER) \ 467 X(BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP, 0x0C41, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 468 COD_MAJOR_HEALTH_MINOR_PULSE_OXIMETER) \ 469 X(BLE_APPEARANCE_PULSE_OXIMETER_WRIST, 0x0C42, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 470 COD_MAJOR_HEALTH_MINOR_PULSE_OXIMETER) 471 472 /* Category Weight Scale [15:6] 0x032 */ 473 #define APPEARANCE_TO_COD_WEIGHT_SCALE(X) \ 474 X(BLE_APPEARANCE_GENERIC_WEIGHT, 0x0C80, COD_SERVICE_NA, COD_MAJOR_HEALTH, \ 475 COD_MAJOR_HEALTH_MINOR_WEIGHING_SCALE) 476 477 /* Category Personal Mobility Device [15:6] 0x033 */ 478 #define BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE 0x0CC0 479 #define BLE_APPEARANCE_PERSONAL_MOBILITY_DEVICE_POWERED_WHEELCHAIR 0x0CC1 480 #define BLE_APPEARANCE_PERSONAL_MOBILITY_DEVICE_MOBILITY_SCOOTER 0x0CC2 481 482 /* Category Continuous Glucose Monitor [15:6] 0x034 */ 483 #define BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR 0x0D00 484 485 /* Category Insulin Pump [15:6] 0x035 */ 486 #define BLE_APPEARANCE_GENERIC_INSULIN_PUMP 0x0D40 487 #define BLE_APPEARANCE_INSULIN_PUMP_DURABLE 0x0D41 488 #define BLE_APPEARANCE_INSULIN_PUMP_PATCH 0x0D44 489 #define BLE_APPEARANCE_INSULIN_PUMP_PEN 0x0D48 490 491 /* Category Medication Delivery [15:6] 0x036 */ 492 #define BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY 0x0D80 493 494 /* Category Spirometer [15:6] 0x037 */ 495 #define BLE_APPEARANCE_GENERIC_SPIROMETER 0x0DC0 496 #define BLE_APPEARANCE_SPIROMETER_HANDHELD 0x0DC1 497 498 /* Category Outdoor Sports Activity [15:6] 0x051 */ 499 #define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS 0x1440 500 #define BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441 501 #define BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV 0x1442 502 #define BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD 0x1443 503 #define BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444 504 505 /* Category Industrial Measurement Device [15:6] 0x052 */ 506 #define BLE_APPEARANCE_GENERIC_INDUSTRIAL_MEASUREMENT_DEVICE 0x1480 507 #define BLE_APPEARANCE_INDUSTRIAL_MEASUREMENT_DEVICE_TORQUE_TESTING 0x1481 508 #define BLE_APPEARANCE_INDUSTRIAL_MEASUREMENT_DEVICE_CALIPER 0x1482 509 #define BLE_APPEARANCE_INDUSTRIAL_MEASUREMENT_DEVICE_DIAL_INDICATOR 0x1483 510 #define BLE_APPEARANCE_INDUSTRIAL_MEASUREMENT_DEVICE_MICROMETER 0x1484 511 #define BLE_APPEARANCE_INDUSTRIAL_MEASUREMENT_DEVICE_HEIGHT_GAUGE 0x1485 512 #define BLE_APPEARANCE_INDUSTRIAL_MEASUREMENT_DEVICE_FORCE_GAUGE 0x1486 513 514 /* Category Industrial Tools [15:6] 0x053 */ 515 #define BLE_APPEARANCE_GENERIC_INDUSTRIAL_TOOLS 0x14C0 516 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_MACHINE_TOOL_HOLDER 0x14C1 517 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_GENERIC_CLAMPING_DEVICE 0x14C2 518 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_CLAMPING_JAWS_JAWS_CHUCK 0x14C3 519 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_CLAMPING_COLLET_CHUCK 0x14C4 520 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_CLAMPING_MANDREL 0x14C5 521 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_VISE 0x14C6 522 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_ZERO_POINT_CLAMPING_SYSTEM 0x14C7 523 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_TORQUE_WRENCH 0x14C8 524 #define BLE_APPEARANCE_INDUSTRIAL_TOOLS_TORQUE_SCREWDRIVER 0x14C9 525 526 /* 527 * Collection of all the appearance to COD functions per category. 528 * Note: Add the macro call here if a new definition is added. 529 */ 530 #define APPEARANCE_TO_COD(X) \ 531 APPEARANCE_TO_COD_UNKNOWN(X) \ 532 APPEARANCE_TO_COD_PHONE(X) \ 533 APPEARANCE_TO_COD_COMPUTER(X) \ 534 APPEARANCE_TO_COD_WATCH(X) \ 535 APPEARANCE_TO_COD_DISPLAY(X) \ 536 APPEARANCE_TO_COD_REMOTE_CONTROL(X) \ 537 APPEARANCE_TO_COD_EYEGLASSES(X) \ 538 APPEARANCE_TO_COD_MEDIA_PLAYER(X) \ 539 APPEARANCE_TO_COD_BARCODE_SCANNER(X) \ 540 APPEARANCE_TO_COD_THERMOMETER(X) \ 541 APPEARANCE_TO_COD_HEART_RATE_SENSOR(X) \ 542 APPEARANCE_TO_COD_BLOOD_PRESSURE(X) \ 543 APPEARANCE_TO_COD_HID(X) \ 544 APPEARANCE_TO_COD_GLUCOSE_METER(X) \ 545 APPEARANCE_TO_COD_RUNNING_WALKING_SENSOR(X) \ 546 APPEARANCE_TO_COD_WEARABLE_AUDIO_DEVICE(X) \ 547 APPEARANCE_TO_COD_PULSE_OXIMETER(X) \ 548 APPEARANCE_TO_COD_WEIGHT_SCALE(X) 549 550 // Generates the BLE appearance definitions for reference 551 #define GENERATE_BLE_APPEARANCE_DEFINITIONS(_appearance, _value, _service, _major, _minor) \ 552 constexpr uint16_t _appearance = _value; 553 554 #define ADD_APPEARANCE_TO_COD_CASE(_appearance, _value, _service, _major, _minor) \ 555 case _appearance: \ 556 return DEV_CLASS{_service, _major, _minor}; 557 558 // Generate the actual definition for each appearance. 559 APPEARANCE_TO_COD(GENERATE_BLE_APPEARANCE_DEFINITIONS) 560 561 #endif // BLE_APPEARANCE_H