Lines Matching +full:ctrl +full:- +full:len

5 /*-
6 * SPDX-License-Identifier: BSD-2-Clause
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()
81 return (-1); 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()
90 return (-1); 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()
105 return (-1); 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()
113 return (-1); 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()
123 return (-1); 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()
134 return (-1); 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()
143 return (-1); 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()
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()
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()
200 return (-1); in server_do()
204 for (fd = 0; fd < srv->maxfd + 1 && n > 0; fd ++) { in server_do()
206 n --; in server_do()
208 if (fd == srv->ctrl || fd == srv->intr) in server_do()
213 n --; in server_do()
233 socklen_t len; in server_accept() local
235 len = sizeof(l2addr); in server_accept()
236 if ((new_fd = accept(fd, (struct sockaddr *) &l2addr, &len)) < 0) { in server_accept()
238 (fd == srv->ctrl)? "control" : "interrupt", in server_accept()
240 return (-1); in server_accept()
247 (fd == srv->ctrl)? "control" : "interrupt", in server_accept()
250 return (-1); in server_accept()
255 d->new_device = 0; /* reset new device flag */ in server_accept()
263 return (-1); in server_accept()
268 if (fd == srv->ctrl) { in server_accept()
269 assert(s->ctrl == -1); in server_accept()
270 s->ctrl = new_fd; in server_accept()
271 s->state = (s->intr == -1)? W4INTR : OPEN; in server_accept()
273 assert(s->intr == -1); in server_accept()
274 s->intr = new_fd; in server_accept()
275 s->state = (s->ctrl == -1)? W4CTRL : OPEN; 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()
287 if (s->state == OPEN && session_run(s) < 0) { in server_accept()
289 return (-1); in server_accept()
303 int32_t len, to_read; in server_process() local
315 if (fd == s->ctrl) { in server_process()
318 } else if (fd == s->intr) { in server_process()
321 } else if (fd == s->ukbd) { in server_process()
325 assert(fd == s->vkbd); in server_process()
332 len = read(fd, &data, to_read); in server_process()
333 } while (len < 0 && errno == EINTR); in server_process()
335 if (len < 0) { in server_process()
337 bt_ntoa(&s->bdaddr, NULL), in server_process()
338 (fd == s->ctrl)? "control" : "interrupt", in server_process()
344 if (len == 0) { in server_process()
346 bt_ntoa(&s->bdaddr, NULL), in server_process()
347 (fd == s->ctrl)? "control" : "interrupt"); in server_process()
352 (*cb)(s, (uint8_t *) &data, len); in server_process()