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:
Thu Sep 10 17:56:09 2015 +0000
Revision:
19:3dd3e7f30f8b
Parent:
0:50cedd586816
Solved part of the problem with spi, looks like there is maybe a fault with the Seeed Arch Max, fault or by design i don't know, program seems to work fine on an STMF32407I (Waveshare) baord.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:50cedd586816 1 /*
dflet 0:50cedd586816 2 * trace.h - 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 #ifndef SIMPLELINK_TRACE_H_
dflet 0:50cedd586816 37 #define SIMPLELINK_TRACE_H_
dflet 0:50cedd586816 38
dflet 0:50cedd586816 39
dflet 0:50cedd586816 40 #include "cc3100_simplelink.h"
dflet 0:50cedd586816 41
dflet 0:50cedd586816 42
dflet 0:50cedd586816 43 /*****************************************************************************/
dflet 0:50cedd586816 44 /* Macro declarations */
dflet 0:50cedd586816 45 /*****************************************************************************/
dflet 0:50cedd586816 46
dflet 0:50cedd586816 47 /* This macro is for use by other macros to form a fully valid C statement. */
dflet 0:50cedd586816 48 #define st(x) do { x } while (__LINE__ == -1)
dflet 0:50cedd586816 49
dflet 0:50cedd586816 50 #define SL_SYNC_SCAN_THRESHOLD (( uint32_t )2000)
dflet 0:50cedd586816 51
dflet 0:50cedd586816 52 #define _SlDrvAssert(line ) { while(1); }
dflet 0:50cedd586816 53
dflet 0:50cedd586816 54 #define _SL_ASSERT(expr) { if(!(expr)){_SlDrvAssert(__LINE__); } }
dflet 0:50cedd586816 55 #define _SL_ERROR(expr, error) { if(!(expr)){return (error); } }
dflet 0:50cedd586816 56
dflet 0:50cedd586816 57 #define SL_HANDLING_ASSERT 2
dflet 0:50cedd586816 58 #define SL_HANDLING_ERROR 1
dflet 0:50cedd586816 59 #define SL_HANDLING_NONE 0
dflet 0:50cedd586816 60
dflet 0:50cedd586816 61 #ifndef SL_TINY_EXT
dflet 0:50cedd586816 62 #define SL_SELF_COND_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 63 #define SL_PROTOCOL_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 64 #define SL_DRV_RET_CODE_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 65 #define SL_NWP_IF_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 66 #define SL_OSI_RET_OK_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 67 #define SL_MALLOC_OK_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 68 #define SL_USER_ARGS_HANDLING SL_HANDLING_ASSERT
dflet 0:50cedd586816 69 #else
dflet 0:50cedd586816 70 #define SL_SELF_COND_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 71 #define SL_PROTOCOL_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 72 #define SL_DRV_RET_CODE_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 73 #define SL_NWP_IF_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 74 #define SL_OSI_RET_OK_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 75 #define SL_MALLOC_OK_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 76 #define SL_USER_ARGS_HANDLING SL_HANDLING_NONE
dflet 0:50cedd586816 77 #endif
dflet 0:50cedd586816 78
dflet 0:50cedd586816 79 #if (SL_DRV_RET_CODE_HANDLING == SL_HANDLING_ASSERT)
dflet 0:50cedd586816 80 #define VERIFY_RET_OK(Func) {_SlReturnVal_t _RetVal = (Func); _SL_ASSERT((_SlReturnVal_t)SL_OS_RET_CODE_OK == _RetVal)}
dflet 0:50cedd586816 81 #elif (SL_DRV_RET_CODE_HANDLING == SL_HANDLING_ERROR)
dflet 0:50cedd586816 82 #define VERIFY_RET_OK(Func) {_SlReturnVal_t _RetVal = (Func); if (SL_OS_RET_CODE_OK != _RetVal) return _RetVal;}
dflet 0:50cedd586816 83 #else
dflet 0:50cedd586816 84 #define VERIFY_RET_OK(Func) (Func);
dflet 0:50cedd586816 85 #endif
dflet 0:50cedd586816 86
dflet 0:50cedd586816 87 #if (SL_PROTOCOL_HANDLING == SL_HANDLING_ASSERT)
dflet 0:50cedd586816 88 #define VERIFY_PROTOCOL(expr) _SL_ASSERT(expr)
dflet 0:50cedd586816 89 #elif (SL_PROTOCOL_HANDLING == SL_HANDLING_ERROR)
dflet 0:50cedd586816 90 #define VERIFY_PROTOCOL(expr) _SL_ERROR(expr, SL_RET_CODE_PROTOCOL_ERROR)
dflet 0:50cedd586816 91 #else
dflet 0:50cedd586816 92 #define VERIFY_PROTOCOL(expr)
dflet 0:50cedd586816 93 #endif
dflet 0:50cedd586816 94
dflet 0:50cedd586816 95 #if (defined(PROTECT_SOCKET_ASYNC_RESP) && (SL_SELF_COND_HANDLING == SL_HANDLING_ASSERT))
dflet 0:50cedd586816 96 #define VERIFY_SOCKET_CB(expr) _SL_ASSERT(expr)
dflet 0:50cedd586816 97 #elif (defined(PROTECT_SOCKET_ASYNC_RESP) && (SL_SELF_COND_HANDLING == SL_HANDLING_ERROR))
dflet 0:50cedd586816 98 #define VERIFY_SOCKET_CB(expr) _SL_ERROR(expr, SL_RET_CODE_SELF_ERROR)
dflet 0:50cedd586816 99 #else
dflet 0:50cedd586816 100 #define VERIFY_SOCKET_CB(expr)
dflet 0:50cedd586816 101 #endif
dflet 0:50cedd586816 102
dflet 0:50cedd586816 103 #if (SL_NWP_IF_HANDLING == SL_HANDLING_ASSERT)
dflet 19:3dd3e7f30f8b 104 #define NWP_IF_WRITE_CHECK(fd,pBuff,len) { int16_t RetSize, ExpSize = (len); RetSize = sl_IfWrite((fd),(pBuff),ExpSize); _SL_ASSERT(ExpSize == RetSize)}
dflet 19:3dd3e7f30f8b 105 #define NWP_IF_READ_CHECK(fd,pBuff,len) { int16_t RetSize, ExpSize = (len); RetSize = sl_IfRead((fd),(pBuff),ExpSize); _SL_ASSERT(ExpSize == RetSize)}
dflet 0:50cedd586816 106 #elif (SL_NWP_IF_HANDLING == SL_HANDLING_ERROR)
dflet 19:3dd3e7f30f8b 107 #define NWP_IF_WRITE_CHECK(fd,pBuff,len) { _SL_ERROR((len == sl_IfWrite((fd),(pBuff),(len))), SL_RET_CODE_NWP_IF_ERROR);}
dflet 19:3dd3e7f30f8b 108 #define NWP_IF_READ_CHECK(fd,pBuff,len) { _SL_ERROR((len == sl_IfRead((fd),(pBuff),(len))), SL_RET_CODE_NWP_IF_ERROR);}
dflet 0:50cedd586816 109 #else
dflet 19:3dd3e7f30f8b 110 #define NWP_IF_WRITE_CHECK(fd,pBuff,len) { sl_IfWrite((fd),(pBuff),(len));}
dflet 19:3dd3e7f30f8b 111 #define NWP_IF_READ_CHECK(fd,pBuff,len) { sl_IfRead((fd),(pBuff),(len));}
dflet 0:50cedd586816 112 #endif
dflet 0:50cedd586816 113
dflet 0:50cedd586816 114 #if (SL_OSI_RET_OK_HANDLING == SL_HANDLING_ASSERT)
dflet 0:50cedd586816 115 #define OSI_RET_OK_CHECK(Func) {_SlReturnVal_t _RetVal = (Func); _SL_ASSERT((_SlReturnVal_t)SL_OS_RET_CODE_OK == _RetVal)}
dflet 0:50cedd586816 116 #elif (SL_OSI_RET_OK_HANDLING == SL_HANDLING_ERROR)
dflet 0:50cedd586816 117 #define OSI_RET_OK_CHECK(Func) {_SlReturnVal_t _RetVal = (Func); if (SL_OS_RET_CODE_OK != _RetVal) return _RetVal;}
dflet 0:50cedd586816 118 #else
dflet 0:50cedd586816 119 #define OSI_RET_OK_CHECK(Func) (Func);
dflet 0:50cedd586816 120 #endif
dflet 0:50cedd586816 121
dflet 0:50cedd586816 122 #if (SL_MALLOC_OK_HANDLING == SL_HANDLING_ASSERT)
dflet 0:50cedd586816 123 #define MALLOC_OK_CHECK(Ptr) _SL_ASSERT(NULL != Ptr)
dflet 0:50cedd586816 124 #elif (SL_MALLOC_OK_HANDLING == SL_HANDLING_ERROR)
dflet 0:50cedd586816 125 #define MALLOC_OK_CHECK(Ptr) _SL_ERROR((NULL != Ptr), SL_RET_CODE_MALLOC_ERROR)
dflet 0:50cedd586816 126 #else
dflet 0:50cedd586816 127 #define MALLOC_OK_CHECK(Ptr)
dflet 0:50cedd586816 128 #endif
dflet 0:50cedd586816 129
dflet 0:50cedd586816 130 #ifdef SL_INC_ARG_CHECK
dflet 0:50cedd586816 131
dflet 0:50cedd586816 132 #if (SL_USER_ARGS_HANDLING == SL_HANDLING_ASSERT)
dflet 0:50cedd586816 133 #define ARG_CHECK_PTR(Ptr) _SL_ASSERT(NULL != Ptr)
dflet 0:50cedd586816 134 #elif (SL_USER_ARGS_HANDLING == SL_HANDLING_ERROR)
dflet 0:50cedd586816 135 #define ARG_CHECK_PTR(Ptr) _SL_ERROR((NULL != Ptr), SL_RET_CODE_INVALID_INPUT)
dflet 0:50cedd586816 136 #else
dflet 0:50cedd586816 137 #define ARG_CHECK_PTR(Ptr)
dflet 0:50cedd586816 138 #endif
dflet 0:50cedd586816 139
dflet 0:50cedd586816 140 #else
dflet 0:50cedd586816 141 #define ARG_CHECK_PTR(Ptr)
dflet 0:50cedd586816 142 #endif
dflet 0:50cedd586816 143
dflet 0:50cedd586816 144 //#define SL_DBG_TRACE_ENABLE
dflet 0:50cedd586816 145 #ifdef SL_DBG_TRACE_ENABLE
dflet 0:50cedd586816 146 #define SL_TRACE0(level,msg_id,str) printf(str)
dflet 0:50cedd586816 147 #define SL_TRACE1(level,msg_id,str,p1) printf(str,(p1))
dflet 0:50cedd586816 148 #define SL_TRACE2(level,msg_id,str,p1,p2) printf(str,(p1),(p2))
dflet 0:50cedd586816 149 #define SL_TRACE3(level,msg_id,str,p1,p2,p3) printf(str,(p1),(p2),(p3))
dflet 0:50cedd586816 150 #define SL_TRACE4(level,msg_id,str,p1,p2,p3,p4) printf(str,(p1),(p2),(p3),(p4))
dflet 0:50cedd586816 151 #define SL_ERROR_TRACE(msg_id,str) printf(str)
dflet 0:50cedd586816 152 #define SL_ERROR_TRACE1(msg_id,str,p1) printf(str,(p1))
dflet 0:50cedd586816 153 #define SL_ERROR_TRACE2(msg_id,str,p1,p2) printf(str,(p1),(p2))
dflet 0:50cedd586816 154 #define SL_ERROR_TRACE3(msg_id,str,p1,p2,p3) printf(str,(p1),(p2),(p3))
dflet 0:50cedd586816 155 #define SL_ERROR_TRACE4(msg_id,str,p1,p2,p3,p4) printf(str,(p1),(p2),(p3),(p4))
dflet 0:50cedd586816 156 #define SL_TRACE_FLUSH()
dflet 0:50cedd586816 157 #else
dflet 0:50cedd586816 158 #define SL_TRACE0(level,msg_id,str)
dflet 0:50cedd586816 159 #define SL_TRACE1(level,msg_id,str,p1)
dflet 0:50cedd586816 160 #define SL_TRACE2(level,msg_id,str,p1,p2)
dflet 0:50cedd586816 161 #define SL_TRACE3(level,msg_id,str,p1,p2,p3)
dflet 0:50cedd586816 162 #define SL_TRACE4(level,msg_id,str,p1,p2,p3,p4)
dflet 0:50cedd586816 163 #define SL_ERROR_TRACE(msg_id,str)
dflet 0:50cedd586816 164 #define SL_ERROR_TRACE1(msg_id,str,p1)
dflet 0:50cedd586816 165 #define SL_ERROR_TRACE2(msg_id,str,p1,p2)
dflet 0:50cedd586816 166 #define SL_ERROR_TRACE3(msg_id,str,p1,p2,p3)
dflet 0:50cedd586816 167 #define SL_ERROR_TRACE4(msg_id,str,p1,p2,p3,p4)
dflet 0:50cedd586816 168 #define SL_TRACE_FLUSH()
dflet 0:50cedd586816 169 #endif
dflet 0:50cedd586816 170
dflet 0:50cedd586816 171 //#define SL_DBG_CNT_ENABLE
dflet 0:50cedd586816 172 #ifdef SL_DBG_CNT_ENABLE
dflet 0:50cedd586816 173 #define _SL_DBG_CNT_INC(Cnt) g_DbgCnt. ## Cnt++
dflet 0:50cedd586816 174 #define _SL_DBG_SYNC_LOG(index,value) {if(index < SL_DBG_SYNC_LOG_SIZE){*(uint32_t *)&g_DbgCnt.SyncLog[index] = *(uint32_t *)(value);}}
dflet 0:50cedd586816 175
dflet 0:50cedd586816 176 #else
dflet 0:50cedd586816 177 #define _SL_DBG_CNT_INC(Cnt)
dflet 0:50cedd586816 178 #define _SL_DBG_SYNC_LOG(index,value)
dflet 0:50cedd586816 179 #endif
dflet 0:50cedd586816 180
dflet 0:50cedd586816 181 #define SL_DBG_LEVEL_1 1
dflet 0:50cedd586816 182 #define SL_DBG_LEVEL_2 2
dflet 0:50cedd586816 183 #define SL_DBG_LEVEL_3 4
dflet 0:50cedd586816 184 #define SL_DBG_LEVEL_MASK (SL_DBG_LEVEL_2|SL_DBG_LEVEL_3)
dflet 0:50cedd586816 185
dflet 0:50cedd586816 186 #define SL_INCLUDE_DBG_FUNC(Name) ((Name ## _DBG_LEVEL) & SL_DBG_LEVEL_MASK)
dflet 0:50cedd586816 187
dflet 0:50cedd586816 188 #define _SlDrvPrintStat_DBG_LEVEL SL_DBG_LEVEL_3
dflet 0:50cedd586816 189 #define _SlDrvOtherFunc_DBG_LEVEL SL_DBG_LEVEL_1
dflet 0:50cedd586816 190
dflet 0:50cedd586816 191
dflet 0:50cedd586816 192 #endif /*__SIMPLELINK_TRACE_H__*/
dflet 0:50cedd586816 193
dflet 0:50cedd586816 194