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