Lines Matching full:srv
57 static int32_t server_accept (bthid_server_p srv, int32_t fd);
58 static int32_t server_process(bthid_server_p srv, int32_t fd);
65 server_init(bthid_server_p srv) in server_init() argument
69 assert(srv != NULL); in server_init()
71 srv->ctrl = srv->intr = -1; in server_init()
72 FD_ZERO(&srv->rfdset); in server_init()
73 FD_ZERO(&srv->wfdset); in server_init()
74 LIST_INIT(&srv->sessions); in server_init()
77 srv->cons = open("/dev/consolectl", O_RDWR); in server_init()
78 if (srv->cons < 0) { in server_init()
85 srv->ctrl = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BLUETOOTH_PROTO_L2CAP); in server_init()
86 if (srv->ctrl < 0) { in server_init()
89 close(srv->cons); in server_init()
95 memcpy(&l2addr.l2cap_bdaddr, &srv->bdaddr, sizeof(l2addr.l2cap_bdaddr)); in server_init()
100 if (bind(srv->ctrl, (struct sockaddr *) &l2addr, sizeof(l2addr)) < 0) { in server_init()
103 close(srv->ctrl); in server_init()
104 close(srv->cons); in server_init()
108 if (listen(srv->ctrl, 10) < 0) { in server_init()
111 close(srv->ctrl); in server_init()
112 close(srv->cons); in server_init()
117 srv->intr = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BLUETOOTH_PROTO_L2CAP); in server_init()
118 if (srv->intr < 0) { in server_init()
121 close(srv->ctrl); in server_init()
122 close(srv->cons); in server_init()
128 if (bind(srv->intr, (struct sockaddr *) &l2addr, sizeof(l2addr)) < 0) { in server_init()
131 close(srv->intr); in server_init()
132 close(srv->ctrl); in server_init()
133 close(srv->cons); in server_init()
137 if (listen(srv->intr, 10) < 0) { in server_init()
140 close(srv->intr); in server_init()
141 close(srv->ctrl); in server_init()
142 close(srv->cons); in server_init()
146 FD_SET(srv->ctrl, &srv->rfdset); in server_init()
147 FD_SET(srv->intr, &srv->rfdset); in server_init()
148 srv->maxfd = max(srv->ctrl, srv->intr); in server_init()
158 server_shutdown(bthid_server_p srv) in server_shutdown() argument
160 assert(srv != NULL); in server_shutdown()
162 close(srv->cons); in server_shutdown()
163 close(srv->ctrl); in server_shutdown()
164 close(srv->intr); in server_shutdown()
166 while (!LIST_EMPTY(&srv->sessions)) in server_shutdown()
167 session_close(LIST_FIRST(&srv->sessions)); in server_shutdown()
169 memset(srv, 0, sizeof(*srv)); in server_shutdown()
177 server_do(bthid_server_p srv) in server_do() argument
183 assert(srv != NULL); in server_do()
189 memcpy(&rfdset, &srv->rfdset, sizeof(rfdset)); in server_do()
190 memcpy(&wfdset, &srv->wfdset, sizeof(wfdset)); in server_do()
192 n = select(srv->maxfd + 1, &rfdset, &wfdset, NULL, &tv); in server_do()
198 srv->maxfd + 1, &rfdset, &wfdset, strerror(errno), errno); in server_do()
204 for (fd = 0; fd < srv->maxfd + 1 && n > 0; fd ++) { in server_do()
208 if (fd == srv->ctrl || fd == srv->intr) in server_do()
209 server_accept(srv, fd); in server_do()
211 server_process(srv, fd); in server_do()
215 client_connect(srv, fd); in server_do()
227 server_accept(bthid_server_p srv, int32_t fd) in server_accept() argument
238 (fd == srv->ctrl)? "control" : "interrupt", in server_accept()
247 (fd == srv->ctrl)? "control" : "interrupt", in server_accept()
254 if ((s = session_by_bdaddr(srv, &l2addr.l2cap_bdaddr)) == NULL) { in server_accept()
259 if ((s = session_open(srv, d)) == NULL) { in server_accept()
268 if (fd == srv->ctrl) { in server_accept()
278 FD_SET(new_fd, &srv->rfdset); in server_accept()
279 if (new_fd > srv->maxfd) in server_accept()
280 srv->maxfd = new_fd; in server_accept()
283 (fd == srv->ctrl)? "control" : "interrupt", in server_accept()
300 server_process(bthid_server_p srv, int32_t fd) in server_process() argument
302 bthid_session_p s = session_by_fd(srv, fd); in server_process()