• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/usr.sbin/bluetooth/bthidd/

Lines Matching refs:srv

58 static int32_t	server_accept (bthid_server_p srv, int32_t fd);
59 static int32_t server_process(bthid_server_p srv, int32_t fd);
66 server_init(bthid_server_p srv)
70 assert(srv != NULL);
72 srv->ctrl = srv->intr = -1;
73 FD_ZERO(&srv->rfdset);
74 FD_ZERO(&srv->wfdset);
75 LIST_INIT(&srv->sessions);
78 srv->cons = open("/dev/consolectl", O_RDWR);
79 if (srv->cons < 0) {
86 srv->ctrl = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BLUETOOTH_PROTO_L2CAP);
87 if (srv->ctrl < 0) {
90 close(srv->cons);
96 memcpy(&l2addr.l2cap_bdaddr, &srv->bdaddr, sizeof(l2addr.l2cap_bdaddr));
101 if (bind(srv->ctrl, (struct sockaddr *) &l2addr, sizeof(l2addr)) < 0) {
104 close(srv->ctrl);
105 close(srv->cons);
109 if (listen(srv->ctrl, 10) < 0) {
112 close(srv->ctrl);
113 close(srv->cons);
118 srv->intr = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BLUETOOTH_PROTO_L2CAP);
119 if (srv->intr < 0) {
122 close(srv->ctrl);
123 close(srv->cons);
129 if (bind(srv->intr, (struct sockaddr *) &l2addr, sizeof(l2addr)) < 0) {
132 close(srv->intr);
133 close(srv->ctrl);
134 close(srv->cons);
138 if (listen(srv->intr, 10) < 0) {
141 close(srv->intr);
142 close(srv->ctrl);
143 close(srv->cons);
147 FD_SET(srv->ctrl, &srv->rfdset);
148 FD_SET(srv->intr, &srv->rfdset);
149 srv->maxfd = max(srv->ctrl, srv->intr);
159 server_shutdown(bthid_server_p srv)
161 assert(srv != NULL);
163 close(srv->cons);
164 close(srv->ctrl);
165 close(srv->intr);
167 while (!LIST_EMPTY(&srv->sessions))
168 session_close(LIST_FIRST(&srv->sessions));
170 memset(srv, 0, sizeof(*srv));
178 server_do(bthid_server_p srv)
184 assert(srv != NULL);
190 memcpy(&rfdset, &srv->rfdset, sizeof(rfdset));
191 memcpy(&wfdset, &srv->wfdset, sizeof(wfdset));
193 n = select(srv->maxfd + 1, &rfdset, &wfdset, NULL, &tv);
199 srv->maxfd + 1, &rfdset, &wfdset, strerror(errno), errno);
205 for (fd = 0; fd < srv->maxfd + 1 && n > 0; fd ++) {
209 if (fd == srv->ctrl || fd == srv->intr)
210 server_accept(srv, fd);
212 server_process(srv, fd);
216 client_connect(srv, fd);
228 server_accept(bthid_server_p srv, int32_t fd)
239 (fd == srv->ctrl)? "control" : "interrupt",
248 (fd == srv->ctrl)? "control" : "interrupt",
255 if ((s = session_by_bdaddr(srv, &l2addr.l2cap_bdaddr)) == NULL) {
260 if ((s = session_open(srv, d)) == NULL) {
269 if (fd == srv->ctrl) {
279 FD_SET(new_fd, &srv->rfdset);
280 if (new_fd > srv->maxfd)
281 srv->maxfd = new_fd;
284 (fd == srv->ctrl)? "control" : "interrupt",
301 server_process(bthid_server_p srv, int32_t fd)
303 bthid_session_p s = session_by_fd(srv, fd);