コード例 #1
0
static void connect_p(int argc, const char **argv)
{
	bt_bdaddr_t addr;
	btsock_type_t type;
	bt_uuid_t uuid;
	int channel;
	int sock_fd = -1;
	int flags;

	/* Address */
	if (argc <= 2) {
		haltest_error("No address specified\n");
		return;
	}
	str2bt_bdaddr_t(argv[2], &addr);

	/* Socket type */
	if (argc <= 3) {
		haltest_error("No socket type specified\n");
		return;
	}
	type = str2btsock_type_t(argv[3]);
	if ((int) type == -1)
		type = atoi(argv[3]);

	/* uuid */
	if (argc <= 4) {
		haltest_error("No uuid specified\n");
		return;
	}
	str2bt_uuid_t(argv[4], &uuid);

	/* channel */
	if (argc <= 5) {
		haltest_error("No channel specified\n");
		return;
	}
	channel = atoi(argv[5]);

	/* flags */
	flags = argc <= 6 ? 0 : atoi(argv[6]);

	RETURN_IF_NULL(if_sock);

	EXEC(if_sock->connect, &addr, type, &uuid.uu[0], channel, &sock_fd,
									flags);
	if (sock_fd > 0) {
		int channel = 0;
		int ret = read(sock_fd, &channel, 4);

		if (ret != 4)
			haltest_info("Read channel failed\n");
		haltest_info("Channel returned from first read %d\n", channel);
		listen_fd[listen_fd_count++] = sock_fd;
		poll_register_fd(sock_fd, POLLIN, receive_sock_connect_signal);
	}
}
コード例 #2
0
static void listen_p(int argc, const char **argv)
{
	btsock_type_t type;
	const char *service_name;
	bt_uuid_t service_uuid;
	int channel;
	int sock_fd = -1;
	int flags;

	RETURN_IF_NULL(if_sock);

	/* Socket type */
	if (argc < 3) {
		haltest_error("No socket type specified\n");
		return;
	}
	type = str2btsock_type_t(argv[2]);
	if ((int) type == -1)
		type = atoi(argv[2]);

	/* service name */
	if (argc < 4) {
		haltest_error("No service name specified\n");
		return;
	}
	service_name = argv[3];

	/* uuid */
	if (argc < 5) {
		haltest_error("No uuid specified\n");
		return;
	}
	str2bt_uuid_t(argv[4], &service_uuid);

	/* channel */
	channel = argc > 5 ? atoi(argv[5]) : 0;

	/* flags */
	flags = argc > 6 ? atoi(argv[6]) : 0;

	if (listen_fd_count >= MAX_LISTEN_FD) {
		haltest_error("Max (%d) listening sockets exceeded\n",
							listen_fd_count);
		return;
	}
	EXEC(if_sock->listen, type, service_name,
				&service_uuid.uu[0], channel, &sock_fd, flags);
	if (sock_fd > 0) {
		int channel = 0;
		int ret = read(sock_fd, &channel, 4);
		if (ret != 4)
			haltest_info("Read channel failed\n");
		haltest_info("Channel returned from first read %d\n", channel);
		listen_fd[listen_fd_count++] = sock_fd;
		poll_register_fd(sock_fd, POLLIN, client_connected);
	}
}
コード例 #3
0
ファイル: if-bt.c プロジェクト: BirdAndEarth/RPi
static void get_remote_service_record_p(int argc, const char **argv)
{
	bt_bdaddr_t addr;
	bt_uuid_t uuid;

	RETURN_IF_NULL(if_bluetooth);
	VERIFY_ADDR_ARG(2, &addr);

	if (argc <= 3) {
		haltest_error("No uuid specified\n");
		return;
	}

	str2bt_uuid_t(argv[3], &uuid);

	EXEC(if_bluetooth->get_remote_service_record, &addr, &uuid);
}