Path: blob/main/sys/netgraph/bluetooth/include/ng_btsocket_sco.h
34814 views
/*1* ng_btsocket_sco.h2*/34/*-5* SPDX-License-Identifier: BSD-2-Clause6*7* Copyright (c) 2001-2002 Maksim Yevmenkin <[email protected]>8* All rights reserved.9*10* Redistribution and use in source and binary forms, with or without11* modification, are permitted provided that the following conditions12* are met:13* 1. Redistributions of source code must retain the above copyright14* notice, this list of conditions and the following disclaimer.15* 2. Redistributions in binary form must reproduce the above copyright16* notice, this list of conditions and the following disclaimer in the17* documentation and/or other materials provided with the distribution.18*19* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND20* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE21* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE22* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE23* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL24* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS25* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)26* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT27* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY28* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF29* SUCH DAMAGE.30*31* $Id: ng_btsocket_sco.h,v 1.3 2005/10/31 18:08:52 max Exp $32*/3334#ifndef _NETGRAPH_BTSOCKET_SCO_H_35#define _NETGRAPH_BTSOCKET_SCO_H_3637/*38* SCO routing entry39*/4041struct ng_hook;42struct ng_message;4344struct ng_btsocket_sco_rtentry {45bdaddr_t src; /* source BD_ADDR */46u_int16_t pkt_size; /* mtu */47u_int16_t num_pkts; /* buffer size */48int32_t pending; /* pending packets */49struct ng_hook *hook; /* downstream hook */50LIST_ENTRY(ng_btsocket_sco_rtentry) next; /* link to next */51};52typedef struct ng_btsocket_sco_rtentry ng_btsocket_sco_rtentry_t;53typedef struct ng_btsocket_sco_rtentry * ng_btsocket_sco_rtentry_p;5455/*****************************************************************************56*****************************************************************************57** SOCK_SEQPACKET SCO sockets **58*****************************************************************************59*****************************************************************************/6061#define NG_BTSOCKET_SCO_SENDSPACE 102462#define NG_BTSOCKET_SCO_RECVSPACE (64 * 1024)6364/*65* Bluetooth SCO socket PCB66*/6768struct ng_btsocket_sco_pcb {69struct socket *so; /* Pointer to socket */7071bdaddr_t src; /* Source address */72bdaddr_t dst; /* Destination address */7374u_int16_t con_handle; /* connection handle */7576u_int16_t flags; /* socket flags */77#define NG_BTSOCKET_SCO_CLIENT (1 << 0) /* socket is client */78#define NG_BTSOCKET_SCO_TIMO (1 << 1) /* timeout pending */7980u_int8_t state; /* socket state */81#define NG_BTSOCKET_SCO_CLOSED 0 /* socket closed */82#define NG_BTSOCKET_SCO_CONNECTING 1 /* wait for connect */83#define NG_BTSOCKET_SCO_OPEN 2 /* socket open */84#define NG_BTSOCKET_SCO_DISCONNECTING 3 /* wait for disconnect */8586struct callout timo; /* timeout */8788ng_btsocket_sco_rtentry_p rt; /* routing info */8990struct mtx pcb_mtx; /* pcb mutex */9192LIST_ENTRY(ng_btsocket_sco_pcb) next; /* link to next PCB */93};94typedef struct ng_btsocket_sco_pcb ng_btsocket_sco_pcb_t;95typedef struct ng_btsocket_sco_pcb * ng_btsocket_sco_pcb_p;9697#define so2sco_pcb(so) \98((struct ng_btsocket_sco_pcb *)((so)->so_pcb))99100/*101* Bluetooth SCO socket methods102*/103104#ifdef _KERNEL105106void ng_btsocket_sco_abort (struct socket *);107void ng_btsocket_sco_close (struct socket *);108int ng_btsocket_sco_accept (struct socket *, struct sockaddr *);109int ng_btsocket_sco_attach (struct socket *, int, struct thread *);110int ng_btsocket_sco_bind (struct socket *, struct sockaddr *,111struct thread *);112int ng_btsocket_sco_connect (struct socket *, struct sockaddr *,113struct thread *);114int ng_btsocket_sco_control (struct socket *, u_long, void *,115struct ifnet *, struct thread *);116int ng_btsocket_sco_ctloutput (struct socket *, struct sockopt *);117void ng_btsocket_sco_detach (struct socket *);118int ng_btsocket_sco_disconnect (struct socket *);119int ng_btsocket_sco_listen (struct socket *, int, struct thread *);120int ng_btsocket_sco_peeraddr (struct socket *, struct sockaddr *);121int ng_btsocket_sco_send (struct socket *, int, struct mbuf *,122struct sockaddr *, struct mbuf *,123struct thread *);124int ng_btsocket_sco_sockaddr (struct socket *, struct sockaddr *);125126#endif /* _KERNEL */127128#endif /* _NETGRAPH_BTSOCKET_SCO_H_ */129130131