Просмотр исходного кода

components/bt: Make modifications to the support of GAP appearance/icon
characateristic

1. In addition to mentioning in the documentation, use the standard appearance
values already present and return appropriate error in case an incorrect
value is passed
2. Add ESP_BLE_APPEARANCE* macros corresponding to BTM_BLE_APPEARANCE*
and use them from the API instead
3. Add the missing appearance parameter values from
https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml
4. Fix some minor typos

Signed-off-by: Hrishikesh Dhayagude <hrishi@espressif.com>

Hrishikesh Dhayagude 7 лет назад
Родитель
Сommit
fd7baaf4ba

+ 71 - 6
components/bt/bluedroid/api/esp_gap_ble_api.c

@@ -197,17 +197,82 @@ esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable)
 
 esp_err_t esp_ble_gap_config_local_icon (uint16_t icon)
 {
+    esp_err_t ret;
     btc_msg_t msg;
     btc_ble_gap_args_t arg;
 
     ESP_BLUEDROID_STATUS_CHECK(ESP_BLUEDROID_STATUS_ENABLED);
 
-    msg.sig = BTC_SIG_API_CALL;
-    msg.pid = BTC_PID_GAP_BLE;
-    msg.act = BTC_GAP_BLE_ACT_CONFIG_LOCAL_ICON;
-    arg.cfg_local_icon.icon = icon;
-
-    return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
+    switch (icon) {
+    case ESP_BLE_APPEARANCE_GENERIC_PHONE:
+    case ESP_BLE_APPEARANCE_GENERIC_COMPUTER:
+    case ESP_BLE_APPEARANCE_GENERIC_REMOTE:
+    case ESP_BLE_APPEARANCE_GENERIC_THERMOMETER:
+    case ESP_BLE_APPEARANCE_THERMOMETER_EAR:
+    case ESP_BLE_APPEARANCE_GENERIC_HEART_RATE:
+    case ESP_BLE_APPEARANCE_HEART_RATE_BELT:
+    case ESP_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE:
+    case ESP_BLE_APPEARANCE_BLOOD_PRESSURE_ARM:
+    case ESP_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST:
+    case ESP_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER:
+    case ESP_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP:
+    case ESP_BLE_APPEARANCE_PULSE_OXIMETER_WRIST:
+    case ESP_BLE_APPEARANCE_GENERIC_GLUCOSE:
+    case ESP_BLE_APPEARANCE_GENERIC_WEIGHT:
+    case ESP_BLE_APPEARANCE_GENERIC_WALKING:
+    case ESP_BLE_APPEARANCE_WALKING_IN_SHOE:
+    case ESP_BLE_APPEARANCE_WALKING_ON_SHOE:
+    case ESP_BLE_APPEARANCE_WALKING_ON_HIP:
+    case ESP_BLE_APPEARANCE_GENERIC_WATCH:
+    case ESP_BLE_APPEARANCE_SPORTS_WATCH:
+    case ESP_BLE_APPEARANCE_GENERIC_EYEGLASSES:
+    case ESP_BLE_APPEARANCE_GENERIC_DISPLAY:
+    case ESP_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER:
+    case ESP_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER:
+    case ESP_BLE_APPEARANCE_HID_BARCODE_SCANNER:
+    case ESP_BLE_APPEARANCE_GENERIC_HID:
+    case ESP_BLE_APPEARANCE_HID_KEYBOARD:
+    case ESP_BLE_APPEARANCE_HID_MOUSE:
+    case ESP_BLE_APPEARANCE_HID_JOYSTICK:
+    case ESP_BLE_APPEARANCE_HID_GAMEPAD:
+    case ESP_BLE_APPEARANCE_HID_DIGITIZER_TABLET:
+    case ESP_BLE_APPEARANCE_HID_CARD_READER:
+    case ESP_BLE_APPEARANCE_HID_DIGITAL_PEN:
+    case ESP_BLE_APPEARANCE_UNKNOWN:
+    case ESP_BLE_APPEARANCE_GENERIC_CLOCK:
+    case ESP_BLE_APPEARANCE_GENERIC_TAG:
+    case ESP_BLE_APPEARANCE_GENERIC_KEYRING:
+    case ESP_BLE_APPEARANCE_GENERIC_CYCLING:
+    case ESP_BLE_APPEARANCE_CYCLING_COMPUTER:
+    case ESP_BLE_APPEARANCE_CYCLING_SPEED:
+    case ESP_BLE_APPEARANCE_CYCLING_CADENCE:
+    case ESP_BLE_APPEARANCE_CYCLING_POWER:
+    case ESP_BLE_APPEARANCE_CYCLING_SPEED_CADENCE:
+    case ESP_BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE:
+    case ESP_BLE_APPEARANCE_POWERED_WHEELCHAIR:
+    case ESP_BLE_APPEARANCE_MOBILITY_SCOOTER:
+    case ESP_BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR:
+    case ESP_BLE_APPEARANCE_GENERIC_INSULIN_PUMP:
+    case ESP_BLE_APPEARANCE_INSULIN_PUMP_DURABLE_PUMP:
+    case ESP_BLE_APPEARANCE_INSULIN_PUMP_PATCH_PUMP:
+    case ESP_BLE_APPEARANCE_INSULIN_PEN:
+    case ESP_BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY:
+    case ESP_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS:
+    case ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION:
+    case ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV:
+    case ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD:
+    case ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV:
+        msg.sig = BTC_SIG_API_CALL;
+        msg.pid = BTC_PID_GAP_BLE;
+        msg.act = BTC_GAP_BLE_ACT_CONFIG_LOCAL_ICON;
+        arg.cfg_local_icon.icon = icon;
+        ret = (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gap_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
+        break;
+    default:
+        ret = ESP_ERR_INVALID_ARG;
+        break;
+    }
+    return ret;
 }
 
 esp_err_t esp_ble_gap_update_whitelist(bool add_remove, esp_bd_addr_t remote_bda)

+ 1 - 1
components/bt/bluedroid/api/include/api/esp_bt_device.h

@@ -44,7 +44,7 @@ const uint8_t *esp_bt_dev_get_address(void);
  * @return
  *                  - ESP_OK : Succeed
  *                  - ESP_ERR_INVALID_ARG : if name is NULL pointer or empty, or string length out of limit
- *                  - ESP_INVALID_STATE : if bluetooth stack is not yet enabled
+ *                  - ESP_ERR_INVALID_STATE : if bluetooth stack is not yet enabled
  *                  - ESP_FAIL : others
  */
 esp_err_t esp_bt_dev_set_device_name(const char *name);

+ 63 - 3
components/bt/bluedroid/api/include/api/esp_gap_ble_api.h

@@ -66,6 +66,66 @@ typedef uint8_t   esp_ble_auth_req_t;         /*!< combination of the above bit
 #define ESP_IO_CAP_IN                       2   /*!< KeyboardOnly */        /* relate to BTM_IO_CAP_IN in stack/btm_api.h */
 #define ESP_IO_CAP_NONE                     3   /*!< NoInputNoOutput */     /* relate to BTM_IO_CAP_NONE in stack/btm_api.h */
 #define ESP_IO_CAP_KBDISP                   4   /*!< Keyboard display */    /* relate to BTM_IO_CAP_KBDISP in stack/btm_api.h */
+
+#define ESP_BLE_APPEARANCE_UNKNOWN                 0x0000 /* relate to BTM_BLE_APPEARANCE_UNKNOWN in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_PHONE           0x0040 /* relate to BTM_BLE_APPEARANCE_GENERIC_PHONE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_COMPUTER        0x0080 /* relate to BTM_BLE_APPEARANCE_GENERIC_COMPUTER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_WATCH           0x00C0 /* relate to BTM_BLE_APPEARANCE_GENERIC_WATCH in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_SPORTS_WATCH            0x00C1 /* relate to BTM_BLE_APPEARANCE_SPORTS_WATCH in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_CLOCK           0x0100 /* relate to BTM_BLE_APPEARANCE_GENERIC_CLOCK in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_DISPLAY         0x0140 /* relate to BTM_BLE_APPEARANCE_GENERIC_DISPLAY in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_REMOTE          0x0180 /* relate to BTM_BLE_APPEARANCE_GENERIC_REMOTE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_EYEGLASSES      0x01C0 /* relate to BTM_BLE_APPEARANCE_GENERIC_EYEGLASSES in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_TAG             0x0200 /* relate to BTM_BLE_APPEARANCE_GENERIC_TAG in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_KEYRING         0x0240 /* relate to BTM_BLE_APPEARANCE_GENERIC_KEYRING in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER    0x0280 /* relate to BTM_BLE_APPEARANCE_GENERIC_MEDIA_PLAYER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 0x02C0 /* relate to BTM_BLE_APPEARANCE_GENERIC_BARCODE_SCANNER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_THERMOMETER     0x0300 /* relate to BTM_BLE_APPEARANCE_GENERIC_THERMOMETER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_THERMOMETER_EAR         0x0301 /* relate to BTM_BLE_APPEARANCE_THERMOMETER_EAR in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_HEART_RATE      0x0340 /* relate to BTM_BLE_APPEARANCE_GENERIC_HEART_RATE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HEART_RATE_BELT         0x0341 /* relate to BTM_BLE_APPEARANCE_HEART_RATE_BELT in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE  0x0380 /* relate to BTM_BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_BLOOD_PRESSURE_ARM      0x0381 /* relate to BTM_BLE_APPEARANCE_BLOOD_PRESSURE_ARM in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST    0x0382 /* relate to BTM_BLE_APPEARANCE_BLOOD_PRESSURE_WRIST in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_HID             0x03C0 /* relate to BTM_BLE_APPEARANCE_GENERIC_HID in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_KEYBOARD            0x03C1 /* relate to BTM_BLE_APPEARANCE_HID_KEYBOARD in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_MOUSE               0x03C2 /* relate to BTM_BLE_APPEARANCE_HID_MOUSE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_JOYSTICK            0x03C3 /* relate to BTM_BLE_APPEARANCE_HID_JOYSTICK in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_GAMEPAD             0x03C4 /* relate to BTM_BLE_APPEARANCE_HID_GAMEPAD in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_DIGITIZER_TABLET    0x03C5 /* relate to BTM_BLE_APPEARANCE_HID_DIGITIZER_TABLET in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_CARD_READER         0x03C6 /* relate to BTM_BLE_APPEARANCE_HID_CARD_READER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_DIGITAL_PEN         0x03C7 /* relate to BTM_BLE_APPEARANCE_HID_DIGITAL_PEN in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_HID_BARCODE_SCANNER     0x03C8 /* relate to BTM_BLE_APPEARANCE_HID_BARCODE_SCANNER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_GLUCOSE         0x0400 /* relate to BTM_BLE_APPEARANCE_GENERIC_GLUCOSE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_WALKING         0x0440 /* relate to BTM_BLE_APPEARANCE_GENERIC_WALKING in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_WALKING_IN_SHOE         0x0441 /* relate to BTM_BLE_APPEARANCE_WALKING_IN_SHOE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_WALKING_ON_SHOE         0x0442 /* relate to BTM_BLE_APPEARANCE_WALKING_ON_SHOE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_WALKING_ON_HIP          0x0443 /* relate to BTM_BLE_APPEARANCE_WALKING_ON_HIP in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_CYCLING         0x0480 /* relate to BTM_BLE_APPEARANCE_GENERIC_CYCLING in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_CYCLING_COMPUTER        0x0481 /* relate to BTM_BLE_APPEARANCE_CYCLING_COMPUTER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_CYCLING_SPEED           0x0482 /* relate to BTM_BLE_APPEARANCE_CYCLING_SPEED in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_CYCLING_CADENCE         0x0483 /* relate to BTM_BLE_APPEARANCE_CYCLING_CADENCE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_CYCLING_POWER           0x0484 /* relate to BTM_BLE_APPEARANCE_CYCLING_POWER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_CYCLING_SPEED_CADENCE   0x0485 /* relate to BTM_BLE_APPEARANCE_CYCLING_SPEED_CADENCE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER  0x0C40 /* relate to BTM_BLE_APPEARANCE_GENERIC_PULSE_OXIMETER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41 /* relate to BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_PULSE_OXIMETER_WRIST    0x0C42 /* relate to BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_WEIGHT          0x0C80 /* relate to BTM_BLE_APPEARANCE_GENERIC_WEIGHT in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE    0x0CC0 /* relate to BTM_BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_POWERED_WHEELCHAIR                  0x0CC1 /* relate to BTM_BLE_APPEARANCE_POWERED_WHEELCHAIR in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_MOBILITY_SCOOTER                    0x0CC2 /* relate to BTM_BLE_APPEARANCE_MOBILITY_SCOOTER in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR  0x0D00 /* relate to BTM_BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_INSULIN_PUMP                0x0D40 /* relate to BTM_BLE_APPEARANCE_GENERIC_INSULIN_PUMP in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_INSULIN_PUMP_DURABLE_PUMP           0x0D41 /* relate to BTM_BLE_APPEARANCE_INSULIN_PUMP_DURABLE_PUMP in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_INSULIN_PUMP_PATCH_PUMP             0x0D44 /* relate to BTM_BLE_APPEARANCE_INSULIN_PUMP_PATCH_PUMP in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_INSULIN_PEN                         0x0D48 /* relate to BTM_BLE_APPEARANCE_INSULIN_PEN in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY         0x0D80 /* relate to BTM_BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS  0x1440             /* relate to BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441             /* relate to BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV     0x1442 /* relate to BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD         0x1443 /* relate to BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD in stack/btm_ble_api.h */
+#define ESP_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV 0x1444 /* relate to BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_POD_AND_NAV in stack/btm_ble_api.h */
+
 typedef uint8_t esp_ble_io_cap_t;               /*!< combination of the io capability */
 
 /// GAP BLE callback event type
@@ -777,11 +837,11 @@ esp_err_t esp_ble_gap_config_local_privacy (bool privacy_enable);
 
 /**
  * @brief           set local gap appearance icon
- *                  
  *
- * @param[in]       icon   - Appearance value, these vlues are Defined by the Bluetooth organization, please refer to 
+ *
+ * @param[in]       icon   - External appearance value, these values are defined by the Bluetooth SIG, please refer to
  *                  https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.characteristic.gap.appearance.xml
- *                
+ *
  * @return
  *                  - ESP_OK : success
  *                  - other  : failed

+ 2 - 2
components/bt/bluedroid/bta/dm/bta_dm_act.c

@@ -4684,9 +4684,9 @@ void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data)
 
 /*******************************************************************************
 **
-** Function         bta_dm_ble_config_local_privacy
+** Function         bta_dm_ble_config_local_icon
 **
-** Description      This function set the local device LE privacy settings.
+** Description      This function sets the local icon value.
 **
 **
 *******************************************************************************/

+ 2 - 2
components/bt/bluedroid/stack/btm/btm_ble_gap.c

@@ -829,7 +829,7 @@ void BTM_BleConfigLocalIcon(uint16_t icon)
     p_value.icon = icon;
     GAP_BleAttrDBUpdate(GATT_UUID_GAP_ICON, &p_value);
 #else
-    BTM_TRACE_ERROR("%s\n", __func__); 
+    BTM_TRACE_ERROR("%s\n", __func__);
 #endif
 }
 /*******************************************************************************
@@ -2833,7 +2833,7 @@ static void btm_ble_appearance_to_cod(UINT16 appearance, UINT8 *dev_class)
         dev_class[1] = BTM_COD_MAJOR_PERIPHERAL;
         dev_class[2] = BTM_COD_MINOR_DIGITAL_PAN;
         break;
-    case BTM_BLE_APPEARANCE_UKNOWN:
+    case BTM_BLE_APPEARANCE_UNKNOWN:
     case BTM_BLE_APPEARANCE_GENERIC_CLOCK:
     case BTM_BLE_APPEARANCE_GENERIC_TAG:
     case BTM_BLE_APPEARANCE_GENERIC_KEYRING:

+ 10 - 1
components/bt/bluedroid/stack/include/stack/btm_ble_api.h

@@ -206,7 +206,7 @@ typedef UINT8 BLE_SIGNATURE[BTM_BLE_AUTH_SIGN_LEN];         /* Device address */
 #endif
 
 /* Appearance Values Reported with BTM_BLE_AD_TYPE_APPEARANCE */
-#define BTM_BLE_APPEARANCE_UKNOWN                  0x0000
+#define BTM_BLE_APPEARANCE_UNKNOWN                 0x0000
 #define BTM_BLE_APPEARANCE_GENERIC_PHONE           0x0040
 #define BTM_BLE_APPEARANCE_GENERIC_COMPUTER        0x0080
 #define BTM_BLE_APPEARANCE_GENERIC_WATCH           0x00C0
@@ -250,6 +250,15 @@ typedef UINT8 BLE_SIGNATURE[BTM_BLE_AUTH_SIGN_LEN];         /* Device address */
 #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 0x0C41
 #define BTM_BLE_APPEARANCE_PULSE_OXIMETER_WRIST    0x0C42
 #define BTM_BLE_APPEARANCE_GENERIC_WEIGHT          0x0C80
+#define BTM_BLE_APPEARANCE_GENERIC_PERSONAL_MOBILITY_DEVICE    0x0CC0
+#define BTM_BLE_APPEARANCE_POWERED_WHEELCHAIR                  0x0CC1
+#define BTM_BLE_APPEARANCE_MOBILITY_SCOOTER                    0x0CC2
+#define BTM_BLE_APPEARANCE_GENERIC_CONTINUOUS_GLUCOSE_MONITOR  0x0D00
+#define BTM_BLE_APPEARANCE_GENERIC_INSULIN_PUMP                0x0D40
+#define BTM_BLE_APPEARANCE_INSULIN_PUMP_DURABLE_PUMP           0x0D41
+#define BTM_BLE_APPEARANCE_INSULIN_PUMP_PATCH_PUMP             0x0D44
+#define BTM_BLE_APPEARANCE_INSULIN_PEN                         0x0D48
+#define BTM_BLE_APPEARANCE_GENERIC_MEDICATION_DELIVERY         0x0D80
 #define BTM_BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS  0x1440
 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION 0x1441
 #define BTM_BLE_APPEARANCE_OUTDOOR_SPORTS_LOCATION_AND_NAV     0x1442