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 (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;
.included_service_connection: &included_primary_service_connection
LIST_MERGE:
- - "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"
- ["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>
- ['R SSC1 C +GATTC:OK']
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
- - "SSC SSC2 gatts -S -z load -p 0xA4"
- ["R SSC2 C +GATTS:StartService,OK,A004"]
- - "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"
- ["R SSC2 C +GATTS:AddIncludedService,OK"]
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
- - "SSC SSC1 gatts -S -z load -p 0xA0"
- ["R SSC1 C +GATTS:StartService,OK,A000"]
- - "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"]
- ID: BTSTK_GATT_20001
<<: *GATT_CASE
- *included_primary_service_connection
- - "SSC SSC1 gattc -D -z primaryService -p 0x10"
- ["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
<<: *GATT_CASE
test point 2: BLE GATT client service / char discovery
- ["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"
- ["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
<<: *GATT_CASE
test point 2: BLE GATT client service / char discovery
cmd set:
- ""
- - "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>
- ['R SSC1 C +GATTC:OK']
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
cmd set:
- ""
- - "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>
- ['R SSC1 C +GATTC:OK']
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
cmd set:
- ""
- - "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>
- ['R SSC1 C +GATTC:OK']
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"
cmd set:
- ""
- - "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>
- ['R SSC1 C +GATTC:OK']
- - "SSC SSC1 bleconn -C -p 0x10 -a <dut2_bt_mac>"