TI's MQTT Demo with freertos CM4F

Dependencies:   mbed

Committer:
dflet
Date:
Thu Sep 03 14:07:01 2015 +0000
Revision:
0:1e7b5dd9edb4
First commit, it's been hanging around for a while. Updated SPI mode change 1 to 0.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dflet 0:1e7b5dd9edb4 1 /*
dflet 0:1e7b5dd9edb4 2 * driver.h - CC31xx/CC32xx Host Driver Implementation
dflet 0:1e7b5dd9edb4 3 *
dflet 0:1e7b5dd9edb4 4 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
dflet 0:1e7b5dd9edb4 5 *
dflet 0:1e7b5dd9edb4 6 *
dflet 0:1e7b5dd9edb4 7 * Redistribution and use in source and binary forms, with or without
dflet 0:1e7b5dd9edb4 8 * modification, are permitted provided that the following conditions
dflet 0:1e7b5dd9edb4 9 * are met:
dflet 0:1e7b5dd9edb4 10 *
dflet 0:1e7b5dd9edb4 11 * Redistributions of source code must retain the above copyright
dflet 0:1e7b5dd9edb4 12 * notice, this list of conditions and the following disclaimer.
dflet 0:1e7b5dd9edb4 13 *
dflet 0:1e7b5dd9edb4 14 * Redistributions in binary form must reproduce the above copyright
dflet 0:1e7b5dd9edb4 15 * notice, this list of conditions and the following disclaimer in the
dflet 0:1e7b5dd9edb4 16 * documentation and/or other materials provided with the
dflet 0:1e7b5dd9edb4 17 * distribution.
dflet 0:1e7b5dd9edb4 18 *
dflet 0:1e7b5dd9edb4 19 * Neither the name of Texas Instruments Incorporated nor the names of
dflet 0:1e7b5dd9edb4 20 * its contributors may be used to endorse or promote products derived
dflet 0:1e7b5dd9edb4 21 * from this software without specific prior written permission.
dflet 0:1e7b5dd9edb4 22 *
dflet 0:1e7b5dd9edb4 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
dflet 0:1e7b5dd9edb4 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
dflet 0:1e7b5dd9edb4 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
dflet 0:1e7b5dd9edb4 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
dflet 0:1e7b5dd9edb4 27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
dflet 0:1e7b5dd9edb4 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
dflet 0:1e7b5dd9edb4 29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
dflet 0:1e7b5dd9edb4 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
dflet 0:1e7b5dd9edb4 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
dflet 0:1e7b5dd9edb4 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
dflet 0:1e7b5dd9edb4 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dflet 0:1e7b5dd9edb4 34 *
dflet 0:1e7b5dd9edb4 35 */
dflet 0:1e7b5dd9edb4 36
dflet 0:1e7b5dd9edb4 37 #ifndef DRIVER_INT_H_
dflet 0:1e7b5dd9edb4 38 #define DRIVER_INT_H_
dflet 0:1e7b5dd9edb4 39
dflet 0:1e7b5dd9edb4 40 #include "mbed.h"
dflet 0:1e7b5dd9edb4 41 #include "cc3100_simplelink.h"
dflet 0:1e7b5dd9edb4 42
dflet 0:1e7b5dd9edb4 43 #include "cc3100_protocol.h"
dflet 0:1e7b5dd9edb4 44 #include "cc3100_spi.h"
dflet 0:1e7b5dd9edb4 45 //#include "cc3100_nonos.h"
dflet 0:1e7b5dd9edb4 46 #include "cc3100_netapp.h"
dflet 0:1e7b5dd9edb4 47 //#include "cc3100.h"
dflet 0:1e7b5dd9edb4 48
dflet 0:1e7b5dd9edb4 49 #ifdef SL_PLATFORM_MULTI_THREADED
dflet 0:1e7b5dd9edb4 50 #include "osi.h"
dflet 0:1e7b5dd9edb4 51 #endif
dflet 0:1e7b5dd9edb4 52
dflet 0:1e7b5dd9edb4 53 /*****************************************************************************/
dflet 0:1e7b5dd9edb4 54 /* Macro declarations */
dflet 0:1e7b5dd9edb4 55 /*****************************************************************************/
dflet 0:1e7b5dd9edb4 56
dflet 0:1e7b5dd9edb4 57 /* 2 LSB of the N2H_SYNC_PATTERN are for sequence number
dflet 0:1e7b5dd9edb4 58 only in SPI interface
dflet 0:1e7b5dd9edb4 59 support backward sync pattern */
dflet 0:1e7b5dd9edb4 60 #define N2H_SYNC_PATTERN_SEQ_NUM_BITS ((uint32_t)0x00000003) /* Bits 0..1 - use the 2 LBS for seq num */
dflet 0:1e7b5dd9edb4 61 #define N2H_SYNC_PATTERN_SEQ_NUM_EXISTS ((uint32_t)0x00000004) /* Bit 2 - sign that sequence number exists in the sync pattern */
dflet 0:1e7b5dd9edb4 62 #define N2H_SYNC_PATTERN_MASK ((uint32_t)0xFFFFFFF8) /* Bits 3..31 - constant SYNC PATTERN */
dflet 0:1e7b5dd9edb4 63 #define N2H_SYNC_SPI_BUGS_MASK ((uint32_t)0x7FFF7F7F) /* Bits 7,15,31 - ignore the SPI (8,16,32 bites bus) error bits */
dflet 0:1e7b5dd9edb4 64 #define BUF_SYNC_SPIM(pBuf) ((*(uint32_t *)(pBuf)) & N2H_SYNC_SPI_BUGS_MASK)
dflet 0:1e7b5dd9edb4 65 #define N2H_SYNC_SPIM (N2H_SYNC_PATTERN & N2H_SYNC_SPI_BUGS_MASK)
dflet 0:1e7b5dd9edb4 66 #define N2H_SYNC_SPIM_WITH_SEQ(TxSeqNum) ((N2H_SYNC_SPIM & N2H_SYNC_PATTERN_MASK) | N2H_SYNC_PATTERN_SEQ_NUM_EXISTS | ((TxSeqNum) & (N2H_SYNC_PATTERN_SEQ_NUM_BITS)))
dflet 0:1e7b5dd9edb4 67 #define MATCH_WOUT_SEQ_NUM(pBuf) ( BUF_SYNC_SPIM(pBuf) == N2H_SYNC_SPIM )
dflet 0:1e7b5dd9edb4 68 #define MATCH_WITH_SEQ_NUM(pBuf, TxSeqNum) ( BUF_SYNC_SPIM(pBuf) == (N2H_SYNC_SPIM_WITH_SEQ(TxSeqNum)) )
dflet 0:1e7b5dd9edb4 69 #define N2H_SYNC_PATTERN_MATCH(pBuf, TxSeqNum) \
dflet 0:1e7b5dd9edb4 70 ( \
dflet 0:1e7b5dd9edb4 71 ( (*((uint32_t *)pBuf) & N2H_SYNC_PATTERN_SEQ_NUM_EXISTS) && ( MATCH_WITH_SEQ_NUM(pBuf, TxSeqNum) ) ) || \
dflet 0:1e7b5dd9edb4 72 ( !(*((uint32_t *)pBuf) & N2H_SYNC_PATTERN_SEQ_NUM_EXISTS) && ( MATCH_WOUT_SEQ_NUM(pBuf ) ) ) \
dflet 0:1e7b5dd9edb4 73 )
dflet 0:1e7b5dd9edb4 74
dflet 0:1e7b5dd9edb4 75 #define OPCODE(_ptr) (((_SlResponseHeader_t *)(_ptr))->GenHeader.Opcode)
dflet 0:1e7b5dd9edb4 76 #define RSP_PAYLOAD_LEN(_ptr) (((_SlResponseHeader_t *)(_ptr))->GenHeader.Len - _SL_RESP_SPEC_HDR_SIZE)
dflet 0:1e7b5dd9edb4 77 #define SD(_ptr) (((_SocketAddrResponse_u *)(_ptr))->IpV4.sd)
dflet 0:1e7b5dd9edb4 78 /* Actual size of Recv/Recvfrom response data */
dflet 0:1e7b5dd9edb4 79 #define ACT_DATA_SIZE(_ptr) (((_SocketAddrResponse_u *)(_ptr))->IpV4.statusOrLen)
dflet 0:1e7b5dd9edb4 80
dflet 0:1e7b5dd9edb4 81 #define _SL_PROTOCOL_ALIGN_SIZE(msgLen) (((msgLen)+3) & (~3))
dflet 0:1e7b5dd9edb4 82 #define _SL_IS_PROTOCOL_ALIGNED_SIZE(msgLen) (!((msgLen) & 3))
dflet 0:1e7b5dd9edb4 83 #define _SL_PROTOCOL_CALC_LEN(pCmdCtrl,pCmdExt) ((pCmdExt) ? \
dflet 0:1e7b5dd9edb4 84 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen) + _SL_PROTOCOL_ALIGN_SIZE(pCmdExt->TxPayloadLen)) : \
dflet 0:1e7b5dd9edb4 85 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen)))
dflet 0:1e7b5dd9edb4 86
dflet 0:1e7b5dd9edb4 87
dflet 0:1e7b5dd9edb4 88 namespace mbed_cc3100 {
dflet 0:1e7b5dd9edb4 89
dflet 0:1e7b5dd9edb4 90 //class cc3100;
dflet 0:1e7b5dd9edb4 91
dflet 0:1e7b5dd9edb4 92 /*****************************************************************************/
dflet 0:1e7b5dd9edb4 93 /* Structure/Enum declarations */
dflet 0:1e7b5dd9edb4 94 /*****************************************************************************/
dflet 0:1e7b5dd9edb4 95 //typedef void(*_SlSpawnEntryFunc_t)(void* pValue);
dflet 0:1e7b5dd9edb4 96
dflet 0:1e7b5dd9edb4 97 typedef struct {
dflet 0:1e7b5dd9edb4 98 _SlOpcode_t Opcode;
dflet 0:1e7b5dd9edb4 99 _SlArgSize_t TxDescLen;
dflet 0:1e7b5dd9edb4 100 _SlArgSize_t RxDescLen;
dflet 0:1e7b5dd9edb4 101 } _SlCmdCtrl_t;
dflet 0:1e7b5dd9edb4 102
dflet 0:1e7b5dd9edb4 103 typedef struct {
dflet 0:1e7b5dd9edb4 104 uint16_t TxPayloadLen;
dflet 0:1e7b5dd9edb4 105 int16_t RxPayloadLen;
dflet 0:1e7b5dd9edb4 106 int16_t ActualRxPayloadLen;
dflet 0:1e7b5dd9edb4 107 uint8_t *pTxPayload;
dflet 0:1e7b5dd9edb4 108 uint8_t *pRxPayload;
dflet 0:1e7b5dd9edb4 109 } _SlCmdExt_t;
dflet 0:1e7b5dd9edb4 110
dflet 0:1e7b5dd9edb4 111
dflet 0:1e7b5dd9edb4 112 typedef struct _SlArgsData_t {
dflet 0:1e7b5dd9edb4 113 uint8_t *pArgs;
dflet 0:1e7b5dd9edb4 114 uint8_t *pData;
dflet 0:1e7b5dd9edb4 115 } _SlArgsData_t;
dflet 0:1e7b5dd9edb4 116
dflet 0:1e7b5dd9edb4 117 typedef struct {
dflet 0:1e7b5dd9edb4 118 _SlSyncObj_t SyncObj;
dflet 0:1e7b5dd9edb4 119 uint8_t *pRespArgs;
dflet 0:1e7b5dd9edb4 120 uint8_t ActionID;
dflet 0:1e7b5dd9edb4 121 uint8_t AdditionalData; /* use for socketID and one bit which indicate supprt IPV6 or not (1=support, 0 otherwise) */
dflet 0:1e7b5dd9edb4 122 uint8_t NextIndex;
dflet 0:1e7b5dd9edb4 123
dflet 0:1e7b5dd9edb4 124 } _SlPoolObj_t;
dflet 0:1e7b5dd9edb4 125
dflet 0:1e7b5dd9edb4 126
dflet 0:1e7b5dd9edb4 127 typedef enum {
dflet 0:1e7b5dd9edb4 128 SOCKET_0,
dflet 0:1e7b5dd9edb4 129 SOCKET_1,
dflet 0:1e7b5dd9edb4 130 SOCKET_2,
dflet 0:1e7b5dd9edb4 131 SOCKET_3,
dflet 0:1e7b5dd9edb4 132 SOCKET_4,
dflet 0:1e7b5dd9edb4 133 SOCKET_5,
dflet 0:1e7b5dd9edb4 134 SOCKET_6,
dflet 0:1e7b5dd9edb4 135 SOCKET_7,
dflet 0:1e7b5dd9edb4 136 MAX_SOCKET_ENUM_IDX,
dflet 0:1e7b5dd9edb4 137 #ifndef SL_TINY_EXT
dflet 0:1e7b5dd9edb4 138 ACCEPT_ID = MAX_SOCKET_ENUM_IDX,
dflet 0:1e7b5dd9edb4 139 CONNECT_ID,
dflet 0:1e7b5dd9edb4 140 #else
dflet 0:1e7b5dd9edb4 141 CONNECT_ID = MAX_SOCKET_ENUM_IDX,
dflet 0:1e7b5dd9edb4 142 #endif
dflet 0:1e7b5dd9edb4 143 #ifndef SL_TINY_EXT
dflet 0:1e7b5dd9edb4 144 SELECT_ID,
dflet 0:1e7b5dd9edb4 145 #endif
dflet 0:1e7b5dd9edb4 146 GETHOSYBYNAME_ID,
dflet 0:1e7b5dd9edb4 147 #ifndef SL_TINY_EXT
dflet 0:1e7b5dd9edb4 148 GETHOSYBYSERVICE_ID,
dflet 0:1e7b5dd9edb4 149 PING_ID,
dflet 0:1e7b5dd9edb4 150 #endif
dflet 0:1e7b5dd9edb4 151 START_STOP_ID,
dflet 0:1e7b5dd9edb4 152 RECV_ID
dflet 0:1e7b5dd9edb4 153 } _SlActionID_e;
dflet 0:1e7b5dd9edb4 154
dflet 0:1e7b5dd9edb4 155 typedef struct _SlActionLookup_t {
dflet 0:1e7b5dd9edb4 156 uint8_t ActionID;
dflet 0:1e7b5dd9edb4 157 uint16_t ActionAsyncOpcode;
dflet 0:1e7b5dd9edb4 158 _SlSpawnEntryFunc_t AsyncEventHandler;
dflet 0:1e7b5dd9edb4 159
dflet 0:1e7b5dd9edb4 160 } _SlActionLookup_t;
dflet 0:1e7b5dd9edb4 161
dflet 0:1e7b5dd9edb4 162
dflet 0:1e7b5dd9edb4 163 typedef struct {
dflet 0:1e7b5dd9edb4 164 uint8_t TxPoolCnt;
dflet 0:1e7b5dd9edb4 165 _SlLockObj_t TxLockObj;
dflet 0:1e7b5dd9edb4 166 _SlSyncObj_t TxSyncObj;
dflet 0:1e7b5dd9edb4 167 } _SlFlowContCB_t;
dflet 0:1e7b5dd9edb4 168
dflet 0:1e7b5dd9edb4 169 typedef enum {
dflet 0:1e7b5dd9edb4 170 RECV_RESP_CLASS,
dflet 0:1e7b5dd9edb4 171 CMD_RESP_CLASS,
dflet 0:1e7b5dd9edb4 172 ASYNC_EVT_CLASS,
dflet 0:1e7b5dd9edb4 173 DUMMY_MSG_CLASS
dflet 0:1e7b5dd9edb4 174 } _SlRxMsgClass_e;
dflet 0:1e7b5dd9edb4 175
dflet 0:1e7b5dd9edb4 176 typedef struct {
dflet 0:1e7b5dd9edb4 177 uint8_t *pAsyncBuf; /* place to write pointer to buffer with CmdResp's Header + Arguments */
dflet 0:1e7b5dd9edb4 178 uint8_t ActionIndex;
dflet 0:1e7b5dd9edb4 179 _SlSpawnEntryFunc_t AsyncEvtHandler; /* place to write pointer to AsyncEvent handler (calc-ed by Opcode) */
dflet 0:1e7b5dd9edb4 180 _SlRxMsgClass_e RxMsgClass; /* type of Rx message */
dflet 0:1e7b5dd9edb4 181 } AsyncExt_t;
dflet 0:1e7b5dd9edb4 182
dflet 0:1e7b5dd9edb4 183 typedef struct {
dflet 0:1e7b5dd9edb4 184 _SlCmdCtrl_t *pCmdCtrl;
dflet 0:1e7b5dd9edb4 185 uint8_t *pTxRxDescBuff;
dflet 0:1e7b5dd9edb4 186 _SlCmdExt_t *pCmdExt;
dflet 0:1e7b5dd9edb4 187 AsyncExt_t AsyncExt;
dflet 0:1e7b5dd9edb4 188 } _SlFunctionParams_t;
dflet 0:1e7b5dd9edb4 189
dflet 0:1e7b5dd9edb4 190 typedef void (*P_INIT_CALLBACK)(uint32_t Status);
dflet 0:1e7b5dd9edb4 191
dflet 0:1e7b5dd9edb4 192 typedef struct {
dflet 0:1e7b5dd9edb4 193 _SlFd_t FD;
dflet 0:1e7b5dd9edb4 194 _SlLockObj_t GlobalLockObj;
dflet 0:1e7b5dd9edb4 195 _SlCommandHeader_t TempProtocolHeader;
dflet 0:1e7b5dd9edb4 196 P_INIT_CALLBACK pInitCallback;
dflet 0:1e7b5dd9edb4 197
dflet 0:1e7b5dd9edb4 198 _SlPoolObj_t ObjPool[MAX_CONCURRENT_ACTIONS];
dflet 0:1e7b5dd9edb4 199 uint8_t FreePoolIdx;
dflet 0:1e7b5dd9edb4 200 uint8_t PendingPoolIdx;
dflet 0:1e7b5dd9edb4 201 uint8_t ActivePoolIdx;
dflet 0:1e7b5dd9edb4 202 uint32_t ActiveActionsBitmap;
dflet 0:1e7b5dd9edb4 203 _SlLockObj_t ProtectionLockObj;
dflet 0:1e7b5dd9edb4 204
dflet 0:1e7b5dd9edb4 205 _SlSyncObj_t CmdSyncObj;
dflet 0:1e7b5dd9edb4 206 uint8_t IsCmdRespWaited;
dflet 0:1e7b5dd9edb4 207 _SlFlowContCB_t FlowContCB;
dflet 0:1e7b5dd9edb4 208 uint8_t TxSeqNum;
dflet 0:1e7b5dd9edb4 209 uint8_t RxDoneCnt;
dflet 0:1e7b5dd9edb4 210 uint8_t SocketNonBlocking;
dflet 0:1e7b5dd9edb4 211 uint8_t SocketTXFailure;
dflet 0:1e7b5dd9edb4 212 /* for stack reduction the parameters are globals */
dflet 0:1e7b5dd9edb4 213 _SlFunctionParams_t FunctionParams;
dflet 0:1e7b5dd9edb4 214
dflet 0:1e7b5dd9edb4 215 uint8_t ActionIndex;
dflet 0:1e7b5dd9edb4 216 }_SlDriverCb_t;
dflet 0:1e7b5dd9edb4 217
dflet 0:1e7b5dd9edb4 218 extern volatile uint8_t RxIrqCnt;
dflet 0:1e7b5dd9edb4 219
dflet 0:1e7b5dd9edb4 220 extern _SlDriverCb_t* g_pCB;
dflet 0:1e7b5dd9edb4 221 typedef uint8_t _SlSd_t;
dflet 0:1e7b5dd9edb4 222
dflet 0:1e7b5dd9edb4 223 class cc3100_driver
dflet 0:1e7b5dd9edb4 224 {
dflet 0:1e7b5dd9edb4 225
dflet 0:1e7b5dd9edb4 226 public:
dflet 0:1e7b5dd9edb4 227
dflet 0:1e7b5dd9edb4 228 #ifndef SL_PLATFORM_MULTI_THREADED
dflet 0:1e7b5dd9edb4 229 cc3100_driver(cc3100_spi &spi, cc3100_nonos &nonos, cc3100_netapp &netapp, cc3100_flowcont &flowcont);
dflet 0:1e7b5dd9edb4 230 #else
dflet 0:1e7b5dd9edb4 231 cc3100_driver(cc3100_spi &spi, cc3100_netapp &netapp, cc3100_flowcont &flowcont);
dflet 0:1e7b5dd9edb4 232 #endif
dflet 0:1e7b5dd9edb4 233 ~cc3100_driver();
dflet 0:1e7b5dd9edb4 234
dflet 0:1e7b5dd9edb4 235
dflet 0:1e7b5dd9edb4 236 /*****************************************************************************/
dflet 0:1e7b5dd9edb4 237 /* Function prototypes */
dflet 0:1e7b5dd9edb4 238 /*****************************************************************************/
dflet 0:1e7b5dd9edb4 239 typedef _SlDriverCb_t pDriver;
dflet 0:1e7b5dd9edb4 240
dflet 0:1e7b5dd9edb4 241 uint8_t _SlDrvProtectAsyncRespSetting(uint8_t *pAsyncRsp, uint8_t ActionID, uint8_t SocketID);
dflet 0:1e7b5dd9edb4 242
dflet 0:1e7b5dd9edb4 243 bool _SL_PENDING_RX_MSG(pDriver* pDriverCB);
dflet 0:1e7b5dd9edb4 244
dflet 0:1e7b5dd9edb4 245 void _SlDrvDriverCBInit(void);
dflet 0:1e7b5dd9edb4 246
dflet 0:1e7b5dd9edb4 247 void _SlDrvDriverCBDeinit(void);
dflet 0:1e7b5dd9edb4 248
dflet 0:1e7b5dd9edb4 249 void _SlDrvRxIrqHandler(void *pValue);
dflet 0:1e7b5dd9edb4 250
dflet 0:1e7b5dd9edb4 251 _SlReturnVal_t _SlDrvCmdOp(_SlCmdCtrl_t *pCmdCtrl , void* pTxRxDescBuff , _SlCmdExt_t* pCmdExt);
dflet 0:1e7b5dd9edb4 252
dflet 0:1e7b5dd9edb4 253 _SlReturnVal_t _SlDrvCmdSend(_SlCmdCtrl_t *pCmdCtrl , void* pTxRxDescBuff , _SlCmdExt_t* pCmdExt);
dflet 0:1e7b5dd9edb4 254
dflet 0:1e7b5dd9edb4 255 _SlReturnVal_t _SlDrvDataReadOp(_SlSd_t Sd, _SlCmdCtrl_t *pCmdCtrl , void* pTxRxDescBuff , _SlCmdExt_t* pCmdExt);
dflet 0:1e7b5dd9edb4 256
dflet 0:1e7b5dd9edb4 257 _SlReturnVal_t _SlDrvDataWriteOp(_SlSd_t Sd, _SlCmdCtrl_t *pCmdCtrl , void* pTxRxDescBuff , _SlCmdExt_t* pCmdExt);
dflet 0:1e7b5dd9edb4 258 #ifndef SL_TINY_EXT
dflet 0:1e7b5dd9edb4 259 int16_t _SlDrvBasicCmd(_SlOpcode_t Opcode);
dflet 0:1e7b5dd9edb4 260 #endif
dflet 0:1e7b5dd9edb4 261 uint8_t _SlDrvWaitForPoolObj(uint8_t ActionID, uint8_t SocketID);
dflet 0:1e7b5dd9edb4 262
dflet 0:1e7b5dd9edb4 263 void _SlDrvReleasePoolObj(uint8_t pObj);
dflet 0:1e7b5dd9edb4 264
dflet 0:1e7b5dd9edb4 265 // void _SlDrvObjInit(void);
dflet 0:1e7b5dd9edb4 266
dflet 0:1e7b5dd9edb4 267 _SlReturnVal_t _SlDrvMsgRead(void);
dflet 0:1e7b5dd9edb4 268
dflet 0:1e7b5dd9edb4 269 _SlReturnVal_t _SlDrvMsgWrite(_SlCmdCtrl_t *pCmdCtrl,_SlCmdExt_t *pCmdExt, uint8_t *pTxRxDescBuff);
dflet 0:1e7b5dd9edb4 270
dflet 0:1e7b5dd9edb4 271 // _SlReturnVal_t _SlDrvMsgWrite(void);
dflet 0:1e7b5dd9edb4 272
dflet 0:1e7b5dd9edb4 273 _SlReturnVal_t _SlDrvMsgReadCmdCtx(void);
dflet 0:1e7b5dd9edb4 274
dflet 0:1e7b5dd9edb4 275 _SlReturnVal_t _SlDrvMsgReadSpawnCtx_(void *pValue);
dflet 0:1e7b5dd9edb4 276
dflet 0:1e7b5dd9edb4 277 void _SlDrvClassifyRxMsg(_SlOpcode_t Opcode );
dflet 0:1e7b5dd9edb4 278
dflet 0:1e7b5dd9edb4 279 _SlReturnVal_t _SlDrvRxHdrRead(uint8_t *pBuf, uint8_t *pAlignSize);
dflet 0:1e7b5dd9edb4 280
dflet 0:1e7b5dd9edb4 281 void _SlDrvShiftDWord(uint8_t *pBuf);
dflet 0:1e7b5dd9edb4 282
dflet 0:1e7b5dd9edb4 283 void _SlAsyncEventGenericHandler(void);
dflet 0:1e7b5dd9edb4 284
dflet 0:1e7b5dd9edb4 285 void _SlDrvObjDeInit(void);
dflet 0:1e7b5dd9edb4 286
dflet 0:1e7b5dd9edb4 287 void _SlRemoveFromList(uint8_t* ListIndex, uint8_t ItemIndex);
dflet 0:1e7b5dd9edb4 288
dflet 0:1e7b5dd9edb4 289 _SlReturnVal_t _SlFindAndSetActiveObj(_SlOpcode_t Opcode, uint8_t Sd);
dflet 0:1e7b5dd9edb4 290
dflet 0:1e7b5dd9edb4 291 uint16_t _SlDrvAlignSize(uint16_t msgLen);
dflet 0:1e7b5dd9edb4 292 void _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj);
dflet 0:1e7b5dd9edb4 293 void _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj);
dflet 0:1e7b5dd9edb4 294 void _SlDrvObjLock(_SlLockObj_t *pLockObj, _SlTime_t Timeout);
dflet 0:1e7b5dd9edb4 295 void _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj);
dflet 0:1e7b5dd9edb4 296 void _SlDrvObjUnLock(_SlLockObj_t *pLockObj);
dflet 0:1e7b5dd9edb4 297 void _SlDrvProtectionObjLockWaitForever();
dflet 0:1e7b5dd9edb4 298 void _SlDrvProtectionObjUnLock();
dflet 0:1e7b5dd9edb4 299 void _SlDrvMemZero(void* Addr, uint16_t size);
dflet 0:1e7b5dd9edb4 300 void _SlDrvResetCmdExt(_SlCmdExt_t* pCmdExt);
dflet 0:1e7b5dd9edb4 301
dflet 0:1e7b5dd9edb4 302
dflet 0:1e7b5dd9edb4 303 private:
dflet 0:1e7b5dd9edb4 304
dflet 0:1e7b5dd9edb4 305 cc3100_spi &_spi;
dflet 0:1e7b5dd9edb4 306 #ifndef SL_PLATFORM_MULTI_THREADED
dflet 0:1e7b5dd9edb4 307 cc3100_nonos &_nonos;
dflet 0:1e7b5dd9edb4 308 #endif
dflet 0:1e7b5dd9edb4 309 cc3100_netapp &_netapp;
dflet 0:1e7b5dd9edb4 310 cc3100_flowcont &_flowcont;
dflet 0:1e7b5dd9edb4 311
dflet 0:1e7b5dd9edb4 312 };//class
dflet 0:1e7b5dd9edb4 313
dflet 0:1e7b5dd9edb4 314
dflet 0:1e7b5dd9edb4 315
dflet 0:1e7b5dd9edb4 316 }//namespace mbed_cc3100
dflet 0:1e7b5dd9edb4 317
dflet 0:1e7b5dd9edb4 318 #endif /* __DRIVER_INT_H__ */
dflet 0:1e7b5dd9edb4 319