ng_hci_prse.h revision 122634
1107120Sjulian/*
2107120Sjulian * ng_hci_prse.h
3107120Sjulian *
4107120Sjulian * Copyright (c) 2001 Maksim Yevmenkin <m_evmenkin@yahoo.com>
5107120Sjulian * All rights reserved.
6107120Sjulian *
7107120Sjulian * Redistribution and use in source and binary forms, with or without
8107120Sjulian * modification, are permitted provided that the following conditions
9107120Sjulian * are met:
10107120Sjulian * 1. Redistributions of source code must retain the above copyright
11107120Sjulian *    notice, this list of conditions and the following disclaimer.
12107120Sjulian * 2. Redistributions in binary form must reproduce the above copyright
13107120Sjulian *    notice, this list of conditions and the following disclaimer in the
14107120Sjulian *    documentation and/or other materials provided with the distribution.
15107120Sjulian *
16107120Sjulian * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17107120Sjulian * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18107120Sjulian * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19107120Sjulian * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20107120Sjulian * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21107120Sjulian * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22107120Sjulian * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23107120Sjulian * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24107120Sjulian * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25107120Sjulian * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26107120Sjulian * SUCH DAMAGE.
27107120Sjulian *
28114878Sjulian * $Id: ng_hci_prse.h,v 1.2 2003/03/18 00:09:36 max Exp $
29107120Sjulian * $FreeBSD: head/sys/netgraph/bluetooth/hci/ng_hci_prse.h 122634 2003-11-14 03:45:29Z emax $
30107120Sjulian */
31107120Sjulian
32107120Sjulian/***************************************************************************
33107120Sjulian ***************************************************************************
34107120Sjulian **                  ng_parse definitions for the HCI node
35107120Sjulian ***************************************************************************
36107120Sjulian ***************************************************************************/
37107120Sjulian
38107120Sjulian#ifndef _NETGRAPH_HCI_PRSE_H_
39122634Semax#define _NETGRAPH_HCI_PRSE_H_
40107120Sjulian
41107120Sjulian/* BDADDR */
42107120Sjulianstatic const struct ng_parse_fixedarray_info	ng_hci_bdaddr_type_info = {
43107120Sjulian	&ng_parse_uint8_type,
44107120Sjulian	NG_HCI_BDADDR_SIZE
45107120Sjulian};
46107120Sjulianstatic const struct ng_parse_type		ng_hci_bdaddr_type = {
47107120Sjulian	&ng_parse_fixedarray_type,
48107120Sjulian	&ng_hci_bdaddr_type_info
49107120Sjulian};
50107120Sjulian
51107120Sjulian/* Features */
52107120Sjulianstatic const struct ng_parse_fixedarray_info	ng_hci_features_type_info = {
53107120Sjulian	&ng_parse_uint8_type,
54107120Sjulian	NG_HCI_FEATURES_SIZE
55107120Sjulian};
56107120Sjulianstatic const struct ng_parse_type		ng_hci_features_type = {
57107120Sjulian	&ng_parse_fixedarray_type,
58107120Sjulian	&ng_hci_features_type_info
59107120Sjulian};
60107120Sjulian
61107120Sjulian/* Buffer info */
62107120Sjulianstatic const struct ng_parse_struct_field	ng_hci_buffer_type_fields[] =
63107120Sjulian{
64107120Sjulian	{ "cmd_free",	&ng_parse_uint8_type,  },
65107120Sjulian	{ "sco_size",	&ng_parse_uint8_type,  },
66107120Sjulian	{ "sco_pkts",	&ng_parse_uint16_type, },
67107120Sjulian	{ "sco_free",	&ng_parse_uint16_type, },
68107120Sjulian	{ "acl_size",	&ng_parse_uint16_type, },
69107120Sjulian	{ "acl_pkts",	&ng_parse_uint16_type, },
70107120Sjulian	{ "acl_free",	&ng_parse_uint16_type, },
71107120Sjulian	{ NULL, }
72107120Sjulian};
73107120Sjulianstatic const struct ng_parse_type		ng_hci_buffer_type = {
74107120Sjulian	&ng_parse_struct_type,
75107120Sjulian	&ng_hci_buffer_type_fields
76107120Sjulian};
77107120Sjulian
78107120Sjulian/* Stat info */
79107120Sjulianstatic const struct ng_parse_struct_field	ng_hci_stat_type_fields[] =
80107120Sjulian{
81107120Sjulian	{ "cmd_sent",	&ng_parse_uint32_type, },
82107120Sjulian	{ "evnt_recv",	&ng_parse_uint32_type, },
83107120Sjulian	{ "acl_recv",	&ng_parse_uint32_type, },
84107120Sjulian	{ "acl_sent",	&ng_parse_uint32_type, },
85107120Sjulian	{ "sco_recv",	&ng_parse_uint32_type, },
86107120Sjulian	{ "sco_sent",	&ng_parse_uint32_type, },
87107120Sjulian	{ "bytes_recv",	&ng_parse_uint32_type, },
88107120Sjulian	{ "bytes_sent",	&ng_parse_uint32_type, },
89107120Sjulian	{ NULL, }
90107120Sjulian};
91107120Sjulianstatic const struct ng_parse_type		ng_hci_stat_type = {
92107120Sjulian	&ng_parse_struct_type,
93107120Sjulian	&ng_hci_stat_type_fields
94107120Sjulian};
95107120Sjulian
96107120Sjulian/*
97107120Sjulian * HCI node command list
98107120Sjulian */
99107120Sjulian
100107120Sjulianstatic const struct ng_cmdlist	ng_hci_cmdlist[] = {
101107120Sjulian	{
102107120Sjulian		NGM_HCI_COOKIE,
103107120Sjulian		NGM_HCI_NODE_GET_STATE,
104107120Sjulian		"get_state",
105107120Sjulian		NULL,
106107120Sjulian		&ng_parse_uint16_type
107107120Sjulian	},
108107120Sjulian	{
109107120Sjulian		NGM_HCI_COOKIE,
110107120Sjulian		NGM_HCI_NODE_INIT,
111107120Sjulian		"init",
112107120Sjulian		NULL,
113107120Sjulian		NULL
114107120Sjulian	},
115107120Sjulian	{
116107120Sjulian		NGM_HCI_COOKIE,
117107120Sjulian		NGM_HCI_NODE_GET_DEBUG,
118107120Sjulian		"get_debug",
119107120Sjulian		NULL,
120107120Sjulian		&ng_parse_uint16_type
121107120Sjulian	},
122107120Sjulian	{
123107120Sjulian		NGM_HCI_COOKIE,
124107120Sjulian		NGM_HCI_NODE_SET_DEBUG,
125107120Sjulian		"set_debug",
126107120Sjulian		&ng_parse_uint16_type,
127107120Sjulian		NULL
128107120Sjulian	},
129107120Sjulian	{
130107120Sjulian		NGM_HCI_COOKIE,
131107120Sjulian		NGM_HCI_NODE_GET_BUFFER,
132107120Sjulian		"get_buff_info",
133107120Sjulian		NULL,
134107120Sjulian		&ng_hci_buffer_type
135107120Sjulian	},
136107120Sjulian	{
137107120Sjulian		NGM_HCI_COOKIE,
138107120Sjulian		NGM_HCI_NODE_GET_BDADDR,
139107120Sjulian		"get_bdaddr",
140107120Sjulian		NULL,
141107120Sjulian		&ng_hci_bdaddr_type
142107120Sjulian	},
143107120Sjulian	{
144107120Sjulian		NGM_HCI_COOKIE,
145107120Sjulian		NGM_HCI_NODE_GET_FEATURES,
146107120Sjulian		"get_features",
147107120Sjulian		NULL,
148107120Sjulian		&ng_hci_features_type
149107120Sjulian	},
150107120Sjulian	{
151107120Sjulian		NGM_HCI_COOKIE,
152107120Sjulian		NGM_HCI_NODE_GET_STAT,
153107120Sjulian		"get_stat",
154107120Sjulian		NULL,
155107120Sjulian		&ng_hci_stat_type
156107120Sjulian	},
157107120Sjulian	{
158107120Sjulian		NGM_HCI_COOKIE,
159107120Sjulian		NGM_HCI_NODE_RESET_STAT,
160107120Sjulian		"reset_stat",
161107120Sjulian		NULL,
162107120Sjulian		NULL
163107120Sjulian	},
164107120Sjulian	{
165107120Sjulian		NGM_HCI_COOKIE,
166107120Sjulian		NGM_HCI_NODE_FLUSH_NEIGHBOR_CACHE,
167107120Sjulian		"flush_ncache",
168107120Sjulian		NULL,
169107120Sjulian		NULL
170107120Sjulian	},
171107120Sjulian	{
172107120Sjulian		NGM_HCI_COOKIE,
173107120Sjulian		NGM_HCI_NODE_GET_LINK_POLICY_SETTINGS_MASK,
174107120Sjulian		"get_lm_mask",
175107120Sjulian		NULL,
176107120Sjulian		&ng_parse_uint16_type
177107120Sjulian	},
178107120Sjulian	{
179107120Sjulian		NGM_HCI_COOKIE,
180107120Sjulian		NGM_HCI_NODE_SET_LINK_POLICY_SETTINGS_MASK,
181107120Sjulian		"set_lm_mask",
182107120Sjulian		&ng_parse_uint16_type,
183107120Sjulian		NULL
184107120Sjulian	},
185107120Sjulian	{
186107120Sjulian		NGM_HCI_COOKIE,
187107120Sjulian		NGM_HCI_NODE_GET_PACKET_MASK,
188107120Sjulian		"get_pkt_mask",
189107120Sjulian		NULL,
190107120Sjulian		&ng_parse_uint16_type
191107120Sjulian	},
192107120Sjulian	{
193107120Sjulian		NGM_HCI_COOKIE,
194107120Sjulian		NGM_HCI_NODE_SET_PACKET_MASK,
195107120Sjulian		"set_pkt_mask",
196107120Sjulian		&ng_parse_uint16_type,
197107120Sjulian		NULL
198107120Sjulian	},
199114878Sjulian	{
200114878Sjulian		NGM_HCI_COOKIE,
201114878Sjulian		NGM_HCI_NODE_GET_ROLE_SWITCH,
202114878Sjulian		"get_role_sw",
203114878Sjulian		NULL,
204114878Sjulian		&ng_parse_uint16_type
205114878Sjulian	},
206114878Sjulian	{
207114878Sjulian		NGM_HCI_COOKIE,
208114878Sjulian		NGM_HCI_NODE_SET_ROLE_SWITCH,
209114878Sjulian		"set_role_sw",
210114878Sjulian		&ng_parse_uint16_type,
211114878Sjulian		NULL
212114878Sjulian	},
213107120Sjulian	{ 0, }
214107120Sjulian};
215107120Sjulian
216107120Sjulian#endif /* ndef _NETGRAPH_HCI_PRSE_H_ */
217107120Sjulian
218