1 /* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the copyright holders nor the names of 14 * contributors may be used to endorse or promote products derived 15 * from this software without specific prior written permission. 16 * 4. Any redistribution, use, or modification is done solely for 17 * personal benefit and not for any commercial purpose or for 18 * monetary gain. 19 * 20 * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 21 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS 24 * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 26 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 27 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 30 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * Please inquire about commercial licensing options at 34 * [email protected] 35 * 36 */ 37 38 /* 39 * pan.h 40 * 41 * Created by Milanka Ringwald on 10/16/14. 42 */ 43 44 #ifndef __PAN_H 45 #define __PAN_H 46 47 #include <stdint.h> 48 49 #include "btstack-config.h" 50 51 #if defined __cplusplus 52 extern "C" { 53 #endif 54 55 typedef enum { 56 PANU_UUID = 0x1115, 57 NAP_UUID = 0x1116, 58 GN_UUID = 0x1117 59 } bnep_service_uuid_t; 60 61 typedef enum { 62 BNEP_SECURITY_NONE = 0x0000, 63 BNEP_SECURITY_SERVICE_LEVEL_ENFORCED, 64 BNEP_SECURITY_802_1X 65 } security_description_t; 66 67 typedef enum { 68 PAN_NET_ACCESS_TYPE_PSTN = 0x0000, 69 PAN_NET_ACCESS_TYPE_ISDN, 70 PAN_NET_ACCESS_TYPE_DSL, 71 PAN_NET_ACCESS_TYPE_CABLE_MODEM, 72 PAN_NET_ACCESS_TYPE_10MB_ETHERNET, 73 PAN_NET_ACCESS_TYPE_100MB_ETHERNET, 74 PAN_NET_ACCESS_TYPE_4MB_TOKEN_RING, 75 PAN_NET_ACCESS_TYPE_16MB_TOKEN_RING, 76 PAN_NET_ACCESS_TYPE_100MB_TOKEN_RING, 77 PAN_NET_ACCESS_TYPE_FDDI, 78 PAN_NET_ACCESS_TYPE_GSM, 79 PAN_NET_ACCESS_TYPE_CDMA, 80 PAN_NET_ACCESS_TYPE_GPRS, 81 PAN_NET_ACCESS_TYPE_3G, 82 PAN_NET_ACCESS_TYPE_CELULAR, 83 PAN_NET_ACCESS_TYPE_OTHER = 0xFFFE, 84 PAN_NET_ACCESS_TYPE_NONE 85 } net_access_type_t; 86 87 /* API_START */ 88 89 /** 90 * @brief Creates SDP record for PANU BNEP service in provided empty buffer. 91 * @note Make sure the buffer is big enough. 92 * 93 * @param service is an empty buffer to store service record 94 * @param network_packet_types array of types terminated by a 0x0000 entry 95 * @param name if NULL, the default service name will be assigned 96 * @param description if NULL, the default service description will be assigned 97 * @param security_desc 98 */ 99 void pan_create_panu_service(uint8_t *service, uint16_t * network_packet_types, const char *name, 100 const char *description, security_description_t security_desc); 101 102 /** 103 * @brief Creates SDP record for GN BNEP service in provided empty buffer. 104 * @note Make sure the buffer is big enough. 105 * 106 * @param service is an empty buffer to store service record 107 * @param network_packet_types array of types terminated by a 0x0000 entry 108 * @param name if NULL, the default service name will be assigned 109 * @param description if NULL, the default service description will be assigned 110 * @param security_desc 111 * @param IPv4Subnet is optional subnet definition, e.g. "10.0.0.0/8" 112 * @param IPv6Subnet is optional subnet definition given in the standard IETF format with the absolute attribute IDs 113 */ 114 void pan_create_gn_service(uint8_t *service, uint16_t * network_packet_types, const char *name, 115 const char *description, security_description_t security_desc, const char *IPv4Subnet, 116 const char *IPv6Subnet); 117 118 /** 119 * @brief Creates SDP record for NAP BNEP service in provided empty buffer. 120 * @note Make sure the buffer is big enough. 121 * 122 * @param service is an empty buffer to store service record 123 * @param name if NULL, the default service name will be assigned 124 * @param network_packet_types array of types terminated by a 0x0000 entry 125 * @param description if NULL, the default service description will be assigned 126 * @param security_desc 127 * @param net_access_type type of available network access 128 * @param max_net_access_rate based on net_access_type measured in byte/s 129 * @param IPv4Subnet is optional subnet definition, e.g. "10.0.0.0/8" 130 * @param IPv6Subnet is optional subnet definition given in the standard IETF format with the absolute attribute IDs 131 */ 132 void pan_create_nap_service(uint8_t *service, uint16_t * network_packet_types, const char *name, 133 const char *description, security_description_t security_desc, net_access_type_t net_access_type, 134 uint32_t max_net_access_rate, const char *IPv4Subnet, const char *IPv6Subnet); 135 136 /* API_END */ 137 138 #if defined __cplusplus 139 } 140 #endif 141 #endif // __PAN_H 142