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