Initial import of binutils 2.22 on the new vendor branch
[dragonfly.git] / sys / netgraph7 / bluetooth / hci / ng_hci_prse.h
1 /*
2  * ng_hci_prse.h
3  */
4
5 /*-
6  * Copyright (c) 2001 Maksim Yevmenkin <m_evmenkin@yahoo.com>
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  *
30  * $Id: ng_hci_prse.h,v 1.2 2003/03/18 00:09:36 max Exp $
31  * $FreeBSD: src/sys/netgraph/bluetooth/hci/ng_hci_prse.h,v 1.4 2005/01/07 01:45:43 imp Exp $
32  * $DragonFly: src/sys/netgraph7/bluetooth/hci/ng_hci_prse.h,v 1.2 2008/06/26 23:05:40 dillon Exp $
33  */
34
35 /***************************************************************************
36  ***************************************************************************
37  **                  ng_parse definitions for the HCI node
38  ***************************************************************************
39  ***************************************************************************/
40
41 #ifndef _NETGRAPH_HCI_PRSE_H_
42 #define _NETGRAPH_HCI_PRSE_H_
43
44 /* BDADDR */
45 static const struct ng_parse_fixedarray_info    ng_hci_bdaddr_type_info = {
46         &ng_parse_uint8_type,
47         NG_HCI_BDADDR_SIZE
48 };
49 static const struct ng_parse_type               ng_hci_bdaddr_type = {
50         &ng_parse_fixedarray_type,
51         &ng_hci_bdaddr_type_info
52 };
53
54 /* Features */
55 static const struct ng_parse_fixedarray_info    ng_hci_features_type_info = {
56         &ng_parse_uint8_type,
57         NG_HCI_FEATURES_SIZE
58 };
59 static const struct ng_parse_type               ng_hci_features_type = {
60         &ng_parse_fixedarray_type,
61         &ng_hci_features_type_info
62 };
63
64 /* Buffer info */
65 static const struct ng_parse_struct_field       ng_hci_buffer_type_fields[] =
66 {
67         { "cmd_free",   &ng_parse_uint8_type,  },
68         { "sco_size",   &ng_parse_uint8_type,  },
69         { "sco_pkts",   &ng_parse_uint16_type, },
70         { "sco_free",   &ng_parse_uint16_type, },
71         { "acl_size",   &ng_parse_uint16_type, },
72         { "acl_pkts",   &ng_parse_uint16_type, },
73         { "acl_free",   &ng_parse_uint16_type, },
74         { NULL, }
75 };
76 static const struct ng_parse_type               ng_hci_buffer_type = {
77         &ng_parse_struct_type,
78         &ng_hci_buffer_type_fields
79 };
80
81 /* Stat info */
82 static const struct ng_parse_struct_field       ng_hci_stat_type_fields[] =
83 {
84         { "cmd_sent",   &ng_parse_uint32_type, },
85         { "evnt_recv",  &ng_parse_uint32_type, },
86         { "acl_recv",   &ng_parse_uint32_type, },
87         { "acl_sent",   &ng_parse_uint32_type, },
88         { "sco_recv",   &ng_parse_uint32_type, },
89         { "sco_sent",   &ng_parse_uint32_type, },
90         { "bytes_recv", &ng_parse_uint32_type, },
91         { "bytes_sent", &ng_parse_uint32_type, },
92         { NULL, }
93 };
94 static const struct ng_parse_type               ng_hci_stat_type = {
95         &ng_parse_struct_type,
96         &ng_hci_stat_type_fields
97 };
98
99 /* 
100  * HCI node command list
101  */
102
103 static const struct ng_cmdlist  ng_hci_cmdlist[] = {
104         {
105                 NGM_HCI_COOKIE,
106                 NGM_HCI_NODE_GET_STATE,
107                 "get_state",
108                 NULL,
109                 &ng_parse_uint16_type
110         },
111         {
112                 NGM_HCI_COOKIE,
113                 NGM_HCI_NODE_INIT,
114                 "init",
115                 NULL,
116                 NULL
117         },
118         {
119                 NGM_HCI_COOKIE,
120                 NGM_HCI_NODE_GET_DEBUG,
121                 "get_debug",
122                 NULL,
123                 &ng_parse_uint16_type
124         },
125         {
126                 NGM_HCI_COOKIE,
127                 NGM_HCI_NODE_SET_DEBUG,
128                 "set_debug",
129                 &ng_parse_uint16_type,
130                 NULL
131         },
132         {
133                 NGM_HCI_COOKIE,
134                 NGM_HCI_NODE_GET_BUFFER,
135                 "get_buff_info",
136                 NULL,
137                 &ng_hci_buffer_type
138         },
139         {
140                 NGM_HCI_COOKIE,
141                 NGM_HCI_NODE_GET_BDADDR,
142                 "get_bdaddr",
143                 NULL,
144                 &ng_hci_bdaddr_type
145         },
146         {
147                 NGM_HCI_COOKIE,
148                 NGM_HCI_NODE_GET_FEATURES,
149                 "get_features",
150                 NULL,
151                 &ng_hci_features_type
152         },
153         {
154                 NGM_HCI_COOKIE,
155                 NGM_HCI_NODE_GET_STAT,
156                 "get_stat",
157                 NULL,
158                 &ng_hci_stat_type
159         },
160         {
161                 NGM_HCI_COOKIE,
162                 NGM_HCI_NODE_RESET_STAT,
163                 "reset_stat",
164                 NULL,
165                 NULL
166         },
167         {
168                 NGM_HCI_COOKIE,
169                 NGM_HCI_NODE_FLUSH_NEIGHBOR_CACHE,
170                 "flush_ncache",
171                 NULL,
172                 NULL
173         },
174         {
175                 NGM_HCI_COOKIE,
176                 NGM_HCI_NODE_GET_LINK_POLICY_SETTINGS_MASK,
177                 "get_lm_mask",
178                 NULL,
179                 &ng_parse_uint16_type
180         },
181         {
182                 NGM_HCI_COOKIE,
183                 NGM_HCI_NODE_SET_LINK_POLICY_SETTINGS_MASK,
184                 "set_lm_mask",
185                 &ng_parse_uint16_type,
186                 NULL
187         },
188         {
189                 NGM_HCI_COOKIE,
190                 NGM_HCI_NODE_GET_PACKET_MASK,
191                 "get_pkt_mask",
192                 NULL,
193                 &ng_parse_uint16_type
194         },
195         {
196                 NGM_HCI_COOKIE,
197                 NGM_HCI_NODE_SET_PACKET_MASK,
198                 "set_pkt_mask",
199                 &ng_parse_uint16_type,
200                 NULL
201         },
202         {
203                 NGM_HCI_COOKIE,
204                 NGM_HCI_NODE_GET_ROLE_SWITCH,
205                 "get_role_sw",
206                 NULL,
207                 &ng_parse_uint16_type
208         },
209         {
210                 NGM_HCI_COOKIE,
211                 NGM_HCI_NODE_SET_ROLE_SWITCH,
212                 "set_role_sw",
213                 &ng_parse_uint16_type,
214                 NULL
215         },
216         { 0, }
217 };
218
219 #endif /* ndef _NETGRAPH_HCI_PRSE_H_ */
220