Frank Vannieuwkerke / Mbed 2 deprecated Wi-Go_IOT_Demo

Dependencies:   mbed CC3000_Hostdriver TEMT6200 TSI Wi-Go_eCompass_Lib_V3 WiGo_BattCharger

Fork of CC3000_Simple_Socket by Frank Vannieuwkerke

Committer:
frankvnk
Date:
Thu Oct 17 17:56:29 2013 +0000
Revision:
9:5d431f47ac93
Parent:
3:405462258899
webserver - Page refresh stall fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 3:405462258899 1 /*****************************************************************************
frankvnk 3:405462258899 2 *
frankvnk 3:405462258899 3 * exosite_hal.c - Exosite hardware & environmenat adapation layer.
frankvnk 3:405462258899 4 * Copyright (C) 2012 Exosite LLC
frankvnk 3:405462258899 5 *
frankvnk 3:405462258899 6 * Redistribution and use in source and binary forms, with or without
frankvnk 3:405462258899 7 * modification, are permitted provided that the following conditions
frankvnk 3:405462258899 8 * are met:
frankvnk 3:405462258899 9 *
frankvnk 3:405462258899 10 * Redistributions of source code must retain the above copyright
frankvnk 3:405462258899 11 * notice, this list of conditions and the following disclaimer.
frankvnk 3:405462258899 12 *
frankvnk 3:405462258899 13 * Redistributions in binary form must reproduce the above copyright
frankvnk 3:405462258899 14 * notice, this list of conditions and the following disclaimer in the
frankvnk 3:405462258899 15 * documentation and/or other materials provided with the
frankvnk 3:405462258899 16 * distribution.
frankvnk 3:405462258899 17 *
frankvnk 3:405462258899 18 * Neither the name of Texas Instruments Incorporated nor the names of
frankvnk 3:405462258899 19 * its contributors may be used to endorse or promote products derived
frankvnk 3:405462258899 20 * from this software without specific prior written permission.
frankvnk 3:405462258899 21 *
frankvnk 3:405462258899 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
frankvnk 3:405462258899 23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
frankvnk 3:405462258899 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
frankvnk 3:405462258899 25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
frankvnk 3:405462258899 26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
frankvnk 3:405462258899 27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
frankvnk 3:405462258899 28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
frankvnk 3:405462258899 29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
frankvnk 3:405462258899 30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
frankvnk 3:405462258899 31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
frankvnk 3:405462258899 32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
frankvnk 3:405462258899 33 *
frankvnk 3:405462258899 34 *****************************************************************************/
frankvnk 3:405462258899 35 #include "doTCPIP.h"
frankvnk 3:405462258899 36 #include "exosite.h"
frankvnk 3:405462258899 37 #include "exosite_hal.h"
frankvnk 3:405462258899 38 #include "exosite_meta.h"
frankvnk 3:405462258899 39
frankvnk 3:405462258899 40 /*#include "socket.h"
frankvnk 3:405462258899 41 #include "nvmem.h"
frankvnk 3:405462258899 42 #include "strlib.h"
frankvnk 3:405462258899 43 #include "evnt_handler.h" // for socketaddr extern
frankvnk 3:405462258899 44 #include "board.h"
frankvnk 3:405462258899 45 #include "common.h"*/
frankvnk 3:405462258899 46
frankvnk 3:405462258899 47 // local defines
frankvnk 3:405462258899 48
frankvnk 3:405462258899 49 char exo_meta[META_SIZE];
frankvnk 3:405462258899 50 // local functions
frankvnk 3:405462258899 51
frankvnk 3:405462258899 52 // externs
frankvnk 3:405462258899 53 extern sockaddr tSocketAddr;
frankvnk 3:405462258899 54 extern void errorHandler(void);
frankvnk 3:405462258899 55
frankvnk 3:405462258899 56 // global variables
frankvnk 3:405462258899 57
frankvnk 3:405462258899 58
frankvnk 3:405462258899 59 //*****************************************************************************
frankvnk 3:405462258899 60 //
frankvnk 3:405462258899 61 //! exoHAL_ReadHWMAC
frankvnk 3:405462258899 62 //!
frankvnk 3:405462258899 63 //! \param Interface Number (1 - WiFi), buffer to return hexadecimal MAC
frankvnk 3:405462258899 64 //!
frankvnk 3:405462258899 65 //! \return None
frankvnk 3:405462258899 66 //!
frankvnk 3:405462258899 67 //! \brief Reads the MAC address from the hardware
frankvnk 3:405462258899 68 //
frankvnk 3:405462258899 69 //*****************************************************************************
frankvnk 3:405462258899 70 void exoHAL_ReadHWMAC(unsigned char if_nbr, unsigned char * macBuf)
frankvnk 3:405462258899 71 {
frankvnk 3:405462258899 72 switch (if_nbr)
frankvnk 3:405462258899 73 {
frankvnk 3:405462258899 74 case IF_WIFI:
frankvnk 3:405462258899 75 nvmem_read(NVMEM_MAC_FILEID, 6, 0, (unsigned char *)macBuf);
frankvnk 3:405462258899 76 break;
frankvnk 3:405462258899 77 default:
frankvnk 3:405462258899 78 break;
frankvnk 3:405462258899 79 }
frankvnk 3:405462258899 80 }
frankvnk 3:405462258899 81
frankvnk 3:405462258899 82
frankvnk 3:405462258899 83 //*****************************************************************************
frankvnk 3:405462258899 84 //
frankvnk 3:405462258899 85 //! exoHAL_EnableNVMeta
frankvnk 3:405462258899 86 //!
frankvnk 3:405462258899 87 //! \param None
frankvnk 3:405462258899 88 //!
frankvnk 3:405462258899 89 //! \return None
frankvnk 3:405462258899 90 //!
frankvnk 3:405462258899 91 //! \brief Enables meta non-volatile memory, if any
frankvnk 3:405462258899 92 //
frankvnk 3:405462258899 93 //*****************************************************************************
frankvnk 3:405462258899 94 void exoHAL_EnableMeta(void)
frankvnk 3:405462258899 95 {
frankvnk 3:405462258899 96 return; //nothing to do on msp430 (FRAM is awesome)
frankvnk 3:405462258899 97 }
frankvnk 3:405462258899 98
frankvnk 3:405462258899 99
frankvnk 3:405462258899 100 //*****************************************************************************
frankvnk 3:405462258899 101 //
frankvnk 3:405462258899 102 //! exoHAL_EraseNVMeta
frankvnk 3:405462258899 103 //!
frankvnk 3:405462258899 104 //! \param None
frankvnk 3:405462258899 105 //!
frankvnk 3:405462258899 106 //! \return None
frankvnk 3:405462258899 107 //!
frankvnk 3:405462258899 108 //! \brief Wipes out meta information - replaces with 0's.
frankvnk 3:405462258899 109 //
frankvnk 3:405462258899 110 //*****************************************************************************
frankvnk 3:405462258899 111 void exoHAL_EraseMeta(void)
frankvnk 3:405462258899 112 {
frankvnk 3:405462258899 113 memset(exo_meta, 0, META_SIZE); //on msp430, simply set the region to 0
frankvnk 3:405462258899 114 return;
frankvnk 3:405462258899 115 }
frankvnk 3:405462258899 116
frankvnk 3:405462258899 117
frankvnk 3:405462258899 118 //*****************************************************************************
frankvnk 3:405462258899 119 //
frankvnk 3:405462258899 120 //! exoHAL_WriteMetaItem
frankvnk 3:405462258899 121 //!
frankvnk 3:405462258899 122 //! \param buffer - string buffer containing info to write to meta; len -
frankvnk 3:405462258899 123 //! size of string in bytes; offset - offset from base of meta
frankvnk 3:405462258899 124 //! location to store the item.
frankvnk 3:405462258899 125 //!
frankvnk 3:405462258899 126 //! \return None
frankvnk 3:405462258899 127 //!
frankvnk 3:405462258899 128 //! \brief Stores information to the NV meta structure.
frankvnk 3:405462258899 129 //
frankvnk 3:405462258899 130 //*****************************************************************************
frankvnk 3:405462258899 131 void exoHAL_WriteMetaItem(unsigned char * buffer, unsigned char len, int offset)
frankvnk 3:405462258899 132 {
frankvnk 3:405462258899 133 memcpy((char *)(exo_meta + offset), buffer, len); //on msp430, simply put the info into mem
frankvnk 3:405462258899 134 return;
frankvnk 3:405462258899 135 }
frankvnk 3:405462258899 136
frankvnk 3:405462258899 137
frankvnk 3:405462258899 138 //*****************************************************************************
frankvnk 3:405462258899 139 //
frankvnk 3:405462258899 140 //! exoHAL_ReadMetaItem
frankvnk 3:405462258899 141 //!
frankvnk 3:405462258899 142 //! \param buffer - string buffer containing info to write to meta; len -
frankvnk 3:405462258899 143 //! size of string in bytes; offset - offset from base of meta
frankvnk 3:405462258899 144 //! location to store the item.
frankvnk 3:405462258899 145 //!
frankvnk 3:405462258899 146 //! \return None
frankvnk 3:405462258899 147 //!
frankvnk 3:405462258899 148 //! \brief Stores information to the NV meta structure.
frankvnk 3:405462258899 149 //
frankvnk 3:405462258899 150 //*****************************************************************************
frankvnk 3:405462258899 151 void exoHAL_ReadMetaItem(unsigned char * buffer, unsigned char len, int offset)
frankvnk 3:405462258899 152 {
frankvnk 3:405462258899 153 memcpy(buffer, (char *)(exo_meta + offset), len); //on msp430, simply read the info from mem
frankvnk 3:405462258899 154 return;
frankvnk 3:405462258899 155 }
frankvnk 3:405462258899 156
frankvnk 3:405462258899 157
frankvnk 3:405462258899 158 //*****************************************************************************
frankvnk 3:405462258899 159 //
frankvnk 3:405462258899 160 //! exoHAL_SocketClose
frankvnk 3:405462258899 161 //!
frankvnk 3:405462258899 162 //! \param socket - socket handle
frankvnk 3:405462258899 163 //!
frankvnk 3:405462258899 164 //! \return None
frankvnk 3:405462258899 165 //!
frankvnk 3:405462258899 166 //! \brief The function closes a socket
frankvnk 3:405462258899 167 //
frankvnk 3:405462258899 168 //*****************************************************************************
frankvnk 3:405462258899 169 void exoHAL_SocketClose(long socket)
frankvnk 3:405462258899 170 {
frankvnk 3:405462258899 171 closesocket(socket);
frankvnk 3:405462258899 172 }
frankvnk 3:405462258899 173
frankvnk 3:405462258899 174
frankvnk 3:405462258899 175 //*****************************************************************************
frankvnk 3:405462258899 176 //
frankvnk 3:405462258899 177 //! exoHAL_SocketOpenTCP
frankvnk 3:405462258899 178 //!
frankvnk 3:405462258899 179 //! \param None
frankvnk 3:405462258899 180 //!
frankvnk 3:405462258899 181 //! \return socket - socket handle
frankvnk 3:405462258899 182 //!
frankvnk 3:405462258899 183 //! \brief The function opens a TCP socket
frankvnk 3:405462258899 184 //
frankvnk 3:405462258899 185 //*****************************************************************************
frankvnk 3:405462258899 186 long exoHAL_SocketOpenTCP()
frankvnk 3:405462258899 187 {
frankvnk 3:405462258899 188 return((long)socket(AF_INET, SOCK_STREAM, IPPROTO_TCP));
frankvnk 3:405462258899 189 }
frankvnk 3:405462258899 190
frankvnk 3:405462258899 191
frankvnk 3:405462258899 192 //*****************************************************************************
frankvnk 3:405462258899 193 //
frankvnk 3:405462258899 194 //! exoHAL_ServerConnect
frankvnk 3:405462258899 195 //!
frankvnk 3:405462258899 196 //! \param None
frankvnk 3:405462258899 197 //!
frankvnk 3:405462258899 198 //! \return socket - socket handle
frankvnk 3:405462258899 199 //!
frankvnk 3:405462258899 200 //! \brief The function opens a TCP socket
frankvnk 3:405462258899 201 //
frankvnk 3:405462258899 202 //*****************************************************************************
frankvnk 3:405462258899 203 long exoHAL_ServerConnect(long sock)
frankvnk 3:405462258899 204 {
frankvnk 3:405462258899 205 unsigned char server[META_SERVER_SIZE];
frankvnk 3:405462258899 206
frankvnk 3:405462258899 207 tSocketAddr.sa_family = 2;
frankvnk 3:405462258899 208
frankvnk 3:405462258899 209
frankvnk 3:405462258899 210 exosite_meta_read(server, META_SERVER_SIZE, META_SERVER);
frankvnk 3:405462258899 211
frankvnk 3:405462258899 212 //TODO - use DNS or check m2.exosite.com/ip to check for updates
frankvnk 3:405462258899 213 tSocketAddr.sa_data[0] = 0; //server[4];//(port & 0xFF00) >> 8;
frankvnk 3:405462258899 214 tSocketAddr.sa_data[1] = 80; //server[5];//(port & 0x00FF);
frankvnk 3:405462258899 215 tSocketAddr.sa_data[2] = 173; //server[0];//173; // First octet of destination IP
frankvnk 3:405462258899 216 tSocketAddr.sa_data[3] = 255; //server[1];//255; // Second Octet of destination IP
frankvnk 3:405462258899 217 tSocketAddr.sa_data[4] = 209; //server[2];//209; // Third Octet of destination IP
frankvnk 3:405462258899 218 tSocketAddr.sa_data[5] = 28; //server[3];//28; // Fourth Octet of destination IP
frankvnk 3:405462258899 219 //printf("Waiting for connection\n");
frankvnk 3:405462258899 220 return connect(sock, &tSocketAddr, sizeof(tSocketAddr));
frankvnk 3:405462258899 221 }
frankvnk 3:405462258899 222
frankvnk 3:405462258899 223
frankvnk 3:405462258899 224 //*****************************************************************************
frankvnk 3:405462258899 225 //
frankvnk 3:405462258899 226 //! exoHAL_SocketSend
frankvnk 3:405462258899 227 //!
frankvnk 3:405462258899 228 //! \param socket - socket handle; buffer - string buffer containing info to
frankvnk 3:405462258899 229 //! send; len - size of string in bytes;
frankvnk 3:405462258899 230 //!
frankvnk 3:405462258899 231 //! \return Number of bytes sent
frankvnk 3:405462258899 232 //!
frankvnk 3:405462258899 233 //! \brief Sends data out the network interface
frankvnk 3:405462258899 234 //
frankvnk 3:405462258899 235 //*****************************************************************************
frankvnk 3:405462258899 236 unsigned char exoHAL_SocketSend(long socket, char * buffer, unsigned char len)
frankvnk 3:405462258899 237 {
frankvnk 3:405462258899 238 int i;
frankvnk 3:405462258899 239 i = -2;
frankvnk 3:405462258899 240 while(i == -2) i = send(socket, buffer, (long)len, 0); //always set flags to 0 for CC3000
frankvnk 3:405462258899 241 return (unsigned char) i;
frankvnk 3:405462258899 242 }
frankvnk 3:405462258899 243
frankvnk 3:405462258899 244 //*****************************************************************************
frankvnk 3:405462258899 245 //
frankvnk 3:405462258899 246 //! exoHAL_SocketRecv
frankvnk 3:405462258899 247 //!
frankvnk 3:405462258899 248 //! \param socket - socket handle; buffer - string buffer to put info we
frankvnk 3:405462258899 249 //! receive; len - size of buffer in bytes;
frankvnk 3:405462258899 250 //!
frankvnk 3:405462258899 251 //! \return Number of bytes received
frankvnk 3:405462258899 252 //!
frankvnk 3:405462258899 253 //! \brief Sends data out the network interface
frankvnk 3:405462258899 254 //
frankvnk 3:405462258899 255 //*****************************************************************************
frankvnk 3:405462258899 256 unsigned char exoHAL_SocketRecv(long socket, char * buffer, unsigned char len)
frankvnk 3:405462258899 257 {
frankvnk 3:405462258899 258 return (unsigned char)recv(socket, buffer, (long)len, 0); //always set flags to 0 for CC3000
frankvnk 3:405462258899 259 }
frankvnk 3:405462258899 260
frankvnk 3:405462258899 261
frankvnk 3:405462258899 262 //*****************************************************************************
frankvnk 3:405462258899 263 //
frankvnk 3:405462258899 264 //! exoHAL_HandleError
frankvnk 3:405462258899 265 //!
frankvnk 3:405462258899 266 //! \param code - error code;
frankvnk 3:405462258899 267 //!
frankvnk 3:405462258899 268 //! \return None
frankvnk 3:405462258899 269 //!
frankvnk 3:405462258899 270 //! \brief Handles errors in platform-specific way
frankvnk 3:405462258899 271 //
frankvnk 3:405462258899 272 //*****************************************************************************
frankvnk 3:405462258899 273 void exoHAL_HandleError(unsigned char code)
frankvnk 3:405462258899 274 {
frankvnk 3:405462258899 275 printf("ERROR\n");
frankvnk 3:405462258899 276 return;
frankvnk 3:405462258899 277 }
frankvnk 3:405462258899 278
frankvnk 3:405462258899 279
frankvnk 3:405462258899 280 //*****************************************************************************
frankvnk 3:405462258899 281 //
frankvnk 3:405462258899 282 //! exoHAL_ShowUIMessage
frankvnk 3:405462258899 283 //!
frankvnk 3:405462258899 284 //! \param code - UI code for message to display;
frankvnk 3:405462258899 285 //!
frankvnk 3:405462258899 286 //! \return None
frankvnk 3:405462258899 287 //!
frankvnk 3:405462258899 288 //! \brief Displays message in a platform specific way
frankvnk 3:405462258899 289 //
frankvnk 3:405462258899 290 //*****************************************************************************
frankvnk 3:405462258899 291 void exoHAL_ShowUIMessage(unsigned char code)
frankvnk 3:405462258899 292 {
frankvnk 3:405462258899 293 //printf("ShowUIcode %d\n", code);
frankvnk 3:405462258899 294 return;
frankvnk 3:405462258899 295 }
frankvnk 3:405462258899 296
frankvnk 3:405462258899 297
frankvnk 3:405462258899 298 //*****************************************************************************
frankvnk 3:405462258899 299 //
frankvnk 3:405462258899 300 //! exoHAL_MSDelay
frankvnk 3:405462258899 301 //!
frankvnk 3:405462258899 302 //! \param delay - milliseconds to delay
frankvnk 3:405462258899 303 //!
frankvnk 3:405462258899 304 //! \return None
frankvnk 3:405462258899 305 //!
frankvnk 3:405462258899 306 //! \brief Delays for specified milliseconds
frankvnk 3:405462258899 307 //
frankvnk 3:405462258899 308 //*****************************************************************************
frankvnk 3:405462258899 309 void exoHAL_MSDelay(unsigned short delay)
frankvnk 3:405462258899 310 {
frankvnk 9:5d431f47ac93 311 wait_ms(delay * 2);
frankvnk 3:405462258899 312 return;
frankvnk 3:405462258899 313 }
frankvnk 3:405462258899 314