TI's CC3100 host driver and demo. Experimental and a work in progress.

Dependencies:   mbed

Committer:
dflet
Date:
Wed Nov 19 23:04:04 2014 +0000
Revision:
2:a3e52cf86086
Parent:
0:bbe98578d4c0
Added more boards!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:bbe98578d4c0 1 /*
dflet 0:bbe98578d4c0 2 * netcfg.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:bbe98578d4c0 3 *
dflet 0:bbe98578d4c0 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:bbe98578d4c0 5 *
dflet 0:bbe98578d4c0 6 *
dflet 0:bbe98578d4c0 7 * Redistribution and use in source and binary forms, with or without
dflet 0:bbe98578d4c0 8 * modification, are permitted provided that the following conditions
dflet 0:bbe98578d4c0 9 * are met:
dflet 0:bbe98578d4c0 10 *
dflet 0:bbe98578d4c0 11 * Redistributions of source code must retain the above copyright
dflet 0:bbe98578d4c0 12 * notice, this list of conditions and the following disclaimer.
dflet 0:bbe98578d4c0 13 *
dflet 0:bbe98578d4c0 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:bbe98578d4c0 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:bbe98578d4c0 16 * documentation and/or other materials provided with the
dflet 0:bbe98578d4c0 17 * distribution.
dflet 0:bbe98578d4c0 18 *
dflet 0:bbe98578d4c0 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:bbe98578d4c0 20 * its contributors may be used to endorse or promote products derived
dflet 0:bbe98578d4c0 21 * from this software without specific prior written permission.
dflet 0:bbe98578d4c0 22 *
dflet 0:bbe98578d4c0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:bbe98578d4c0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:bbe98578d4c0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:bbe98578d4c0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:bbe98578d4c0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:bbe98578d4c0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:bbe98578d4c0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:bbe98578d4c0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:bbe98578d4c0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:bbe98578d4c0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:bbe98578d4c0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:bbe98578d4c0 34 *
dflet 0:bbe98578d4c0 35 */
dflet 0:bbe98578d4c0 36
dflet 0:bbe98578d4c0 37 #ifndef __NETCFG_H__
dflet 0:bbe98578d4c0 38 #define __NETCFG_H__
dflet 0:bbe98578d4c0 39
dflet 0:bbe98578d4c0 40 /*****************************************************************************/
dflet 0:bbe98578d4c0 41 /* Include files */
dflet 0:bbe98578d4c0 42 /*****************************************************************************/
dflet 0:bbe98578d4c0 43 #include "cc3100_simplelink.h"
dflet 0:bbe98578d4c0 44
dflet 0:bbe98578d4c0 45 #ifdef __cplusplus
dflet 0:bbe98578d4c0 46 extern "C" {
dflet 0:bbe98578d4c0 47 #endif
dflet 0:bbe98578d4c0 48
dflet 0:bbe98578d4c0 49
dflet 0:bbe98578d4c0 50
dflet 0:bbe98578d4c0 51 /*!
dflet 0:bbe98578d4c0 52
dflet 0:bbe98578d4c0 53 \addtogroup netcfg
dflet 0:bbe98578d4c0 54 @{
dflet 0:bbe98578d4c0 55
dflet 0:bbe98578d4c0 56 */
dflet 0:bbe98578d4c0 57
dflet 0:bbe98578d4c0 58
dflet 0:bbe98578d4c0 59 /*****************************************************************************/
dflet 0:bbe98578d4c0 60 /* Macro declarations */
dflet 0:bbe98578d4c0 61 /*****************************************************************************/
dflet 0:bbe98578d4c0 62
dflet 0:bbe98578d4c0 63 #define SL_MAC_ADDR_LEN (6)
dflet 0:bbe98578d4c0 64 #define SL_IPV4_VAL(add_3,add_2,add_1,add_0) ((((_u32)add_3 << 24) & 0xFF000000) | (((_u32)add_2 << 16) & 0xFF0000) | (((_u32)add_1 << 8) & 0xFF00) | ((_u32)add_0 & 0xFF) )
dflet 0:bbe98578d4c0 65 #define SL_IPV4_BYTE(val,index) ( (val >> (index*8)) & 0xFF )
dflet 0:bbe98578d4c0 66
dflet 0:bbe98578d4c0 67 #define IPCONFIG_MODE_DISABLE_IPV4 (0)
dflet 0:bbe98578d4c0 68 #define IPCONFIG_MODE_ENABLE_IPV4 (1)
dflet 0:bbe98578d4c0 69
dflet 0:bbe98578d4c0 70 /*****************************************************************************/
dflet 0:bbe98578d4c0 71 /* Structure/Enum declarations */
dflet 0:bbe98578d4c0 72 /*****************************************************************************/
dflet 0:bbe98578d4c0 73 typedef enum
dflet 0:bbe98578d4c0 74 {
dflet 0:bbe98578d4c0 75 SL_MAC_ADDRESS_SET = 1,
dflet 0:bbe98578d4c0 76 SL_MAC_ADDRESS_GET = 2,
dflet 0:bbe98578d4c0 77 SL_IPV4_STA_P2P_CL_GET_INFO = 3,
dflet 0:bbe98578d4c0 78 SL_IPV4_STA_P2P_CL_DHCP_ENABLE = 4,
dflet 0:bbe98578d4c0 79 SL_IPV4_STA_P2P_CL_STATIC_ENABLE = 5,
dflet 0:bbe98578d4c0 80 SL_IPV4_AP_P2P_GO_GET_INFO = 6,
dflet 0:bbe98578d4c0 81 SL_IPV4_AP_P2P_GO_STATIC_ENABLE = 7,
dflet 0:bbe98578d4c0 82 SL_SET_HOST_RX_AGGR = 8,
dflet 0:bbe98578d4c0 83 MAX_SETTINGS = 0xFF
dflet 0:bbe98578d4c0 84 }Sl_NetCfg_e;
dflet 0:bbe98578d4c0 85
dflet 0:bbe98578d4c0 86
dflet 0:bbe98578d4c0 87 typedef struct
dflet 0:bbe98578d4c0 88 {
dflet 0:bbe98578d4c0 89 _u32 ipV4;
dflet 0:bbe98578d4c0 90 _u32 ipV4Mask;
dflet 0:bbe98578d4c0 91 _u32 ipV4Gateway;
dflet 0:bbe98578d4c0 92 _u32 ipV4DnsServer;
dflet 0:bbe98578d4c0 93 }SlNetCfgIpV4Args_t;
dflet 0:bbe98578d4c0 94
dflet 0:bbe98578d4c0 95
dflet 0:bbe98578d4c0 96 /*****************************************************************************/
dflet 0:bbe98578d4c0 97 /* Function prototypes */
dflet 0:bbe98578d4c0 98 /*****************************************************************************/
dflet 0:bbe98578d4c0 99
dflet 0:bbe98578d4c0 100 /*!
dflet 0:bbe98578d4c0 101 \brief Internal function for setting network configurations
dflet 0:bbe98578d4c0 102
dflet 0:bbe98578d4c0 103 \return On success, zero is returned. On error, -1 is
dflet 0:bbe98578d4c0 104 returned
dflet 0:bbe98578d4c0 105
dflet 0:bbe98578d4c0 106 \param[in] ConfigId configuration id
dflet 0:bbe98578d4c0 107 \param[in] ConfigOpt configurations option
dflet 0:bbe98578d4c0 108 \param[in] ConfigLen configurations len
dflet 0:bbe98578d4c0 109 \param[in] pValues configurations values
dflet 0:bbe98578d4c0 110
dflet 0:bbe98578d4c0 111 \sa
dflet 0:bbe98578d4c0 112 \note
dflet 0:bbe98578d4c0 113 \warning
dflet 0:bbe98578d4c0 114
dflet 0:bbe98578d4c0 115 \par Examples:
dflet 0:bbe98578d4c0 116 \code
dflet 0:bbe98578d4c0 117 SL_MAC_ADDRESS_SET:
dflet 0:bbe98578d4c0 118
dflet 0:bbe98578d4c0 119 Setting MAC address to the Device.
dflet 0:bbe98578d4c0 120 The new MAC address will override the default MAC address and it be saved in the FileSystem.
dflet 0:bbe98578d4c0 121 Requires restarting the device for updating this setting.
dflet 0:bbe98578d4c0 122
dflet 0:bbe98578d4c0 123 _u8 MAC_Address[6];
dflet 0:bbe98578d4c0 124 MAC_Address[0] = 0x8;
dflet 0:bbe98578d4c0 125 MAC_Address[1] = 0x0;
dflet 0:bbe98578d4c0 126 MAC_Address[2] = 0x28;
dflet 0:bbe98578d4c0 127 MAC_Address[3] = 0x22;
dflet 0:bbe98578d4c0 128 MAC_Address[4] = 0x69;
dflet 0:bbe98578d4c0 129 MAC_Address[5] = 0x31;
dflet 0:bbe98578d4c0 130 sl_NetCfgSet(SL_MAC_ADDRESS_SET,1,SL_MAC_ADDR_LEN,(_u8 *)newMacAddress);
dflet 0:bbe98578d4c0 131 sl_Stop(0);
dflet 0:bbe98578d4c0 132 sl_Start(NULL,NULL,NULL);
dflet 0:bbe98578d4c0 133 \endcode
dflet 0:bbe98578d4c0 134
dflet 0:bbe98578d4c0 135 \code
dflet 0:bbe98578d4c0 136 SL_IPV4_STA_P2P_CL_STATIC_ENABLE:
dflet 0:bbe98578d4c0 137
dflet 0:bbe98578d4c0 138 Setting a static IP address to the device working in STA mode or P2P client.
dflet 0:bbe98578d4c0 139 The IP address will be stored in the FileSystem.
dflet 0:bbe98578d4c0 140 In order to disable the static IP and get the address assigned from DHCP one should use SL_STA_P2P_CL_IPV4_DHCP_SET
dflet 0:bbe98578d4c0 141
dflet 0:bbe98578d4c0 142 SlNetCfgIpV4Args_t ipV4;
dflet 0:bbe98578d4c0 143 ipV4.ipV4 = (_u32)SL_IPV4_VAL(10,1,1,201); // _u32 IP address
dflet 0:bbe98578d4c0 144 ipV4.ipV4Mask = (_u32)SL_IPV4_VAL(255,255,255,0); // _u32 Subnet mask for this STA/P2P
dflet 0:bbe98578d4c0 145 ipV4.ipV4Gateway = (_u32)SL_IPV4_VAL(10,1,1,1); // _u32 Default gateway address
dflet 0:bbe98578d4c0 146 ipV4.ipV4DnsServer = (_u32)SL_IPV4_VAL(8,16,32,64); // _u32 DNS server address
dflet 0:bbe98578d4c0 147
dflet 0:bbe98578d4c0 148 sl_NetCfgSet(SL_IPV4_STA_P2P_CL_STATIC_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,sizeof(SlNetCfgIpV4Args_t),(_u8 *)&ipV4);
dflet 0:bbe98578d4c0 149 sl_Stop(0);
dflet 0:bbe98578d4c0 150 sl_Start(NULL,NULL,NULL);
dflet 0:bbe98578d4c0 151 \endcode
dflet 0:bbe98578d4c0 152
dflet 0:bbe98578d4c0 153 \code
dflet 0:bbe98578d4c0 154 SL_IPV4_STA_P2P_CL_DHCP_ENABLE:
dflet 0:bbe98578d4c0 155
dflet 0:bbe98578d4c0 156 Setting IP address by DHCP to FileSystem using WLAN sta mode or P2P client.
dflet 0:bbe98578d4c0 157 This should be done once if using Serial Flash.
dflet 0:bbe98578d4c0 158 This is the system's default mode for acquiring an IP address after WLAN connection.
dflet 0:bbe98578d4c0 159 _u8 val = 1;
dflet 0:bbe98578d4c0 160 sl_NetCfgSet(SL_IPV4_STA_P2P_CL_DHCP_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,1,&val);
dflet 0:bbe98578d4c0 161 sl_Stop(0);
dflet 0:bbe98578d4c0 162 sl_Start(NULL,NULL,NULL);
dflet 0:bbe98578d4c0 163 \endcode
dflet 0:bbe98578d4c0 164
dflet 0:bbe98578d4c0 165 \code
dflet 0:bbe98578d4c0 166 SL_IPV4_AP_P2P_GO_STATIC_ENABLE:
dflet 0:bbe98578d4c0 167
dflet 0:bbe98578d4c0 168 Setting a static IP address to the device working in AP mode or P2P go.
dflet 0:bbe98578d4c0 169 The IP address will be stored in the FileSystem. Requires restart.
dflet 0:bbe98578d4c0 170
dflet 0:bbe98578d4c0 171 SlNetCfgIpV4Args_t ipV4;
dflet 0:bbe98578d4c0 172 ipV4.ipV4 = (_u32)SL_IPV4_VAL(10,1,1,201); // _u32 IP address
dflet 0:bbe98578d4c0 173 ipV4.ipV4Mask = (_u32)SL_IPV4_VAL(255,255,255,0); // _u32 Subnet mask for this AP/P2P
dflet 0:bbe98578d4c0 174 ipV4.ipV4Gateway = (_u32)SL_IPV4_VAL(10,1,1,1); // _u32 Default gateway address
dflet 0:bbe98578d4c0 175 ipV4.ipV4DnsServer = (_u32)SL_IPV4_VAL(8,16,32,64); // _u32 DNS server address
dflet 0:bbe98578d4c0 176
dflet 0:bbe98578d4c0 177 sl_NetCfgSet(SL_IPV4_AP_P2P_GO_STATIC_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,sizeof(SlNetCfgIpV4Args_t),(_u8 *)&ipV4);
dflet 0:bbe98578d4c0 178 sl_Stop(0);
dflet 0:bbe98578d4c0 179 sl_Start(NULL,NULL,NULL);
dflet 0:bbe98578d4c0 180 \endcode
dflet 0:bbe98578d4c0 181
dflet 0:bbe98578d4c0 182
dflet 0:bbe98578d4c0 183 */
dflet 0:bbe98578d4c0 184 #if _SL_INCLUDE_FUNC(sl_NetCfgSet)
dflet 0:bbe98578d4c0 185 _i32 sl_NetCfgSet(_u8 ConfigId ,_u8 ConfigOpt, _u8 ConfigLen, _u8 *pValues);
dflet 0:bbe98578d4c0 186 #endif
dflet 0:bbe98578d4c0 187
dflet 0:bbe98578d4c0 188
dflet 0:bbe98578d4c0 189 /*!
dflet 0:bbe98578d4c0 190 \brief Internal function for getting network configurations
dflet 0:bbe98578d4c0 191
dflet 0:bbe98578d4c0 192 \return On success, zero is returned. On error, -1 is
dflet 0:bbe98578d4c0 193 returned
dflet 0:bbe98578d4c0 194
dflet 0:bbe98578d4c0 195 \param[in] ConfigId configuration id
dflet 0:bbe98578d4c0 196
dflet 0:bbe98578d4c0 197 \param[out] pConfigOpt Get configurations option
dflet 0:bbe98578d4c0 198
dflet 0:bbe98578d4c0 199 \param[out] pConfigLen The length of the allocated memory as input, when the
dflet 0:bbe98578d4c0 200 function complete, the value of this parameter would be
dflet 0:bbe98578d4c0 201 the len that actually read from the device.\n
dflet 0:bbe98578d4c0 202 If the device return length that is longer from the input
dflet 0:bbe98578d4c0 203 value, the function will cut the end of the returned structure
dflet 0:bbe98578d4c0 204 and will return ESMALLBUF
dflet 0:bbe98578d4c0 205
dflet 0:bbe98578d4c0 206 \param[out] pValues - get configurations values
dflet 0:bbe98578d4c0 207
dflet 0:bbe98578d4c0 208 \sa
dflet 0:bbe98578d4c0 209 \note
dflet 0:bbe98578d4c0 210 \warning
dflet 0:bbe98578d4c0 211 \par Examples:
dflet 0:bbe98578d4c0 212 \code
dflet 0:bbe98578d4c0 213 SL_MAC_ADDRESS_GET:
dflet 0:bbe98578d4c0 214
dflet 0:bbe98578d4c0 215 Get the device MAC address.
dflet 0:bbe98578d4c0 216 The returned MAC address is taken from FileSystem first. If the MAC address was not set by SL_MAC_ADDRESS_SET, the default MAC address
dflet 0:bbe98578d4c0 217 is retrieved from HW.
dflet 0:bbe98578d4c0 218
dflet 0:bbe98578d4c0 219 _u8 macAddressVal[SL_MAC_ADDR_LEN];
dflet 0:bbe98578d4c0 220 _u8 macAddressLen = SL_MAC_ADDR_LEN;
dflet 0:bbe98578d4c0 221 sl_NetCfgGet(SL_MAC_ADDRESS_GET,NULL,&macAddressLen,(_u8 *)macAddressVal);
dflet 0:bbe98578d4c0 222
dflet 0:bbe98578d4c0 223 \endcode
dflet 0:bbe98578d4c0 224
dflet 0:bbe98578d4c0 225 \code
dflet 0:bbe98578d4c0 226 SL_IPV4_STA_P2P_CL_GET_INFO:
dflet 0:bbe98578d4c0 227
dflet 0:bbe98578d4c0 228 Get IP address from WLAN station or P2P client. A DHCP flag is returned to indicate if the IP address is static or from DHCP.
dflet 0:bbe98578d4c0 229
dflet 0:bbe98578d4c0 230 _u8 len = sizeof(SlNetCfgIpV4Args_t);
dflet 0:bbe98578d4c0 231 _u8 dhcpIsOn = 0;
dflet 0:bbe98578d4c0 232 SlNetCfgIpV4Args_t ipV4 = {0};
dflet 0:bbe98578d4c0 233 sl_NetCfgGet(SL_IPV4_STA_P2P_CL_GET_INFO,&dhcpIsOn,&len,(_u8 *)&ipV4);
dflet 0:bbe98578d4c0 234
dflet 0:bbe98578d4c0 235 printf("DHCP is %s IP %d.%d.%d.%d MASK %d.%d.%d.%d GW %d.%d.%d.%d DNS %d.%d.%d.%d\n",
dflet 0:bbe98578d4c0 236 (dhcpIsOn > 0) ? "ON" : "OFF",
dflet 0:bbe98578d4c0 237 SL_IPV4_BYTE(ipV4.ipV4,3),SL_IPV4_BYTE(ipV4.ipV4,2),SL_IPV4_BYTE(ipV4.ipV4,1),SL_IPV4_BYTE(ipV4.ipV4,0),
dflet 0:bbe98578d4c0 238 SL_IPV4_BYTE(ipV4.ipV4Mask,3),SL_IPV4_BYTE(ipV4.ipV4Mask,2),SL_IPV4_BYTE(ipV4.ipV4Mask,1),SL_IPV4_BYTE(ipV4.ipV4Mask,0),
dflet 0:bbe98578d4c0 239 SL_IPV4_BYTE(ipV4.ipV4Gateway,3),SL_IPV4_BYTE(ipV4.ipV4Gateway,2),SL_IPV4_BYTE(ipV4.ipV4Gateway,1),SL_IPV4_BYTE(ipV4.ipV4Gateway,0),
dflet 0:bbe98578d4c0 240 SL_IPV4_BYTE(ipV4.ipV4DnsServer,3),SL_IPV4_BYTE(ipV4.ipV4DnsServer,2),SL_IPV4_BYTE(ipV4.ipV4DnsServer,1),SL_IPV4_BYTE(ipV4.ipV4DnsServer,0));
dflet 0:bbe98578d4c0 241
dflet 0:bbe98578d4c0 242 \endcode
dflet 0:bbe98578d4c0 243
dflet 0:bbe98578d4c0 244 \code
dflet 0:bbe98578d4c0 245 SL_IPV4_AP_P2P_GO_GET_INFO:
dflet 0:bbe98578d4c0 246
dflet 0:bbe98578d4c0 247 Get static IP address for AP or P2P go.
dflet 0:bbe98578d4c0 248
dflet 0:bbe98578d4c0 249 _u8 len = sizeof(SlNetCfgIpV4Args_t);
dflet 0:bbe98578d4c0 250 _u8 dhcpIsOn = 0; // this flag is meaningless on AP/P2P go.
dflet 0:bbe98578d4c0 251 SlNetCfgIpV4Args_t ipV4 = {0};
dflet 0:bbe98578d4c0 252 sl_NetCfgGet(SL_IPV4_AP_P2P_GO_GET_INFO,&dhcpIsOn,&len,(_u8 *)&ipV4);
dflet 0:bbe98578d4c0 253
dflet 0:bbe98578d4c0 254 printf("IP %d.%d.%d.%d MASK %d.%d.%d.%d GW %d.%d.%d.%d DNS %d.%d.%d.%d\n",
dflet 0:bbe98578d4c0 255 SL_IPV4_BYTE(ipV4.ipV4,3),SL_IPV4_BYTE(ipV4.ipV4,2),SL_IPV4_BYTE(ipV4.ipV4,1),SL_IPV4_BYTE(ipV4.ipV4,0),
dflet 0:bbe98578d4c0 256 SL_IPV4_BYTE(ipV4.ipV4Mask,3),SL_IPV4_BYTE(ipV4.ipV4Mask,2),SL_IPV4_BYTE(ipV4.ipV4Mask,1),SL_IPV4_BYTE(ipV4.ipV4Mask,0),
dflet 0:bbe98578d4c0 257 SL_IPV4_BYTE(ipV4.ipV4Gateway,3),SL_IPV4_BYTE(ipV4.ipV4Gateway,2),SL_IPV4_BYTE(ipV4.ipV4Gateway,1),SL_IPV4_BYTE(ipV4.ipV4Gateway,0),
dflet 0:bbe98578d4c0 258 SL_IPV4_BYTE(ipV4.ipV4DnsServer,3),SL_IPV4_BYTE(ipV4.ipV4DnsServer,2),SL_IPV4_BYTE(ipV4.ipV4DnsServer,1),SL_IPV4_BYTE(ipV4.ipV4DnsServer,0));
dflet 0:bbe98578d4c0 259
dflet 0:bbe98578d4c0 260 \endcode
dflet 0:bbe98578d4c0 261
dflet 0:bbe98578d4c0 262
dflet 0:bbe98578d4c0 263 */
dflet 0:bbe98578d4c0 264 #if _SL_INCLUDE_FUNC(sl_NetCfgGet)
dflet 0:bbe98578d4c0 265 _i32 sl_NetCfgGet(_u8 ConfigId ,_u8 *pConfigOpt, _u8 *pConfigLen, _u8 *pValues);
dflet 0:bbe98578d4c0 266 #endif
dflet 0:bbe98578d4c0 267
dflet 0:bbe98578d4c0 268 /*!
dflet 0:bbe98578d4c0 269
dflet 0:bbe98578d4c0 270 Close the Doxygen group.
dflet 0:bbe98578d4c0 271 @}
dflet 0:bbe98578d4c0 272
dflet 0:bbe98578d4c0 273 */
dflet 0:bbe98578d4c0 274
dflet 0:bbe98578d4c0 275
dflet 0:bbe98578d4c0 276 #ifdef __cplusplus
dflet 0:bbe98578d4c0 277 }
dflet 0:bbe98578d4c0 278 #endif /* __cplusplus */
dflet 0:bbe98578d4c0 279
dflet 0:bbe98578d4c0 280 #endif /* __NETCFG_H__ */
dflet 0:bbe98578d4c0 281
dflet 0:bbe98578d4c0 282