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