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); } }
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); } }
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); }