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