component/bt: add sequential check when add include service
This commit is contained in:
parent
d6bc6fad8b
commit
5d71940178
2 changed files with 36 additions and 6 deletions
|
@ -450,6 +450,26 @@ UINT16 gatts_add_included_service (tGATT_SVC_DB *p_db, UINT16 s_handle, UINT16 e
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOLEAN is_include_service_allowed = TRUE;
|
||||||
|
// service declaration
|
||||||
|
tGATT_ATTR16 *first_attr = (tGATT_ATTR16 *)p_db->p_attr_list;
|
||||||
|
if (p_db->p_attr_list != NULL) {
|
||||||
|
tGATT_ATTR16 *next_attr = (tGATT_ATTR16 *)first_attr->p_next;
|
||||||
|
/* This service already has other attributes */
|
||||||
|
while (next_attr != NULL) {
|
||||||
|
if (!(next_attr->uuid_type == GATT_ATTR_UUID_TYPE_16 && next_attr->uuid == GATT_UUID_INCLUDE_SERVICE)) {
|
||||||
|
is_include_service_allowed = FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
next_attr = (tGATT_ATTR16 *)next_attr->p_next;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (!is_include_service_allowed) {
|
||||||
|
GATT_TRACE_ERROR("%s error, The include service should be added before adding the characteristics", __func__);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if ((p_attr = (tGATT_ATTR16 *) allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ)) != NULL) {
|
if ((p_attr = (tGATT_ATTR16 *) allocate_attr_in_db(p_db, &uuid, GATT_PERM_READ)) != NULL) {
|
||||||
if (copy_extra_byte_in_db(p_db, (void **)&p_attr->p_value, sizeof(tGATT_INCL_SRVC))) {
|
if (copy_extra_byte_in_db(p_db, (void **)&p_attr->p_value, sizeof(tGATT_INCL_SRVC))) {
|
||||||
p_attr->p_value->incl_handle.s_handle = s_handle;
|
p_attr->p_value->incl_handle.s_handle = s_handle;
|
||||||
|
|
|
@ -22,9 +22,11 @@
|
||||||
.included_service_connection: &included_primary_service_connection
|
.included_service_connection: &included_primary_service_connection
|
||||||
LIST_MERGE:
|
LIST_MERGE:
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
||||||
- ["R SSC2 C +GATTS:LoadProfile,OK,A001", "R SSC2 C +GATTS:StartService,OK,A001"]
|
- ["R SSC2 C +GATTS:CreateService,OK,A001"]
|
||||||
- - "SSC SSC2 gatts -S -z include -p 0xA1 -i 0xA0"
|
- - "SSC SSC2 gatts -S -z include -p 0xA1 -i 0xA0"
|
||||||
- ["R SSC2 C +GATTS:AddIncludedService,OK"]
|
- ["R SSC2 C +GATTS:AddIncludedService,OK"]
|
||||||
|
- - "SSC SSC2 gatts -S -z add -p 0xA1"
|
||||||
|
- ["R SSC2 C +GATTS:StartService,OK,A001"]
|
||||||
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
- ['R SSC1 C +GATTC:OK']
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
||||||
|
@ -35,7 +37,9 @@
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA4"
|
- - "SSC SSC2 gatts -S -z load -p 0xA4"
|
||||||
- ["R SSC2 C +GATTS:StartService,OK,A004"]
|
- ["R SSC2 C +GATTS:StartService,OK,A004"]
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
||||||
- ["R SSC2 C +GATTS:LoadProfile,OK,A001", "R SSC2 C +GATTS:StartService,OK,A001"]
|
- ["R SSC2 C +GATTS:CreateService,OK,A001"]
|
||||||
|
- - "SSC SSC1 gatts -S -z add -p 0xA1"
|
||||||
|
- ["R SSC1 C +GATTS:StartService,OK,A001"]
|
||||||
- - "SSC SSC2 gatts -S -z include -p 0xA1 -i 0xA4"
|
- - "SSC SSC2 gatts -S -z include -p 0xA1 -i 0xA4"
|
||||||
- ["R SSC2 C +GATTS:AddIncludedService,OK"]
|
- ["R SSC2 C +GATTS:AddIncludedService,OK"]
|
||||||
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
|
@ -102,6 +106,8 @@ test cases:
|
||||||
- - "SSC SSC1 gatts -S -z load -p 0xA0"
|
- - "SSC SSC1 gatts -S -z load -p 0xA0"
|
||||||
- ["R SSC1 C +GATTS:StartService,OK,A000"]
|
- ["R SSC1 C +GATTS:StartService,OK,A000"]
|
||||||
- - "SSC SSC1 gatts -S -z load -p 0xA1"
|
- - "SSC SSC1 gatts -S -z load -p 0xA1"
|
||||||
|
- ["R SSC1 C +GATTS:CreateService,OK,A001"]
|
||||||
|
- - "SSC SSC1 gatts -S -z add -p 0xA1"
|
||||||
- ["R SSC1 C +GATTS:StartService,OK,A001"]
|
- ["R SSC1 C +GATTS:StartService,OK,A001"]
|
||||||
- ID: BTSTK_GATT_20001
|
- ID: BTSTK_GATT_20001
|
||||||
<<: *GATT_CASE
|
<<: *GATT_CASE
|
||||||
|
@ -123,6 +129,8 @@ test cases:
|
||||||
- *included_primary_service_connection
|
- *included_primary_service_connection
|
||||||
- - "SSC SSC1 gattc -D -z primaryService -p 0x10"
|
- - "SSC SSC1 gattc -D -z primaryService -p 0x10"
|
||||||
- ["R SSC1 C +GATTC:DiscoverService,A000 C +GATTC:DiscoverService,A001"]
|
- ["R SSC1 C +GATTC:DiscoverService,A000 C +GATTC:DiscoverService,A001"]
|
||||||
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- ID: BTSTK_GATT_20002
|
- ID: BTSTK_GATT_20002
|
||||||
<<: *GATT_CASE
|
<<: *GATT_CASE
|
||||||
test point 2: BLE GATT client service / char discovery
|
test point 2: BLE GATT client service / char discovery
|
||||||
|
@ -147,6 +155,8 @@ test cases:
|
||||||
- ["R SSC1 C +GATTC:DiscoverService,A000 A <handle_range>:GATTC:DiscoverService,A001,(\\d+-\\d+)"]
|
- ["R SSC1 C +GATTC:DiscoverService,A000 A <handle_range>:GATTC:DiscoverService,A001,(\\d+-\\d+)"]
|
||||||
- - "SSC SSC1 gattc -D -z includedService -p 0x10 -s 0xA001 -i 0xA000 -q <handle_range> -k 1"
|
- - "SSC SSC1 gattc -D -z includedService -p 0x10 -s 0xA001 -i 0xA000 -q <handle_range> -k 1"
|
||||||
- ["R SSC1 C +GATTC:IncludedService,0010,A001,A000"]
|
- ["R SSC1 C +GATTC:IncludedService,0010,A001,A000"]
|
||||||
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- ID: BTSTK_GATT_20003
|
- ID: BTSTK_GATT_20003
|
||||||
<<: *GATT_CASE
|
<<: *GATT_CASE
|
||||||
test point 2: BLE GATT client service / char discovery
|
test point 2: BLE GATT client service / char discovery
|
||||||
|
@ -713,7 +723,7 @@ test cases:
|
||||||
cmd set:
|
cmd set:
|
||||||
- ""
|
- ""
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
||||||
- ["R SSC2 C +GATTS:StartService,OK,A001"]
|
- ["R SSC2 C +GATTS:CreateService,OK,A001"]
|
||||||
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
- ['R SSC1 C +GATTC:OK']
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
||||||
|
@ -742,7 +752,7 @@ test cases:
|
||||||
cmd set:
|
cmd set:
|
||||||
- ""
|
- ""
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
||||||
- ["R SSC2 C +GATTS:StartService,OK,A001"]
|
- ["R SSC2 C +GATTS:CreateService,OK,A001"]
|
||||||
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
- ['R SSC1 C +GATTC:OK']
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
||||||
|
@ -1008,7 +1018,7 @@ test cases:
|
||||||
cmd set:
|
cmd set:
|
||||||
- ""
|
- ""
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
||||||
- ["R SSC2 C +GATTS:StartService,OK,A001"]
|
- ["R SSC2 C +GATTS:CreateService,OK,A001"]
|
||||||
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
- ['R SSC1 C +GATTC:OK']
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
||||||
|
@ -1036,7 +1046,7 @@ test cases:
|
||||||
cmd set:
|
cmd set:
|
||||||
- ""
|
- ""
|
||||||
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
- - "SSC SSC2 gatts -S -z load -p 0xA1"
|
||||||
- ["R SSC2 C +GATTS:StartService,OK,A001"]
|
- ["R SSC2 C +GATTS:CreateService,OK,A001"]
|
||||||
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
|
||||||
- ['R SSC1 C +GATTC:OK']
|
- ['R SSC1 C +GATTC:OK']
|
||||||
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
|
||||||
|
|
Loading…
Reference in a new issue