/*
 *
 *  BlueZ - Bluetooth protocol stack for Linux
 *
 *  Copyright (C) 2014  Intel Corporation. All rights reserved.
 *
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <unistd.h>
#include <stdlib.h>
#include <stdbool.h>
#include <inttypes.h>
#include <string.h>
#include <fcntl.h>
#include <sys/socket.h>

#include <glib.h>

#include "lib/bluetooth.h"
#include "lib/uuid.h"
#include "src/shared/util.h"
#include "src/shared/att.h"
#include "src/shared/gatt-helpers.h"
#include "src/shared/queue.h"
#include "src/shared/gatt-db.h"
#include "src/shared/gatt-server.h"
#include "src/shared/gatt-client.h"
#include "src/shared/tester.h"

struct test_pdu {
	bool valid;
	const uint8_t *data;
	size_t size;
};

enum context_type {
	ATT,
	CLIENT,
	SERVER
};

struct test_data {
	char *test_name;
	struct test_pdu *pdu_list;
	enum context_type context_type;
	bt_uuid_t *uuid;
	struct gatt_db *source_db;
	const void *step;
};

struct context {
	struct bt_gatt_client *client;
	struct bt_gatt_server *server;
	struct bt_att *att;
	struct gatt_db *client_db;
	struct gatt_db *server_db;
	guint source;
	guint process;
	int fd;
	unsigned int pdu_offset;
	const struct test_data *data;
	struct bt_gatt_request *req;
};

#define data(args...) ((const unsigned char[]) { args })

#define raw_pdu(args...)					\
	{							\
		.valid = true,					\
		.data = data(args),				\
		.size = sizeof(data(args)),			\
	}

#define define_test(name, function, type, bt_uuid, db,			\
		test_step, args...)					\
	do {								\
		const struct test_pdu pdus[] = {			\
			args, { }					\
		};							\
		static struct test_data data;				\
		data.test_name = g_strdup(name);			\
		data.context_type = type;				\
		data.uuid = bt_uuid;					\
		data.step = test_step;					\
		data.source_db = db;					\
		data.pdu_list = g_memdup(pdus, sizeof(pdus));		\
		tester_add(name, &data, NULL, function, NULL);		\
	} while (0)

#define define_test_att(name, function, bt_uuid, test_step, args...)	\
	define_test(name, function, ATT, bt_uuid, NULL, test_step, args)

#define define_test_client(name, function, source_db, test_step, args...)\
	define_test(name, function, CLIENT, NULL, source_db, test_step, args)

#define define_test_server(name, function, source_db, test_step, args...)\
	define_test(name, function, SERVER, NULL, source_db, test_step, args)

#define MTU_EXCHANGE_CLIENT_PDUS					\
		raw_pdu(0x02, 0x00, 0x02),				\
		raw_pdu(0x03, 0x00, 0x02)

#define SERVICE_DATA_1_PDUS						\
		MTU_EXCHANGE_CLIENT_PDUS,				\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x01, 0x00, 0x04, 0x00, 0x01, 0x18),\
		raw_pdu(0x10, 0x05, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x05, 0x00, 0x08, 0x00, 0x0d, 0x18),\
		raw_pdu(0x10, 0x09, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x01, 0x10, 0x09, 0x00, 0x0a),			\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x01, 0x28),	\
		raw_pdu(0x01, 0x10, 0x01, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x01, 0x00, 0x04, 0x00, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x05, 0x00, 0x08, 0x00, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x05, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x01, 0x00, 0x04, 0x00, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00,	\
				0x2a),					\
		raw_pdu(0x08, 0x03, 0x00, 0x04, 0x00, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),			\
		raw_pdu(0x04, 0x04, 0x00, 0x04, 0x00),			\
		raw_pdu(0x05, 0x01, 0x04, 0x00, 0x01, 0x29),		\
		raw_pdu(0x08, 0x05, 0x00, 0x08, 0x00, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x06, 0x00, 0x0a, 0x07, 0x00, 0x29,	\
				0x2a),					\
		raw_pdu(0x08, 0x07, 0x00, 0x08, 0x00, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x07, 0x00, 0x0a),			\
		raw_pdu(0x04, 0x08, 0x00, 0x08, 0x00),			\
		raw_pdu(0x05, 0x01, 0x08, 0x00, 0x01, 0x29)

#define SERVICE_DATA_2_PDUS						\
		MTU_EXCHANGE_CLIENT_PDUS,				\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x01, 0x00, 0x04, 0x00, 0x01, 0x18),\
		raw_pdu(0x10, 0x05, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x05, 0x00, 0x0a, 0x00, 0x0d, 0x18),\
		raw_pdu(0x10, 0x0b, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x01, 0x10, 0x0b, 0x00, 0x0a),			\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x01, 0x28),	\
		raw_pdu(0x01, 0x10, 0x01, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x01, 0x00, 0x04, 0x00, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x05, 0x00, 0x0a, 0x00, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x05, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x01, 0x00, 0x04, 0x00, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x02, 0x00, 0x02, 0x03, 0x00, 0x00,	\
				0x2a),					\
		raw_pdu(0x08, 0x03, 0x00, 0x04, 0x00, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a),			\
		raw_pdu(0x04, 0x04, 0x00, 0x04, 0x00),			\
		raw_pdu(0x05, 0x01, 0x04, 0x00, 0x01, 0x29),		\
		raw_pdu(0x08, 0x05, 0x00, 0x0a, 0x00, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x07, 0x00, 0x0a, 0x08, 0x00, 0x29,	\
				0x2a),					\
		raw_pdu(0x08, 0x08, 0x00, 0x0a, 0x00, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x08, 0x00, 0x0a),			\
		raw_pdu(0x04, 0x09, 0x00, 0x0a, 0x00),			\
		raw_pdu(0x05, 0x01, 0x0a, 0x00, 0x01, 0x29)

#define SERVICE_DATA_3_PDUS						\
		MTU_EXCHANGE_CLIENT_PDUS,				\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x00, 0x01, 0x21, 0x01, 0x00, 0x18, \
			0x00, 0x02, 0x00, 0x02, 0x01, 0x18),		\
		raw_pdu(0x10, 0x01, 0x02, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x00, 0x03, 0x20, 0x03, 0x0d, 0x18),\
		raw_pdu(0x10, 0x21, 0x03, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x01, 0x10, 0x21, 0x03, 0x0a),			\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x01, 0x28),	\
		raw_pdu(0x01, 0x10, 0x01, 0x00, 0x0a),			\
		raw_pdu(0x08, 0x00, 0x01, 0x21, 0x01, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x00, 0x01, 0x0a),			\
		raw_pdu(0x08, 0x00, 0x03, 0x20, 0x03, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x00, 0x03, 0x0a),			\
		raw_pdu(0x08, 0x00, 0x01, 0x21, 0x01, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x10, 0x01, 0x02, 0x11, 0x01, 0x00,	\
			0x2a, 0x20, 0x01, 0x02, 0x21, 0x01, 0x01, 0x2a),\
		raw_pdu(0x08, 0x21, 0x01, 0x21, 0x01, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x21, 0x01, 0x0a),			\
		raw_pdu(0x04, 0x12, 0x01, 0x1f, 0x01),			\
		raw_pdu(0x01, 0x04, 0x12, 0x01, 0x0a),			\
		raw_pdu(0x08, 0x00, 0x03, 0x20, 0x03, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x10, 0x03, 0x0a, 0x11, 0x03, 0x29,	\
			0x2a),						\
		raw_pdu(0x08, 0x11, 0x03, 0x20, 0x03, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x11, 0x03, 0x0a),			\
		raw_pdu(0x04, 0x12, 0x03, 0x20, 0x03),			\
		raw_pdu(0x05, 0x01, 0x20, 0x03, 0x02, 0x29)

#define PRIMARY_DISC_SMALL_DB						\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x10, 0xF0, 0x17, 0xF0, 0x00, 0x18,	\
				0xFF, 0xFF, 0xFF, 0xFF, 0x0a, 0x18)

#define PRIMARY_DISC_LARGE_DB_1						\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x10, 0x00, 0x13, 0x00, 0x01, 0x18,	\
			0x20, 0x00, 0x29, 0x00, 0x0A, 0xA0,		\
			0x30, 0x00, 0x32, 0x00, 0x0B, 0xA0),		\
		raw_pdu(0x10, 0x33, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x40, 0x00, 0x46, 0x00, 0x00, 0x18,	\
			0x50, 0x00, 0x52, 0x00, 0x0B, 0xA0,		\
			0x60, 0x00, 0x6B, 0x00, 0x0B, 0xA0),		\
		raw_pdu(0x10, 0x6C, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0x70, 0x00, 0x76, 0x00, 0x0B, 0xA0,	\
			0x80, 0x00, 0x85, 0x00, 0x0B, 0xA0),		\
		raw_pdu(0x10, 0x86, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x14, 0x90, 0x00, 0x96, 0x00,		\
			0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01,	\
			0x00, 0x00, 0x00, 0x00, 0x0C, 0xA0, 0x00, 0x00),\
		raw_pdu(0x10, 0x97, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x06, 0xa0, 0x00, 0xb1, 0x00, 0x0f, 0xa0),\
		raw_pdu(0x10, 0xb2, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x11, 0x14, 0xC0, 0x00, 0xDD, 0x00,		\
			0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01,	\
			0x00, 0x00, 0x00, 0x00, 0x0C, 0xA0, 0x00, 0x00),\
		raw_pdu(0x10, 0xde, 0x00, 0xff, 0xff, 0x00, 0x28),	\
		raw_pdu(0x01, 0x10, 0xde, 0x00, 0x0a)

#define SECONDARY_DISC_SMALL_DB						\
		raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x01, 0x28),	\
		raw_pdu(0x11, 0x06, 0x01, 0x00, 0x10, 0x00, 0x0a, 0x18),\
		raw_pdu(0x10, 0x11, 0x00, 0xff, 0xff, 0x01, 0x28),	\
		raw_pdu(0x01, 0x10, 0x11, 0x00, 0x0a)

#define INCLUDE_DISC_SMALL_DB						\
		raw_pdu(0x08, 0x10, 0xf0, 0x17, 0xf0, 0x02, 0x28),	\
		raw_pdu(0x09, 0x08, 0x11, 0xf0, 0x01, 0x00, 0x0f, 0x00,	\
			0x0a, 0x18),					\
		raw_pdu(0x08, 0x12, 0xf0, 0x17, 0xf0, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x12, 0xf0, 0x0a),			\
		raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x02, 0x28),	\
		raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a)

#define CHARACTERISTIC_DISC_SMALL_DB					\
		raw_pdu(0x08, 0x10, 0xf0, 0x17, 0xf0, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x12, 0xf0, 0x02, 0x13, 0xf0, 0x00,	\
			0x2a),						\
		raw_pdu(0x08, 0x13, 0xf0, 0x17, 0xf0, 0x03, 0x28),	\
		raw_pdu(0x09, 0x15, 0x14, 0xf0, 0x02, 0x15, 0xf0, 0xef,	\
			0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01, 0x00,	\
			0x00, 0x00, 0x00, 0x09, 0xB0, 0x00, 0x00),	\
		raw_pdu(0x08, 0x15, 0xf0, 0x17, 0xf0, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x16, 0xf0, 0x02, 0x17, 0xf0, 0x01,	\
			0x2a),						\
		raw_pdu(0x08, 0x17, 0xf0, 0x17, 0xf0, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x17, 0xf0, 0x0a),			\
		raw_pdu(0x08, 0x01, 0x00, 0x10, 0x00, 0x03, 0x28),	\
		raw_pdu(0x09, 0x07, 0x02, 0x00, 0x32, 0x03, 0x00, 0x29,	\
			0x2a),						\
		raw_pdu(0x08, 0x03, 0x00, 0x10, 0x00, 0x03, 0x28),	\
		raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a)

#define DESCRIPTOR_DISC_SMALL_DB					\
		raw_pdu(0x04, 0x04, 0x00, 0x10, 0x00),			\
		raw_pdu(0x05, 0x01, 0x04, 0x00, 0x02, 0x29, 0x05, 0x00,	\
			0x01, 0x29),					\
		raw_pdu(0x04, 0x06, 0x00, 0x10, 0x00),			\
		raw_pdu(0x01, 0x04, 0x06, 0x00, 0x0a)

#define SMALL_DB_DISCOVERY_PDUS						\
		PRIMARY_DISC_SMALL_DB,					\
		SECONDARY_DISC_SMALL_DB,				\
		INCLUDE_DISC_SMALL_DB,					\
		CHARACTERISTIC_DISC_SMALL_DB,				\
		DESCRIPTOR_DISC_SMALL_DB


#define SERVER_MTU_EXCHANGE_PDU raw_pdu(0x02, 0x17, 0x00)

static bt_uuid_t uuid_16 = {
	.type = BT_UUID16,
	.value.u16 = 0x1800
};

static bt_uuid_t uuid_char_16 = {
	.type = BT_UUID16,
	.value.u16 = 0x2a0d
};

static bt_uuid_t uuid_128 = {
	.type = BT_UUID128,
	.value.u128.data = {0x00, 0x00, 0x18, 0x0d, 0x00, 0x00, 0x10, 0x00,
				0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb}
};

static bt_uuid_t uuid_char_128 = {
	.type = BT_UUID128,
	.value.u128.data = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
};

static void test_free(gconstpointer user_data)
{
	const struct test_data *data = user_data;

	g_free(data->test_name);
	g_free(data->pdu_list);
}

typedef void (*test_step_t)(struct context *context);

struct test_step {
	test_step_t func;
	test_step_t post_func;
	uint16_t handle;
	uint16_t end_handle;
	uint8_t uuid[16];
	uint8_t expected_att_ecode;
	const uint8_t *value;
	uint16_t length;
};

static void destroy_context(struct context *context)
{
	if (context->source > 0)
		g_source_remove(context->source);

	if (context->req)
		bt_gatt_request_unref(context->req);

	bt_gatt_client_unref(context->client);
	bt_gatt_server_unref(context->server);
	gatt_db_unref(context->client_db);
	gatt_db_unref(context->server_db);

	if (context->att)
		bt_att_unref(context->att);

	test_free(context->data);
	g_free(context);
}

static gboolean context_quit(gpointer user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	if (context->process > 0)
		g_source_remove(context->process);

	if (step && step->post_func)
		step->post_func(context);

	if (context->data->pdu_list[context->pdu_offset].valid)
		tester_test_abort();
	else
		tester_test_passed();

	destroy_context(context);

	return FALSE;
}

static void test_debug(const char *str, void *user_data)
{
	const char *prefix = user_data;

	tester_debug("%s%s", prefix, str);
}

static gboolean send_pdu(gpointer user_data)
{
	struct context *context = user_data;
	const struct test_pdu *pdu;
	ssize_t len;

	pdu = &context->data->pdu_list[context->pdu_offset++];

	len = write(context->fd, pdu->data, pdu->size);

	util_hexdump('<', pdu->data, len, test_debug, "GATT: ");

	g_assert_cmpint(len, ==, pdu->size);

	context->process = 0;

	pdu = &context->data->pdu_list[context->pdu_offset];
	if (pdu->valid && (pdu->size == 0)) {
		test_debug("(no action expected)", "GATT: ");
		context->pdu_offset++;
		return send_pdu(context);
	}

	return FALSE;
}

static void context_process(struct context *context)
{
	/* Quit the context if we processed the last PDU */
	if (!context->data->pdu_list[context->pdu_offset].valid) {
		context_quit(context);
		return;
	}

	context->process = g_idle_add(send_pdu, context);
}

static gboolean test_handler(GIOChannel *channel, GIOCondition cond,
							gpointer user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;
	const struct test_pdu *pdu;
	unsigned char buf[512];
	ssize_t len;
	int fd;

	pdu = &context->data->pdu_list[context->pdu_offset++];

	if (cond & (G_IO_NVAL | G_IO_ERR | G_IO_HUP)) {
		context->source = 0;
		g_print("%s: cond %x\n", __func__, cond);
		return FALSE;
	}

	fd = g_io_channel_unix_get_fd(channel);

	len = read(fd, buf, sizeof(buf));

	g_assert(len > 0);

	util_hexdump('>', buf, len, test_debug, "GATT: ");

	g_assert_cmpint(len, ==, pdu->size);

	g_assert(memcmp(buf, pdu->data, pdu->size) == 0);

	/* Empty client PDU means to trigger something out-of-band. */
	pdu = &context->data->pdu_list[context->pdu_offset];

	if (pdu->valid && (pdu->size == 0)) {
		context->pdu_offset++;
		test_debug("triggering server action", "Empty client pdu: ");
		g_assert(step && step->func);
		step->func(context);
		return TRUE;
	}

	context_process(context);

	return TRUE;
}

static void print_debug(const char *str, void *user_data)
{
	const char *prefix = user_data;

	tester_debug("%s%s", prefix, str);
}

struct db_attribute_test_data {
	struct gatt_db_attribute *match;
	bool found;
};

static bool matching_desc_data(struct gatt_db_attribute *a,
						struct gatt_db_attribute *b)
{
	uint16_t a_handle, b_handle;
	const bt_uuid_t *a_uuid, *b_uuid;

	a_handle = gatt_db_attribute_get_handle(a);
	b_handle = gatt_db_attribute_get_handle(b);

	a_uuid = gatt_db_attribute_get_type(a);
	b_uuid = gatt_db_attribute_get_type(b);

	return a_handle == b_handle && !bt_uuid_cmp(a_uuid, b_uuid);
}

static void find_matching_desc(struct gatt_db_attribute *source_desc_attr,
								void *user_data)
{
	struct db_attribute_test_data *desc_test_data = user_data;

	if (desc_test_data->found)
		return;

	desc_test_data->found = matching_desc_data(desc_test_data->match,
							source_desc_attr);
}

static void match_descs(struct gatt_db_attribute *client_desc_attr,
								void *user_data)
{
	struct gatt_db_attribute *source_char_attr = user_data;
	struct db_attribute_test_data desc_test_data;

	desc_test_data.match = client_desc_attr;
	desc_test_data.found = false;

	gatt_db_service_foreach_desc(source_char_attr, find_matching_desc,
							&desc_test_data);

	g_assert(desc_test_data.found);
}

static bool matching_char_data(struct gatt_db_attribute *a,
						struct gatt_db_attribute *b)
{
	uint16_t a_handle, b_handle, a_value_handle, b_value_handle;
	uint8_t a_properties, b_properties;
	bt_uuid_t a_uuid, b_uuid;

	gatt_db_attribute_get_char_data(a, &a_handle, &a_value_handle,
							&a_properties, &a_uuid);
	gatt_db_attribute_get_char_data(b, &b_handle, &b_value_handle,
							&b_properties, &b_uuid);

	return a_handle == b_handle && a_value_handle == b_value_handle &&
						a_properties == b_properties &&
						!bt_uuid_cmp(&a_uuid, &b_uuid);
}

static void find_matching_char(struct gatt_db_attribute *source_char_attr,
								void *user_data)
{
	struct db_attribute_test_data *char_test_data = user_data;

	if (char_test_data->found)
		return;

	if (matching_char_data(char_test_data->match, source_char_attr)) {

		gatt_db_service_foreach_desc(char_test_data->match, match_descs,
							source_char_attr);
		char_test_data->found = true;
	}
}

static void match_chars(struct gatt_db_attribute *client_char_attr,
								void *user_data)
{
	struct gatt_db_attribute *source_serv_attr = user_data;
	struct db_attribute_test_data char_test_data;

	char_test_data.match = client_char_attr;
	char_test_data.found = false;

	gatt_db_service_foreach_char(source_serv_attr, find_matching_char,
							&char_test_data);

	g_assert(char_test_data.found);
}

static bool matching_service_data(struct gatt_db_attribute *a,
						struct gatt_db_attribute *b)
{
	uint16_t a_start, b_start, a_end, b_end;
	bool a_primary, b_primary;
	bt_uuid_t a_uuid, b_uuid;

	gatt_db_attribute_get_service_data(a, &a_start, &a_end, &a_primary,
								&a_uuid);
	gatt_db_attribute_get_service_data(b, &b_start, &b_end, &b_primary,
								&b_uuid);

	return a_start == b_start && a_end == b_end && a_primary == b_primary &&
						!bt_uuid_cmp(&a_uuid, &b_uuid);
}

static void find_matching_service(struct gatt_db_attribute *source_serv_attr,
								void *user_data)
{
	struct db_attribute_test_data *serv_test_data = user_data;

	if (serv_test_data->found)
		return;

	if (matching_service_data(serv_test_data->match, source_serv_attr)) {
		gatt_db_service_foreach_char(serv_test_data->match, match_chars,
							source_serv_attr);
		serv_test_data->found = true;
	}
}

static void match_services(struct gatt_db_attribute *client_serv_attr,
								void *user_data)
{
	struct gatt_db *source_db = user_data;
	struct db_attribute_test_data serv_test_data;

	serv_test_data.match = client_serv_attr;
	serv_test_data.found = false;

	gatt_db_foreach_service(source_db, NULL,
					find_matching_service, &serv_test_data);

	g_assert(serv_test_data.found);
}

static void client_ready_cb(bool success, uint8_t att_ecode, void *user_data)
{
	struct context *context = user_data;

	g_assert(success);

	if (!context->data->source_db) {
		context_quit(context);
		return;
	}

	g_assert(context->client);
	g_assert(context->client_db);

	gatt_db_foreach_service(context->client_db, NULL, match_services,
						context->data->source_db);

	if (context->data->step) {
		const struct test_step *step = context->data->step;

		step->func(context);
		return;
	}

	context_quit(context);
}

static struct context *create_context(uint16_t mtu, gconstpointer data)
{
	struct context *context = g_new0(struct context, 1);
	const struct test_data *test_data = data;
	GIOChannel *channel;
	int err, sv[2];

	err = socketpair(AF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC, 0, sv);
	g_assert(err == 0);

	context->att = bt_att_new(sv[0], false);
	g_assert(context->att);

	switch (test_data->context_type) {
	case ATT:
		bt_att_set_debug(context->att, print_debug, "bt_att:", NULL);

		bt_gatt_exchange_mtu(context->att, mtu, NULL, NULL, NULL);
		break;
	case SERVER:
		context->server_db = gatt_db_ref(test_data->source_db);
		g_assert(context->server_db);

		context->server = bt_gatt_server_new(context->server_db,
							context->att, mtu);
		g_assert(context->server);

		bt_gatt_server_set_debug(context->server, print_debug,
						"bt_gatt_server:", NULL);
		break;
	case CLIENT:
		context->client_db = gatt_db_new();
		g_assert(context->client_db);

		context->client = bt_gatt_client_new(context->client_db,
							context->att, mtu);
		g_assert(context->client);

		bt_gatt_client_set_debug(context->client, print_debug,
						"bt_gatt_client:", NULL);

		bt_gatt_client_set_ready_handler(context->client,
						client_ready_cb, context, NULL);
		break;
	default:
		break;
	}

	channel = g_io_channel_unix_new(sv[1]);

	g_io_channel_set_close_on_unref(channel, TRUE);
	g_io_channel_set_encoding(channel, NULL, NULL);
	g_io_channel_set_buffered(channel, FALSE);

	context->source = g_io_add_watch(channel,
				G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
				test_handler, context);
	g_assert(context->source > 0);

	g_io_channel_unref(channel);

	context->fd = sv[1];
	context->data = data;

	return context;
}

static void generic_search_cb(bool success, uint8_t att_ecode,
						struct bt_gatt_result *result,
						void *user_data)
{
	struct context *context = user_data;

	bt_gatt_request_unref(context->req);
	context->req = NULL;

	g_assert(success);

	context_quit(context);
}

static void test_read_cb(bool success, uint8_t att_ecode,
					const uint8_t *value, uint16_t length,
					void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	g_assert(att_ecode == step->expected_att_ecode);

	if (success) {
		g_assert(length == step->length);
		g_assert(memcmp(value, step->value, length) == 0);
	}

	context_quit(context);
}

static void test_read(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_read_value(context->client, step->handle,
						test_read_cb, context, NULL));
}

static const uint8_t read_data_1[] = {0x01, 0x02, 0x03};

static const struct test_step test_read_1 = {
	.handle = 0x0003,
	.func = test_read,
	.expected_att_ecode = 0,
	.value = read_data_1,
	.length = 0x03
};

static const struct test_step test_read_2 = {
	.handle = 0x0000,
	.func = test_read,
	.expected_att_ecode = 0x01,
};

static const struct test_step test_read_3 = {
	.handle = 0x0003,
	.func = test_read,
	.expected_att_ecode = 0x02,
};

static const struct test_step test_read_4 = {
	.handle = 0x0003,
	.func = test_read,
	.expected_att_ecode = 0x08,
};

static const struct test_step test_read_5 = {
	.handle = 0x0003,
	.func = test_read,
	.expected_att_ecode = 0x05,
};

static const struct test_step test_read_6 = {
	.handle = 0x0003,
	.func = test_read,
	.expected_att_ecode = 0x0c,
};

static const struct test_step test_read_7 = {
	.handle = 0x0004,
	.func = test_read,
	.expected_att_ecode = 0x00,
	.value = read_data_1,
	.length = 0x03
};

static const struct test_step test_read_8 = {
	.handle = 0x0004,
	.func = test_read,
	.expected_att_ecode = 0x02,
};

static const struct test_step test_read_9 = {
	.handle = 0x0004,
	.func = test_read,
	.expected_att_ecode = 0x08,
};

static const struct test_step test_read_10 = {
	.handle = 0x0004,
	.func = test_read,
	.expected_att_ecode = 0x05,
};

static const struct test_step test_read_11 = {
	.handle = 0x0004,
	.func = test_read,
	.expected_att_ecode = 0x0c,
};

static const struct test_step test_read_12 = {
	.handle = 0x0003,
	.func = test_read,
	.expected_att_ecode = 0x80,
};

static void test_write_cb(bool success, uint8_t att_ecode, void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	g_assert(att_ecode == step->expected_att_ecode);

	context_quit(context);
}

static void test_write(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_write_value(context->client, step->handle,
				step->value, step->length, test_write_cb,
				context, NULL));
}

static const uint8_t write_data_1[] = {0x01, 0x02, 0x03};

static const struct test_step test_write_1 = {
	.handle = 0x0007,
	.func = test_write,
	.expected_att_ecode = 0,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_2 = {
	.handle = 0x0000,
	.func = test_write,
	.expected_att_ecode = 0x01,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_3 = {
	.handle = 0x0007,
	.func = test_write,
	.expected_att_ecode = 0x03,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_4 = {
	.handle = 0x0007,
	.func = test_write,
	.expected_att_ecode = 0x08,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_5 = {
	.handle = 0x0007,
	.func = test_write,
	.expected_att_ecode = 0x05,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_6 = {
	.handle = 0x0007,
	.func = test_write,
	.expected_att_ecode = 0x0c,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_7 = {
	.handle = 0x0008,
	.func = test_write,
	.expected_att_ecode = 0,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_8 = {
	.handle = 0x0000,
	.func = test_write,
	.expected_att_ecode = 0x01,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_9 = {
	.handle = 0x0008,
	.func = test_write,
	.expected_att_ecode = 0x03,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_10 = {
	.handle = 0x0008,
	.func = test_write,
	.expected_att_ecode = 0x08,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_11 = {
	.handle = 0x0008,
	.func = test_write,
	.expected_att_ecode = 0x05,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_write_12 = {
	.handle = 0x0008,
	.func = test_write,
	.expected_att_ecode = 0x0c,
	.value = write_data_1,
	.length = 0x03
};

static void test_write_without_response(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_write_without_response(context->client,
							step->handle,
							false, step->value,
							step->length));
}

static const struct test_step test_write_without_response_1 = {
	.handle = 0x0007,
	.func = test_write_without_response,
	.expected_att_ecode = 0,
	.value = write_data_1,
	.length = 0x03
};

static bool local_counter(uint32_t *sign_cnt, void *user_data)
{
	static uint32_t cnt = 0;

	*sign_cnt = cnt++;

	return true;
}

static void test_signed_write(struct context *context)
{
	const struct test_step *step = context->data->step;
	uint8_t key[16] = {0xD8, 0x51, 0x59, 0x48, 0x45, 0x1F, 0xEA, 0x32, 0x0D,
				0xC0, 0x5A, 0x2E, 0x88, 0x30, 0x81, 0x88 };

	if (!bt_att_has_crypto(context->att)) {
		context_quit(context);
		return;
	}

	g_assert(bt_att_set_local_key(context->att, key, local_counter,
								context));

	g_assert(bt_gatt_client_write_without_response(context->client,
							step->handle,
							true, step->value,
							step->length));
}

static const struct test_step test_signed_write_1 = {
	.handle = 0x0007,
	.func = test_signed_write,
	.expected_att_ecode = 0,
	.value = write_data_1,
	.length = 0x03
};

static void test_signed_write_seclevel(struct context *context)
{
	const struct test_step *step = context->data->step;
	uint8_t key[16] = {0xD8, 0x51, 0x59, 0x48, 0x45, 0x1F, 0xEA, 0x32, 0x0D,
				0xC0, 0x5A, 0x2E, 0x88, 0x30, 0x81, 0x88 };

	g_assert(bt_att_set_local_key(context->att, key, local_counter,
								context));

	g_assert(bt_att_set_security(context->att, BT_ATT_SECURITY_MEDIUM));

	g_assert(bt_gatt_client_write_without_response(context->client,
							step->handle,
							true, step->value,
							step->length));
}

static const struct test_step test_signed_write_seclevel_1 = {
	.handle = 0x0007,
	.func = test_signed_write_seclevel,
	.expected_att_ecode = 0,
	.value = write_data_1,
	.length = 0x03
};

static void test_long_write_cb(bool success, bool reliable_error,
					uint8_t att_ecode, void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	g_assert(att_ecode == step->expected_att_ecode);

	context_quit(context);
}

static void test_long_write(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_write_long_value(context->client, false,
				step->handle, 0, step->value,
				step->length, test_long_write_cb,
				context, NULL));
}

/* The maximum length of an attribute value shall be 512 octets. */
static const uint8_t long_data_2[512] = { [0 ... 511] = 0xff };

static const struct test_step test_long_write_1 = {
	.handle = 0x0007,
	.func = test_long_write,
	.expected_att_ecode = 0,
	.value = long_data_2,
	.length = sizeof(long_data_2)
};

static const struct test_step test_long_write_2 = {
	.handle = 0x0000,
	.func = test_long_write,
	.expected_att_ecode = 0x01,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_3 = {
	.handle = 0x0003,
	.func = test_long_write,
	.expected_att_ecode = 0x03,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_4 = {
	.handle = 0x0007,
	.func = test_long_write,
	.expected_att_ecode = 0x08,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_5 = {
	.handle = 0x0007,
	.func = test_long_write,
	.expected_att_ecode = 0x05,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_6 = {
	.handle = 0x0007,
	.func = test_long_write,
	.expected_att_ecode = 0x0c,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_7 = {
	.handle = 0x0008,
	.func = test_long_write,
	.expected_att_ecode = 0,
	.value = long_data_2,
	.length = sizeof(long_data_2)
};

static const struct test_step test_long_write_8 = {
	.handle = 0x0000,
	.func = test_long_write,
	.expected_att_ecode = 0x01,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_9 = {
	.handle = 0x0008,
	.func = test_long_write,
	.expected_att_ecode = 0x03,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_10 = {
	.handle = 0x0008,
	.func = test_long_write,
	.expected_att_ecode = 0x08,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_11 = {
	.handle = 0x0008,
	.func = test_long_write,
	.expected_att_ecode = 0x05,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_long_write_12 = {
	.handle = 0x0008,
	.func = test_long_write,
	.expected_att_ecode = 0x0c,
	.value = write_data_1,
	.length = 0x03
};

static void test_reliable_write_cb(bool success, bool reliable_error,
					uint8_t att_ecode, void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	g_assert(att_ecode == step->expected_att_ecode);

	g_assert(!reliable_error);

	context_quit(context);
}

static void test_reliable_write(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_write_long_value(context->client, true,
				step->handle, 0, step->value,
				step->length, test_reliable_write_cb,
				context, NULL));
}

static const struct test_step test_reliable_write_1 = {
	.handle = 0x0007,
	.func = test_reliable_write,
	.expected_att_ecode = 0,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_reliable_write_2 = {
	.handle = 0x0000,
	.func = test_reliable_write,
	.expected_att_ecode = 0x01,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_reliable_write_3 = {
	.handle = 0x0003,
	.func = test_reliable_write,
	.expected_att_ecode = 0x03,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_reliable_write_4 = {
	.handle = 0x0007,
	.func = test_reliable_write,
	.expected_att_ecode = 0x08,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_reliable_write_5 = {
	.handle = 0x0007,
	.func = test_reliable_write,
	.expected_att_ecode = 0x05,
	.value = write_data_1,
	.length = 0x03
};

static const struct test_step test_reliable_write_6 = {
	.handle = 0x0007,
	.func = test_reliable_write,
	.expected_att_ecode = 0x0c,
	.value = write_data_1,
	.length = 0x03
};

static void att_write_cb(struct gatt_db_attribute *att, int err,
								void *user_data)
{
	g_assert(!err);
}

static struct gatt_db_attribute *
add_char_with_value(struct gatt_db_attribute *service_att, uint16_t handle,
				bt_uuid_t *uuid, uint32_t att_permissions,
				uint8_t char_properties, const void *value,
				size_t len)
{
	struct gatt_db_attribute *attrib;

	if (handle)
		attrib = gatt_db_service_insert_characteristic(service_att,
								handle, uuid,
								att_permissions,
								char_properties,
								NULL, NULL,
								NULL);
	else
		attrib = gatt_db_service_add_characteristic(service_att, uuid,
								att_permissions,
								char_properties,
								NULL, NULL,
								NULL);

	g_assert(attrib != NULL);

	gatt_db_attribute_write(attrib, 0, value, len, 0x00, NULL,
							att_write_cb, NULL);

	return attrib;
}

static struct gatt_db_attribute *
add_desc_with_value(struct gatt_db_attribute *att, uint16_t handle,
					bt_uuid_t *uuid, uint32_t att_perms,
					const uint8_t *value, size_t len)
{
	struct gatt_db_attribute *desc_att;

	if (handle)
		desc_att = gatt_db_service_insert_descriptor(att, handle, uuid,
							att_perms, NULL, NULL,
							NULL);
	else
		desc_att = gatt_db_service_add_descriptor(att, uuid, att_perms,
							NULL, NULL, NULL);

	gatt_db_attribute_write(desc_att, 0, value, len, 0x00, NULL,
							att_write_cb, NULL);

	return desc_att;
}

enum gatt_type {
	PRIMARY,
	SECONDARY,
	INCLUDE,
	CHARACTERISTIC,
	DESCRIPTOR
};

struct att_handle_spec {
	uint16_t handle;
	const char *uuid;
	enum gatt_type type;
	uint8_t char_properties;
	uint32_t att_permissions;
	const uint8_t *value;
	size_t len;
	bool valid;
};

#define PRIMARY_SERVICE(start_handle, srv_uuid, num_handles)	\
	{							\
		.valid = true,					\
		.handle = start_handle,				\
		.type = PRIMARY,				\
		.uuid = srv_uuid,				\
		.len = num_handles,				\
	}

#define SECONDARY_SERVICE(start_handle, srv_uuid, num_handles)	\
	{							\
		.valid = true,					\
		.handle = start_handle,				\
		.type = SECONDARY,				\
		.uuid = srv_uuid,				\
		.len = num_handles,				\
	}

#define INCLUDE(include_handle)				\
	{						\
		.valid = true,				\
		.type = INCLUDE,			\
		.handle = include_handle,		\
	}

#define STR(x) #x

#define CHARACTERISTIC(chr_uuid, permissions, properties, bytes...)	\
	{								\
		.valid = true,						\
		.type = CHARACTERISTIC,					\
		.uuid = STR(chr_uuid),					\
		.att_permissions = permissions,				\
		.char_properties = properties,				\
		.value = data(bytes),					\
		.len = sizeof(data(bytes)),				\
	}

#define CHARACTERISTIC_STR(chr_uuid, permissions, properties, string)	\
		{							\
		.valid = true,						\
		.type = CHARACTERISTIC,					\
		.uuid = STR(chr_uuid),					\
		.att_permissions = permissions,				\
		.char_properties = properties,				\
		.value = (uint8_t *)string,				\
		.len = strlen(string),					\
	}

#define DESCRIPTOR(desc_uuid, permissions, bytes...)	\
	{						\
		.valid = true,				\
		.type = DESCRIPTOR,			\
		.uuid = STR(desc_uuid),			\
		.att_permissions = permissions,		\
		.value = data(bytes),			\
		.len = sizeof(data(bytes)),		\
	}

#define DESCRIPTOR_STR(desc_uuid, permissions, string)	\
	{						\
		.valid = true,				\
		.type = DESCRIPTOR,			\
		.uuid = STR(desc_uuid),			\
		.att_permissions = permissions,		\
		.value = (uint8_t *)string,		\
		.len = strlen(string),			\
	}


static struct gatt_db *make_db(const struct att_handle_spec *spec)
{
	struct gatt_db *db = gatt_db_new();
	struct gatt_db_attribute *att, *include_att;
	bt_uuid_t uuid;

	att = include_att = NULL;

	for (; spec->valid; spec++) {
		switch (spec->type) {
		case PRIMARY:
		case SECONDARY:
			bt_string_to_uuid(&uuid, spec->uuid);

			if (att)
				gatt_db_service_set_active(att, true);

			att = gatt_db_insert_service(db, spec->handle, &uuid,
					spec->type == PRIMARY, spec->len);
			break;

		case INCLUDE:
			include_att = gatt_db_get_attribute(db, spec->handle);

			gatt_db_service_add_included(att, include_att);
			break;

		case CHARACTERISTIC:
			bt_string_to_uuid(&uuid, spec->uuid);

			add_char_with_value(att, spec->handle, &uuid,
							spec->att_permissions,
							spec->char_properties,
							spec->value, spec->len);

			break;

		case DESCRIPTOR:
			bt_string_to_uuid(&uuid, spec->uuid);

			add_desc_with_value(att, spec->handle, &uuid,
							spec->att_permissions,
							spec->value, spec->len);

			break;
		};
	}

	if (att)
		gatt_db_service_set_active(att, true);

	return db;
}

static struct gatt_db *make_service_data_1_db(void)
{
	const struct att_handle_spec specs[] = {
		PRIMARY_SERVICE(0x0001, GATT_UUID, 4),
		CHARACTERISTIC_STR(GATT_CHARAC_DEVICE_NAME, BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ, "BlueZ"),
		DESCRIPTOR_STR(GATT_CHARAC_USER_DESC_UUID, BT_ATT_PERM_READ,
								"Device Name"),
		PRIMARY_SERVICE(0x0005, HEART_RATE_UUID, 4),
		CHARACTERISTIC_STR(GATT_CHARAC_MANUFACTURER_NAME_STRING,
						BT_ATT_PERM_READ,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE, ""),
		DESCRIPTOR_STR(GATT_CHARAC_USER_DESC_UUID, BT_ATT_PERM_READ,
							"Manufacturer Name"),
		{ }
	};

	return make_db(specs);
}

#define CHARACTERISTIC_STR_AT(chr_handle, chr_uuid, permissions, properties, \
								string) \
	{								\
		.valid = true,						\
		.handle = chr_handle,					\
		.type = CHARACTERISTIC,					\
		.uuid = STR(chr_uuid),					\
		.att_permissions = permissions,				\
		.char_properties = properties,				\
		.value = (uint8_t *)string,				\
		.len = strlen(string),					\
	}

#define DESCRIPTOR_STR_AT(desc_handle, desc_uuid, permissions, string)	\
	{								\
		.valid = true,						\
		.handle = desc_handle,					\
		.type = DESCRIPTOR,					\
		.uuid = STR(desc_uuid),					\
		.att_permissions = permissions,				\
		.value = (uint8_t *)string,				\
		.len = strlen(string),					\
	}

static struct gatt_db *make_service_data_2_db(void)
{
	const struct att_handle_spec specs[] = {
		PRIMARY_SERVICE(0x0001, GATT_UUID, 4),
		CHARACTERISTIC_STR(GATT_CHARAC_DEVICE_NAME, BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ, "BlueZ"),
		DESCRIPTOR_STR(GATT_CHARAC_USER_DESC_UUID, BT_ATT_PERM_READ,
								"Device Name"),
		PRIMARY_SERVICE(0x0005, HEART_RATE_UUID, 6),
		CHARACTERISTIC_STR_AT(0x0008,
					GATT_CHARAC_MANUFACTURER_NAME_STRING,
					BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ |
					BT_GATT_CHRC_PROP_WRITE, ""),
		DESCRIPTOR_STR_AT(0x000a, GATT_CHARAC_USER_DESC_UUID,
					BT_ATT_PERM_READ, "Manufacturer Name"),
		{ }
	};

	return make_db(specs);
}

#define CHARACTERISTIC_AT(chr_handle, chr_uuid, permissions, properties, \
							bytes...)	\
	{								\
		.valid = true,						\
		.handle = chr_handle,					\
		.type = CHARACTERISTIC,					\
		.uuid = STR(chr_uuid),					\
		.att_permissions = permissions,				\
		.char_properties = properties,				\
		.value = data(bytes),					\
		.len = sizeof(data(bytes)),				\
	}

#define DESCRIPTOR_AT(desc_handle, desc_uuid, permissions, bytes...)	\
	{								\
		.valid = true,						\
		.handle = desc_handle,					\
		.type = DESCRIPTOR,					\
		.uuid = STR(desc_uuid),					\
		.att_permissions = permissions,				\
		.value = data(bytes),					\
		.len = sizeof(data(bytes)),				\
	}

static struct gatt_db *make_service_data_3_db(void)
{
	const struct att_handle_spec specs[] = {
		PRIMARY_SERVICE(0x0100, GAP_UUID, 0x0121 - 0x0100 + 1),
		CHARACTERISTIC_STR_AT(0x0111, GATT_CHARAC_DEVICE_NAME,
					BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ, "BlueZ"),
		CHARACTERISTIC_AT(0x0121, GATT_CHARAC_APPEARANCE,
					BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ, 0x00, 0x00),
		PRIMARY_SERVICE(0x0200, GATT_UUID, 0x0200 - 0x0200 + 1),
		PRIMARY_SERVICE(0x0300, HEART_RATE_UUID, 0x0320 - 0x0300 + 1),
		CHARACTERISTIC_STR_AT(0x0311,
					GATT_CHARAC_MANUFACTURER_NAME_STRING,
					BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ |
					BT_GATT_CHRC_PROP_WRITE, ""),
		DESCRIPTOR_AT(0x0320, GATT_CLIENT_CHARAC_CFG_UUID,
					BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					0x00, 0x00),
		{ }
	};

	return make_db(specs);
}

/*
 * Defined Test database 1:
 * Tiny database fits into a single minimum sized-pdu.
 * Satisfies requirements:
 * 3. At least one primary service at the MAX handle
 * 7. at least one service uuid with multiple instances
 * 8. Some simple services, some with included services
 * 9. an instance where handle of included service comes before the including
 * service
 * 11. Simple characteristics (no desc) and complex characteristics
 *     (multiple descriptors)
 * 12. Instances of complex chars with 16-bit and 128-bit uuids
 *     (although not in scrambled order)
 */

static struct gatt_db *make_test_spec_small_db(void)
{
	const struct att_handle_spec specs[] = {
		SECONDARY_SERVICE(0x0001, DEVICE_INFORMATION_UUID, 16),
		CHARACTERISTIC_STR(GATT_CHARAC_MANUFACTURER_NAME_STRING,
						BT_ATT_PERM_READ |
						BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_NOTIFY |
						BT_GATT_CHRC_PROP_INDICATE,
						"BlueZ"),
		DESCRIPTOR(GATT_CLIENT_CHARAC_CFG_UUID, BT_ATT_PERM_READ |
						BT_ATT_PERM_WRITE, 0x00, 0x00),
		DESCRIPTOR_STR(GATT_CHARAC_USER_DESC_UUID, BT_ATT_PERM_READ,
							"Manufacturer Name"),
		PRIMARY_SERVICE(0xF010, GAP_UUID, 8),
		INCLUDE(0x0001),
		CHARACTERISTIC_STR(GATT_CHARAC_DEVICE_NAME, BT_ATT_PERM_READ,
							BT_GATT_CHRC_PROP_READ,
							"BlueZ Unit Tester"),
		CHARACTERISTIC(0000B009-0000-0000-0123-456789abcdef,
					BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					BT_GATT_CHRC_PROP_READ, 0x09),
		CHARACTERISTIC(GATT_CHARAC_APPEARANCE, BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ, 0x00, 0x00),
		PRIMARY_SERVICE(0xFFFF, DEVICE_INFORMATION_UUID, 1),
		{ }
	};

	return make_db(specs);
}

/*
 * Defined Test database 2:
 * Large Database with 128-bit services at the end
 * Satisfies requirements:
 * 4. at least one primary service without any include or characteristic
 *    at the max handle.
 * 6. at least one secondary service
 * 7. at least one each of 16-bit and 128-bit UUID with multiple instances
 * 8. some simple services, some some with included services
 * 9. one instance where an included service comes before the including
 * 10. one or more services with both 16-bit and 128-bit service UUIDs
 * 11. simple and complex characteristics
 * 12. complex chars with 16-bit and 128-bit uuids
 */

#define STRING_512BYTES "11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"11111222223333344444555556666677777888889999900000" \
			"111112222233"

static struct gatt_db *make_test_spec_large_db_1(void)
{
	const struct att_handle_spec specs[] = {
		PRIMARY_SERVICE(0x0080, "a00b", 6),
		CHARACTERISTIC(0xb008, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					BT_GATT_CHRC_PROP_READ |
					BT_GATT_CHRC_PROP_WRITE,
					0x08),
		DESCRIPTOR(0xb015, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE, 0x01),
		DESCRIPTOR(0xb016, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE, 0x02),
		DESCRIPTOR(0xb017, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE |
						BT_ATT_PERM_ENCRYPT, 0x03),

		SECONDARY_SERVICE(0x0001, "a00d", 6),
		INCLUDE(0x0080),
		CHARACTERISTIC(0xb00c, BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
									0x0C),
		CHARACTERISTIC(0000b00b-0000-0000-0123-456789abcdef,
				BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ, 0x0B),

		PRIMARY_SERVICE(0x0010, GATT_UUID, 4),
		CHARACTERISTIC(GATT_CHARAC_SERVICE_CHANGED, BT_ATT_PERM_READ,
						BT_GATT_CHRC_PROP_INDICATE,
						0x01, 0x00, 0xFF, 0xFF),
		DESCRIPTOR(GATT_CLIENT_CHARAC_CFG_UUID,
					BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					0x00, 0x00),

		PRIMARY_SERVICE(0x0020, "a00a", 10),
		INCLUDE(0x0001),
		CHARACTERISTIC(0xb001, BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
									0x01),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						STRING_512BYTES),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_WRITE,
						"1111122222333334444455555"
						"6666677777888889999900000"),
		CHARACTERISTIC(0xb003, BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_WRITE, 0x03),

		PRIMARY_SERVICE(0x0030, "a00b", 3),
		CHARACTERISTIC(0xb007, BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_WRITE, 0x07),

		PRIMARY_SERVICE(0x0040, GAP_UUID, 7),
		CHARACTERISTIC_STR(GATT_CHARAC_DEVICE_NAME, BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ,
					"Test Database"),
		CHARACTERISTIC(GATT_CHARAC_APPEARANCE, BT_ATT_PERM_READ,
						BT_GATT_CHRC_PROP_READ, 17),
		CHARACTERISTIC(GATT_CHARAC_PERIPHERAL_PREF_CONN,
				BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
				0x64, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x07, 0xD0),

		PRIMARY_SERVICE(0x0050, "a00b", 3),
		CHARACTERISTIC(0xb006, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					BT_GATT_CHRC_PROP_READ |
					BT_GATT_CHRC_PROP_WRITE |
					BT_GATT_CHRC_PROP_WRITE_WITHOUT_RESP |
					BT_GATT_CHRC_PROP_NOTIFY |
					BT_GATT_CHRC_PROP_INDICATE, 0x06),

		PRIMARY_SERVICE(0x0060, "a00b", 12),
		CHARACTERISTIC(0xb004, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
			BT_GATT_CHRC_PROP_READ | BT_GATT_CHRC_PROP_WRITE, 0x04),
		CHARACTERISTIC(0xb004, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
			BT_GATT_CHRC_PROP_READ | BT_GATT_CHRC_PROP_WRITE, 0x04),
		DESCRIPTOR(GATT_SERVER_CHARAC_CFG_UUID,
					BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					0x00, 0x00),
		CHARACTERISTIC(0xb004, 0, 0, 0x04),
		DESCRIPTOR(0xb012, 0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55,
				0x66, 0x77, 0x88, 0x99, 0x00, 0x11, 0x22, 0x33,
				0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00, 0x11,
				0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
				0x00, 0x11, 0x22, 0x33),
		CHARACTERISTIC(0xb004, BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
									0x04),
		DESCRIPTOR(0xb012, BT_ATT_PERM_READ, 0x11, 0x22, 0x33, 0x44,
				0x55, 0x66, 0x77, 0x88, 0x99, 0x00, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
				0x77, 0x88, 0x99, 0x00, 0x11, 0x22, 0x33),

		PRIMARY_SERVICE(0x0070, "a00b", 7),
		CHARACTERISTIC(0xb005, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE |
						BT_GATT_CHRC_PROP_EXT_PROP,
						0x05),
		DESCRIPTOR(GATT_CHARAC_EXT_PROPER_UUID, BT_ATT_PERM_READ, 0x03,
									0x00),
		DESCRIPTOR_STR(GATT_CHARAC_USER_DESC_UUID,
					BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
		DESCRIPTOR(GATT_CHARAC_FMT_UUID, 0x04, 0x00, 0x01, 0x30, 0x01,
								0x11, 0x31),
		DESCRIPTOR(0000d5d4-0000-0000-0123-456789abcdef,
							BT_ATT_PERM_READ, 0x44),

		/* 0x0080 service defined earlier, included in 0x0001 */

		PRIMARY_SERVICE(0x0090, "0000a00c-0000-0000-0123-456789abcdef",
									7),
		INCLUDE(0x0001),
		CHARACTERISTIC(0000b009-0000-0000-0123-456789abcdef,
					BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
					BT_GATT_CHRC_PROP_READ |
					BT_GATT_CHRC_PROP_WRITE |
					BT_GATT_CHRC_PROP_EXT_PROP, 0x09),
		DESCRIPTOR(GATT_CHARAC_EXT_PROPER_UUID, BT_ATT_PERM_READ, 0x01,
									0x00),
		DESCRIPTOR(0000d9d2-0000-0000-0123-456789abcdef,
				BT_ATT_PERM_READ | BT_ATT_PERM_WRITE, 0x22),
		DESCRIPTOR(0000d9d3-0000-0000-0123-456789abcdef,
						BT_ATT_PERM_WRITE, 0x33),

		PRIMARY_SERVICE(0x00a0, "a00f", 18),
		CHARACTERISTIC_STR(0xb00e, BT_ATT_PERM_READ,
					BT_GATT_CHRC_PROP_READ, "Length is "),
		DESCRIPTOR(GATT_CHARAC_FMT_UUID, BT_ATT_PERM_READ, 0x19, 0x00,
						0x00, 0x30, 0x01, 0x00, 0x00),
		CHARACTERISTIC(0xb00f, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE, 0x65),
		DESCRIPTOR(GATT_CHARAC_FMT_UUID, BT_ATT_PERM_READ, 0x04, 0x00,
						0x01, 0x27, 0x01, 0x01, 0x00),
		CHARACTERISTIC(0xb006, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						0x34, 0x12),
		DESCRIPTOR(GATT_CHARAC_FMT_UUID, BT_ATT_PERM_READ, 0x06, 0x00,
						0x10, 0x27, 0x01, 0x02, 0x00),
		CHARACTERISTIC(0xb007, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						0x04, 0x03, 0x02, 0x01),
		DESCRIPTOR(GATT_CHARAC_FMT_UUID, BT_ATT_PERM_READ, 0x08, 0x00,
						0x17, 0x27, 0x01, 0x03, 0x00),
		CHARACTERISTIC(0xb010, BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
					0x65, 0x34, 0x12, 0x04, 0x03, 0x02,
					0x01),
		DESCRIPTOR(GATT_CHARAC_AGREG_FMT_UUID, BT_ATT_PERM_READ, 0xA6,
						0x00, 0xa9, 0x00, 0xac, 0x00),
		CHARACTERISTIC(0xb011, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_AUTH, 0x012),

		PRIMARY_SERVICE(0x00C0, "0000a00c-0000-0000-0123-456789abcdef",
									30),
		CHARACTERISTIC(0xb00a, BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
									0x0A),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						"111112222233333444445"),
		DESCRIPTOR(0xb012, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						"2222233333444445555566"),
		DESCRIPTOR(0xb013, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11,
				0x22),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						"33333444445555566666777"),
		DESCRIPTOR(0xb014, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11,
				0x22, 0x33),
		CHARACTERISTIC(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33),
		DESCRIPTOR(0xb012, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
				0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33),
		CHARACTERISTIC(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44),
		DESCRIPTOR(0xb013, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
				0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33, 0x44),
		CHARACTERISTIC(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55,
						0x66, 0x77, 0x88, 0x99, 0x00,
						0x11, 0x22, 0x33, 0x44, 0x55),
		DESCRIPTOR(0xb014, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
				0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33, 0x44, 0x55),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						"1111122222333334444455555"
						"666667777788888999"),
		DESCRIPTOR(0xb012, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
				0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						"2222233333444445555566666"
						"7777788888999990000"),
		DESCRIPTOR(0xb013, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
				0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33, 0x44),
		CHARACTERISTIC_STR(0xb002, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
						BT_GATT_CHRC_PROP_READ |
						BT_GATT_CHRC_PROP_WRITE,
						"3333344444555556666677777"
						"88888999990000011111"),
		DESCRIPTOR(0xb014, BT_ATT_PERM_READ | BT_ATT_PERM_WRITE,
				0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
				0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12,
				0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x12, 0x34, 0x56, 0x78, 0x90, 0x11, 0x22,
				0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00,
				0x11, 0x22, 0x33, 0x44, 0x55),
		{ }
	};

	return make_db(specs);
}

static void test_client(gconstpointer data)
{
	create_context(512, data);
}

static void test_server(gconstpointer data)
{
	struct context *context = create_context(512, data);
	ssize_t len;
	const struct test_pdu pdu = SERVER_MTU_EXCHANGE_PDU;

	len = write(context->fd, pdu.data, pdu.size);

	g_assert_cmpint(len, ==, pdu.size);

	util_hexdump('<', pdu.data, len, test_debug, "GATT: ");
}

static void test_search_primary(gconstpointer data)
{
	struct context *context = create_context(512, data);
	const struct test_data *test_data = data;

	context->req = bt_gatt_discover_all_primary_services(context->att,
							test_data->uuid,
							generic_search_cb,
							context, NULL);
}

static void test_search_included(gconstpointer data)
{
	struct context *context = create_context(512, data);

	context->req = bt_gatt_discover_included_services(context->att,
							0x0001, 0xffff,
							generic_search_cb,
							context, NULL);
}

static void test_search_chars(gconstpointer data)
{
	struct context *context = create_context(512, data);

	context->req = bt_gatt_discover_characteristics(context->att,
							0x0010, 0x0020,
							generic_search_cb,
							context, NULL);
	g_assert(context->req);
}

static void test_search_descs(gconstpointer data)
{
	struct context *context = create_context(512, data);

	context->req = bt_gatt_discover_descriptors(context->att,
							0x0013, 0x0016,
							generic_search_cb,
							context, NULL);
	g_assert(context->req);
}

static const struct test_step test_read_by_type_1 = {
	.handle = 0x0001,
	.end_handle = 0xffff,
	.expected_att_ecode = 0x0a,
	.value = read_data_1,
	.length = 0x03
};

static const struct test_step test_read_by_type_2 = {
	.handle = 0x0001,
	.end_handle = 0xffff,
	.expected_att_ecode = 0x02,
};

static const struct test_step test_read_by_type_3 = {
	.handle = 0x0001,
	.end_handle = 0xffff,
	.expected_att_ecode = 0x0a,
};

static const struct test_step test_read_by_type_4 = {
	.handle = 0x0001,
	.end_handle = 0xffff,
	.expected_att_ecode = 0x08,
};

static const struct test_step test_read_by_type_5 = {
	.handle = 0x0001,
	.end_handle = 0xffff,
	.expected_att_ecode = 0x05,
};

static const struct test_step test_read_by_type_6 = {
	.handle = 0x0001,
	.end_handle = 0xffff,
	.expected_att_ecode = 0x0c,
};

static void multiple_read_cb(bool success, uint8_t att_ecode,
					const uint8_t *value, uint16_t length,
					void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	g_assert_cmpint(att_ecode, ==, step->expected_att_ecode);

	if (success) {
		g_assert_cmpint(length, ==, step->length);
		g_assert(memcmp(value, step->value, length) == 0);
	}

	context_quit(context);
}

static void test_multiple_read(struct context *context)
{
	const struct test_step *step = context->data->step;
	uint16_t handles[2];

	handles[0] = step->handle;
	handles[1] = step->end_handle;

	g_assert(bt_gatt_client_read_multiple(context->client, handles, 2,
						multiple_read_cb, context,
						NULL));
}

static const struct test_step test_multiple_read_1 = {
	.handle = 0x0003,
	.end_handle = 0x0007,
	.func = test_multiple_read,
	.value = read_data_1,
	.length = 0x03
};

static const struct test_step test_multiple_read_2 = {
	.handle = 0x0003,
	.end_handle = 0x0007,
	.func = test_multiple_read,
	.expected_att_ecode = 0x02
};

static const struct test_step test_multiple_read_3 = {
	.handle = 0x0003,
	.end_handle = 0x0007,
	.func = test_multiple_read,
	.expected_att_ecode = 0x01
};

static const struct test_step test_multiple_read_4 = {
	.handle = 0x0003,
	.end_handle = 0x0007,
	.func = test_multiple_read,
	.expected_att_ecode = 0x08
};

static const struct test_step test_multiple_read_5 = {
	.handle = 0x0003,
	.end_handle = 0x0007,
	.func = test_multiple_read,
	.expected_att_ecode = 0x05
};

static const struct test_step test_multiple_read_6 = {
	.handle = 0x0003,
	.end_handle = 0x0007,
	.func = test_multiple_read,
	.expected_att_ecode = 0x0c
};

static void read_by_type_cb(bool success, uint8_t att_ecode,
						struct bt_gatt_result *result,
						void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;
	struct bt_gatt_iter iter;

	g_assert(att_ecode == step->expected_att_ecode);

	if (success) {
		uint16_t length, handle;
		const uint8_t *value;

		g_assert(bt_gatt_iter_init(&iter, result));
		g_assert(bt_gatt_iter_next_read_by_type(&iter, &handle, &length,
								&value));
		g_assert(length == step->length);
		g_assert(!memcmp(value, step->value, length));

		g_assert(!bt_gatt_iter_next_read_by_type(&iter, &handle,
							&length, &value));
	}

	context_quit(context);
}

static void test_read_by_type(gconstpointer data)
{
	struct context *context = create_context(512, data);
	const struct test_data *test_data = data;
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_read_by_type(context->att, step->handle,
					step->end_handle, test_data->uuid,
					read_by_type_cb, context, NULL));
}

static void test_long_read(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_read_long_value(context->client, step->handle,
						0, multiple_read_cb, context,
						NULL));
}

static const struct test_step test_long_read_1 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0,
	.value = read_data_1,
	.length = 0x03
};

static const struct test_step test_long_read_2 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0,
	.value = long_data_2,
	.length = sizeof(long_data_2)
};

static const struct test_step test_long_read_3 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0x02
};

static const struct test_step test_long_read_4 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0x07
};

static const struct test_step test_long_read_5 = {
	.handle = 0x0000,
	.func = test_long_read,
	.expected_att_ecode = 0x01
};

static const struct test_step test_long_read_6 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0x08
};

static const struct test_step test_long_read_7 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0x05
};

static const struct test_step test_long_read_8 = {
	.handle = 0x0003,
	.func = test_long_read,
	.expected_att_ecode = 0x0c
};

/* Descriptor test data's */

static const struct test_step test_long_read_9 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0,
	.value = read_data_1,
	.length = 0x03
};

static const struct test_step test_long_read_10 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0,
	.value = long_data_2,
	.length = sizeof(long_data_2)
};

static const struct test_step test_long_read_11 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0x02
};

static const struct test_step test_long_read_12 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0x07
};

static const struct test_step test_long_read_13 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0x08
};

static const struct test_step test_long_read_14 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0x05
};

static const struct test_step test_long_read_15 = {
	.handle = 0x0004,
	.func = test_long_read,
	.expected_att_ecode = 0x0c
};

static void notification_cb(uint16_t value_handle, const uint8_t *value,
					uint16_t length, void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	if (value_handle == step->handle) {
		g_assert_cmpint(length, ==, step->length);

		g_assert(memcmp(value, step->value, length) == 0);

		context_quit(context);
	}
}

static void notification_register_cb(uint16_t att_ecode, void *user_data)
{
	g_assert(!att_ecode);
}

static void test_notification(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_register_notify(context->client, step->handle,
						notification_register_cb,
						notification_cb, context,
						NULL));
}

static const struct test_step test_notification_1 = {
	.handle = 0x0003,
	.func = test_notification,
	.value = read_data_1,
	.length = 0x03,
};

static void test_server_notification(struct context *context)
{
	const struct test_step *step = context->data->step;

	bt_gatt_server_send_notification(context->server, step->handle,
						step->value, step->length);
}

static const struct test_step test_notification_server_1 = {
	.handle = 0x0003,
	.func = test_server_notification,
	.value = read_data_1,
	.length = 0x03,
};

static uint8_t indication_received;

static void test_indication_cb(void *user_data)
{
	struct context *context = user_data;

	indication_received = 1;

	context_quit(context);
}

static void test_server_indication_confirm(struct context *context)
{
	g_assert(indication_received == 1);
}

static void indication_cb(uint16_t value_handle, const uint8_t *value,
					uint16_t length, void *user_data)
{
	struct context *context = user_data;
	const struct test_step *step = context->data->step;

	if (value_handle == step->handle) {
		g_assert_cmpint(length, ==, step->length);

		g_assert(memcmp(value, step->value, length) == 0);
	}
}

static void test_indication(struct context *context)
{
	const struct test_step *step = context->data->step;

	g_assert(bt_gatt_client_register_notify(context->client, step->handle,
						notification_register_cb,
						indication_cb, context,
						NULL));
}

static const struct test_step test_indication_1 = {
	.handle = 0x0003,
	.func = test_indication,
	.value = read_data_1,
	.length = 0x03,
};

static void test_server_indication(struct context *context)
{
	const struct test_step *step = context->data->step;

	bt_gatt_server_send_indication(context->server, step->handle,
						step->value, step->length,
						test_indication_cb,
						context, NULL);
}

static const struct test_step test_indication_server_1 = {
	.handle = 0x0003,
	.func = test_server_indication,
	.post_func = test_server_indication_confirm,
	.value = read_data_1,
	.length = 0x03,
};

int main(int argc, char *argv[])
{
	struct gatt_db *service_db_1, *service_db_2, *service_db_3;
	struct gatt_db *ts_small_db, *ts_large_db_1;

	tester_init(&argc, &argv);

	service_db_1 = make_service_data_1_db();
	service_db_2 = make_service_data_2_db();
	service_db_3 = make_service_data_3_db();
	ts_small_db = make_test_spec_small_db();
	ts_large_db_1 = make_test_spec_large_db_1();

	/*
	 * Server Configuration
	 *
	 * The test group objective is to verify Generic Attribute Profile
	 * Server Configuration.
	 */

	define_test_client("/TP/GAC/CL/BV-01-C", test_client, NULL, NULL,
						raw_pdu(0x02, 0x00, 0x02));

	define_test_server("/TP/GAC/SR/BV-01-C", test_server, service_db_1,
					NULL,
					raw_pdu(0x03, 0x00, 0x02));

	/*
	 * Discovery
	 *
	 * The test group objective is to verify Generic Attribute Profile
	 * Discovery of Services and Service Characteristics.
	 */
	define_test_att("/TP/GAD/CL/BV-01-C", test_search_primary, NULL, NULL,
			raw_pdu(0x02, 0x00, 0x02),
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
			raw_pdu(0x11, 0x06, 0x10, 0x00, 0x13, 0x00, 0x00, 0x18,
					0x20, 0x00, 0x29, 0x00, 0xb0, 0x68,
					0x30, 0x00, 0x32, 0x00, 0x19, 0x18),
			raw_pdu(0x10, 0x33, 0x00, 0xff, 0xff, 0x00, 0x28),
			raw_pdu(0x11, 0x14, 0x90, 0x00, 0x96, 0x00, 0xef, 0xcd,
					0xab, 0x89, 0x67, 0x45, 0x23, 0x01,
					0x00, 0x00, 0x00, 0x00, 0x85, 0x60,
					0x00, 0x00),
			raw_pdu(0x10, 0x97, 0x00, 0xff, 0xff, 0x00, 0x28),
			raw_pdu(0x01, 0x10, 0x97, 0x00, 0x0a));

	define_test_att("/TP/GAD/CL/BV-01-C-small", test_search_primary, NULL,
			NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			PRIMARY_DISC_SMALL_DB);

	define_test_server("/TP/GAD/SR/BV-01-C", test_server, service_db_1,
			NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x10, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28),
			raw_pdu(0x11, 0x06, 0x01, 0x00, 0x04, 0x00, 0x01, 0x18,
					0x05, 0x00, 0x08, 0x00, 0x0d, 0x18),
			raw_pdu(0x10, 0x06, 0x00, 0xff, 0xff, 0x00, 0x28),
			raw_pdu(0x01, 0x10, 0x06, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-01-C-small", test_server, ts_small_db,
			NULL,
			raw_pdu(0x03, 0x00, 0x02),
			PRIMARY_DISC_SMALL_DB);

	define_test_server("/TP/GAD/SR/BV-01-C-large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			PRIMARY_DISC_LARGE_DB_1);

	define_test_att("/TP/GAD/CL/BV-02-C-1", test_search_primary, &uuid_16,
			NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0x00,
					0x18),
			raw_pdu(0x07, 0x01, 0x00, 0x07, 0x00),
			raw_pdu(0x06, 0x08, 0x00, 0xff, 0xff, 0x00, 0x28, 0x00,
					0x18),
			raw_pdu(0x01, 0x06, 0x08, 0x00, 0x0a));

	define_test_att("/TP/GAD/CL/BV-02-C-2", test_search_primary, &uuid_128,
			NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0xfb,
					0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00,
					0x80, 0x00, 0x10, 0x00, 0x00, 0x0d,
					0x18, 0x00, 0x00),
			raw_pdu(0x07, 0x10, 0x00, 0x17, 0x00),
			raw_pdu(0x06, 0x18, 0x00, 0xff, 0xff, 0x00, 0x28, 0xfb,
					0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00,
					0x80, 0x00, 0x10, 0x00, 0x00, 0x0d,
					0x18, 0x00, 0x00),
			raw_pdu(0x01, 0x06, 0x18, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-02-C/exists-16/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0x00,
				0x18),
			raw_pdu(0x07, 0x10, 0xf0, 0x17, 0xf0),
			raw_pdu(0x06, 0x18, 0xf0, 0xff, 0xff, 0x00, 0x28, 0x00,
				0x18),
			raw_pdu(0x01, 0x06, 0x18, 0xf0, 0x0a));

	define_test_server("/TP/GAD/SR/BV-02-C/exists-16/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0x0b,
				0xa0),
			raw_pdu(0x07, 0x30, 0x00, 0x32, 0x00, 0x50, 0x00, 0x52,
				0x00, 0x60, 0x00, 0x6b, 0x00, 0x70, 0x00, 0x76,
				0x00, 0x80, 0x00, 0x85, 0x00),
			raw_pdu(0x06, 0x86, 0x00, 0xff, 0xff, 0x00, 0x28, 0x0b,
				0xa0),
			raw_pdu(0x01, 0x06, 0x86, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-02-C/missing-16/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0x01,
				0x18),
			raw_pdu(0x01, 0x06, 0x01, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-02-C/missing-16/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0x0f,
				0xf0),
			raw_pdu(0x01, 0x06, 0x01, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-02-C/exists-128/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0xef,
				0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01, 0x00,
				0x00, 0x00, 0x00, 0x0c, 0xa0, 0x00, 0x00),
			raw_pdu(0x07, 0x90, 0x00, 0x96, 0x00, 0xc0, 0x00, 0xdd,
				0x00),
			raw_pdu(0x06, 0xde, 0x00, 0xff, 0xff, 0x00, 0x28, 0xef,
				0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01, 0x00,
				0x00, 0x00, 0x00, 0x0c, 0xa0, 0x00, 0x00),
			raw_pdu(0x01, 0x06, 0xde, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-02-C/missing-128/large-1",
			test_server, ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x06, 0x01, 0x00, 0xff, 0xff, 0x00, 0x28, 0xff,
				0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01, 0x00,
				0x00, 0x00, 0x00, 0x0c, 0xa0, 0x00, 0x00),
			raw_pdu(0x01, 0x06, 0x01, 0x00, 0x0a));

	define_test_att("/TP/GAD/CL/BV-03-C", test_search_included, NULL,
			NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x09, 0x08, 0x02, 0x00, 0x10, 0x00, 0x1f, 0x00,
					0x0f, 0x18),
			raw_pdu(0x08, 0x03, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x09, 0x06, 0x03, 0x00, 0x20, 0x00, 0x2f, 0x00,
					0x04, 0x00, 0x30, 0x00, 0x3f, 0x00),
			raw_pdu(0x0a, 0x20, 0x00),
			raw_pdu(0x0b, 0x00, 0x00, 0x3e, 0x39, 0x00, 0x00, 0x00,
					0x00, 0x01, 0x23, 0x45, 0x67, 0x89,
					0xab, 0xcd, 0xef),
			raw_pdu(0x0a, 0x30, 0x00),
			raw_pdu(0x0b, 0x00, 0x00, 0x3b, 0x39, 0x00, 0x00, 0x00,
					0x00, 0x01, 0x23, 0x45, 0x67, 0x89,
					0xab, 0xcd, 0xef),
			raw_pdu(0x08, 0x05, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x09, 0x08, 0x05, 0x00, 0x40, 0x00, 0x4f, 0x00,
								0x0a, 0x18),
			raw_pdu(0x08, 0x06, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x01, 0x08, 0x06, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-03-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x09, 0x08, 0x11, 0xf0, 0x01, 0x00, 0x10, 0x00,
					0x0a, 0x18),
			raw_pdu(0x08, 0x12, 0xf0, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x01, 0x08, 0x12, 0xf0, 0x0a));

	define_test_server("/TP/GAD/SR/BV-03-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x09, 0x08, 0x02, 0x00, 0x80, 0x00, 0x85, 0x00,
				0x0b, 0xa0, 0x21, 0x00, 0x01, 0x00, 0x06, 0x00,
				0x0d, 0xa0),
			raw_pdu(0x08, 0x22, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x09, 0x08, 0x91, 0x00, 0x01, 0x00, 0x06, 0x00,
				0x0d, 0xa0),
			raw_pdu(0x08, 0x92, 0x00, 0xff, 0xff, 0x02, 0x28),
			raw_pdu(0x01, 0x08, 0x92, 0x00, 0x0a));

	define_test_att("/TP/GAD/CL/BV-04-C", test_search_chars, NULL,
			NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x10, 0x00, 0x20, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x11, 0x00, 0x02, 0x12, 0x00, 0x25,
					0x2a),
			raw_pdu(0x08, 0x12, 0x00, 0x20, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x15, 0x13, 0x00, 0x02, 0x14, 0x00, 0x85,
					0x00, 0xef, 0xcd, 0xab, 0x89, 0x67,
					0x45, 0x23, 0x01, 0x00, 0x00, 0x00,
					0x00, 0x00, 0x00),
			raw_pdu(0x08, 0x14, 0x00, 0x20, 0x00, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x12, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-04-C/small/1", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x10, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x12, 0xf0, 0x02, 0x13, 0xf0, 0x00,
					0x2a),
			raw_pdu(0x08, 0x13, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x09, 0x15, 0x14, 0xf0, 0x02, 0x15, 0xf0, 0xef,
					0xcd, 0xab, 0x89, 0x67, 0x45, 0x23,
					0x01, 0x00, 0x00, 0x00, 0x00, 0x09,
					0xb0, 0x00, 0x00),
			raw_pdu(0x08, 0x15, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x16, 0xf0, 0x02, 0x17, 0xf0, 0x01,
					0x2a),
			raw_pdu(0x08, 0x17, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x17, 0xf0, 0x0a));

	define_test_server("/TP/GAD/SR/BV-04-C/small/2", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0x0f, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x02, 0x00, 0x32, 0x03, 0x00, 0x29,
					0x2a),
			raw_pdu(0x08, 0x03, 0x00, 0x0f, 0x00, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-04-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x20, 0x00, 0x29, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x22, 0x00, 0x02, 0x23, 0x00, 0x01,
				0xb0, 0x24, 0x00, 0x0a, 0x25, 0x00, 0x02, 0xb0,
				0x26, 0x00, 0x08, 0x27, 0x00, 0x02, 0xb0),
			raw_pdu(0x08, 0x27, 0x00, 0x29, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x28, 0x00, 0x08, 0x29, 0x00, 0x03,
				0xb0),
			raw_pdu(0x08, 0x29, 0x00, 0x29, 0x00, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x29, 0x00, 0x0a));

	define_test_att("/TP/GAD/CL/BV-05-C", test_search_chars, NULL,
			NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x10, 0x00, 0x20, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x11, 0x00, 0x02, 0x12, 0x00, 0x25,
					0x2a),
			raw_pdu(0x08, 0x12, 0x00, 0x20, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x15, 0x13, 0x00, 0x02, 0x14, 0x00, 0x85,
					0x00, 0xef, 0xcd, 0xab, 0x89, 0x67,
					0x45, 0x23, 0x01, 0x00, 0x00, 0x00,
					0x00, 0x00, 0x00),
			raw_pdu(0x08, 0x14, 0x00, 0x20, 0x00, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x12, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-05-C/small/1", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x10, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x12, 0xf0, 0x02, 0x13, 0xf0, 0x00,
					0x2a),
			raw_pdu(0x08, 0x13, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x09, 0x15, 0x14, 0xf0, 0x02, 0x15, 0xf0, 0xef,
					0xcd, 0xab, 0x89, 0x67, 0x45, 0x23,
					0x01, 0x00, 0x00, 0x00, 0x00, 0x09,
					0xb0, 0x00, 0x00),
			raw_pdu(0x08, 0x15, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x16, 0xf0, 0x02, 0x17, 0xf0, 0x01,
					0x2a),
			raw_pdu(0x08, 0x17, 0xf0, 0x17, 0xf0, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x17, 0xf0, 0x0a));

	define_test_server("/TP/GAD/SR/BV-05-C/small/2", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0x0f, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x02, 0x00, 0x32, 0x03, 0x00, 0x29,
					0x2a),
			raw_pdu(0x08, 0x03, 0x00, 0x0f, 0x00, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x03, 0x00, 0x0a));

	define_test_server("/TP/GAD/SR/BV-05-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x20, 0x00, 0x29, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x22, 0x00, 0x02, 0x23, 0x00, 0x01,
				0xb0, 0x24, 0x00, 0x0a, 0x25, 0x00, 0x02, 0xb0,
				0x26, 0x00, 0x08, 0x27, 0x00, 0x02, 0xb0),
			raw_pdu(0x08, 0x27, 0x00, 0x29, 0x00, 0x03, 0x28),
			raw_pdu(0x09, 0x07, 0x28, 0x00, 0x08, 0x29, 0x00, 0x03,
				0xb0),
			raw_pdu(0x08, 0x29, 0x00, 0x29, 0x00, 0x03, 0x28),
			raw_pdu(0x01, 0x08, 0x29, 0x00, 0x0a));

	define_test_att("/TP/GAD/CL/BV-06-C", test_search_descs, NULL, NULL,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x04, 0x13, 0x00, 0x16, 0x00),
			raw_pdu(0x05, 0x01, 0x13, 0x00, 0x02, 0x29, 0x14, 0x00,
					0x03, 0x29),
			raw_pdu(0x04, 0x15, 0x00, 0x16, 0x00),
			raw_pdu(0x05, 0x01, 0x15, 0x00, 0x04, 0x29, 0x16, 0x00,
					0x05, 0x29));

	define_test_client("/TP/GAD/CL/BV-06-C/client-1", test_client,
			service_db_1, NULL,
			SERVICE_DATA_1_PDUS);

	define_test_client("/TP/GAD/CL/BV-06-C/client-2", test_client,
			service_db_2, NULL,
			SERVICE_DATA_2_PDUS);

	define_test_client("/TP/GAD/CL/BV-06-C/client-3", test_client,
			service_db_3, NULL,
			SERVICE_DATA_3_PDUS);

	define_test_server("/TP/GAD/SR/BV-06-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x04, 0x04, 0x00, 0x05, 0x00),
			raw_pdu(0x05, 0x01, 0x04, 0x00, 0x02, 0x29, 0x05, 0x00,
					0x01, 0x29));

	define_test_server("/TP/GAD/SR/BV-06-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x04, 0x73, 0x00, 0x76, 0x00),
			raw_pdu(0x05, 0x01, 0x73, 0x00, 0x00, 0x29, 0x74, 0x00,
				0x01, 0x29, 0x75, 0x00, 0x04, 0x29),
			raw_pdu(0x04, 0x76, 0x00, 0x76, 0x00),
			raw_pdu(0x05, 0x02, 0x76, 0x00, 0xef, 0xcd, 0xab, 0x89,
				0x67, 0x45, 0x23, 0x01, 0x00, 0x00, 0x00, 0x00,
				0xd4, 0xd5, 0x00, 0x00));

	define_test_client("/TP/GAR/CL/BV-01-C", test_client, service_db_1,
			&test_read_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x0b, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAR/CL/BI-01-C", test_client, service_db_1,
			&test_read_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x00, 0x00),
			raw_pdu(0x01, 0x0a, 0x00, 0x00, 0x01));

	define_test_client("/TP/GAR/CL/BI-02-C", test_client, service_db_1,
			&test_read_3,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x02));

	define_test_client("/TP/GAR/CL/BI-03-C", test_client, service_db_1,
			&test_read_4,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x08));

	define_test_client("/TP/GAR/CL/BI-04-C", test_client, service_db_1,
			&test_read_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x05));

	define_test_client("/TP/GAR/CL/BI-05-C", test_client, service_db_1,
			&test_read_6,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x0c));

	define_test_server("/TP/GAR/SR/BV-01-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x0b, 0x42, 0x6c, 0x75, 0x65, 0x5a));

	define_test_server("/TP/GAR/SR/BV-01-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0a, 0xc4, 0x00),
			raw_pdu(0x0b, '1', '1', '1', '1', '1', '2', '2', '2',
				'2', '2', '3', '3', '3', '3', '3', '4', '4',
				'4', '4', '4', '5'),
			raw_pdu(0x0a, 0xca, 0x00),
			raw_pdu(0x0b, '3', '3', '3', '3', '3', '4', '4', '4',
				'4', '4', '5', '5', '5', '5', '5', '6', '6',
				'6', '6', '6', '7', '7'));

	define_test_server("/TP/GAR/SR/BI-02-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0a, 0x00, 0x00),
			raw_pdu(0x01, 0x0a, 0x00, 0x00, 0x01));

	define_test_server("/TP/GAR/SR/BI-02-C/large", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0a, 0x0f, 0xf0),
			raw_pdu(0x01, 0x0a, 0x0f, 0xf0, 0x01));

	define_test_att("/TP/GAR/CL/BV-03-C-1", test_read_by_type,
			&uuid_char_16, &test_read_by_type_1,
			raw_pdu(0x02, 0x00, 0x02),
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x09, 0x05, 0x0a, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x08, 0x0b, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x0a));

	define_test_att("/TP/GAR/CL/BV-03-C-2", test_read_by_type,
			&uuid_char_128, &test_read_by_type_1,
			raw_pdu(0x02, 0x00, 0x02),
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0f, 0x0e, 0x0d,
					0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07,
					0x06, 0x05, 0x04, 0x03, 0x02, 0x01,
					0x00),
			raw_pdu(0x09, 0x05, 0x0a, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x08, 0x0b, 0x00, 0xff, 0xff, 0x0f, 0x0e, 0x0d,
					0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07,
					0x06, 0x05, 0x04, 0x03, 0x02, 0x01,
					0x00),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x0a));

	define_test_att("/TP/GAR/CL/BI-06-C", test_read_by_type, &uuid_char_16,
			&test_read_by_type_2,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x02));

	define_test_att("/TP/GAR/CL/BI-07-C", test_read_by_type, &uuid_char_16,
			&test_read_by_type_3,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x0a));

	define_test_att("/TP/GAR/CL/BI-09-C", test_read_by_type, &uuid_char_16,
			&test_read_by_type_4,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x08));

	define_test_att("/TP/GAR/CL/BI-10-C", test_read_by_type, &uuid_char_16,
			&test_read_by_type_5,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x05));

	define_test_att("/TP/GAR/CL/BI-11-C", test_read_by_type, &uuid_char_16,
			&test_read_by_type_6,
			MTU_EXCHANGE_CLIENT_PDUS,
			raw_pdu(0x08, 0x01, 0x00, 0xff, 0xff, 0x0d, 0x2a),
			raw_pdu(0x01, 0x08, 0x0b, 0x00, 0x0c));

	define_test_server("/TP/GAR/SR/BV-03-C/small", test_server, ts_small_db,
			NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0xef, 0xcd, 0xab,
					0x89, 0x67, 0x45, 0x23, 0x01, 0x00,
					0x00, 0x00, 0x00, 0x09, 0xB0, 0x00,
					0x00),
			raw_pdu(0x09, 0x03, 0x15, 0xF0, 0x09),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x2a),
			raw_pdu(0x09, 0x04, 0x17, 0xF0, 0x00, 0x00));

	define_test_server("/TP/GAR/SR/BV-03-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0xef, 0xcd, 0xab,
					0x89, 0x67, 0x45, 0x23, 0x01, 0x00,
					0x00, 0x00, 0x00, 0xd4, 0xd5, 0x00,
					0x00),
			raw_pdu(0x09, 0x03, 0x76, 0x00, 0x44),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0x02, 0xB0),
			raw_pdu(0x09, 0x15, 0x25, 0x00, '1', '1', '1', '1', '1',
				'2', '2', '2', '2', '2', '3', '3', '3', '3',
				'3', '4', '4', '4', '4'));

	define_test_server("/TP/GAR/SR/BI-06-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0xB0),
			raw_pdu(0x01, 0x08, 0x32, 0x00, 0x02));

	define_test_server("/TP/GAR/SR/BI-07-C/small", test_server, ts_small_db,
			NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0xF0, 0x0F),
			raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a));

	define_test_server("/TP/GAR/SR/BI-07-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x01, 0x00, 0xFF, 0xFF, 0xF0, 0x0F),
			raw_pdu(0x01, 0x08, 0x01, 0x00, 0x0a));

	define_test_server("/TP/GAR/SR/BI-08-C/small", test_server, ts_small_db,
			NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x02, 0x00, 0x01, 0x00, 0x00, 0x28),
			raw_pdu(0x01, 0x08, 0x02, 0x00, 0x01));

	define_test_server("/TP/GAR/SR/BI-08-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x08, 0x02, 0x00, 0x01, 0x00, 0x00, 0x28),
			raw_pdu(0x01, 0x08, 0x02, 0x00, 0x01));

	define_test_server("/TP/GAR/SR/BV-04-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xD3, 0x00, 0x00, 0x00),
			raw_pdu(0x0D, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55,
				0x66, 0x77, 0x88, 0x99, 0x00, 0x11, 0x22),
			raw_pdu(0x0C, 0xD3, 0x00, 0x16, 0x00),
			raw_pdu(0x0D, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99,
				0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x11, 0x22, 0x33, 0x44),
			raw_pdu(0x0C, 0xD3, 0x00, 0x2C, 0x00),
			raw_pdu(0x0D, 0x55),
			raw_pdu(0x0C, 0xD3, 0x00, 0x2D, 0x00),
			raw_pdu(0x0D));

	define_test_server("/TP/GAR/SR/BI-12-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0x27, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0C, 0x27, 0x00, 0x02));

	define_test_server("/TP/GAR/SR/BI-13-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0x13, 0xF0, 0xF0, 0x00),
			raw_pdu(0x01, 0x0C, 0x13, 0xF0, 0x07));

	define_test_server("/TP/GAR/SR/BI-13-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xD3, 0x00, 0xF0, 0x00),
			raw_pdu(0x01, 0x0C, 0xD3, 0x00, 0x07));

	define_test_server("/TP/GAR/SR/BI-14-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xF0, 0x0F, 0x00, 0x00),
			raw_pdu(0x01, 0x0C, 0xF0, 0x0F, 0x01));

	define_test_server("/TP/GAR/SR/BI-14-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xF0, 0x0F, 0x00, 0x00),
			raw_pdu(0x01, 0x0C, 0xF0, 0x0F, 0x01));

	define_test_client("/TP/GAR/CL/BV-04-C", test_client, service_db_1,
			&test_long_read_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x0b, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAR/CL/BV-04-C/512B", test_client, service_db_1,
			&test_long_read_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x0d, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff),
			raw_pdu(0x0c, 0x03, 0x00, 0xff, 0x01),
			raw_pdu(0x0d, 0xff));

	define_test_client("/TP/GAR/CL/BV-05-C", test_client, service_db_1,
			&test_multiple_read_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0e, 0x03, 0x00, 0x07, 0x00),
			raw_pdu(0x0f, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAR/CL/BI-12-C", test_client, service_db_1,
			&test_long_read_3,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x03, 0x00, 0x02));

	define_test_client("/TP/GAR/CL/BI-13-C", test_client, service_db_1,
			&test_long_read_4,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x03, 0x00, 0x07));

	define_test_client("/TP/GAR/CL/BI-14-C", test_client, service_db_1,
			&test_long_read_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x00, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x00, 0x00, 0x01));

	define_test_client("/TP/GAR/CL/BI-15-C", test_client, service_db_1,
			&test_long_read_6,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x03, 0x00, 0x08));

	define_test_client("/TP/GAR/CL/BI-16-C", test_client, service_db_1,
			&test_long_read_7,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x03, 0x00, 0x05));

	define_test_client("/TP/GAR/CL/BI-17-C", test_client, service_db_1,
			&test_long_read_8,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x03, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x03, 0x00, 0x0c));

	define_test_client("/TP/GAR/CL/BI-18-C", test_client, service_db_1,
			&test_multiple_read_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0e, 0x03, 0x00, 0x07, 0x00),
			raw_pdu(0x01, 0x0e, 0x03, 0x00, 0x02));

	define_test_client("/TP/GAR/CL/BI-19-C", test_client, service_db_1,
			&test_multiple_read_3,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0e, 0x03, 0x00, 0x07, 0x00),
			raw_pdu(0x01, 0x0e, 0x03, 0x00, 0x01));

	define_test_client("/TP/GAR/CL/BI-20-C", test_client, service_db_1,
			&test_multiple_read_4,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0e, 0x03, 0x00, 0x07, 0x00),
			raw_pdu(0x01, 0x0e, 0x03, 0x00, 0x08));

	define_test_client("/TP/GAR/CL/BI-21-C", test_client, service_db_1,
			&test_multiple_read_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0e, 0x03, 0x00, 0x07, 0x00),
			raw_pdu(0x01, 0x0e, 0x03, 0x00, 0x05));

	define_test_client("/TP/GAR/CL/BI-22-C", test_client, service_db_1,
			&test_multiple_read_6,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0e, 0x03, 0x00, 0x07, 0x00),
			raw_pdu(0x01, 0x0e, 0x03, 0x00, 0x0c));

	define_test_server("/TP/GAR/SR/BV-05-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0e, 0x15, 0xF0, 0x03, 0x00),
			raw_pdu(0x0f, 0x09, 'B', 'l', 'u', 'e', 'Z'));

	define_test_server("/TP/GAR/SR/BV-05-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0e, 0x44, 0x00, 0x06, 0x00, 0xC4, 0x00),
			raw_pdu(0x0f, 0x11, 0x0B, '1', '1', '1', '1', '1', '2',
				'2', '2', '2', '2', '3', '3', '3', '3', '3',
				'4', '4', '4', '4', '4'));

	define_test_server("/TP/GAR/SR/BI-18-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0e, 0x44, 0x00, 0x06, 0x00, 0x27, 0x00),
			raw_pdu(0x01, 0x0e, 0x27, 0x00, 0x02));

	define_test_server("/TP/GAR/SR/BI-19-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0e, 0x15, 0xF0, 0xF0, 0x0F),
			raw_pdu(0x01, 0x0e, 0xF0, 0x0F, 0x01));

	define_test_server("/TP/GAR/SR/BI-19-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0e, 0x44, 0x00, 0xF0, 0x0F),
			raw_pdu(0x01, 0x0e, 0xF0, 0x0F, 0x01));

	define_test_server("/TP/GAR/SR/BV-06-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0A, 0x05, 0x00),
			raw_pdu(0x0B, 'M', 'a', 'n', 'u', 'f', 'a', 'c', 't',
				'u', 'r', 'e', 'r', ' ', 'N', 'a', 'm', 'e'));

	define_test_server("/TP/GAR/SR/BV-06-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0A, 0xD4, 0x00),
			raw_pdu(0x0B, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90,
				0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34));

	define_test_server("/TP/GAR/SR/BI-23-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0A, 0x96, 0x00),
			raw_pdu(0x01, 0x0A, 0x96, 0x00, 0x02));

	define_test_server("/TP/GAR/SR/BI-24-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0A, 0xF0, 0x0F),
			raw_pdu(0x01, 0x0A, 0xF0, 0x0F, 0x01));

	define_test_server("/TP/GAR/SR/BI-24-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0A, 0xF0, 0x0F),
			raw_pdu(0x01, 0x0A, 0xF0, 0x0F, 0x01));

	define_test_server("/TP/GAR/SR/BV-07-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xD1, 0x00, 0x00, 0x00),
			raw_pdu(0x0D, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90,
				0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34),
			raw_pdu(0x0C, 0xD1, 0x00, 0x16, 0x00),
			raw_pdu(0x0D, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x11, 0x22, 0x33, 0x44),
			raw_pdu(0x0C, 0xD1, 0x00, 0x2C, 0x00),
			raw_pdu(0x0D));

	define_test_server("/TP/GAR/SR/BV-08-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xCE, 0x00, 0x00, 0x00),
			raw_pdu(0x0D, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x12, 0x34, 0x56, 0x78, 0x90,
				0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34),
			raw_pdu(0x0C, 0xCE, 0x00, 0x16, 0x00),
			raw_pdu(0x0D, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56, 0x78,
				0x90, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
				0x88, 0x99, 0x00, 0x11, 0x22, 0x33),
			raw_pdu(0x0C, 0xCE, 0x00, 0x2B, 0x00),
			raw_pdu(0x0D));

	define_test_server("/TP/GAR/SR/BI-28-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0x96, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0C, 0x96, 0x00, 0x02));

	define_test_server("/TP/GAR/SR/BI-29-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0x05, 0x00, 0xF0, 0x00),
			raw_pdu(0x01, 0x0C, 0x05, 0x00, 0x07));

	define_test_server("/TP/GAR/SR/BI-29-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xCE, 0x00, 0xF0, 0x00),
			raw_pdu(0x01, 0x0C, 0xCE, 0x00, 0x07));

	define_test_server("/TP/GAR/SR/BI-30-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xF0, 0x0F, 0x00, 0x00),
			raw_pdu(0x01, 0x0C, 0xF0, 0x0F, 0x01));

	define_test_server("/TP/GAR/SR/BI-30-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x0C, 0xF0, 0x0F, 0x00, 0x00),
			raw_pdu(0x01, 0x0C, 0xF0, 0x0F, 0x01));

	define_test_client("/TP/GAN/CL/BV-01-C", test_client, ts_small_db,
			&test_notification_1,
			MTU_EXCHANGE_CLIENT_PDUS,
			SMALL_DB_DISCOVERY_PDUS,
			raw_pdu(0x12, 0x04, 0x00, 0x03, 0x00),
			raw_pdu(0x13),
			raw_pdu(),
			raw_pdu(0x1B, 0x03, 0x00, 0x01, 0x02, 0x03));

	define_test_server("/TP/GAN/SR/BV-01-C", test_server, ts_small_db,
			&test_notification_server_1,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x04, 0x00, 0x01, 0x00),
			raw_pdu(0x13),
			raw_pdu(),
			raw_pdu(0x1B, 0x03, 0x00, 0x01, 0x02, 0x03));

	define_test_server("/TP/GAI/SR/BV-01-C", test_server, ts_small_db,
			&test_indication_server_1,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x04, 0x00, 0x02, 0x00),
			raw_pdu(0x13),
			raw_pdu(),
			raw_pdu(0x1D, 0x03, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x1E));

	define_test_client("/TP/GAI/CL/BV-01-C", test_client, ts_small_db,
			&test_indication_1,
			MTU_EXCHANGE_CLIENT_PDUS,
			SMALL_DB_DISCOVERY_PDUS,
			raw_pdu(0x12, 0x04, 0x00, 0x03, 0x00),
			raw_pdu(0x13),
			raw_pdu(),
			raw_pdu(0x1D, 0x03, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x1E));

	define_test_client("/TP/GAR/CL/BV-06-C", test_client, service_db_1,
			&test_read_7,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x04, 0x00),
			raw_pdu(0x0b, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAR/CL/BI-23-C", test_client, service_db_1,
			&test_read_8,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x04, 0x00),
			raw_pdu(0x01, 0x0a, 0x04, 0x00, 0x02));

	define_test_client("/TP/GAR/CL/BI-24-C", test_client, service_db_1,
			&test_read_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x00, 0x00),
			raw_pdu(0x01, 0x0a, 0x00, 0x00, 0x01));

	define_test_client("/TP/GAR/CL/BI-25-C", test_client, service_db_1,
			&test_read_9,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x04, 0x00),
			raw_pdu(0x01, 0x0a, 0x04, 0x00, 0x08));

	define_test_client("/TP/GAR/CL/BI-26-C", test_client, service_db_1,
			&test_read_10,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x04, 0x00),
			raw_pdu(0x01, 0x0a, 0x04, 0x00, 0x05));

	define_test_client("/TP/GAR/CL/BI-27-C", test_client, service_db_1,
			&test_read_11,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x04, 0x00),
			raw_pdu(0x01, 0x0a, 0x04, 0x00, 0x0c));

	define_test_client("/TP/GAR/CL/BV-07-C", test_client, service_db_1,
			&test_long_read_9,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x0b, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAR/CL/BV-07-C/512B", test_client, service_db_1,
			&test_long_read_10,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x0d, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff),
			raw_pdu(0x0c, 0x04, 0x00, 0xff, 0x01),
			raw_pdu(0x0d, 0xff));

	define_test_client("/TP/GAR/CL/BI-28-C", test_client, service_db_1,
			&test_long_read_11,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x04, 0x00, 0x02));

	define_test_client("/TP/GAR/CL/BI-29-C", test_client, service_db_1,
			&test_long_read_12,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x04, 0x00, 0x07));

	define_test_client("/TP/GAR/CL/BI-30-C", test_client, service_db_1,
			&test_long_read_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x00, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x00, 0x00, 0x01));

	define_test_client("/TP/GAR/CL/BI-31-C", test_client, service_db_1,
			&test_long_read_13,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x04, 0x00, 0x08));

	define_test_client("/TP/GAR/CL/BI-32-C", test_client, service_db_1,
			&test_long_read_14,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x04, 0x00, 0x05));

	define_test_client("/TP/GAR/CL/BI-33-C", test_client, service_db_1,
			&test_long_read_15,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0c, 0x04, 0x00, 0x00, 0x00),
			raw_pdu(0x01, 0x0c, 0x04, 0x00, 0x0c));

	define_test_client("/TP/GAR/CL/BI-34-C", test_client, service_db_1,
			&test_read_12,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x80));

	define_test_client("/TP/GAR/CL/BI-35-C", test_client, service_db_1,
			&test_read_12,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x01, 0x0a, 0x03, 0x00, 0x80));

	define_test_client("/TP/GAW/CL/BV-01-C", test_client, service_db_1,
			&test_write_without_response_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x52, 0x07, 0x00, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAW/CL/BV-02-C", test_client, service_db_1,
			&test_signed_write_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0xd2, 0x07, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00,
				0x00, 0x00, 0x31, 0x1f, 0x0a, 0xcd, 0x1c, 0x3a,
				0x5b, 0x0a));

	define_test_client("/TP/GAW/CL/BV-02-C/seclevel", test_client,
			service_db_1, &test_signed_write_seclevel_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x52, 0x07, 0x00, 0x01, 0x02, 0x03));

	define_test_client("/TP/GAW/CL/BV-03-C", test_client, service_db_1,
			&test_write_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x07, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x13));

	define_test_client("/TP/GAW/CL/BI-02-C", test_client, service_db_1,
			&test_write_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x00, 0x00, 0x01));

	define_test_client("/TP/GAW/CL/BI-03-C", test_client, service_db_1,
			&test_write_3,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x07, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x07, 0x00, 0x03));

	define_test_client("/TP/GAW/CL/BI-04-C", test_client, service_db_1,
			&test_write_4,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x07, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x07, 0x00, 0x08));

	define_test_client("/TP/GAW/CL/BI-05-C", test_client, service_db_1,
			&test_write_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x07, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x07, 0x00, 0x05));

	define_test_client("/TP/GAW/CL/BI-06-C", test_client, service_db_1,
			&test_write_6,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x07, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x07, 0x00, 0x0c));

	define_test_server("/TP/GAW/SR/BV-07-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19),
			raw_pdu(0x0a, 0x03, 0x00),
			raw_pdu(0x0b, 0x42, 0x6c, 0x75, 0x65, 0x5a));

	define_test_server("/TP/GAW/SR/BV-07-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0xc4, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19),
			raw_pdu(0x0a, 0xc4, 0x00),
			raw_pdu(0x0b, '1', '1', '1', '1', '1', '2', '2', '2',
				'2', '2', '3', '3', '3', '3', '3', '4', '4',
				'4', '4', '4', '5'));

	define_test_server("/TP/GAW/SR/BV-03-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x03, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x13));

	define_test_server("/TP/GAW/SR/BV-03-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x82, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x13));

	define_test_server("/TP/GAW/SR/BI-02-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x00, 0x00, 0x01));

	define_test_server("/TP/GAW/SR/BI-02-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x0f, 0xf0, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x0f, 0xf0, 0x01));

	define_test_server("/TP/GAW/SR/BI-03-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x13, 0xf0, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x13, 0xf0, 0x03));

	define_test_server("/TP/GAW/SR/BI-03-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x04, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x04, 0x00, 0x03));

	define_test_client("/TP/GAW/CL/BV-05-C", test_client, service_db_1,
			&test_long_write_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff),
			raw_pdu(0x17, 0x07, 0x00, 0x00, 0x00,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff),
			raw_pdu(0x16, 0x07, 0x00, 0xfb, 0x01,
				0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x17, 0x07, 0x00, 0xfb, 0x01,
				0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-07-C", test_client, service_db_1,
			&test_long_write_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x00, 0x00, 0x01),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-08-C", test_client, service_db_1,
			&test_long_write_3,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x03, 0x00, 0x03),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-11-C", test_client, service_db_1,
			&test_long_write_4,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x07, 0x00, 0x08),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-12-C", test_client, service_db_1,
			&test_long_write_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x07, 0x00, 0x05),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-13-C", test_client, service_db_1,
			&test_long_write_6,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x07, 0x00, 0x0c),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-05-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x17, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x16, 0x03, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x17, 0x03, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-05-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x82, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x17, 0x82, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x16, 0x82, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x17, 0x82, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BI-07-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x00, 0x00, 0x01));

	define_test_server("/TP/GAW/SR/BI-07-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x0f, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x0f, 0xf0, 0x01));

	define_test_server("/TP/GAW/SR/BI-08-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x05, 0x00, 0x03));

	define_test_server("/TP/GAW/SR/BI-08-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x73, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x73, 0x00, 0x03));

	define_test_client("/TP/GAW/CL/BV-06-C", test_client, service_db_1,
			&test_reliable_write_1,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-14-C", test_client, service_db_1,
			&test_reliable_write_2,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x00, 0x00, 0x01),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-15-C", test_client, service_db_1,
			&test_reliable_write_3,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x03, 0x00, 0x03),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-17-C", test_client, service_db_1,
			&test_reliable_write_4,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x07, 0x00, 0x08),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-18-C", test_client, service_db_1,
			&test_reliable_write_5,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x07, 0x00, 0x05),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-19-C", test_client, service_db_1,
			&test_reliable_write_6,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x07, 0x00, 0x0c),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-06-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-06-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x82, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x82, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-10-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x16, 0x15, 0xf0, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x15, 0xf0, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x16, 0x03, 0x00, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x17, 0x03, 0x00, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x16, 0x15, 0xf0, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x17, 0x15, 0xf0, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-10-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x82, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x82, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x16, 0x25, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x17, 0x25, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x16, 0x82, 0x00, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x17, 0x82, 0x00, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x16, 0x25, 0x00, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x17, 0x25, 0x00, 0x03, 0x00, 0x04, 0x05, 0x06),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BI-14-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x00, 0x00, 0x01));

	define_test_server("/TP/GAW/SR/BI-14-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x0f, 0xf0, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x0f, 0xf0, 0x01));

	define_test_server("/TP/GAW/SR/BI-15-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x05, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x05, 0x00, 0x03));

	define_test_server("/TP/GAW/SR/BI-15-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x73, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x73, 0x00, 0x03));

	define_test_client("/TP/GAW/CL/BV-08-C", test_client, service_db_1,
			&test_write_7,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x08, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x13));

	define_test_client("/TP/GAW/CL/BI-20-C", test_client, service_db_1,
			&test_write_8,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x00, 0x00, 0x01));

	define_test_client("/TP/GAW/CL/BI-21-C", test_client, service_db_1,
			&test_write_9,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x08, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x08, 0x00, 0x03));

	define_test_client("/TP/GAW/CL/BI-22-C", test_client, service_db_1,
			&test_write_10,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x08, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x08, 0x00, 0x08));

	define_test_client("/TP/GAW/CL/BI-23-C", test_client, service_db_1,
			&test_write_11,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x08, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x08, 0x00, 0x05));

	define_test_client("/TP/GAW/CL/BI-24-C", test_client, service_db_1,
			&test_write_12,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x12, 0x08, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x08, 0x00, 0x0c));

	define_test_server("/TP/GAW/SR/BV-08-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x04, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x13));

	define_test_server("/TP/GAW/SR/BV-08-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x83, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x13));

	define_test_server("/TP/GAW/SR/BI-20-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x00, 0x00, 0x01));

	define_test_server("/TP/GAW/SR/BI-20-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x0f, 0xf0, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x0f, 0xf0, 0x01));

	define_test_server("/TP/GAW/SR/BI-21-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x13, 0xf0, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x13, 0xf0, 0x03));

	define_test_server("/TP/GAW/SR/BI-21-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x12, 0x04, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x12, 0x04, 0x00, 0x03));

	define_test_client("/TP/GAW/CL/BV-09-C", test_client, service_db_1,
			&test_long_write_7,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x08, 0x00, 0x00, 0x00,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff),
			raw_pdu(0x17, 0x08, 0x00, 0x00, 0x00,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff),
			raw_pdu(0x16, 0x08, 0x00, 0xfb, 0x01,
				0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x17, 0x08, 0x00, 0xfb, 0x01,
				0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-25-C", test_client, service_db_1,
			&test_long_write_8,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x00, 0x00, 0x01),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-26-C", test_client, service_db_1,
			&test_long_write_9,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x08, 0x00, 0x03),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-29-C", test_client, service_db_1,
			&test_long_write_10,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x08, 0x00, 0x08),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-30-C", test_client, service_db_1,
			&test_long_write_11,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x08, 0x00, 0x05),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_client("/TP/GAW/CL/BI-31-C", test_client, service_db_1,
			&test_long_write_12,
			SERVICE_DATA_1_PDUS,
			raw_pdu(0x16, 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03),
			raw_pdu(0x01, 0x16, 0x08, 0x00, 0x0c),
			raw_pdu(0x18, 0x00),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-09-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x17, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x16, 0x04, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x17, 0x04, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BV-09-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x83, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x17, 0x83, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x16, 0x83, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x17, 0x83, 0x00, 0x3f, 0x00, 0xff),
			raw_pdu(0x18, 0x01),
			raw_pdu(0x19));

	define_test_server("/TP/GAW/SR/BI-25-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x00, 0x00, 0x01));

	define_test_server("/TP/GAW/SR/BI-25-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x0f, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x0f, 0xf0, 0x01));

	define_test_server("/TP/GAW/SR/BI-26-C/small", test_server,
			ts_small_db, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x13, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x13, 0xf0, 0x03));

	define_test_server("/TP/GAW/SR/BI-26-C/large-1", test_server,
			ts_large_db_1, NULL,
			raw_pdu(0x03, 0x00, 0x02),
			raw_pdu(0x16, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
				0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff),
			raw_pdu(0x01, 0x16, 0x04, 0x00, 0x03));

	return tester_run();
}
