mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-16 23:45:37 +08:00
97075679fe
This removes dead code due to memory allocation with new0 not being able to fail.
3679 lines
132 KiB
C
3679 lines
132 KiB
C
/*
|
|
* Copyright (C) 2014 Intel Corporation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "emulator/bthost.h"
|
|
#include "lib/bluetooth.h"
|
|
#include "src/shared/util.h"
|
|
#include "src/shared/tester.h"
|
|
#include "src/shared/queue.h"
|
|
#include "tester-main.h"
|
|
|
|
#define ATT_HANDLE_SIZE 2
|
|
|
|
#define L2CAP_ATT_ERROR 0x01
|
|
#define L2CAP_ATT_EXCHANGE_MTU_REQ 0x02
|
|
#define L2CAP_ATT_EXCHANGE_MTU_RSP 0x03
|
|
#define L2CAP_ATT_FIND_BY_TYPE_REQ 0x06
|
|
#define L2CAP_ATT_READ_REQ 0x0a
|
|
#define L2CAP_ATT_READ_RSP 0x0b
|
|
#define L2CAP_ATT_WRITE_REQ 0x12
|
|
#define L2CAP_ATT_WRITE_RSP 0x13
|
|
#define L2CAP_ATT_HANDLE_VALUE_NOTIFY 0x1b
|
|
#define L2CAP_ATT_HANDLE_VALUE_IND 0x1d
|
|
|
|
#define GATT_STATUS_SUCCESS 0x00000000
|
|
#define GATT_STATUS_FAILURE 0x00000101
|
|
#define GATT_STATUS_INS_AUTH 0x08
|
|
|
|
#define GATT_ERR_INVAL_ATTR_VALUE_LEN 0x0D
|
|
|
|
#define GATT_SERVER_DISCONNECTED 0
|
|
#define GATT_SERVER_CONNECTED 1
|
|
|
|
#define APP1_ID 1
|
|
#define APP2_ID 2
|
|
|
|
#define CONN1_ID 1
|
|
#define CONN2_ID 2
|
|
|
|
#define TRANS1_ID 1
|
|
|
|
#define BT_TRANSPORT_UNKNOWN 0x00
|
|
|
|
#define GATT_SERVER_TRANSPORT_LE 0x01
|
|
#define GATT_SERVER_TRANSPORT_BREDR 0x02
|
|
#define GATT_SERVER_TRANSPORT_LE_BREDR (0x01 | 0x02)
|
|
|
|
#define GATT_WRITE_TYPE_NO_RESPONSE 0x01
|
|
#define GATT_WRITE_TYPE_DEFAULT 0x02
|
|
#define GATT_WRITE_TYPE_PREPARE 0x03
|
|
#define GATT_WRITE_TYPE_SIGNED 0x04
|
|
|
|
#define CHAR_PROP_BROADCAST 0x01
|
|
#define CHAR_PROP_READ 0x02
|
|
#define CHAR_PROP_WRITE_WITHOUT_RESPONSE 0x04
|
|
#define CHAR_PROP_WRITE 0x08
|
|
#define CHAR_PROP_NOTIFY 0x10
|
|
#define CHAR_PROP_INDICATE 0x20
|
|
#define CHAR_PROP_AUTHENTICATED_SIGNED_WRITES 0x40
|
|
#define CHAR_PROP_EXTENDED_PROPERTIES 0x80
|
|
|
|
#define CHAR_PERM_READ 0x0001
|
|
#define CHAR_PERM_READ_ENCRYPTED 0x0002
|
|
#define CHAR_PERM_READ_ENCRYPTED_MITM 0x0004
|
|
#define CHAR_PERM_WRITE 0x0010
|
|
#define CHAR_PERM_WRITE_ENCRYPTED 0x0020
|
|
#define CHAR_PERM_WRITE_ENCRYPTED_MITM 0x0040
|
|
#define CHAR_PERM_WRITE_SIGNED 0x0080
|
|
#define CHAR_PERM_WRITE_SIGNED_MITM 0x0100
|
|
|
|
static struct queue *list; /* List of gatt test cases */
|
|
|
|
static uint16_t srvc1_handle;
|
|
static uint16_t inc_srvc1_handle;
|
|
static uint16_t char1_handle;
|
|
|
|
static struct iovec char1_handle_v = {
|
|
.iov_base = &char1_handle,
|
|
.iov_len = sizeof(char1_handle),
|
|
};
|
|
|
|
struct set_att_data {
|
|
char *to;
|
|
char *from;
|
|
int len;
|
|
};
|
|
|
|
struct att_write_req_data {
|
|
uint16_t *attr_handle;
|
|
uint8_t *value;
|
|
};
|
|
|
|
static bt_uuid_t app1_uuid = {
|
|
.uu = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
|
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 },
|
|
};
|
|
|
|
static bt_uuid_t app2_uuid = {
|
|
.uu = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
|
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 },
|
|
};
|
|
|
|
static uint8_t value_1[] = {0x01};
|
|
|
|
static uint8_t att_write_req_value_1[] = {0x00, 0x01, 0x02, 0x03};
|
|
static struct iovec att_write_req_value_1_v = {
|
|
.iov_base = att_write_req_value_1,
|
|
.iov_len = sizeof(att_write_req_value_1),
|
|
};
|
|
|
|
struct gatt_connect_data {
|
|
const int app_id;
|
|
const int conn_id;
|
|
};
|
|
|
|
struct gatt_search_service_data {
|
|
const int conn_id;
|
|
bt_uuid_t *filter_uuid;
|
|
};
|
|
|
|
struct get_char_data {
|
|
const int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
};
|
|
|
|
struct get_desc_data {
|
|
const int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_gatt_id_t *characteristic;
|
|
btgatt_gatt_id_t *desc;
|
|
};
|
|
|
|
struct get_incl_data {
|
|
const int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_srvc_id_t *start_service;
|
|
};
|
|
|
|
struct read_char_data {
|
|
const int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_gatt_id_t *characteristic;
|
|
int auth_req;
|
|
};
|
|
|
|
struct read_desc_data {
|
|
const int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_gatt_id_t *characteristic;
|
|
btgatt_gatt_id_t *descriptor;
|
|
int auth_req;
|
|
};
|
|
|
|
struct write_char_data {
|
|
int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_gatt_id_t *characteristic;
|
|
int write_type;
|
|
int len;
|
|
int auth_req;
|
|
char *p_value;
|
|
};
|
|
|
|
struct write_desc_data {
|
|
int conn_id;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_gatt_id_t *characteristic;
|
|
btgatt_gatt_id_t *descriptor;
|
|
int write_type;
|
|
int len;
|
|
int auth_req;
|
|
char *p_value;
|
|
};
|
|
|
|
struct notif_data {
|
|
int conn_id;
|
|
const bt_bdaddr_t *bdaddr;
|
|
btgatt_srvc_id_t *service;
|
|
btgatt_gatt_id_t *charac;
|
|
};
|
|
|
|
struct add_service_data {
|
|
int app_id;
|
|
btgatt_srvc_id_t *service;
|
|
int num_handles;
|
|
};
|
|
|
|
struct add_included_service_data {
|
|
int app_id;
|
|
uint16_t *inc_srvc_handle;
|
|
uint16_t *srvc_handle;
|
|
};
|
|
struct add_char_data {
|
|
int app_id;
|
|
uint16_t *srvc_handle;
|
|
bt_uuid_t *uuid;
|
|
int properties;
|
|
int permissions;
|
|
};
|
|
|
|
struct add_desc_data {
|
|
int app_id;
|
|
uint16_t *srvc_handle;
|
|
bt_uuid_t *uuid;
|
|
int permissions;
|
|
};
|
|
|
|
struct start_srvc_data {
|
|
int app_id;
|
|
uint16_t *srvc_handle;
|
|
int transport;
|
|
};
|
|
|
|
struct stop_srvc_data {
|
|
int app_id;
|
|
uint16_t *srvc_handle;
|
|
};
|
|
|
|
struct delete_srvc_data {
|
|
int app_id;
|
|
uint16_t *srvc_handle;
|
|
};
|
|
|
|
struct send_indication_data {
|
|
int app_id;
|
|
uint16_t *attr_handle;
|
|
int conn_id;
|
|
int len;
|
|
int confirm;
|
|
char *p_value;
|
|
};
|
|
|
|
struct send_resp_data {
|
|
int conn_id;
|
|
int trans_id;
|
|
int status;
|
|
btgatt_response_t *response;
|
|
};
|
|
|
|
static bt_bdaddr_t emu_remote_bdaddr_val = {
|
|
.address = { 0x00, 0xaa, 0x01, 0x01, 0x00, 0x00 },
|
|
};
|
|
static bt_device_type_t emu_remote_ble_device_type = BT_DEVICE_DEVTYPE_BLE;
|
|
|
|
static bt_property_t prop_emu_remotes_default_set[] = {
|
|
{ BT_PROPERTY_BDADDR, sizeof(emu_remote_bdaddr_val),
|
|
&emu_remote_bdaddr_val },
|
|
};
|
|
static bt_property_t prop_emu_remotes_default_le_set[] = {
|
|
{ BT_PROPERTY_BDADDR, sizeof(emu_remote_bdaddr_val),
|
|
&emu_remote_bdaddr_val },
|
|
{ BT_PROPERTY_TYPE_OF_DEVICE, sizeof(bt_device_type_t),
|
|
&emu_remote_ble_device_type },
|
|
};
|
|
|
|
static struct bt_action_data prop_test_remote_ble_bdaddr_req = {
|
|
.addr = &emu_remote_bdaddr_val,
|
|
.prop_type = BT_PROPERTY_BDADDR,
|
|
.prop = &prop_emu_remotes_default_set[0],
|
|
};
|
|
|
|
static bt_scan_mode_t setprop_scan_mode_conn_val =
|
|
BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE;
|
|
|
|
static bt_property_t prop_test_scan_mode_conn = {
|
|
.type = BT_PROPERTY_ADAPTER_SCAN_MODE,
|
|
.val = &setprop_scan_mode_conn_val,
|
|
.len = sizeof(setprop_scan_mode_conn_val),
|
|
};
|
|
|
|
static struct emu_l2cap_cid_data cid_data;
|
|
|
|
static struct gatt_connect_data app1_conn_req = {
|
|
.app_id = APP1_ID,
|
|
.conn_id = CONN1_ID,
|
|
};
|
|
|
|
static struct gatt_connect_data app1_conn2_req = {
|
|
.app_id = APP1_ID,
|
|
.conn_id = CONN2_ID,
|
|
};
|
|
|
|
static struct gatt_connect_data app2_conn_req = {
|
|
.app_id = APP2_ID,
|
|
.conn_id = CONN2_ID,
|
|
};
|
|
|
|
static struct gatt_search_service_data search_services_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.filter_uuid = NULL,
|
|
};
|
|
|
|
static const struct iovec exchange_mtu_req_pdu = raw_pdu(0x02, 0xa0, 0x02);
|
|
static const struct iovec exchange_mtu_resp_pdu = raw_pdu(0x03, 0xa0, 0x02);
|
|
|
|
static struct bt_action_data bearer_type = {
|
|
.bearer_type = BDADDR_LE_PUBLIC,
|
|
};
|
|
|
|
static btgatt_srvc_id_t service_1 = {
|
|
.is_primary = true,
|
|
.id = {
|
|
.inst_id = 0,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00}
|
|
}
|
|
};
|
|
|
|
static btgatt_srvc_id_t service_2 = {
|
|
.is_primary = true,
|
|
.id = {
|
|
.inst_id = 1,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00},
|
|
}
|
|
};
|
|
|
|
static btgatt_srvc_id_t service_add_1 = {
|
|
.is_primary = true,
|
|
.id = {
|
|
.inst_id = 0,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00},
|
|
}
|
|
};
|
|
|
|
static btgatt_srvc_id_t service_add_2 = {
|
|
.is_primary = true,
|
|
.id = {
|
|
.inst_id = 1,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0xFF, 0xDF, 0x00, 0x00},
|
|
}
|
|
};
|
|
|
|
static btgatt_srvc_id_t service_add_3 = {
|
|
.is_primary = true,
|
|
.id = {
|
|
.inst_id = 2,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0xFF, 0xCF, 0x00, 0x00},
|
|
}
|
|
};
|
|
|
|
static btgatt_srvc_id_t included_1 = {
|
|
.is_primary = false,
|
|
.id = {
|
|
.inst_id = 1,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00},
|
|
}
|
|
};
|
|
|
|
static btgatt_srvc_id_t included_2 = {
|
|
.is_primary = false,
|
|
.id = {
|
|
.inst_id = 1,
|
|
.uuid.uu = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10},
|
|
}
|
|
};
|
|
|
|
static btgatt_gatt_id_t characteristic_1 = {
|
|
.inst_id = 1,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00}
|
|
};
|
|
|
|
static btgatt_gatt_id_t desc_1 = {
|
|
.inst_id = 1,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00}
|
|
};
|
|
|
|
static btgatt_gatt_id_t desc_2 = {
|
|
.inst_id = 2,
|
|
.uuid.uu = {0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
|
|
0x00, 0x10, 0x00, 0x00, 0x01, 0x29, 0x00, 0x00}
|
|
};
|
|
|
|
static btgatt_read_params_t read_params_1;
|
|
static btgatt_write_params_t write_params_1;
|
|
static btgatt_notify_params_t notify_params_1;
|
|
|
|
static struct get_char_data get_char_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1
|
|
};
|
|
|
|
static struct get_char_data get_char_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_2
|
|
};
|
|
|
|
static struct get_desc_data get_desc_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
};
|
|
|
|
static struct get_desc_data get_desc_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.desc = &desc_1,
|
|
};
|
|
|
|
static struct read_char_data read_char_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
};
|
|
|
|
static struct read_char_data read_char_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_2,
|
|
.characteristic = &characteristic_1,
|
|
};
|
|
|
|
static struct read_desc_data read_desc_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.descriptor = &desc_1,
|
|
};
|
|
|
|
static struct read_desc_data read_desc_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.descriptor = &desc_2,
|
|
};
|
|
|
|
static struct get_incl_data get_incl_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1
|
|
};
|
|
|
|
static char value_2[] = {0x00, 0x01, 0x02, 0x03};
|
|
|
|
static struct write_char_data write_char_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.write_type = GATT_WRITE_TYPE_NO_RESPONSE,
|
|
.len = sizeof(value_2),
|
|
.p_value = value_2,
|
|
.auth_req = 0
|
|
};
|
|
|
|
static struct write_char_data write_char_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.write_type = GATT_WRITE_TYPE_DEFAULT,
|
|
.len = sizeof(value_2),
|
|
.p_value = value_2,
|
|
.auth_req = 0
|
|
};
|
|
|
|
static struct write_desc_data write_desc_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.descriptor = &desc_1,
|
|
.write_type = 2,
|
|
.len = sizeof(value_2),
|
|
.auth_req = 0,
|
|
.p_value = value_2,
|
|
};
|
|
|
|
static struct write_desc_data write_desc_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.characteristic = &characteristic_1,
|
|
.descriptor = &desc_2,
|
|
.write_type = 2,
|
|
.len = sizeof(value_2),
|
|
.auth_req = 0,
|
|
.p_value = value_2,
|
|
};
|
|
|
|
static struct notif_data notif_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.service = &service_1,
|
|
.charac = &characteristic_1,
|
|
.bdaddr = &emu_remote_bdaddr_val,
|
|
};
|
|
|
|
static struct add_service_data add_service_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_1,
|
|
.num_handles = 1
|
|
};
|
|
|
|
static struct add_service_data add_service_data_2 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_2,
|
|
.num_handles = 1
|
|
};
|
|
|
|
static struct add_service_data add_service_data_3 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_3,
|
|
.num_handles = 1
|
|
};
|
|
|
|
static struct add_service_data add_service_data_4 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_1,
|
|
.num_handles = 2
|
|
};
|
|
|
|
static struct add_service_data add_service_data_5 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_1,
|
|
.num_handles = 3
|
|
};
|
|
|
|
static struct add_service_data add_service_data_6 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_1,
|
|
.num_handles = 4
|
|
};
|
|
|
|
static struct add_service_data add_bad_service_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.service = &service_add_1,
|
|
.num_handles = 0
|
|
};
|
|
|
|
static struct add_service_data add_sec_service_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.service = &included_1,
|
|
.num_handles = 1
|
|
};
|
|
|
|
static uint16_t srvc_bad_handle = 0xffff;
|
|
|
|
static struct add_included_service_data add_inc_service_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.inc_srvc_handle = &inc_srvc1_handle,
|
|
.srvc_handle = &srvc1_handle
|
|
};
|
|
|
|
static struct add_included_service_data add_bad_inc_service_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.inc_srvc_handle = &srvc_bad_handle,
|
|
.srvc_handle = &srvc1_handle
|
|
};
|
|
|
|
static struct add_char_data add_char_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.uuid = &app1_uuid,
|
|
.properties = 0,
|
|
.permissions = 0
|
|
};
|
|
|
|
static struct add_char_data add_char_data_2 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.uuid = &app1_uuid,
|
|
.properties = CHAR_PROP_WRITE,
|
|
.permissions = CHAR_PERM_WRITE
|
|
};
|
|
|
|
static struct add_char_data add_bad_char_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc_bad_handle,
|
|
.uuid = &app1_uuid,
|
|
.properties = 0,
|
|
.permissions = 0
|
|
};
|
|
|
|
static struct add_desc_data add_bad_desc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc_bad_handle,
|
|
.uuid = &app2_uuid,
|
|
.permissions = 0
|
|
};
|
|
|
|
static struct add_desc_data add_bad_desc_data_2 = {
|
|
.app_id = APP2_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.uuid = &app2_uuid,
|
|
.permissions = 0
|
|
};
|
|
|
|
static struct add_desc_data add_desc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.uuid = &app2_uuid,
|
|
.permissions = 0
|
|
};
|
|
|
|
static struct start_srvc_data start_srvc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.transport = GATT_SERVER_TRANSPORT_LE_BREDR
|
|
};
|
|
|
|
static struct start_srvc_data start_srvc_data_2 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.transport = GATT_SERVER_TRANSPORT_LE
|
|
};
|
|
|
|
static struct start_srvc_data start_bad_srvc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc_bad_handle,
|
|
.transport = GATT_SERVER_TRANSPORT_LE
|
|
};
|
|
|
|
static struct start_srvc_data start_bad_srvc_data_2 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle,
|
|
.transport = 0
|
|
};
|
|
|
|
static struct stop_srvc_data stop_srvc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle
|
|
};
|
|
|
|
static struct stop_srvc_data stop_bad_srvc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc_bad_handle
|
|
};
|
|
|
|
static struct delete_srvc_data delete_srvc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc1_handle
|
|
};
|
|
|
|
static struct delete_srvc_data delete_bad_srvc_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.srvc_handle = &srvc_bad_handle
|
|
};
|
|
|
|
static uint16_t srvc_indication_handle_1 = 0x01;
|
|
|
|
static struct send_indication_data send_indication_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.attr_handle = &srvc_indication_handle_1,
|
|
.conn_id = CONN1_ID,
|
|
.len = sizeof(value_2),
|
|
.p_value = value_2,
|
|
.confirm = 1
|
|
};
|
|
|
|
static struct send_indication_data send_indication_data_2 = {
|
|
.app_id = APP1_ID,
|
|
.attr_handle = &srvc_indication_handle_1,
|
|
.conn_id = CONN1_ID,
|
|
.len = sizeof(value_2),
|
|
.p_value = value_2,
|
|
.confirm = 0
|
|
};
|
|
|
|
static struct send_indication_data send_bad_indication_data_1 = {
|
|
.app_id = APP1_ID,
|
|
.attr_handle = &srvc_indication_handle_1,
|
|
.conn_id = CONN2_ID,
|
|
.len = sizeof(value_2),
|
|
.p_value = value_2,
|
|
.confirm = 0
|
|
};
|
|
|
|
struct set_read_params {
|
|
btgatt_read_params_t *params;
|
|
btgatt_srvc_id_t *srvc_id;
|
|
btgatt_gatt_id_t *char_id;
|
|
btgatt_gatt_id_t *descr_id;
|
|
uint8_t *value;
|
|
uint16_t len;
|
|
uint16_t value_type;
|
|
uint8_t status;
|
|
};
|
|
|
|
struct set_write_params {
|
|
btgatt_write_params_t *params;
|
|
btgatt_srvc_id_t *srvc_id;
|
|
btgatt_gatt_id_t *char_id;
|
|
btgatt_gatt_id_t *descr_id;
|
|
uint8_t status;
|
|
};
|
|
|
|
struct set_notify_params {
|
|
btgatt_notify_params_t *params;
|
|
uint8_t *value;
|
|
uint16_t len;
|
|
uint8_t is_notify;
|
|
btgatt_srvc_id_t *srvc_id;
|
|
btgatt_gatt_id_t *char_id;
|
|
bt_bdaddr_t *bdaddr;
|
|
};
|
|
|
|
static struct set_read_params set_read_param_1 = {
|
|
.params = &read_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.value = value_1,
|
|
.len = sizeof(value_1),
|
|
.status = BT_STATUS_SUCCESS
|
|
};
|
|
|
|
static struct set_read_params set_read_param_2 = {
|
|
.params = &read_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.status = GATT_STATUS_INS_AUTH
|
|
};
|
|
|
|
static struct set_read_params set_read_param_3 = {
|
|
.params = &read_params_1,
|
|
.srvc_id = &service_2,
|
|
.char_id = &characteristic_1,
|
|
.status = BT_STATUS_FAIL
|
|
};
|
|
|
|
static struct set_read_params set_read_param_4 = {
|
|
.params = &read_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.descr_id = &desc_1,
|
|
.value = value_1,
|
|
.len = sizeof(value_1),
|
|
.status = BT_STATUS_SUCCESS
|
|
};
|
|
|
|
static struct set_read_params set_read_param_5 = {
|
|
.params = &read_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.descr_id = &desc_1,
|
|
.status = GATT_STATUS_INS_AUTH
|
|
};
|
|
|
|
static struct set_read_params set_read_param_6 = {
|
|
.params = &read_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.descr_id = &desc_2,
|
|
.status = BT_STATUS_FAIL
|
|
};
|
|
|
|
static struct set_write_params set_write_param_1 = {
|
|
.params = &write_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.status = BT_STATUS_SUCCESS
|
|
};
|
|
|
|
static struct set_write_params set_write_param_2 = {
|
|
.params = &write_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.status = GATT_STATUS_INS_AUTH
|
|
};
|
|
|
|
static struct set_write_params set_write_param_3 = {
|
|
.params = &write_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.status = BT_STATUS_FAIL
|
|
};
|
|
|
|
static struct set_write_params set_write_param_4 = {
|
|
.params = &write_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.descr_id = &desc_1,
|
|
.status = BT_STATUS_SUCCESS
|
|
};
|
|
|
|
static struct set_write_params set_write_param_5 = {
|
|
.params = &write_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.descr_id = &desc_2,
|
|
.status = BT_STATUS_FAIL
|
|
};
|
|
|
|
static struct set_write_params set_write_param_6 = {
|
|
.params = &write_params_1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.descr_id = &desc_1,
|
|
.status = GATT_STATUS_INS_AUTH
|
|
};
|
|
|
|
static struct set_notify_params set_notify_param_1 = {
|
|
.params = ¬ify_params_1,
|
|
.value = value_1,
|
|
.len = sizeof(value_1),
|
|
.is_notify = 0,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.bdaddr = &emu_remote_bdaddr_val
|
|
};
|
|
|
|
static struct set_notify_params set_notify_param_2 = {
|
|
.params = ¬ify_params_1,
|
|
.value = value_1,
|
|
.len = sizeof(value_1),
|
|
.is_notify = 1,
|
|
.srvc_id = &service_1,
|
|
.char_id = &characteristic_1,
|
|
.bdaddr = &emu_remote_bdaddr_val
|
|
};
|
|
|
|
static btgatt_response_t response_1 = {
|
|
.handle = 0x1c,
|
|
.attr_value.auth_req = 0,
|
|
.attr_value.handle = 0x1d,
|
|
.attr_value.len = 0,
|
|
.attr_value.offset = 0,
|
|
};
|
|
|
|
static btgatt_response_t response_2 = {
|
|
.handle = 0x1c,
|
|
.attr_value.auth_req = 0,
|
|
.attr_value.handle = 0x1d,
|
|
.attr_value.len = sizeof(att_write_req_value_1),
|
|
.attr_value.offset = 0,
|
|
};
|
|
|
|
static struct send_resp_data send_resp_data_1 = {
|
|
.conn_id = CONN1_ID,
|
|
.trans_id = TRANS1_ID,
|
|
.status = BT_STATUS_SUCCESS,
|
|
.response = &response_1,
|
|
};
|
|
|
|
static struct send_resp_data send_resp_data_2 = {
|
|
.conn_id = CONN1_ID,
|
|
.trans_id = TRANS1_ID,
|
|
.status = BT_STATUS_SUCCESS,
|
|
.response = &response_2,
|
|
};
|
|
|
|
static struct send_resp_data send_resp_data_2_error = {
|
|
.conn_id = CONN1_ID,
|
|
.trans_id = TRANS1_ID,
|
|
.status = GATT_ERR_INVAL_ATTR_VALUE_LEN,
|
|
.response = &response_2,
|
|
};
|
|
|
|
#define SEARCH_SERVICE_SINGLE_SUCCESS_PDUS \
|
|
raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28), \
|
|
raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18), \
|
|
raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28), \
|
|
raw_pdu(0x01, 0x10, 0x11, 0x00, 0x0a)
|
|
|
|
#define READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS \
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28), \
|
|
raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x00, 0x00, 0x19, 0x00), \
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28), \
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a)
|
|
|
|
static struct iovec search_service[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec search_service_2[] = {
|
|
raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
|
|
raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x00, 0x18),
|
|
raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x00, 0x28),
|
|
raw_pdu(0x11, 0x06, 0x11, 0x00, 0x20, 0x00, 0x01, 0x18),
|
|
raw_pdu(0x10, 0x21, 0x00, 0xff, 0xff, 0x00, 0x28),
|
|
raw_pdu(0x01, 0x10, 0x21, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec search_service_3[] = {
|
|
raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec search_service_4[] = {
|
|
raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
|
|
raw_pdu(0x11, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_characteristic_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_characteristic_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x09, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x19, 0x00),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_descriptor_0[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x00, 0x00, 0x00, 0x29),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_descriptor_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
|
|
raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_descriptor_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29, 0x05, 0x00, 0x01, 0x29),
|
|
raw_pdu(0x04, 0x06, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x06, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_descriptor_3[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x01, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_included_0[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x02, 0x28),
|
|
raw_pdu(0x09, 0x08, 0x00, 0x00, 0x15, 0x00, 0x19, 0x00, 0xff, 0xfe),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_included_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x02, 0x28),
|
|
raw_pdu(0x09, 0x08, 0x02, 0x00, 0x15, 0x00, 0x19, 0x00, 0xff, 0xfe),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x02, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_included_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x02, 0x28),
|
|
raw_pdu(0x09, 0x06, 0x02, 0x00, 0x15, 0x00, 0x19, 0x00),
|
|
raw_pdu(0x0a, 0x15, 0x00),
|
|
raw_pdu(0x0b, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
|
|
0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x02, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec get_included_3[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x02, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec read_characteristic_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
raw_pdu(0x0a, 0x03, 0x00),
|
|
raw_pdu(0x0b, 0x01),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec read_characteristic_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
raw_pdu(0x0a, 0x03, 0x00),
|
|
raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x08),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec read_descriptor_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
|
|
raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
|
|
raw_pdu(0x0a, 0x04, 0x00),
|
|
raw_pdu(0x0b, 0x01),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec read_descriptor_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
|
|
raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
|
|
raw_pdu(0x0a, 0x04, 0x00),
|
|
raw_pdu(0x01, 0x0a, 0x04, 0x00, 0x08),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec write_characteristic_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
raw_pdu(0x52, 0x03, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec write_characteristic_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
raw_pdu(0x12, 0x03, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
raw_pdu(0x13),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec write_characteristic_3[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x09, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00, 0x19, 0x00),
|
|
raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),
|
|
raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),
|
|
raw_pdu(0x12, 0x03, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
raw_pdu(0x01, 0x12, 0x03, 0x00, 0x08),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec write_descriptor_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
|
|
raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
|
|
raw_pdu(0x12, 0x04, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
raw_pdu(0x13),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec write_descriptor_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x04, 0x01, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x05, 0x01, 0x04, 0x00, 0x00, 0x29),
|
|
raw_pdu(0x04, 0x05, 0x00, 0x10, 0x00),
|
|
raw_pdu(0x01, 0x04, 0x05, 0x00, 0x0a),
|
|
raw_pdu(0x12, 0x04, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
raw_pdu(0x01, 0x12, 0x04, 0x00, 0x08),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec notification_1[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec notification_2[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x1d, 0x03, 0x00, 0x01),
|
|
raw_pdu(0x1e),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec notification_3[] = {
|
|
SEARCH_SERVICE_SINGLE_SUCCESS_PDUS,
|
|
READ_BY_TYPE_SINGLE_CHARACTERISTIC_PDUS,
|
|
raw_pdu(0x1b, 0x03, 0x00, 0x01),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec send_indication_1[] = {
|
|
raw_pdu(0x1d, 0x01, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
raw_pdu(0x1e),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec send_notification_1[] = {
|
|
raw_pdu(0x1b, 0x01, 0x00, 0x00, 0x01, 0x02, 0x03),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec search_range_1[] = {
|
|
raw_pdu(0x01, 0xff, 0xff, 0xff),
|
|
end_pdu
|
|
};
|
|
|
|
static struct iovec primary_type = raw_pdu(0x00, 0x28);
|
|
|
|
/* att commands define raw pdus */
|
|
static struct iovec att_read_req_op_v = raw_pdu(L2CAP_ATT_READ_REQ);
|
|
static struct iovec att_write_req_op_v = raw_pdu(L2CAP_ATT_WRITE_REQ);
|
|
static struct iovec att_find_by_type_req_op_v =
|
|
raw_pdu(L2CAP_ATT_FIND_BY_TYPE_REQ);
|
|
|
|
static struct iovec svc_change_ccc_handle_v = raw_pdu(0x1c, 0x00);
|
|
static struct iovec svc_change_ccc_value_v = raw_pdu(0x00, 0x01);
|
|
|
|
static void gatt_client_register_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
bt_uuid_t *app_uuid = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
if (!app_uuid) {
|
|
tester_warn("No app uuid provided for register action.");
|
|
return;
|
|
}
|
|
|
|
step->action_status = data->if_gatt->client->register_client(app_uuid);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_unregister_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
int32_t cl_id = PTR_TO_INT(current_data_step->set_data);
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->unregister_client(cl_id);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_start_scan_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->scan(TRUE);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_stop_scan_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->scan(FALSE);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_connect_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct gatt_connect_data *conn_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->connect(
|
|
conn_data->app_id,
|
|
&emu_remote_bdaddr_val, 0,
|
|
BT_TRANSPORT_UNKNOWN);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_disconnect_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct gatt_connect_data *conn_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->disconnect(
|
|
conn_data->app_id,
|
|
&emu_remote_bdaddr_val,
|
|
conn_data->conn_id);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_do_listen_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct gatt_connect_data *conn_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->listen(
|
|
conn_data->app_id,
|
|
1);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_stop_listen_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct gatt_connect_data *conn_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->client->listen(
|
|
conn_data->app_id,
|
|
0);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_get_characteristic_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct get_char_data *get_char = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->get_characteristic(get_char->conn_id,
|
|
get_char->service, NULL);
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_get_descriptor_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct get_desc_data *get_desc = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->get_descriptor(get_desc->conn_id, get_desc->service,
|
|
get_desc->characteristic,
|
|
get_desc->desc);
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_get_included_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct get_incl_data *get_incl = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->get_included_service(get_incl->conn_id,
|
|
get_incl->service, get_incl->start_service);
|
|
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_read_characteristic_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct read_char_data *read_char_data = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->read_characteristic(read_char_data->conn_id,
|
|
read_char_data->service, read_char_data->characteristic,
|
|
read_char_data->auth_req);
|
|
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_read_descriptor_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct read_desc_data *read_desc_data = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->read_descriptor(read_desc_data->conn_id,
|
|
read_desc_data->service, read_desc_data->characteristic,
|
|
read_desc_data->descriptor,
|
|
read_desc_data->auth_req);
|
|
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_write_characteristic_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct write_char_data *write_char_data = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->write_characteristic(write_char_data->conn_id,
|
|
write_char_data->service,
|
|
write_char_data->characteristic,
|
|
write_char_data->write_type,
|
|
write_char_data->len,
|
|
write_char_data->auth_req,
|
|
write_char_data->p_value);
|
|
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_register_for_notification_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct notif_data *notif_data = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->register_for_notification(notif_data->conn_id,
|
|
notif_data->bdaddr,
|
|
notif_data->service,
|
|
notif_data->charac);
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_deregister_for_notification_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct notif_data *notif_data = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->deregister_for_notification(notif_data->conn_id,
|
|
notif_data->bdaddr,
|
|
notif_data->service,
|
|
notif_data->charac);
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_register_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
bt_uuid_t *app_uuid = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
if (!app_uuid) {
|
|
tester_warn("No app uuid provided for register action.");
|
|
return;
|
|
}
|
|
|
|
step->action_status = data->if_gatt->server->register_server(app_uuid);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_unregister_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
int32_t sr_id = PTR_TO_INT(current_data_step->set_data);
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->unregister_server(sr_id);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_connect_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct gatt_connect_data *conn_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->connect(
|
|
conn_data->app_id,
|
|
&emu_remote_bdaddr_val, 0,
|
|
BT_TRANSPORT_UNKNOWN);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_disconnect_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct gatt_connect_data *conn_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->disconnect(
|
|
conn_data->app_id,
|
|
&emu_remote_bdaddr_val,
|
|
conn_data->conn_id);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_add_service_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct add_service_data *add_srvc_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->add_service(
|
|
add_srvc_data->app_id,
|
|
add_srvc_data->service,
|
|
add_srvc_data->num_handles);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_add_inc_service_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct add_included_service_data *add_inc_srvc_data =
|
|
current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->add_included_service(
|
|
add_inc_srvc_data->app_id,
|
|
*add_inc_srvc_data->srvc_handle,
|
|
*add_inc_srvc_data->inc_srvc_handle);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_add_char_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct add_char_data *add_char_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->add_characteristic(
|
|
add_char_data->app_id,
|
|
*add_char_data->srvc_handle,
|
|
add_char_data->uuid,
|
|
add_char_data->properties,
|
|
add_char_data->permissions);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_add_desc_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct add_desc_data *add_desc_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->add_descriptor(
|
|
add_desc_data->app_id,
|
|
*add_desc_data->srvc_handle,
|
|
add_desc_data->uuid,
|
|
add_desc_data->permissions);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_client_write_descriptor_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct write_desc_data *write_desc_data = current_data_step->set_data;
|
|
const btgatt_client_interface_t *client = data->if_gatt->client;
|
|
struct step *step = g_new0(struct step, 1);
|
|
int status;
|
|
|
|
status = client->write_descriptor(write_desc_data->conn_id,
|
|
write_desc_data->service,
|
|
write_desc_data->characteristic,
|
|
write_desc_data->descriptor,
|
|
write_desc_data->write_type,
|
|
write_desc_data->len,
|
|
write_desc_data->auth_req,
|
|
write_desc_data->p_value);
|
|
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_start_srvc_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct start_srvc_data *start_srvc_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->start_service(
|
|
start_srvc_data->app_id,
|
|
*start_srvc_data->srvc_handle,
|
|
start_srvc_data->transport);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_stop_srvc_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct stop_srvc_data *stop_srvc_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->stop_service(
|
|
stop_srvc_data->app_id,
|
|
*stop_srvc_data->srvc_handle);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_delete_srvc_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct delete_srvc_data *delete_srvc_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->delete_service(
|
|
delete_srvc_data->app_id,
|
|
*delete_srvc_data->srvc_handle);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_send_indication_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct send_indication_data *send_indication_data =
|
|
current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->send_indication(
|
|
send_indication_data->app_id,
|
|
*send_indication_data->attr_handle,
|
|
send_indication_data->conn_id,
|
|
send_indication_data->len,
|
|
send_indication_data->confirm,
|
|
send_indication_data->p_value);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_server_send_response_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct send_resp_data *send_resp_data = current_data_step->set_data;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
step->action_status = data->if_gatt->server->send_response(
|
|
send_resp_data->conn_id,
|
|
send_resp_data->trans_id,
|
|
send_resp_data->status,
|
|
send_resp_data->response);
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_cid_hook_cb(const void *data, uint16_t len, void *user_data)
|
|
{
|
|
struct test_data *t_data = tester_get_data();
|
|
struct bthost *bthost = hciemu_client_get_host(t_data->hciemu);
|
|
struct emu_l2cap_cid_data *cid_data = user_data;
|
|
const uint8_t *pdu = data;
|
|
struct iovec *gatt_pdu = queue_peek_head(t_data->pdus);
|
|
struct step *step;
|
|
|
|
tester_debug("Received att pdu with opcode 0x%02x", pdu[0]);
|
|
|
|
switch (pdu[0]) {
|
|
case L2CAP_ATT_ERROR:
|
|
step = g_new0(struct step, 1);
|
|
|
|
step->callback = CB_EMU_ATT_ERROR;
|
|
step->callback_result.error = pdu[4];
|
|
|
|
schedule_callback_verification(step);
|
|
break;
|
|
case L2CAP_ATT_EXCHANGE_MTU_REQ:
|
|
tester_print("Exchange MTU request received.");
|
|
|
|
if (!memcmp(exchange_mtu_req_pdu.iov_base, pdu, len))
|
|
bthost_send_cid_v(bthost, cid_data->handle,
|
|
cid_data->cid,
|
|
&exchange_mtu_resp_pdu, 1);
|
|
|
|
break;
|
|
case L2CAP_ATT_EXCHANGE_MTU_RSP:
|
|
tester_print("Exchange MTU response received.");
|
|
|
|
break;
|
|
case L2CAP_ATT_HANDLE_VALUE_IND:
|
|
step = g_new0(struct step, 1);
|
|
|
|
step->callback = CB_EMU_VALUE_INDICATION;
|
|
|
|
schedule_callback_verification(step);
|
|
goto respond;
|
|
case L2CAP_ATT_HANDLE_VALUE_NOTIFY:
|
|
step = g_new0(struct step, 1);
|
|
|
|
step->callback = CB_EMU_VALUE_NOTIFICATION;
|
|
|
|
schedule_callback_verification(step);
|
|
break;
|
|
case L2CAP_ATT_READ_RSP:
|
|
/* TODO - More complicated cases should also verify pdu data */
|
|
step = g_new0(struct step, 1);
|
|
|
|
step->callback = CB_EMU_READ_RESPONSE;
|
|
|
|
schedule_callback_verification(step);
|
|
break;
|
|
case L2CAP_ATT_WRITE_RSP:
|
|
/* TODO - More complicated cases should also verify pdu data */
|
|
step = g_new0(struct step, 1);
|
|
|
|
step->callback = CB_EMU_WRITE_RESPONSE;
|
|
|
|
schedule_callback_verification(step);
|
|
break;
|
|
default:
|
|
if (!gatt_pdu || !gatt_pdu->iov_base) {
|
|
tester_print("Unknown ATT packet.");
|
|
break;
|
|
}
|
|
|
|
if (gatt_pdu->iov_len != len) {
|
|
tester_print("Size of incoming frame is not valid");
|
|
tester_print("Expected size = %zd incoming size = %d",
|
|
gatt_pdu->iov_len, len);
|
|
break;
|
|
}
|
|
|
|
respond:
|
|
if (memcmp(gatt_pdu->iov_base, data, len)) {
|
|
tester_print("Incoming data mismatch");
|
|
break;
|
|
}
|
|
queue_pop_head(t_data->pdus);
|
|
gatt_pdu = queue_pop_head(t_data->pdus);
|
|
if (!gatt_pdu || !gatt_pdu->iov_base)
|
|
break;
|
|
|
|
bthost_send_cid_v(bthost, cid_data->handle, cid_data->cid,
|
|
gatt_pdu, 1);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void gatt_remote_send_frame_action(void)
|
|
{
|
|
struct test_data *t_data = tester_get_data();
|
|
struct bthost *bthost = hciemu_client_get_host(t_data->hciemu);
|
|
struct iovec *gatt_pdu = queue_pop_head(t_data->pdus);
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
if (!gatt_pdu) {
|
|
tester_print("No frame to send");
|
|
step->action_status = BT_STATUS_FAIL;
|
|
} else {
|
|
bthost_send_cid_v(bthost, cid_data.handle, cid_data.cid,
|
|
gatt_pdu, 1);
|
|
step->action_status = BT_STATUS_SUCCESS;
|
|
}
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_remote_send_raw_pdu_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct bthost *bthost = hciemu_client_get_host(data->hciemu);
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct iovec *pdu = current_data_step->set_data;
|
|
struct iovec *pdu2 = current_data_step->set_data_2;
|
|
struct iovec *pdu3 = current_data_step->set_data_3;
|
|
struct step *step = g_new0(struct step, 1);
|
|
|
|
if (cid_data.handle && cid_data.cid) {
|
|
struct iovec rsp[3];
|
|
size_t len = 0;
|
|
|
|
if (!pdu) {
|
|
step->action_status = BT_STATUS_FAIL;
|
|
goto done;
|
|
}
|
|
|
|
rsp[0].iov_base = pdu->iov_base;
|
|
rsp[0].iov_len = pdu->iov_len;
|
|
len++;
|
|
|
|
if (pdu2) {
|
|
rsp[1].iov_base = pdu2->iov_base;
|
|
rsp[1].iov_len = pdu2->iov_len;
|
|
len++;
|
|
}
|
|
|
|
if (pdu3) {
|
|
rsp[2].iov_base = pdu3->iov_base;
|
|
rsp[2].iov_len = pdu3->iov_len;
|
|
len++;
|
|
}
|
|
|
|
bthost_send_cid_v(bthost, cid_data.handle, cid_data.cid, rsp,
|
|
len);
|
|
step->action_status = BT_STATUS_SUCCESS;
|
|
} else {
|
|
tester_debug("No connection set up");
|
|
step->action_status = BT_STATUS_FAIL;
|
|
}
|
|
|
|
done:
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void gatt_conn_cb(uint16_t handle, void *user_data)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct bthost *bthost = hciemu_client_get_host(data->hciemu);
|
|
|
|
tester_print("New connection with handle 0x%04x", handle);
|
|
|
|
if (data->hciemu_type == HCIEMU_TYPE_BREDR) {
|
|
tester_warn("Not handled device type.");
|
|
return;
|
|
}
|
|
|
|
cid_data.cid = 0x0004;
|
|
cid_data.handle = handle;
|
|
|
|
bthost_add_cid_hook(bthost, handle, cid_data.cid, gatt_cid_hook_cb,
|
|
&cid_data);
|
|
}
|
|
|
|
static void gatt_client_search_services(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct step *step = g_new0(struct step, 1);
|
|
struct gatt_search_service_data *search_data;
|
|
int status;
|
|
|
|
search_data = current_data_step->set_data;
|
|
|
|
status = data->if_gatt->client->search_service(search_data->conn_id,
|
|
search_data->filter_uuid);
|
|
step->action_status = status;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void init_pdus(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct step *step = g_new0(struct step, 1);
|
|
struct iovec *pdu = current_data_step->set_data;
|
|
|
|
while (pdu->iov_base) {
|
|
queue_push_tail(data->pdus, pdu);
|
|
pdu++;
|
|
}
|
|
|
|
step->action_status = BT_STATUS_SUCCESS;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void init_read_params_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct step *step = g_new0(struct step, 1);
|
|
struct set_read_params *set_param_data = current_data_step->set_data;
|
|
btgatt_read_params_t *param = set_param_data->params;
|
|
|
|
memset(param, 0, sizeof(*param));
|
|
|
|
if (set_param_data->srvc_id)
|
|
memcpy(¶m->srvc_id, set_param_data->srvc_id,
|
|
sizeof(btgatt_srvc_id_t));
|
|
|
|
if (set_param_data->char_id)
|
|
memcpy(¶m->char_id, set_param_data->char_id,
|
|
sizeof(btgatt_gatt_id_t));
|
|
|
|
if (set_param_data->descr_id)
|
|
memcpy(¶m->descr_id, set_param_data->descr_id,
|
|
sizeof(btgatt_gatt_id_t));
|
|
|
|
param->value_type = set_param_data->value_type;
|
|
param->status = set_param_data->status;
|
|
param->value.len = set_param_data->len;
|
|
|
|
if (param->value.len != 0)
|
|
memcpy(¶m->value.value, set_param_data->value,
|
|
param->value.len);
|
|
|
|
step->action_status = BT_STATUS_SUCCESS;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void init_write_params_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct step *step = g_new0(struct step, 1);
|
|
struct set_write_params *set_param_data = current_data_step->set_data;
|
|
btgatt_write_params_t *param = set_param_data->params;
|
|
|
|
memset(param, 0, sizeof(*param));
|
|
|
|
if (set_param_data->srvc_id)
|
|
memcpy(¶m->srvc_id, set_param_data->srvc_id,
|
|
sizeof(btgatt_srvc_id_t));
|
|
|
|
if (set_param_data->char_id)
|
|
memcpy(¶m->char_id, set_param_data->char_id,
|
|
sizeof(btgatt_gatt_id_t));
|
|
|
|
if (set_param_data->descr_id)
|
|
memcpy(¶m->descr_id, set_param_data->descr_id,
|
|
sizeof(btgatt_gatt_id_t));
|
|
|
|
param->status = set_param_data->status;
|
|
|
|
step->action_status = BT_STATUS_SUCCESS;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static void init_notify_params_action(void)
|
|
{
|
|
struct test_data *data = tester_get_data();
|
|
struct step *current_data_step = queue_peek_head(data->steps);
|
|
struct step *step = g_new0(struct step, 1);
|
|
struct set_notify_params *set_param_data = current_data_step->set_data;
|
|
btgatt_notify_params_t *param = set_param_data->params;
|
|
|
|
memset(param, 0, sizeof(*param));
|
|
|
|
if (set_param_data->srvc_id)
|
|
memcpy(¶m->srvc_id, set_param_data->srvc_id,
|
|
sizeof(btgatt_srvc_id_t));
|
|
|
|
if (set_param_data->char_id)
|
|
memcpy(¶m->char_id, set_param_data->char_id,
|
|
sizeof(btgatt_gatt_id_t));
|
|
|
|
param->len = set_param_data->len;
|
|
param->is_notify = set_param_data->is_notify;
|
|
|
|
memcpy(¶m->bda, set_param_data->bdaddr, sizeof(bt_bdaddr_t));
|
|
if (param->len != 0)
|
|
memcpy(¶m->value, set_param_data->value, param->len);
|
|
|
|
step->action_status = BT_STATUS_SUCCESS;
|
|
|
|
schedule_action_verification(step);
|
|
}
|
|
|
|
static struct test_case test_cases[] = {
|
|
TEST_CASE_BREDRLE("Gatt Init",
|
|
ACTION_SUCCESS(dummy_action, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Register",
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Unregister",
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_unregister_action,
|
|
INT_TO_PTR(APP1_ID)),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Scan",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - LE Connect",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - LE Disconnect",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_disconnect_action,
|
|
&app1_conn_req),
|
|
CALLBACK_GATTC_DISCONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - LE Multiple Client Conn./Disc.",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app2_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app2_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN2_ID, APP2_ID),
|
|
ACTION_SUCCESS(gatt_client_disconnect_action,
|
|
&app2_conn_req),
|
|
CALLBACK_GATTC_DISCONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN2_ID, APP2_ID),
|
|
ACTION_SUCCESS(gatt_client_disconnect_action,
|
|
&app1_conn_req),
|
|
CALLBACK_GATTC_DISCONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Listen and Disconnect",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(bt_set_property_action,
|
|
&prop_test_scan_mode_conn),
|
|
CALLBACK_ADAPTER_PROPS(&prop_test_scan_mode_conn, 1),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_do_listen_action, &app1_conn_req),
|
|
CALLBACK_STATUS(CB_GATTC_LISTEN, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(emu_remote_connect_hci_action, &bearer_type),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_stop_listen_action,
|
|
&app1_conn_req),
|
|
CALLBACK_STATUS(CB_GATTC_LISTEN, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_disconnect_action,
|
|
&app1_conn_req),
|
|
CALLBACK_GATTC_DISCONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Double Listen",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(bt_set_property_action,
|
|
&prop_test_scan_mode_conn),
|
|
CALLBACK_ADAPTER_PROPS(&prop_test_scan_mode_conn, 1),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_do_listen_action, &app1_conn_req),
|
|
CALLBACK_STATUS(CB_GATTC_LISTEN, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(emu_remote_connect_hci_action, &bearer_type),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_stop_listen_action,
|
|
&app1_conn_req),
|
|
CALLBACK_STATUS(CB_GATTC_LISTEN, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_disconnect_action,
|
|
&app1_conn_req),
|
|
CALLBACK_GATTC_DISCONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
/* Close ACL on emulated remotes side so it can reconnect */
|
|
ACTION_SUCCESS(emu_remote_disconnect_hci_action,
|
|
&cid_data.handle),
|
|
CALLBACK_STATE(CB_BT_ACL_STATE_CHANGED,
|
|
BT_ACL_STATE_DISCONNECTED),
|
|
ACTION_SUCCESS(gatt_client_do_listen_action, &app1_conn_req),
|
|
CALLBACK_STATUS(CB_GATTC_LISTEN, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(emu_remote_connect_hci_action, &bearer_type),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN2_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_disconnect_action,
|
|
&app1_conn2_req),
|
|
CALLBACK_GATTC_DISCONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN2_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_stop_listen_action,
|
|
&app1_conn_req),
|
|
CALLBACK_STATUS(CB_GATTC_LISTEN, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Search Service - Single",
|
|
ACTION_SUCCESS(init_pdus, search_service),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_RESULT(CONN1_ID, &service_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Search Service - Multiple",
|
|
ACTION_SUCCESS(init_pdus, search_service_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_RESULT(CONN1_ID, &service_1),
|
|
CALLBACK_GATTC_SEARCH_RESULT(CONN1_ID, &service_2),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Search Service - None",
|
|
ACTION_SUCCESS(init_pdus, search_service_3),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Search Service - Incorrect rsp",
|
|
ACTION_SUCCESS(init_pdus, search_service_4),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Characteristic - Single",
|
|
ACTION_SUCCESS(init_pdus, get_characteristic_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Characteristic - Incorrect rsp",
|
|
ACTION_SUCCESS(init_pdus, get_characteristic_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_FAILURE,
|
|
CONN1_ID, &service_1, NULL, 0),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Characteristic - None",
|
|
ACTION_SUCCESS(init_pdus, get_characteristic_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_FAIL(gatt_client_get_characteristic_action,
|
|
&get_char_data_2),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_FAILURE,
|
|
CONN1_ID, &service_2,
|
|
NULL, 0),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Descriptor - Incorrect rsp",
|
|
ACTION_SUCCESS(init_pdus, get_descriptor_0),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_FAILURE, CONN1_ID,
|
|
&service_1, &characteristic_1, NULL),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Descriptor - Single",
|
|
ACTION_SUCCESS(init_pdus, get_descriptor_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Descriptor - Multiple",
|
|
ACTION_SUCCESS(init_pdus, get_descriptor_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1,
|
|
&characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1,
|
|
&desc_1),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_2),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1,
|
|
&desc_2),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Descriptor - None",
|
|
ACTION_SUCCESS(init_pdus, get_descriptor_3),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_FAILURE, CONN1_ID,
|
|
&service_1, &characteristic_1, NULL),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Included Services - Incorrect rsp",
|
|
ACTION_SUCCESS(init_pdus, get_included_0),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_included_action,
|
|
&get_incl_data_1),
|
|
CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_FAILURE, CONN1_ID,
|
|
&service_1, NULL),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Included Service - 16 UUID",
|
|
ACTION_SUCCESS(init_pdus, get_included_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_included_action,
|
|
&get_incl_data_1),
|
|
CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &included_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Included Service - 128 UUID",
|
|
ACTION_SUCCESS(init_pdus, get_included_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_included_action,
|
|
&get_incl_data_1),
|
|
CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &included_2),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Get Included Service - None",
|
|
ACTION_SUCCESS(init_pdus, get_included_3),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_included_action,
|
|
&get_incl_data_1),
|
|
CALLBACK_GATTC_GET_INCLUDED(GATT_STATUS_FAILURE, CONN1_ID,
|
|
&service_1, NULL),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Read Characteristic - Success",
|
|
ACTION_SUCCESS(init_pdus, read_characteristic_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_read_params_action, &set_read_param_1),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_read_characteristic_action,
|
|
&read_char_data_1),
|
|
CALLBACK_GATTC_READ_CHARACTERISTIC(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &read_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
|
|
TEST_CASE_BREDRLE("Gatt Client - Read Characteristic - Insuf. Auth.",
|
|
ACTION_SUCCESS(init_pdus, read_characteristic_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_read_params_action, &set_read_param_2),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_read_characteristic_action,
|
|
&read_char_data_1),
|
|
CALLBACK_GATTC_READ_CHARACTERISTIC(GATT_STATUS_INS_AUTH,
|
|
CONN1_ID, &read_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Read Characteristic - Wrong params",
|
|
ACTION_SUCCESS(init_pdus, read_characteristic_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_read_params_action, &set_read_param_3),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_FAIL(gatt_client_read_characteristic_action,
|
|
&read_char_data_2),
|
|
CALLBACK_GATTC_READ_CHARACTERISTIC(GATT_STATUS_FAILURE,
|
|
CONN1_ID, &read_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Read Descriptor - Success",
|
|
ACTION_SUCCESS(init_pdus, read_descriptor_1),
|
|
ACTION_SUCCESS(init_read_params_action, &set_read_param_4),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_SUCCESS(gatt_client_read_descriptor_action,
|
|
&read_desc_data_1),
|
|
CALLBACK_GATTC_READ_DESCRIPTOR(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &read_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Read Descriptor - Insuf. Auth.",
|
|
ACTION_SUCCESS(init_pdus, read_descriptor_2),
|
|
ACTION_SUCCESS(init_read_params_action, &set_read_param_5),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_SUCCESS(gatt_client_read_descriptor_action,
|
|
&read_desc_data_1),
|
|
CALLBACK_GATTC_READ_DESCRIPTOR(GATT_STATUS_INS_AUTH,
|
|
CONN1_ID, &read_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Read Descriptor - Wrong params",
|
|
ACTION_SUCCESS(init_pdus, read_descriptor_2),
|
|
ACTION_SUCCESS(init_read_params_action, &set_read_param_6),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_FAIL(gatt_client_read_descriptor_action,
|
|
&read_desc_data_2),
|
|
CALLBACK_GATTC_READ_DESCRIPTOR(GATT_STATUS_FAILURE,
|
|
CONN1_ID, &read_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Characteristic Cmd - Success",
|
|
ACTION_SUCCESS(init_pdus, write_characteristic_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_1),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_write_characteristic_action,
|
|
&write_char_data_1),
|
|
CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Characteristic Req - Success",
|
|
ACTION_SUCCESS(init_pdus, write_characteristic_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_1),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_write_characteristic_action,
|
|
&write_char_data_2),
|
|
CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Characteristic - Insuf. Auth.",
|
|
ACTION_SUCCESS(init_pdus, write_characteristic_3),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_2),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_write_characteristic_action,
|
|
&write_char_data_2),
|
|
CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_INS_AUTH,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Characteristic - Wrong Params",
|
|
ACTION_SUCCESS(init_pdus, write_characteristic_3),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_3),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_FAIL(gatt_client_write_characteristic_action,
|
|
&write_char_data_2),
|
|
CALLBACK_GATTC_WRITE_CHARACTERISTIC(GATT_STATUS_FAILURE,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Register For Notification - Success",
|
|
ACTION_SUCCESS(init_pdus, notification_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_register_for_notification_action,
|
|
¬if_data_1),
|
|
CALLBACK_GATTC_REGISTER_FOR_NOTIF(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&characteristic_1,
|
|
&service_1, 1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Deregister For Notification - Success",
|
|
ACTION_SUCCESS(init_pdus, notification_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_register_for_notification_action,
|
|
¬if_data_1),
|
|
CALLBACK_GATTC_REGISTER_FOR_NOTIF(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&characteristic_1,
|
|
&service_1, 1),
|
|
ACTION_SUCCESS(gatt_client_deregister_for_notification_action,
|
|
¬if_data_1),
|
|
CALLBACK_GATTC_REGISTER_FOR_NOTIF(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&characteristic_1,
|
|
&service_1, 0),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Register For Notification - Indicate",
|
|
ACTION_SUCCESS(init_pdus, notification_2),
|
|
ACTION_SUCCESS(init_notify_params_action, &set_notify_param_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_register_for_notification_action,
|
|
¬if_data_1),
|
|
CALLBACK_GATTC_REGISTER_FOR_NOTIF(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&characteristic_1,
|
|
&service_1, 1),
|
|
ACTION_SUCCESS(gatt_remote_send_frame_action, NULL),
|
|
CALLBACK_GATTC_NOTIFY(CONN1_ID, ¬ify_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Register For Notification - Notify",
|
|
ACTION_SUCCESS(init_pdus, notification_3),
|
|
ACTION_SUCCESS(init_notify_params_action, &set_notify_param_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_register_for_notification_action,
|
|
¬if_data_1),
|
|
CALLBACK_GATTC_REGISTER_FOR_NOTIF(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&characteristic_1,
|
|
&service_1, 1),
|
|
ACTION_SUCCESS(gatt_remote_send_frame_action, NULL),
|
|
CALLBACK_GATTC_NOTIFY(CONN1_ID, ¬ify_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Descriptor - Success",
|
|
ACTION_SUCCESS(init_pdus, write_descriptor_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_4),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_SUCCESS(gatt_client_write_descriptor_action,
|
|
&write_desc_data_1),
|
|
CALLBACK_GATTC_WRITE_DESCRIPTOR(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Descriptor - Insuf. Auth.",
|
|
ACTION_SUCCESS(init_pdus, write_descriptor_2),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_6),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_SUCCESS(gatt_client_write_descriptor_action,
|
|
&write_desc_data_1),
|
|
CALLBACK_GATTC_WRITE_DESCRIPTOR(GATT_STATUS_INS_AUTH,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Client - Write Descriptor - Wrong Param",
|
|
ACTION_SUCCESS(init_pdus, write_descriptor_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(init_write_params_action, &set_write_param_5),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_client_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTC_REGISTER_CLIENT, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_client_start_scan_action, NULL),
|
|
CLLBACK_GATTC_SCAN_RES(prop_emu_remotes_default_set, 1, TRUE),
|
|
ACTION_SUCCESS(gatt_client_stop_scan_action, NULL),
|
|
ACTION_SUCCESS(gatt_client_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTC_CONNECT(GATT_STATUS_SUCCESS,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_client_search_services, &search_services_1),
|
|
CALLBACK_GATTC_SEARCH_COMPLETE(GATT_STATUS_SUCCESS, CONN1_ID),
|
|
ACTION_SUCCESS(gatt_client_get_characteristic_action,
|
|
&get_char_data_1),
|
|
CALLBACK_GATTC_GET_CHARACTERISTIC_CB(GATT_STATUS_SUCCESS,
|
|
CONN1_ID, &service_1, &characteristic_1, 4),
|
|
ACTION_SUCCESS(gatt_client_get_descriptor_action,
|
|
&get_desc_data_1),
|
|
CALLBACK_GATTC_GET_DESCRIPTOR(GATT_STATUS_SUCCESS, CONN1_ID,
|
|
&service_1, &characteristic_1, &desc_1),
|
|
ACTION_FAIL(gatt_client_write_descriptor_action,
|
|
&write_desc_data_2),
|
|
CALLBACK_GATTC_WRITE_DESCRIPTOR(GATT_STATUS_FAILURE,
|
|
CONN1_ID, &write_params_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Register",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Unregister",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_unregister_action,
|
|
INT_TO_PTR(APP1_ID)),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - LE Connect",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - LE Disconnect",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_server_disconnect_action,
|
|
&app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_DISCONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - LE Multiple Server Conn./Disc",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app2_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app2_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN2_ID, APP2_ID),
|
|
ACTION_SUCCESS(gatt_server_disconnect_action, &app2_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_DISCONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN2_ID, APP2_ID),
|
|
ACTION_SUCCESS(gatt_server_disconnect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_DISCONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Single Service Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Multiple Services Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL, NULL),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_2),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_2, NULL, NULL),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_3),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_3, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Service with 0 handles",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_FAIL(gatt_server_add_service_action,
|
|
&add_bad_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_FAILURE, APP1_ID,
|
|
&service_add_1, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Secondary Service",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_sec_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&included_1, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Included Service Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_4),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_4),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&inc_srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_inc_service_action,
|
|
&add_inc_service_data_1),
|
|
CALLBACK_GATTS_INC_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Inc. Service with wrong handle",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_4),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_4),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL, NULL),
|
|
ACTION_FAIL(gatt_server_add_inc_service_action,
|
|
&add_bad_inc_service_data_1),
|
|
CALLBACK_GATTS_INC_SERVICE_ADDED(GATT_STATUS_FAILURE, APP1_ID,
|
|
&srvc1_handle, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Single Characteristic Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_5),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Char. wrong service handle",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_5),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_FAIL(gatt_server_add_char_action, &add_bad_char_data_1),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_FAILURE,
|
|
APP1_ID, &app1_uuid,
|
|
NULL, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Single Descriptor Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_6),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
NULL),
|
|
ACTION_SUCCESS(gatt_server_add_desc_action, &add_desc_data_1),
|
|
CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&app2_uuid, &srvc1_handle,
|
|
NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Desc. wrong service handle",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_6),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
NULL),
|
|
ACTION_FAIL(gatt_server_add_desc_action, &add_bad_desc_data_1),
|
|
CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_FAILURE, APP1_ID,
|
|
&app2_uuid, NULL, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Add Desc. wrong app ID",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_6),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
NULL),
|
|
ACTION_FAIL(gatt_server_add_desc_action, &add_bad_desc_data_2),
|
|
CALLBACK_GATTS_DESCRIPTOR_ADDED(GATT_STATUS_FAILURE, APP2_ID,
|
|
&app2_uuid, NULL, NULL, NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Start Service Successful BREDRLE",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Start Service Successful LE",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_2),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Start Service wrong service handle",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL, NULL),
|
|
ACTION_FAIL(gatt_server_start_srvc_action,
|
|
&start_bad_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_FAILURE, APP1_ID,
|
|
NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Start Service wrong server transport",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_FAIL(gatt_server_start_srvc_action,
|
|
&start_bad_srvc_data_2),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_FAILURE, APP1_ID,
|
|
&srvc1_handle),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Stop Service Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_stop_srvc_action, &stop_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_STOPPED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Stop Service wrong service handle",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
ACTION_FAIL(gatt_server_stop_srvc_action,
|
|
&stop_bad_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_STOPPED(GATT_STATUS_FAILURE, APP1_ID,
|
|
NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Delete Service Successful",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_delete_srvc_action,
|
|
&delete_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_DELETED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Delete Service wrong handle",
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_1),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_FAIL(gatt_server_delete_srvc_action,
|
|
&delete_bad_srvc_data_1),
|
|
CALLBACK_GATTS_SERVICE_DELETED(GATT_STATUS_FAILURE, APP1_ID,
|
|
NULL),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Send Indication",
|
|
ACTION_SUCCESS(init_pdus, send_indication_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_server_send_indication_action,
|
|
&send_indication_data_1),
|
|
CALLBACK(CB_EMU_VALUE_INDICATION),
|
|
CALLBACK_GATTS_NOTIF_CONF(CONN1_ID, GATT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Send Notification",
|
|
ACTION_SUCCESS(init_pdus, send_notification_1),
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_SUCCESS(gatt_server_send_indication_action,
|
|
&send_indication_data_2),
|
|
CALLBACK_GATTS_NOTIF_CONF(CONN1_ID, GATT_STATUS_SUCCESS),
|
|
CALLBACK(CB_EMU_VALUE_NOTIFICATION),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Send Notification, wrong conn id",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
ACTION_FAIL(gatt_server_send_indication_action,
|
|
&send_bad_indication_data_1),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Send response to read char request",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_5),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_1),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
&char1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_2),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
PROCESS_DATA(GATT_STATUS_SUCCESS,
|
|
gatt_remote_send_raw_pdu_action,
|
|
&att_read_req_op_v, &char1_handle_v, NULL),
|
|
CALLBACK_GATTS_REQUEST_READ(CONN1_ID, TRANS1_ID,
|
|
prop_emu_remotes_default_set,
|
|
&char1_handle, 0, false),
|
|
ACTION_SUCCESS(gatt_server_send_response_action,
|
|
&send_resp_data_1),
|
|
CALLBACK(CB_EMU_READ_RESPONSE),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Send response to write char request",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_5),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_2),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
&char1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_2),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
PROCESS_DATA(GATT_STATUS_SUCCESS,
|
|
gatt_remote_send_raw_pdu_action,
|
|
&att_write_req_op_v, &char1_handle_v,
|
|
&att_write_req_value_1_v),
|
|
CALLBACK_GATTS_REQUEST_WRITE(CONN1_ID, TRANS1_ID,
|
|
prop_emu_remotes_default_set,
|
|
&char1_handle, 0,
|
|
sizeof(att_write_req_value_1),
|
|
true, false,
|
|
att_write_req_value_1),
|
|
ACTION_SUCCESS(gatt_server_send_response_action,
|
|
&send_resp_data_2),
|
|
CALLBACK(CB_EMU_WRITE_RESPONSE),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Find By Type - Attribute not found",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_5),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_2),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
&char1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_2),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
PROCESS_DATA(GATT_STATUS_SUCCESS,
|
|
gatt_remote_send_raw_pdu_action,
|
|
&att_find_by_type_req_op_v,
|
|
&search_range_1,
|
|
&primary_type),
|
|
CALLBACK_ERROR(CB_EMU_ATT_ERROR, 0x0a),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
/* This tests embeded ccc */
|
|
TEST_CASE_BREDRLE("Gatt Server - Srvc change write req. success",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
/* For CCC we need to be bonded */
|
|
ACTION_SUCCESS(bt_create_bond_action,
|
|
&prop_test_remote_ble_bdaddr_req),
|
|
CALLBACK_BOND_STATE(BT_BOND_STATE_BONDED,
|
|
&prop_emu_remotes_default_set[0], 1),
|
|
/* Write and receive confirmation */
|
|
PROCESS_DATA(GATT_STATUS_SUCCESS,
|
|
gatt_remote_send_raw_pdu_action,
|
|
&att_write_req_op_v, &svc_change_ccc_handle_v,
|
|
&svc_change_ccc_value_v),
|
|
CALLBACK(CB_EMU_WRITE_RESPONSE),
|
|
/* Shutdown */
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
TEST_CASE_BREDRLE("Gatt Server - Send error resp to write char request",
|
|
ACTION_SUCCESS(bluetooth_enable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_ON),
|
|
ACTION_SUCCESS(emu_setup_powered_remote_action, NULL),
|
|
ACTION_SUCCESS(emu_set_ssp_mode_action, NULL),
|
|
ACTION_SUCCESS(emu_set_connect_cb_action, gatt_conn_cb),
|
|
ACTION_SUCCESS(gatt_server_register_action, &app1_uuid),
|
|
CALLBACK_STATUS(CB_GATTS_REGISTER_SERVER, BT_STATUS_SUCCESS),
|
|
ACTION_SUCCESS(gatt_server_add_service_action,
|
|
&add_service_data_5),
|
|
CALLBACK_GATTS_SERVICE_ADDED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&service_add_1, NULL,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(gatt_server_add_char_action, &add_char_data_2),
|
|
CALLBACK_GATTS_CHARACTERISTIC_ADDED(GATT_STATUS_SUCCESS,
|
|
APP1_ID, &app1_uuid,
|
|
&srvc1_handle, NULL,
|
|
&char1_handle),
|
|
ACTION_SUCCESS(gatt_server_start_srvc_action,
|
|
&start_srvc_data_2),
|
|
CALLBACK_GATTS_SERVICE_STARTED(GATT_STATUS_SUCCESS, APP1_ID,
|
|
&srvc1_handle),
|
|
ACTION_SUCCESS(bt_start_discovery_action, NULL),
|
|
CALLBACK_STATE(CB_BT_DISCOVERY_STATE_CHANGED,
|
|
BT_DISCOVERY_STARTED),
|
|
CALLBACK_DEVICE_FOUND(prop_emu_remotes_default_le_set, 2),
|
|
ACTION_SUCCESS(bt_cancel_discovery_action, NULL),
|
|
ACTION_SUCCESS(gatt_server_connect_action, &app1_conn_req),
|
|
CALLBACK_GATTS_CONNECTION(GATT_SERVER_CONNECTED,
|
|
prop_emu_remotes_default_set,
|
|
CONN1_ID, APP1_ID),
|
|
PROCESS_DATA(GATT_STATUS_SUCCESS,
|
|
gatt_remote_send_raw_pdu_action,
|
|
&att_write_req_op_v, &char1_handle_v,
|
|
&att_write_req_value_1_v),
|
|
CALLBACK_GATTS_REQUEST_WRITE(CONN1_ID, TRANS1_ID,
|
|
prop_emu_remotes_default_set,
|
|
&char1_handle, 0,
|
|
sizeof(att_write_req_value_1),
|
|
true, false,
|
|
att_write_req_value_1),
|
|
ACTION_SUCCESS(gatt_server_send_response_action,
|
|
&send_resp_data_2_error),
|
|
CALLBACK_ERROR(CB_EMU_ATT_ERROR, GATT_ERR_INVAL_ATTR_VALUE_LEN),
|
|
ACTION_SUCCESS(bluetooth_disable_action, NULL),
|
|
CALLBACK_STATE(CB_BT_ADAPTER_STATE_CHANGED, BT_STATE_OFF),
|
|
),
|
|
};
|
|
|
|
struct queue *get_gatt_tests(void)
|
|
{
|
|
uint16_t i = 0;
|
|
|
|
list = queue_new();
|
|
|
|
for (; i < sizeof(test_cases) / sizeof(test_cases[0]); ++i)
|
|
queue_push_tail(list, &test_cases[i]);
|
|
|
|
return list;
|
|
}
|
|
|
|
void remove_gatt_tests(void)
|
|
{
|
|
queue_destroy(list, NULL);
|
|
}
|