CC3000HostDriver for device TI CC3000 some changes were made due to mbed compiler and the use of void*

Dependents:   CC3000Test

Committer:
dflet
Date:
Fri Aug 02 15:06:15 2013 +0000
Revision:
0:9cb694f00b7b
First commit TI CC3000HostDriver library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:9cb694f00b7b 1 /*****************************************************************************
dflet 0:9cb694f00b7b 2 *
dflet 0:9cb694f00b7b 3 * netapp.c - CC3000 Host Driver Implementation.
dflet 0:9cb694f00b7b 4 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:9cb694f00b7b 5 *
dflet 0:9cb694f00b7b 6 * Redistribution and use in source and binary forms, with or without
dflet 0:9cb694f00b7b 7 * modification, are permitted provided that the following conditions
dflet 0:9cb694f00b7b 8 * are met:
dflet 0:9cb694f00b7b 9 *
dflet 0:9cb694f00b7b 10 * Redistributions of source code must retain the above copyright
dflet 0:9cb694f00b7b 11 * notice, this list of conditions and the following disclaimer.
dflet 0:9cb694f00b7b 12 *
dflet 0:9cb694f00b7b 13 * Redistributions in binary form must reproduce the above copyright
dflet 0:9cb694f00b7b 14 * notice, this list of conditions and the following disclaimer in the
dflet 0:9cb694f00b7b 15 * documentation and/or other materials provided with the
dflet 0:9cb694f00b7b 16 * distribution.
dflet 0:9cb694f00b7b 17 *
dflet 0:9cb694f00b7b 18 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:9cb694f00b7b 19 * its contributors may be used to endorse or promote products derived
dflet 0:9cb694f00b7b 20 * from this software without specific prior written permission.
dflet 0:9cb694f00b7b 21 *
dflet 0:9cb694f00b7b 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:9cb694f00b7b 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:9cb694f00b7b 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:9cb694f00b7b 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:9cb694f00b7b 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:9cb694f00b7b 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:9cb694f00b7b 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:9cb694f00b7b 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:9cb694f00b7b 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:9cb694f00b7b 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:9cb694f00b7b 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:9cb694f00b7b 33 *
dflet 0:9cb694f00b7b 34 *****************************************************************************/
dflet 0:9cb694f00b7b 35 #include <string.h>
dflet 0:9cb694f00b7b 36 #include "netapp.h"
dflet 0:9cb694f00b7b 37 #include "hci.h"
dflet 0:9cb694f00b7b 38 #include "socket.h"
dflet 0:9cb694f00b7b 39 #include "evnt_handler.h"
dflet 0:9cb694f00b7b 40 #include "nvmem.h"
dflet 0:9cb694f00b7b 41
dflet 0:9cb694f00b7b 42 #define MIN_TIMER_VAL_SECONDS 20
dflet 0:9cb694f00b7b 43 #define MIN_TIMER_SET(t) if ((0 != t) && (t < MIN_TIMER_VAL_SECONDS)) \
dflet 0:9cb694f00b7b 44 { \
dflet 0:9cb694f00b7b 45 t = MIN_TIMER_VAL_SECONDS; \
dflet 0:9cb694f00b7b 46 }
dflet 0:9cb694f00b7b 47
dflet 0:9cb694f00b7b 48
dflet 0:9cb694f00b7b 49 #define NETAPP_DHCP_PARAMS_LEN (20)
dflet 0:9cb694f00b7b 50 #define NETAPP_SET_TIMER_PARAMS_LEN (20)
dflet 0:9cb694f00b7b 51 #define NETAPP_SET_DEBUG_LEVEL_PARAMS_LEN (4)
dflet 0:9cb694f00b7b 52 #define NETAPP_PING_SEND_PARAMS_LEN (16)
dflet 0:9cb694f00b7b 53
dflet 0:9cb694f00b7b 54
dflet 0:9cb694f00b7b 55 //*****************************************************************************
dflet 0:9cb694f00b7b 56 //
dflet 0:9cb694f00b7b 57 //! netapp_config_mac_adrress
dflet 0:9cb694f00b7b 58 //!
dflet 0:9cb694f00b7b 59 //! @param mac device mac address, 6 bytes. Saved: yes
dflet 0:9cb694f00b7b 60 //!
dflet 0:9cb694f00b7b 61 //! @return return on success 0, otherwise error.
dflet 0:9cb694f00b7b 62 //!
dflet 0:9cb694f00b7b 63 //! @brief Configure device MAC address and store it in NVMEM.
dflet 0:9cb694f00b7b 64 //! The value of the MAC address configured through the API will
dflet 0:9cb694f00b7b 65 //! be stored in CC3000 non volatile memory, thus preserved
dflet 0:9cb694f00b7b 66 //! over resets.
dflet 0:9cb694f00b7b 67 //
dflet 0:9cb694f00b7b 68 //*****************************************************************************
dflet 0:9cb694f00b7b 69 long netapp_config_mac_adrress(unsigned char * mac)
dflet 0:9cb694f00b7b 70 {
dflet 0:9cb694f00b7b 71 return nvmem_set_mac_address(mac);
dflet 0:9cb694f00b7b 72 }
dflet 0:9cb694f00b7b 73
dflet 0:9cb694f00b7b 74 //*****************************************************************************
dflet 0:9cb694f00b7b 75 //
dflet 0:9cb694f00b7b 76 //! netapp_dhcp
dflet 0:9cb694f00b7b 77 //!
dflet 0:9cb694f00b7b 78 //! @param aucIP device mac address, 6 bytes. Saved: yes
dflet 0:9cb694f00b7b 79 //! @param aucSubnetMask device mac address, 6 bytes. Saved: yes
dflet 0:9cb694f00b7b 80 //! @param aucDefaultGateway device mac address, 6 bytes. Saved: yes
dflet 0:9cb694f00b7b 81 //! @param aucDNSServer device mac address, 6 bytes. Saved: yes
dflet 0:9cb694f00b7b 82 //!
dflet 0:9cb694f00b7b 83 //! @return return on success 0, otherwise error.
dflet 0:9cb694f00b7b 84 //!
dflet 0:9cb694f00b7b 85 //! @brief netapp_dhcp is used to configure the network interface,
dflet 0:9cb694f00b7b 86 //! static or dynamic (DHCP).\n In order to activate DHCP mode,
dflet 0:9cb694f00b7b 87 //! aucIP, aucSubnetMask, aucDefaultGateway must be 0.
dflet 0:9cb694f00b7b 88 //! The default mode of CC3000 is DHCP mode.
dflet 0:9cb694f00b7b 89 //! Note that the configuration is saved in non volatile memory
dflet 0:9cb694f00b7b 90 //! and thus preserved over resets.
dflet 0:9cb694f00b7b 91 //!
dflet 0:9cb694f00b7b 92 //! @note If the mode is altered a reset of CC3000 device is required
dflet 0:9cb694f00b7b 93 //! in order to apply changes.\nAlso note that asynchronous event
dflet 0:9cb694f00b7b 94 //! of DHCP_EVENT, which is generated when an IP address is
dflet 0:9cb694f00b7b 95 //! allocated either by the DHCP server or due to static
dflet 0:9cb694f00b7b 96 //! allocation is generated only upon a connection to the
dflet 0:9cb694f00b7b 97 //! AP was established.
dflet 0:9cb694f00b7b 98 //!
dflet 0:9cb694f00b7b 99 //*****************************************************************************
dflet 0:9cb694f00b7b 100 long netapp_dhcp(unsigned long *aucIP, unsigned long *aucSubnetMask,unsigned long *aucDefaultGateway, unsigned long *aucDNSServer)
dflet 0:9cb694f00b7b 101 {
dflet 0:9cb694f00b7b 102 signed char scRet;
dflet 0:9cb694f00b7b 103 unsigned char *ptr;
dflet 0:9cb694f00b7b 104 unsigned char *args;
dflet 0:9cb694f00b7b 105
dflet 0:9cb694f00b7b 106 scRet = EFAIL;
dflet 0:9cb694f00b7b 107 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 108 args = (ptr + HEADERS_SIZE_CMD);
dflet 0:9cb694f00b7b 109
dflet 0:9cb694f00b7b 110 // Fill in temporary command buffer
dflet 0:9cb694f00b7b 111 ARRAY_TO_STREAM(args,aucIP,4);
dflet 0:9cb694f00b7b 112 ARRAY_TO_STREAM(args,aucSubnetMask,4);
dflet 0:9cb694f00b7b 113 ARRAY_TO_STREAM(args,aucDefaultGateway,4);
dflet 0:9cb694f00b7b 114 args = UINT32_TO_STREAM(args, 0);
dflet 0:9cb694f00b7b 115 ARRAY_TO_STREAM(args,aucDNSServer,4);
dflet 0:9cb694f00b7b 116
dflet 0:9cb694f00b7b 117 // Initiate a HCI command
dflet 0:9cb694f00b7b 118 hci_command_send(HCI_NETAPP_DHCP, ptr, NETAPP_DHCP_PARAMS_LEN);
dflet 0:9cb694f00b7b 119
dflet 0:9cb694f00b7b 120 // Wait for command complete event
dflet 0:9cb694f00b7b 121 SimpleLinkWaitEvent(HCI_NETAPP_DHCP, (long*)&scRet);
dflet 0:9cb694f00b7b 122
dflet 0:9cb694f00b7b 123 return(scRet);
dflet 0:9cb694f00b7b 124 }
dflet 0:9cb694f00b7b 125
dflet 0:9cb694f00b7b 126
dflet 0:9cb694f00b7b 127 //*****************************************************************************
dflet 0:9cb694f00b7b 128 //
dflet 0:9cb694f00b7b 129 //! netapp_timeout_values
dflet 0:9cb694f00b7b 130 //!
dflet 0:9cb694f00b7b 131 //! @param aucDHCP DHCP lease time request, also impact
dflet 0:9cb694f00b7b 132 //! the DHCP renew timeout. Range: [0-0xffffffff] seconds,
dflet 0:9cb694f00b7b 133 //! 0 or 0xffffffff == infinity lease timeout.
dflet 0:9cb694f00b7b 134 //! Resolution:10 seconds. Influence: only after
dflet 0:9cb694f00b7b 135 //! reconnecting to the AP.
dflet 0:9cb694f00b7b 136 //! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 seconds.
dflet 0:9cb694f00b7b 137 //! The parameter is saved into the CC3000 NVMEM.
dflet 0:9cb694f00b7b 138 //! The default value on CC3000 is 14400 seconds.
dflet 0:9cb694f00b7b 139 //!
dflet 0:9cb694f00b7b 140 //! @param aucARP ARP refresh timeout, if ARP entry is not updated by
dflet 0:9cb694f00b7b 141 //! incoming packet, the ARP entry will be deleted by
dflet 0:9cb694f00b7b 142 //! the end of the timeout.
dflet 0:9cb694f00b7b 143 //! Range: [0-0xffffffff] seconds, 0 == infinity ARP timeout
dflet 0:9cb694f00b7b 144 //! Resolution: 10 seconds. Influence: on runtime.
dflet 0:9cb694f00b7b 145 //! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 seconds
dflet 0:9cb694f00b7b 146 //! The parameter is saved into the CC3000 NVMEM.
dflet 0:9cb694f00b7b 147 //! The default value on CC3000 is 3600 seconds.
dflet 0:9cb694f00b7b 148 //!
dflet 0:9cb694f00b7b 149 //! @param aucKeepalive Keepalive event sent by the end of keepalive timeout
dflet 0:9cb694f00b7b 150 //! Range: [0-0xffffffff] seconds, 0 == infinity timeout
dflet 0:9cb694f00b7b 151 //! Resolution: 10 seconds.
dflet 0:9cb694f00b7b 152 //! Influence: on runtime.
dflet 0:9cb694f00b7b 153 //! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 sec
dflet 0:9cb694f00b7b 154 //! The parameter is saved into the CC3000 NVMEM.
dflet 0:9cb694f00b7b 155 //! The default value on CC3000 is 10 seconds.
dflet 0:9cb694f00b7b 156 //!
dflet 0:9cb694f00b7b 157 //! @param aucInactivity Socket inactivity timeout, socket timeout is
dflet 0:9cb694f00b7b 158 //! refreshed by incoming or outgoing packet, by the
dflet 0:9cb694f00b7b 159 //! end of the socket timeout the socket will be closed
dflet 0:9cb694f00b7b 160 //! Range: [0-0xffffffff] sec, 0 == infinity timeout.
dflet 0:9cb694f00b7b 161 //! Resolution: 10 seconds. Influence: on runtime.
dflet 0:9cb694f00b7b 162 //! Minimal bound value: MIN_TIMER_VAL_SECONDS - 20 sec
dflet 0:9cb694f00b7b 163 //! The parameter is saved into the CC3000 NVMEM.
dflet 0:9cb694f00b7b 164 //! The default value on CC3000 is 60 seconds.
dflet 0:9cb694f00b7b 165 //!
dflet 0:9cb694f00b7b 166 //! @return return on success 0, otherwise error.
dflet 0:9cb694f00b7b 167 //!
dflet 0:9cb694f00b7b 168 //! @brief Set new timeout values. Function set new timeout values for:
dflet 0:9cb694f00b7b 169 //! DHCP lease timeout, ARP refresh timeout, keepalive event
dflet 0:9cb694f00b7b 170 //! timeout and socket inactivity timeout
dflet 0:9cb694f00b7b 171 //!
dflet 0:9cb694f00b7b 172 //! @note If a parameter set to non zero value which is less than 20s,
dflet 0:9cb694f00b7b 173 //! it will be set automatically to 20s.
dflet 0:9cb694f00b7b 174 //!
dflet 0:9cb694f00b7b 175 //*****************************************************************************
dflet 0:9cb694f00b7b 176
dflet 0:9cb694f00b7b 177 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 178 long
dflet 0:9cb694f00b7b 179 netapp_timeout_values(unsigned long *aucDHCP, unsigned long *aucARP,unsigned long *aucKeepalive, unsigned long *aucInactivity)
dflet 0:9cb694f00b7b 180 {
dflet 0:9cb694f00b7b 181 signed char scRet;
dflet 0:9cb694f00b7b 182 unsigned char *ptr;
dflet 0:9cb694f00b7b 183 unsigned char *args;
dflet 0:9cb694f00b7b 184
dflet 0:9cb694f00b7b 185 scRet = EFAIL;
dflet 0:9cb694f00b7b 186 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 187 args = (ptr + HEADERS_SIZE_CMD);
dflet 0:9cb694f00b7b 188
dflet 0:9cb694f00b7b 189 // Set minimal values of timers
dflet 0:9cb694f00b7b 190 MIN_TIMER_SET(*aucDHCP)
dflet 0:9cb694f00b7b 191 MIN_TIMER_SET(*aucARP)
dflet 0:9cb694f00b7b 192 MIN_TIMER_SET(*aucKeepalive)
dflet 0:9cb694f00b7b 193 MIN_TIMER_SET(*aucInactivity)
dflet 0:9cb694f00b7b 194
dflet 0:9cb694f00b7b 195 // Fill in temporary command buffer
dflet 0:9cb694f00b7b 196 args = UINT32_TO_STREAM(args, *aucDHCP);
dflet 0:9cb694f00b7b 197 args = UINT32_TO_STREAM(args, *aucARP);
dflet 0:9cb694f00b7b 198 args = UINT32_TO_STREAM(args, *aucKeepalive);
dflet 0:9cb694f00b7b 199 args = UINT32_TO_STREAM(args, *aucInactivity);
dflet 0:9cb694f00b7b 200
dflet 0:9cb694f00b7b 201 // Initiate a HCI command
dflet 0:9cb694f00b7b 202 hci_command_send(HCI_NETAPP_SET_TIMERS, ptr, NETAPP_SET_TIMER_PARAMS_LEN);
dflet 0:9cb694f00b7b 203
dflet 0:9cb694f00b7b 204 // Wait for command complete event
dflet 0:9cb694f00b7b 205 SimpleLinkWaitEvent(HCI_NETAPP_SET_TIMERS, (long*)&scRet);
dflet 0:9cb694f00b7b 206
dflet 0:9cb694f00b7b 207 return(scRet);
dflet 0:9cb694f00b7b 208 }
dflet 0:9cb694f00b7b 209 #endif
dflet 0:9cb694f00b7b 210
dflet 0:9cb694f00b7b 211
dflet 0:9cb694f00b7b 212 //*****************************************************************************
dflet 0:9cb694f00b7b 213 //
dflet 0:9cb694f00b7b 214 //! netapp_ping_send
dflet 0:9cb694f00b7b 215 //!
dflet 0:9cb694f00b7b 216 //! @param ip destination IP address
dflet 0:9cb694f00b7b 217 //! @param pingAttempts number of echo requests to send
dflet 0:9cb694f00b7b 218 //! @param pingSize send buffer size which may be up to 1400 bytes
dflet 0:9cb694f00b7b 219 //! @param pingTimeout Time to wait for a response,in milliseconds.
dflet 0:9cb694f00b7b 220 //!
dflet 0:9cb694f00b7b 221 //! @return return on success 0, otherwise error.
dflet 0:9cb694f00b7b 222 //!
dflet 0:9cb694f00b7b 223 //! @brief send ICMP ECHO_REQUEST to network hosts
dflet 0:9cb694f00b7b 224 //!
dflet 0:9cb694f00b7b 225 //! @note If an operation finished successfully asynchronous ping report
dflet 0:9cb694f00b7b 226 //! event will be generated. The report structure is as defined
dflet 0:9cb694f00b7b 227 //! by structure netapp_pingreport_args_t.
dflet 0:9cb694f00b7b 228 //!
dflet 0:9cb694f00b7b 229 //! @warning Calling this function while a previous Ping Requests are in
dflet 0:9cb694f00b7b 230 //! progress will stop the previous ping request.
dflet 0:9cb694f00b7b 231 //*****************************************************************************
dflet 0:9cb694f00b7b 232
dflet 0:9cb694f00b7b 233 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 234 long
dflet 0:9cb694f00b7b 235 netapp_ping_send(unsigned long *ip, unsigned long ulPingAttempts, unsigned long ulPingSize, unsigned long ulPingTimeout)
dflet 0:9cb694f00b7b 236 {
dflet 0:9cb694f00b7b 237 signed char scRet;
dflet 0:9cb694f00b7b 238 unsigned char *ptr, *args;
dflet 0:9cb694f00b7b 239
dflet 0:9cb694f00b7b 240 scRet = EFAIL;
dflet 0:9cb694f00b7b 241 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 242 args = (ptr + HEADERS_SIZE_CMD);
dflet 0:9cb694f00b7b 243
dflet 0:9cb694f00b7b 244 // Fill in temporary command buffer
dflet 0:9cb694f00b7b 245 args = UINT32_TO_STREAM(args, *ip);
dflet 0:9cb694f00b7b 246 args = UINT32_TO_STREAM(args, ulPingAttempts);
dflet 0:9cb694f00b7b 247 args = UINT32_TO_STREAM(args, ulPingSize);
dflet 0:9cb694f00b7b 248 args = UINT32_TO_STREAM(args, ulPingTimeout);
dflet 0:9cb694f00b7b 249
dflet 0:9cb694f00b7b 250 // Initiate a HCI command
dflet 0:9cb694f00b7b 251 hci_command_send(HCI_NETAPP_PING_SEND, ptr, NETAPP_PING_SEND_PARAMS_LEN);
dflet 0:9cb694f00b7b 252
dflet 0:9cb694f00b7b 253 // Wait for command complete event
dflet 0:9cb694f00b7b 254 SimpleLinkWaitEvent(HCI_NETAPP_PING_SEND, (long*)&scRet);
dflet 0:9cb694f00b7b 255
dflet 0:9cb694f00b7b 256 return(scRet);
dflet 0:9cb694f00b7b 257 }
dflet 0:9cb694f00b7b 258 #endif
dflet 0:9cb694f00b7b 259
dflet 0:9cb694f00b7b 260 //*****************************************************************************
dflet 0:9cb694f00b7b 261 //
dflet 0:9cb694f00b7b 262 //! netapp_ping_report
dflet 0:9cb694f00b7b 263 //!
dflet 0:9cb694f00b7b 264 //! @param none
dflet 0:9cb694f00b7b 265 //!
dflet 0:9cb694f00b7b 266 //! @return none
dflet 0:9cb694f00b7b 267 //!
dflet 0:9cb694f00b7b 268 //! @brief Request for ping status. This API triggers the CC3000 to send
dflet 0:9cb694f00b7b 269 //! asynchronous events: HCI_EVNT_WLAN_ASYNC_PING_REPORT.
dflet 0:9cb694f00b7b 270 //! This event will carry the report structure:
dflet 0:9cb694f00b7b 271 //! netapp_pingreport_args_t. This structure is filled in with ping
dflet 0:9cb694f00b7b 272 //! results up till point of triggering API.
dflet 0:9cb694f00b7b 273 //! netapp_pingreport_args_t:\n packets_sent - echo sent,
dflet 0:9cb694f00b7b 274 //! packets_received - echo reply, min_round_time - minimum
dflet 0:9cb694f00b7b 275 //! round time, max_round_time - max round time,
dflet 0:9cb694f00b7b 276 //! avg_round_time - average round time
dflet 0:9cb694f00b7b 277 //!
dflet 0:9cb694f00b7b 278 //! @note When a ping operation is not active, the returned structure
dflet 0:9cb694f00b7b 279 //! fields are 0.
dflet 0:9cb694f00b7b 280 //!
dflet 0:9cb694f00b7b 281 //*****************************************************************************
dflet 0:9cb694f00b7b 282
dflet 0:9cb694f00b7b 283
dflet 0:9cb694f00b7b 284 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 285 void netapp_ping_report()
dflet 0:9cb694f00b7b 286 {
dflet 0:9cb694f00b7b 287 unsigned char *ptr;
dflet 0:9cb694f00b7b 288 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 289 signed char scRet;
dflet 0:9cb694f00b7b 290
dflet 0:9cb694f00b7b 291 scRet = EFAIL;
dflet 0:9cb694f00b7b 292
dflet 0:9cb694f00b7b 293 // Initiate a HCI command
dflet 0:9cb694f00b7b 294 hci_command_send(HCI_NETAPP_PING_REPORT, ptr, 0);
dflet 0:9cb694f00b7b 295
dflet 0:9cb694f00b7b 296 // Wait for command complete event
dflet 0:9cb694f00b7b 297 SimpleLinkWaitEvent(HCI_NETAPP_PING_REPORT, (long*)&scRet);
dflet 0:9cb694f00b7b 298 }
dflet 0:9cb694f00b7b 299 #endif
dflet 0:9cb694f00b7b 300
dflet 0:9cb694f00b7b 301 //*****************************************************************************
dflet 0:9cb694f00b7b 302 //
dflet 0:9cb694f00b7b 303 //! netapp_ping_stop
dflet 0:9cb694f00b7b 304 //!
dflet 0:9cb694f00b7b 305 //! @param none
dflet 0:9cb694f00b7b 306 //!
dflet 0:9cb694f00b7b 307 //! @return On success, zero is returned. On error, -1 is returned.
dflet 0:9cb694f00b7b 308 //!
dflet 0:9cb694f00b7b 309 //! @brief Stop any ping request.
dflet 0:9cb694f00b7b 310 //!
dflet 0:9cb694f00b7b 311 //!
dflet 0:9cb694f00b7b 312 //*****************************************************************************
dflet 0:9cb694f00b7b 313
dflet 0:9cb694f00b7b 314 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 315 long netapp_ping_stop()
dflet 0:9cb694f00b7b 316 {
dflet 0:9cb694f00b7b 317 signed char scRet;
dflet 0:9cb694f00b7b 318 unsigned char *ptr;
dflet 0:9cb694f00b7b 319
dflet 0:9cb694f00b7b 320 scRet = EFAIL;
dflet 0:9cb694f00b7b 321 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 322
dflet 0:9cb694f00b7b 323 // Initiate a HCI command
dflet 0:9cb694f00b7b 324 hci_command_send(HCI_NETAPP_PING_STOP, ptr, 0);
dflet 0:9cb694f00b7b 325
dflet 0:9cb694f00b7b 326 // Wait for command complete event
dflet 0:9cb694f00b7b 327 SimpleLinkWaitEvent(HCI_NETAPP_PING_STOP, (long*)&scRet);
dflet 0:9cb694f00b7b 328
dflet 0:9cb694f00b7b 329 return(scRet);
dflet 0:9cb694f00b7b 330 }
dflet 0:9cb694f00b7b 331 #endif
dflet 0:9cb694f00b7b 332
dflet 0:9cb694f00b7b 333 //*****************************************************************************
dflet 0:9cb694f00b7b 334 //
dflet 0:9cb694f00b7b 335 //! netapp_ipconfig
dflet 0:9cb694f00b7b 336 //!
dflet 0:9cb694f00b7b 337 //! @param[out] ipconfig This argument is a pointer to a
dflet 0:9cb694f00b7b 338 //! tNetappIpconfigRetArgs structure. This structure is
dflet 0:9cb694f00b7b 339 //! filled in with the network interface configuration.
dflet 0:9cb694f00b7b 340 //! tNetappIpconfigRetArgs:\n aucIP - ip address,
dflet 0:9cb694f00b7b 341 //! aucSubnetMask - mask, aucDefaultGateway - default
dflet 0:9cb694f00b7b 342 //! gateway address, aucDHCPServer - dhcp server address
dflet 0:9cb694f00b7b 343 //! aucDNSServer - dns server address, uaMacAddr - mac
dflet 0:9cb694f00b7b 344 //! address, uaSSID - connected AP ssid
dflet 0:9cb694f00b7b 345 //!
dflet 0:9cb694f00b7b 346 //! @return none
dflet 0:9cb694f00b7b 347 //!
dflet 0:9cb694f00b7b 348 //! @brief Obtain the CC3000 Network interface information.
dflet 0:9cb694f00b7b 349 //! Note that the information is available only after the WLAN
dflet 0:9cb694f00b7b 350 //! connection was established. Calling this function before
dflet 0:9cb694f00b7b 351 //! associated, will cause non-defined values to be returned.
dflet 0:9cb694f00b7b 352 //!
dflet 0:9cb694f00b7b 353 //! @note The function is useful for figuring out the IP Configuration of
dflet 0:9cb694f00b7b 354 //! the device when DHCP is used and for figuring out the SSID of
dflet 0:9cb694f00b7b 355 //! the Wireless network the device is associated with.
dflet 0:9cb694f00b7b 356 //!
dflet 0:9cb694f00b7b 357 //*****************************************************************************
dflet 0:9cb694f00b7b 358
dflet 0:9cb694f00b7b 359 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 360 void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig )
dflet 0:9cb694f00b7b 361 {
dflet 0:9cb694f00b7b 362 unsigned char *ptr;
dflet 0:9cb694f00b7b 363
dflet 0:9cb694f00b7b 364 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 365
dflet 0:9cb694f00b7b 366 // Initiate a HCI command
dflet 0:9cb694f00b7b 367 hci_command_send(HCI_NETAPP_IPCONFIG, ptr, 0);
dflet 0:9cb694f00b7b 368
dflet 0:9cb694f00b7b 369 // Wait for command complete event
dflet 0:9cb694f00b7b 370 SimpleLinkWaitEvent(HCI_NETAPP_IPCONFIG, (long*)ipconfig );
dflet 0:9cb694f00b7b 371
dflet 0:9cb694f00b7b 372 }
dflet 0:9cb694f00b7b 373 #else
dflet 0:9cb694f00b7b 374 void netapp_ipconfig( tNetappIpconfigRetArgs * ipconfig )
dflet 0:9cb694f00b7b 375 {
dflet 0:9cb694f00b7b 376
dflet 0:9cb694f00b7b 377 }
dflet 0:9cb694f00b7b 378 #endif
dflet 0:9cb694f00b7b 379
dflet 0:9cb694f00b7b 380 //*****************************************************************************
dflet 0:9cb694f00b7b 381 //
dflet 0:9cb694f00b7b 382 //! netapp_arp_flush
dflet 0:9cb694f00b7b 383 //!
dflet 0:9cb694f00b7b 384 //! @param none
dflet 0:9cb694f00b7b 385 //!
dflet 0:9cb694f00b7b 386 //! @return none
dflet 0:9cb694f00b7b 387 //!
dflet 0:9cb694f00b7b 388 //! @brief Flushes ARP table
dflet 0:9cb694f00b7b 389 //!
dflet 0:9cb694f00b7b 390 //*****************************************************************************
dflet 0:9cb694f00b7b 391
dflet 0:9cb694f00b7b 392 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 393 long netapp_arp_flush(void)
dflet 0:9cb694f00b7b 394 {
dflet 0:9cb694f00b7b 395 signed char scRet;
dflet 0:9cb694f00b7b 396 unsigned char *ptr;
dflet 0:9cb694f00b7b 397
dflet 0:9cb694f00b7b 398 scRet = EFAIL;
dflet 0:9cb694f00b7b 399 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 400
dflet 0:9cb694f00b7b 401 // Initiate a HCI command
dflet 0:9cb694f00b7b 402 hci_command_send(HCI_NETAPP_ARP_FLUSH, ptr, 0);
dflet 0:9cb694f00b7b 403
dflet 0:9cb694f00b7b 404 // Wait for command complete event
dflet 0:9cb694f00b7b 405 SimpleLinkWaitEvent(HCI_NETAPP_ARP_FLUSH, (long*)&scRet);
dflet 0:9cb694f00b7b 406
dflet 0:9cb694f00b7b 407 return(scRet);
dflet 0:9cb694f00b7b 408 }
dflet 0:9cb694f00b7b 409 #endif
dflet 0:9cb694f00b7b 410
dflet 0:9cb694f00b7b 411 //*****************************************************************************
dflet 0:9cb694f00b7b 412 //
dflet 0:9cb694f00b7b 413 //! netapp_set_debug_level
dflet 0:9cb694f00b7b 414 //!
dflet 0:9cb694f00b7b 415 //! @param[in] level debug level. Bitwise [0-8],
dflet 0:9cb694f00b7b 416 //! 0(disable)or 1(enable).\n Bitwise map: 0 - Critical
dflet 0:9cb694f00b7b 417 //! message, 1 information message, 2 - core messages, 3 -
dflet 0:9cb694f00b7b 418 //! HCI messages, 4 - Network stack messages, 5 - wlan
dflet 0:9cb694f00b7b 419 //! messages, 6 - wlan driver messages, 7 - epprom messages,
dflet 0:9cb694f00b7b 420 //! 8 - general messages. Default: 0x13f. Saved: no
dflet 0:9cb694f00b7b 421 //!
dflet 0:9cb694f00b7b 422 //! @return On success, zero is returned. On error, -1 is returned
dflet 0:9cb694f00b7b 423 //!
dflet 0:9cb694f00b7b 424 //! @brief Debug messages sent via the UART debug channel, this function
dflet 0:9cb694f00b7b 425 //! enable/disable the debug level
dflet 0:9cb694f00b7b 426 //!
dflet 0:9cb694f00b7b 427 //*****************************************************************************
dflet 0:9cb694f00b7b 428
dflet 0:9cb694f00b7b 429
dflet 0:9cb694f00b7b 430 #ifndef CC3000_TINY_DRIVER
dflet 0:9cb694f00b7b 431 long netapp_set_debug_level(unsigned long ulLevel)
dflet 0:9cb694f00b7b 432 {
dflet 0:9cb694f00b7b 433 signed char scRet;
dflet 0:9cb694f00b7b 434 unsigned char *ptr, *args;
dflet 0:9cb694f00b7b 435
dflet 0:9cb694f00b7b 436 scRet = EFAIL;
dflet 0:9cb694f00b7b 437 ptr = tSLInformation.pucTxCommandBuffer;
dflet 0:9cb694f00b7b 438 args = (ptr + HEADERS_SIZE_CMD);
dflet 0:9cb694f00b7b 439
dflet 0:9cb694f00b7b 440 //
dflet 0:9cb694f00b7b 441 // Fill in temporary command buffer
dflet 0:9cb694f00b7b 442 //
dflet 0:9cb694f00b7b 443 args = UINT32_TO_STREAM(args, ulLevel);
dflet 0:9cb694f00b7b 444
dflet 0:9cb694f00b7b 445
dflet 0:9cb694f00b7b 446 //
dflet 0:9cb694f00b7b 447 // Initiate a HCI command
dflet 0:9cb694f00b7b 448 //
dflet 0:9cb694f00b7b 449 hci_command_send(HCI_NETAPP_SET_DEBUG_LEVEL, ptr, NETAPP_SET_DEBUG_LEVEL_PARAMS_LEN);
dflet 0:9cb694f00b7b 450
dflet 0:9cb694f00b7b 451 //
dflet 0:9cb694f00b7b 452 // Wait for command complete event
dflet 0:9cb694f00b7b 453 //
dflet 0:9cb694f00b7b 454 SimpleLinkWaitEvent(HCI_NETAPP_SET_DEBUG_LEVEL, (long*)&scRet);
dflet 0:9cb694f00b7b 455
dflet 0:9cb694f00b7b 456 return(scRet);
dflet 0:9cb694f00b7b 457
dflet 0:9cb694f00b7b 458 }
dflet 0:9cb694f00b7b 459 #endif
dflet 0:9cb694f00b7b 460