Update revision to use TI's mqtt and Freertos.

Dependencies:   mbed client server

Fork of cc3100_Test_mqtt_CM3 by David Fletcher

Committer:
dflet
Date:
Thu Sep 03 14:02:37 2015 +0000
Revision:
3:a8c249046181
SPI Mode change 1 to 0

Who changed what in which revision?

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