feat(ble/bluedroid): Support LE Security Levels Characteristic

This commit is contained in:
zhiweijian
2025-12-30 10:16:43 +08:00
parent cd156796d8
commit a3f994315f
6 changed files with 48 additions and 1 deletions
@@ -256,6 +256,12 @@ tGATT_STATUS gap_read_attr_value (UINT16 handle, tGATT_VALUE *p_value, BOOLEAN i
UINT8_TO_STREAM(p, p_db_attr->attr_value.addr_resolution);
p_value->len = 1;
break;
#if (BT_GATTS_SECURITY_LEVELS_CHAR == TRUE)
case GATT_UUID_GAP_GATT_SECURITY_LEVELS:
UINT16_TO_STREAM(p, p_db_attr->attr_value.security_level);
p_value->len = 2;
break;
#endif // (BT_GATTS_SECURITY_LEVELS_CHAR == TRUE)
}
return GATT_SUCCESS;
}
@@ -464,6 +470,17 @@ void gap_attr_db_init(void)
p_db_attr->attr_value.addr_resolution = 0;
p_db_attr++;
#if (BT_GATTS_SECURITY_LEVELS_CHAR == TRUE)
/* Add LE Security Levels Characteristic */
uuid.len = LEN_UUID_16;
uuid.uu.uuid16 = p_db_attr->uuid = GATT_UUID_GAP_GATT_SECURITY_LEVELS;
p_db_attr->handle = GATTS_AddCharacteristic(service_handle, &uuid,
GATT_PERM_READ, GATT_CHAR_PROP_BIT_READ,
NULL, NULL);
p_db_attr->attr_value.security_level = 0x0101;
p_db_attr++;
#endif // (BT_GATTS_SECURITY_LEVELS_CHAR == TRUE)
/* start service now */
memset (&app_uuid.uu.uuid128, 0x81, LEN_UUID_128);
@@ -517,6 +534,12 @@ void GAP_BleAttrDBUpdate(UINT16 attr_uuid, tGAP_BLE_ATTR_VALUE *p_value)
p_db_attr->attr_value.addr_resolution = p_value->addr_resolution;
break;
#if (BT_GATTS_SECURITY_LEVELS_CHAR == TRUE)
case GATT_UUID_GAP_GATT_SECURITY_LEVELS:
p_db_attr->attr_value.security_level = p_value->security_level;
break;
#endif // (BT_GATTS_SECURITY_LEVELS_CHAR == TRUE)
}
break;
}