Lines Matching full:s

59 	bthid_session_p	s;  in session_open()  local
64 if ((s = (bthid_session_p) malloc(sizeof(*s))) == NULL) in session_open()
67 s->srv = srv; in session_open()
68 memcpy(&s->bdaddr, &d->bdaddr, sizeof(s->bdaddr)); in session_open()
69 s->ctrl = -1; in session_open()
70 s->intr = -1; in session_open()
71 s->vkbd = -1; in session_open()
72 s->ctx = NULL; in session_open()
73 s->state = CLOSED; in session_open()
74 s->ukbd = -1; in session_open()
75 s->umouse = -1; in session_open()
76 s->obutt = 0; in session_open()
78 s->keys1 = bit_alloc(kbd_maxkey()); in session_open()
79 if (s->keys1 == NULL) { in session_open()
80 free(s); in session_open()
84 s->keys2 = bit_alloc(kbd_maxkey()); in session_open()
85 if (s->keys2 == NULL) { in session_open()
86 free(s->keys1); in session_open()
87 free(s); in session_open()
91 LIST_INSERT_HEAD(&srv->sessions, s, next); in session_open()
93 return (s); in session_open()
101 session_run(bthid_session_p s) in session_run() argument
103 hid_device_p d = get_hid_device(&s->bdaddr); in session_run()
109 s->vkbd = open("/dev/vkbdctl", O_RDWR); in session_run()
110 if (s->vkbd < 0) { in session_run()
112 "for %s. %s (%d)", bt_ntoa(&s->bdaddr, NULL), in session_run()
116 /* Register session's vkbd descriptor (if needed) for read */ in session_run()
117 FD_SET(s->vkbd, &s->srv->rfdset); in session_run()
118 if (s->vkbd > s->srv->maxfd) in session_run()
119 s->srv->maxfd = s->vkbd; in session_run()
123 hid_initialise(s); in session_run()
127 getsockname(s->ctrl, (struct sockaddr *) &local, &len); in session_run()
129 if (d->mouse && s->srv->uinput) { in session_run()
130 s->umouse = uinput_open_mouse(d, &local.l2cap_bdaddr); in session_run()
131 if (s->umouse < 0) { in session_run()
133 "for %s. %s (%d)", bt_ntoa(&s->bdaddr, in session_run()
138 if (d->keyboard && s->srv->uinput) { in session_run()
139 s->ukbd = uinput_open_keyboard(d, &local.l2cap_bdaddr); in session_run()
140 if (s->ukbd < 0) { in session_run()
142 "for %s. %s (%d)", bt_ntoa(&s->bdaddr, in session_run()
146 /* Register session's ukbd descriptor (if needed) for read */ in session_run()
147 FD_SET(s->ukbd, &s->srv->rfdset); in session_run()
148 if (s->ukbd > s->srv->maxfd) in session_run()
149 s->srv->maxfd = s->ukbd; in session_run()
161 bthid_session_p s; in session_by_bdaddr() local
166 LIST_FOREACH(s, &srv->sessions, next) in session_by_bdaddr()
167 if (memcmp(&s->bdaddr, bdaddr, sizeof(s->bdaddr)) == 0) in session_by_bdaddr()
170 return (s); in session_by_bdaddr()
180 bthid_session_p s; in session_by_fd() local
185 LIST_FOREACH(s, &srv->sessions, next) in session_by_fd()
186 if (s->ctrl == fd || s->intr == fd || in session_by_fd()
187 s->vkbd == fd || s->ukbd == fd) in session_by_fd()
190 return (s); in session_by_fd()
198 session_close(bthid_session_p s) in session_close() argument
200 assert(s != NULL); in session_close()
201 assert(s->srv != NULL); in session_close()
203 LIST_REMOVE(s, next); in session_close()
205 if (s->intr != -1) { in session_close()
206 FD_CLR(s->intr, &s->srv->rfdset); in session_close()
207 FD_CLR(s->intr, &s->srv->wfdset); in session_close()
208 close(s->intr); in session_close()
210 if (s->srv->maxfd == s->intr) in session_close()
211 s->srv->maxfd --; in session_close()
214 if (s->ctrl != -1) { in session_close()
215 FD_CLR(s->ctrl, &s->srv->rfdset); in session_close()
216 FD_CLR(s->ctrl, &s->srv->wfdset); in session_close()
217 close(s->ctrl); in session_close()
219 if (s->srv->maxfd == s->ctrl) in session_close()
220 s->srv->maxfd --; in session_close()
223 if (s->vkbd != -1) { in session_close()
224 FD_CLR(s->vkbd, &s->srv->rfdset); in session_close()
225 close(s->vkbd); in session_close()
227 if (s->srv->maxfd == s->vkbd) in session_close()
228 s->srv->maxfd --; in session_close()
231 if (s->umouse != -1) in session_close()
232 close(s->umouse); in session_close()
234 if (s->ukbd != -1) { in session_close()
235 FD_CLR(s->ukbd, &s->srv->rfdset); in session_close()
236 close(s->ukbd); in session_close()
238 if (s->srv->maxfd == s->ukbd) in session_close()
239 s->srv->maxfd --; in session_close()
242 free(s->ctx); in session_close()
243 free(s->keys1); in session_close()
244 free(s->keys2); in session_close()
246 memset(s, 0, sizeof(*s)); in session_close()
247 free(s); in session_close()