TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Committer:
dflet
Date:
Fri Sep 11 15:38:33 2015 +0000
Revision:
1:e448e81c416f
Parent:
0:400d8e75a8d0
Removed some debud.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:400d8e75a8d0 1 /*
dflet 0:400d8e75a8d0 2 * - CC31xx/CC32xx Host Driver Implementation
dflet 0:400d8e75a8d0 3 *
dflet 0:400d8e75a8d0 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:400d8e75a8d0 5 *
dflet 0:400d8e75a8d0 6 *
dflet 0:400d8e75a8d0 7 * Redistribution and use in source and binary forms, with or without
dflet 0:400d8e75a8d0 8 * modification, are permitted provided that the following conditions
dflet 0:400d8e75a8d0 9 * are met:
dflet 0:400d8e75a8d0 10 *
dflet 0:400d8e75a8d0 11 * Redistributions of source code must retain the above copyright
dflet 0:400d8e75a8d0 12 * notice, this list of conditions and the following disclaimer.
dflet 0:400d8e75a8d0 13 *
dflet 0:400d8e75a8d0 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:400d8e75a8d0 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:400d8e75a8d0 16 * documentation and/or other materials provided with the
dflet 0:400d8e75a8d0 17 * distribution.
dflet 0:400d8e75a8d0 18 *
dflet 0:400d8e75a8d0 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:400d8e75a8d0 20 * its contributors may be used to endorse or promote products derived
dflet 0:400d8e75a8d0 21 * from this software without specific prior written permission.
dflet 0:400d8e75a8d0 22 *
dflet 0:400d8e75a8d0 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:400d8e75a8d0 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:400d8e75a8d0 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:400d8e75a8d0 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:400d8e75a8d0 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:400d8e75a8d0 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:400d8e75a8d0 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:400d8e75a8d0 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:400d8e75a8d0 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:400d8e75a8d0 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:400d8e75a8d0 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:400d8e75a8d0 34 *
dflet 0:400d8e75a8d0 35 */
dflet 0:400d8e75a8d0 36
dflet 0:400d8e75a8d0 37 #ifndef fPtr_func_h
dflet 0:400d8e75a8d0 38 #define fPtr_func_h
dflet 0:400d8e75a8d0 39
dflet 0:400d8e75a8d0 40 #include "simplelink/cc3100_simplelink.h"
dflet 0:400d8e75a8d0 41
dflet 0:400d8e75a8d0 42
dflet 0:400d8e75a8d0 43 /* Note. C function pointers point to the functions below. */
dflet 0:400d8e75a8d0 44 /* C++ member function pointers not used ? */
dflet 0:400d8e75a8d0 45
dflet 0:400d8e75a8d0 46 namespace mbed_cc3100 {
dflet 0:400d8e75a8d0 47
dflet 0:400d8e75a8d0 48 extern uint32_t g_PingPacketsRecv;
dflet 0:400d8e75a8d0 49 extern uint32_t g_GatewayIP;
dflet 0:400d8e75a8d0 50 extern uint32_t g_StationIP;
dflet 0:400d8e75a8d0 51 extern uint32_t g_DestinationIP;
dflet 0:400d8e75a8d0 52 extern uint32_t g_BytesReceived; // variable to store the file size
dflet 0:400d8e75a8d0 53 extern uint32_t g_Status;
dflet 0:400d8e75a8d0 54 extern uint8_t g_buff[MAX_BUFF_SIZE+1];
dflet 0:400d8e75a8d0 55 extern int32_t g_SockID;
dflet 0:400d8e75a8d0 56
dflet 0:400d8e75a8d0 57 }//namespace mbed_cc3100
dflet 0:400d8e75a8d0 58
dflet 0:400d8e75a8d0 59 using namespace mbed_cc3100;
dflet 0:400d8e75a8d0 60
dflet 0:400d8e75a8d0 61 #ifdef __cplusplus
dflet 0:400d8e75a8d0 62 extern "C" {
dflet 0:400d8e75a8d0 63 #endif
dflet 0:400d8e75a8d0 64
dflet 0:400d8e75a8d0 65
dflet 0:400d8e75a8d0 66 void SimpleLinkPingReport(SlPingReport_t *pPingReport);
dflet 0:400d8e75a8d0 67
dflet 0:400d8e75a8d0 68 /*!
dflet 0:400d8e75a8d0 69 \brief WLAN Async event handler
dflet 0:400d8e75a8d0 70
dflet 0:400d8e75a8d0 71 \param[out] pSlWlanEvent pointer to SlWlanEvent_t data
dflet 0:400d8e75a8d0 72
dflet 0:400d8e75a8d0 73 \par
dflet 0:400d8e75a8d0 74 Parameters:
dflet 0:400d8e75a8d0 75
dflet 0:400d8e75a8d0 76 - <b>pSlWlanEvent->Event = SL_WLAN_CONNECT_EVENT </b>, STA or P2P client connection indication event
dflet 0:400d8e75a8d0 77 - pSlWlanEvent->EventData.STAandP2PModeWlanConnected main fields:
dflet 0:400d8e75a8d0 78 - ssid_name
dflet 0:400d8e75a8d0 79 - ssid_len
dflet 0:400d8e75a8d0 80 - bssid
dflet 0:400d8e75a8d0 81 - go_peer_device_name
dflet 0:400d8e75a8d0 82 - go_peer_device_name_len
dflet 0:400d8e75a8d0 83
dflet 0:400d8e75a8d0 84 - <b>pSlWlanEvent->Event = SL_WLAN_DISCONNECT_EVENT </b>, STA or P2P client disconnection event
dflet 0:400d8e75a8d0 85 - pSlWlanEvent->EventData.STAandP2PModeDisconnected main fields:
dflet 0:400d8e75a8d0 86 - ssid_name
dflet 0:400d8e75a8d0 87 - ssid_len
dflet 0:400d8e75a8d0 88 - reason_code
dflet 0:400d8e75a8d0 89
dflet 0:400d8e75a8d0 90 - <b>pSlWlanEvent->Event = SL_WLAN_STA_CONNECTED_EVENT </b>, AP/P2P(Go) connected STA/P2P(Client)
dflet 0:400d8e75a8d0 91 - pSlWlanEvent->EventData.APModeStaConnected fields:
dflet 0:400d8e75a8d0 92 - go_peer_device_name
dflet 0:400d8e75a8d0 93 - mac
dflet 0:400d8e75a8d0 94 - go_peer_device_name_len
dflet 0:400d8e75a8d0 95 - wps_dev_password_id
dflet 0:400d8e75a8d0 96 - own_ssid: relevant for event sta-connected only
dflet 0:400d8e75a8d0 97 - own_ssid_len: relevant for event sta-connected only
dflet 0:400d8e75a8d0 98
dflet 0:400d8e75a8d0 99 - <b>pSlWlanEvent->Event = SL_WLAN_STA_DISCONNECTED_EVENT </b>, AP/P2P(Go) disconnected STA/P2P(Client)
dflet 0:400d8e75a8d0 100 - pSlWlanEvent->EventData.APModestaDisconnected fields:
dflet 0:400d8e75a8d0 101 - go_peer_device_name
dflet 0:400d8e75a8d0 102 - mac
dflet 0:400d8e75a8d0 103 - go_peer_device_name_len
dflet 0:400d8e75a8d0 104 - wps_dev_password_id
dflet 0:400d8e75a8d0 105 - own_ssid: relevant for event sta-connected only
dflet 0:400d8e75a8d0 106 - own_ssid_len: relevant for event sta-connected only
dflet 0:400d8e75a8d0 107
dflet 0:400d8e75a8d0 108 - <b>pSlWlanEvent->Event = SL_WLAN_SMART_CONFIG_COMPLETE_EVENT </b>
dflet 0:400d8e75a8d0 109 - pSlWlanEvent->EventData.smartConfigStartResponse fields:
dflet 0:400d8e75a8d0 110 - status
dflet 0:400d8e75a8d0 111 - ssid_len
dflet 0:400d8e75a8d0 112 - ssid
dflet 0:400d8e75a8d0 113 - private_token_len
dflet 0:400d8e75a8d0 114 - private_token
dflet 0:400d8e75a8d0 115
dflet 0:400d8e75a8d0 116 - <b>pSlWlanEvent->Event = SL_WLAN_SMART_CONFIG_STOP_EVENT </b>
dflet 0:400d8e75a8d0 117 - pSlWlanEvent->EventData.smartConfigStopResponse fields:
dflet 0:400d8e75a8d0 118 - status
dflet 0:400d8e75a8d0 119
dflet 0:400d8e75a8d0 120 - <b>pSlWlanEvent->Event = SL_WLAN_P2P_DEV_FOUND_EVENT </b>
dflet 0:400d8e75a8d0 121 - pSlWlanEvent->EventData.P2PModeDevFound fields:
dflet 0:400d8e75a8d0 122 - go_peer_device_name
dflet 0:400d8e75a8d0 123 - mac
dflet 0:400d8e75a8d0 124 - go_peer_device_name_len
dflet 0:400d8e75a8d0 125 - wps_dev_password_id
dflet 0:400d8e75a8d0 126 - own_ssid: relevant for event sta-connected only
dflet 0:400d8e75a8d0 127 - own_ssid_len: relevant for event sta-connected only
dflet 0:400d8e75a8d0 128
dflet 0:400d8e75a8d0 129 - <b>pSlWlanEvent->Event = SL_WLAN_P2P_NEG_REQ_RECEIVED_EVENT </b>
dflet 0:400d8e75a8d0 130 - pSlWlanEvent->EventData.P2PModeNegReqReceived fields
dflet 0:400d8e75a8d0 131 - go_peer_device_name
dflet 0:400d8e75a8d0 132 - mac
dflet 0:400d8e75a8d0 133 - go_peer_device_name_len
dflet 0:400d8e75a8d0 134 - wps_dev_password_id
dflet 0:400d8e75a8d0 135 - own_ssid: relevant for event sta-connected only
dflet 0:400d8e75a8d0 136
dflet 0:400d8e75a8d0 137 - <b>pSlWlanEvent->Event = SL_WLAN_CONNECTION_FAILED_EVENT </b>, P2P only
dflet 0:400d8e75a8d0 138 - pSlWlanEvent->EventData.P2PModewlanConnectionFailure fields:
dflet 0:400d8e75a8d0 139 - status
dflet 0:400d8e75a8d0 140 */
dflet 0:400d8e75a8d0 141 #if (defined(sl_WlanEvtHdlr))
dflet 0:400d8e75a8d0 142 void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent);
dflet 0:400d8e75a8d0 143 #endif
dflet 0:400d8e75a8d0 144
dflet 0:400d8e75a8d0 145 /*!
dflet 0:400d8e75a8d0 146 \brief NETAPP Async event handler
dflet 0:400d8e75a8d0 147
dflet 0:400d8e75a8d0 148 \param[out] pSlNetApp pointer to SlNetAppEvent_t data
dflet 0:400d8e75a8d0 149
dflet 0:400d8e75a8d0 150 \par
dflet 0:400d8e75a8d0 151 Parameters:
dflet 0:400d8e75a8d0 152 - <b>pSlWlanEvent->Event = SL_NETAPP_IPV4_IPACQUIRED_EVENT</b>, IPV4 acquired event
dflet 0:400d8e75a8d0 153 - pSlWlanEvent->EventData.ipAcquiredV4 fields:
dflet 0:400d8e75a8d0 154 - ip
dflet 0:400d8e75a8d0 155 - gateway
dflet 0:400d8e75a8d0 156 - dns
dflet 0:400d8e75a8d0 157
dflet 0:400d8e75a8d0 158 - <b>pSlWlanEvent->Event = SL_NETAPP_IP_LEASED_EVENT</b>, AP or P2P go dhcp lease event
dflet 0:400d8e75a8d0 159 - pSlWlanEvent->EventData.ipLeased fields:
dflet 0:400d8e75a8d0 160 - ip_address
dflet 0:400d8e75a8d0 161 - lease_time
dflet 0:400d8e75a8d0 162 - mac
dflet 0:400d8e75a8d0 163
dflet 0:400d8e75a8d0 164 - <b>pSlWlanEvent->Event = SL_NETAPP_IP_RELEASED_EVENT</b>, AP or P2P go dhcp ip release event
dflet 0:400d8e75a8d0 165 - pSlWlanEvent->EventData.ipReleased fields
dflet 0:400d8e75a8d0 166 - ip_address
dflet 0:400d8e75a8d0 167 - mac
dflet 0:400d8e75a8d0 168 - reason
dflet 0:400d8e75a8d0 169
dflet 0:400d8e75a8d0 170 */
dflet 0:400d8e75a8d0 171 #if (defined(sl_NetAppEvtHdlr))
dflet 0:400d8e75a8d0 172 void SimpleLinkNetAppEventHandler(SlNetAppEvent_t *pNetAppEvent);
dflet 0:400d8e75a8d0 173 #endif
dflet 0:400d8e75a8d0 174
dflet 0:400d8e75a8d0 175 /*!
dflet 0:400d8e75a8d0 176 \brief Socket Async event handler
dflet 0:400d8e75a8d0 177
dflet 0:400d8e75a8d0 178 \param[out] pSlSockEvent pointer to SlSockEvent_t data
dflet 0:400d8e75a8d0 179
dflet 0:400d8e75a8d0 180 \par
dflet 0:400d8e75a8d0 181 Parameters:\n
dflet 0:400d8e75a8d0 182 - <b>pSlSockEvent->Event = SL_SOCKET_TX_FAILED_EVENT</b>
dflet 0:400d8e75a8d0 183 - pSlSockEvent->EventData fields:
dflet 0:400d8e75a8d0 184 - sd
dflet 0:400d8e75a8d0 185 - status
dflet 0:400d8e75a8d0 186 - <b>pSlSockEvent->Event = SL_SOCKET_ASYNC_EVENT</b>
dflet 0:400d8e75a8d0 187 - pSlSockEvent->EventData fields:
dflet 0:400d8e75a8d0 188 - sd
dflet 0:400d8e75a8d0 189 - type: SSL_ACCEPT or RX_FRAGMENTATION_TOO_BIG or OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED
dflet 0:400d8e75a8d0 190 - val
dflet 0:400d8e75a8d0 191
dflet 0:400d8e75a8d0 192 */
dflet 0:400d8e75a8d0 193 #if (defined(sl_SockEvtHdlr))
dflet 0:400d8e75a8d0 194 void SimpleLinkSockEventHandler(SlSockEvent_t *pSock);
dflet 0:400d8e75a8d0 195 #endif
dflet 0:400d8e75a8d0 196
dflet 0:400d8e75a8d0 197 void SimpleLinkGeneralEventHandler(SlDeviceEvent_t *pDevEvent);
dflet 0:400d8e75a8d0 198
dflet 0:400d8e75a8d0 199 void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pHttpEvent, SlHttpServerResponse_t *pHttpResponse);
dflet 0:400d8e75a8d0 200 #ifndef SL_TINY_EXT
dflet 0:400d8e75a8d0 201 void _sl_HandleAsync_Accept(void *pVoidBuf);
dflet 0:400d8e75a8d0 202
dflet 0:400d8e75a8d0 203 void _sl_HandleAsync_Select(void *pVoidBuf);
dflet 0:400d8e75a8d0 204
dflet 0:400d8e75a8d0 205 void _sl_HandleAsync_DnsGetHostByService(void *pVoidBuf);
dflet 0:400d8e75a8d0 206
dflet 0:400d8e75a8d0 207 void _sl_HandleAsync_PingResponse(void *pVoidBuf);
dflet 0:400d8e75a8d0 208 #endif
dflet 0:400d8e75a8d0 209 void _sl_HandleAsync_Connect(void *pVoidBuf);
dflet 0:400d8e75a8d0 210
dflet 0:400d8e75a8d0 211 void _sl_HandleAsync_DnsGetHostByName(void *pVoidBuf);
dflet 0:400d8e75a8d0 212
dflet 0:400d8e75a8d0 213 void _sl_HandleAsync_Stop(void *pVoidBuf);
dflet 0:400d8e75a8d0 214
dflet 0:400d8e75a8d0 215 _SlReturnVal_t _SlDrvMsgReadSpawnCtx(void *pValue);
dflet 0:400d8e75a8d0 216
dflet 0:400d8e75a8d0 217 void _SlDrvDeviceEventHandler(void *pArgs);
dflet 0:400d8e75a8d0 218
dflet 0:400d8e75a8d0 219 void _SlDrvNetAppEventHandler(void *pArgs);
dflet 0:400d8e75a8d0 220
dflet 0:400d8e75a8d0 221 void _SlDrvHandleHttpServerEvents(SlHttpServerEvent_t *slHttpServerEvent, SlHttpServerResponse_t *slHttpServerResponse);
dflet 0:400d8e75a8d0 222 void _SlDrvHandleSockEvents(SlSockEvent_t *slSockEvent);
dflet 0:400d8e75a8d0 223 void _SlDrvHandleNetAppEvents(SlNetAppEvent_t *slNetAppEvent);
dflet 0:400d8e75a8d0 224 void _SlDrvHandleWlanEvents(SlWlanEvent_t *slWlanEvent);
dflet 0:400d8e75a8d0 225 void _SlDrvHandleGeneralEvents(SlDeviceEvent_t *slGeneralEvent);
dflet 0:400d8e75a8d0 226
dflet 0:400d8e75a8d0 227 #ifdef __cplusplus
dflet 0:400d8e75a8d0 228 }
dflet 0:400d8e75a8d0 229 #endif /* __cplusplus */
dflet 0:400d8e75a8d0 230
dflet 0:400d8e75a8d0 231 //}//namespace mbed_cc3100
dflet 0:400d8e75a8d0 232
dflet 0:400d8e75a8d0 233 #endif//fPtr_func_h
dflet 0:400d8e75a8d0 234
dflet 0:400d8e75a8d0 235
dflet 0:400d8e75a8d0 236
dflet 0:400d8e75a8d0 237
dflet 0:400d8e75a8d0 238
dflet 0:400d8e75a8d0 239
dflet 0:400d8e75a8d0 240