xref: /freebsd/usr.sbin/bluetooth/bthidd/bthidd.h (revision 6490c2ffabe2a6e5df2545d164f1c257e0d471de)
16490c2ffSMaksim Yevmenkin /*
26490c2ffSMaksim Yevmenkin  * bthidd.h
36490c2ffSMaksim Yevmenkin  *
46490c2ffSMaksim Yevmenkin  * Copyright (c) 2004 Maksim Yevmenkin <m_evmenkin@yahoo.com>
56490c2ffSMaksim Yevmenkin  * All rights reserved.
66490c2ffSMaksim Yevmenkin  *
76490c2ffSMaksim Yevmenkin  * Redistribution and use in source and binary forms, with or without
86490c2ffSMaksim Yevmenkin  * modification, are permitted provided that the following conditions
96490c2ffSMaksim Yevmenkin  * are met:
106490c2ffSMaksim Yevmenkin  * 1. Redistributions of source code must retain the above copyright
116490c2ffSMaksim Yevmenkin  *    notice, this list of conditions and the following disclaimer.
126490c2ffSMaksim Yevmenkin  * 2. Redistributions in binary form must reproduce the above copyright
136490c2ffSMaksim Yevmenkin  *    notice, this list of conditions and the following disclaimer in the
146490c2ffSMaksim Yevmenkin  *    documentation and/or other materials provided with the distribution.
156490c2ffSMaksim Yevmenkin  *
166490c2ffSMaksim Yevmenkin  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
176490c2ffSMaksim Yevmenkin  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
186490c2ffSMaksim Yevmenkin  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
196490c2ffSMaksim Yevmenkin  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
206490c2ffSMaksim Yevmenkin  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
216490c2ffSMaksim Yevmenkin  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
226490c2ffSMaksim Yevmenkin  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
236490c2ffSMaksim Yevmenkin  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
246490c2ffSMaksim Yevmenkin  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
256490c2ffSMaksim Yevmenkin  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
266490c2ffSMaksim Yevmenkin  * SUCH DAMAGE.
276490c2ffSMaksim Yevmenkin  *
286490c2ffSMaksim Yevmenkin  * $Id: bthidd.h,v 1.4 2004/02/26 21:44:20 max Exp $
296490c2ffSMaksim Yevmenkin  * $FreeBSD$
306490c2ffSMaksim Yevmenkin  */
316490c2ffSMaksim Yevmenkin 
326490c2ffSMaksim Yevmenkin #ifndef _BTHIDD_H_
336490c2ffSMaksim Yevmenkin #define _BTHIDD_H_ 1
346490c2ffSMaksim Yevmenkin 
356490c2ffSMaksim Yevmenkin #define BTHIDD_IDENT	"bthidd"
366490c2ffSMaksim Yevmenkin #define BTHIDD_PIDFILE	"/var/run/" BTHIDD_IDENT ".pid"
376490c2ffSMaksim Yevmenkin 
386490c2ffSMaksim Yevmenkin struct bthid_session;
396490c2ffSMaksim Yevmenkin 
406490c2ffSMaksim Yevmenkin struct bthid_server
416490c2ffSMaksim Yevmenkin {
426490c2ffSMaksim Yevmenkin 	bdaddr_t			bdaddr;	/* local bdaddr */
436490c2ffSMaksim Yevmenkin 	int				cons;	/* /dev/consolectl */
446490c2ffSMaksim Yevmenkin 	int				ctrl;   /* control channel (listen) */
456490c2ffSMaksim Yevmenkin 	int				intr;   /* interrupt channel (listen) */
466490c2ffSMaksim Yevmenkin 	int				maxfd;	/* max fd in sets */
476490c2ffSMaksim Yevmenkin 	fd_set				rfdset;	/* read descriptor set */
486490c2ffSMaksim Yevmenkin 	fd_set				wfdset;	/* write descriptor set */
496490c2ffSMaksim Yevmenkin 	LIST_HEAD(, bthid_session)	sessions;
506490c2ffSMaksim Yevmenkin };
516490c2ffSMaksim Yevmenkin 
526490c2ffSMaksim Yevmenkin typedef struct bthid_server	bthid_server_t;
536490c2ffSMaksim Yevmenkin typedef struct bthid_server *	bthid_server_p;
546490c2ffSMaksim Yevmenkin 
556490c2ffSMaksim Yevmenkin struct bthid_session
566490c2ffSMaksim Yevmenkin {
576490c2ffSMaksim Yevmenkin 	bthid_server_p			srv;	/* pointer back to server */
586490c2ffSMaksim Yevmenkin 	int				ctrl;	/* control channel */
596490c2ffSMaksim Yevmenkin 	int				intr;	/* interrupt channel */
606490c2ffSMaksim Yevmenkin 	bdaddr_t			bdaddr;	/* remote bdaddr */
616490c2ffSMaksim Yevmenkin 	short				state;	/* session state */
626490c2ffSMaksim Yevmenkin #define CLOSED	0
636490c2ffSMaksim Yevmenkin #define	W4CTRL	1
646490c2ffSMaksim Yevmenkin #define	W4INTR	2
656490c2ffSMaksim Yevmenkin #define	OPEN	3
666490c2ffSMaksim Yevmenkin 	LIST_ENTRY(bthid_session)	next;	/* link to next */
676490c2ffSMaksim Yevmenkin };
686490c2ffSMaksim Yevmenkin 
696490c2ffSMaksim Yevmenkin typedef struct bthid_session	bthid_session_t;
706490c2ffSMaksim Yevmenkin typedef struct bthid_session *	bthid_session_p;
716490c2ffSMaksim Yevmenkin 
726490c2ffSMaksim Yevmenkin int		server_init      (bthid_server_p srv);
736490c2ffSMaksim Yevmenkin void		server_shutdown  (bthid_server_p srv);
746490c2ffSMaksim Yevmenkin int		server_do        (bthid_server_p srv);
756490c2ffSMaksim Yevmenkin 
766490c2ffSMaksim Yevmenkin int		client_rescan    (bthid_server_p srv);
776490c2ffSMaksim Yevmenkin int		client_connect   (bthid_server_p srv, int fd);
786490c2ffSMaksim Yevmenkin 
796490c2ffSMaksim Yevmenkin bthid_session_p	session_open     (bthid_server_p srv, bdaddr_p bdaddr);
806490c2ffSMaksim Yevmenkin bthid_session_p	session_by_bdaddr(bthid_server_p srv, bdaddr_p bdaddr);
816490c2ffSMaksim Yevmenkin bthid_session_p	session_by_fd    (bthid_server_p srv, int fd);
826490c2ffSMaksim Yevmenkin void		session_close    (bthid_session_p s);
836490c2ffSMaksim Yevmenkin 
846490c2ffSMaksim Yevmenkin int		hid_control      (bthid_session_p s, char *data, int len);
856490c2ffSMaksim Yevmenkin int		hid_interrupt    (bthid_session_p s, char *data, int len);
866490c2ffSMaksim Yevmenkin 
876490c2ffSMaksim Yevmenkin #endif /* ndef _BTHIDD_H_ */
886490c2ffSMaksim Yevmenkin 
89