Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.

Dependencies:   mbed

Committer:
dflet
Date:
Tue Sep 15 16:45:04 2015 +0000
Revision:
22:f9b5e0b80bf2
Parent:
0:50cedd586816
Removed some debug.

Who changed what in which revision?

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