15 #ifndef __DRIVER_INT_H__
16 #define __DRIVER_INT_H__
18 #include <ti/drivers/net/wifi/source/protocol.h>
20 #define TIMEOUT_STATE_EXPIRY (0)
21 #define TIMEOUT_ONE_MORE_SHOT (1)
22 #define TIMEOUT_STATE_INIT_VAL (2)
25 #ifndef SL_DRIVER_TIMEOUT_SHORT
26 #define SL_DRIVER_TIMEOUT_SHORT (10000)
28 #ifndef SL_DRIVER_TIMEOUT_LONG
29 #define SL_DRIVER_TIMEOUT_LONG (65535)
32 #define INIT_COMPLETE_TIMEOUT SL_DRIVER_TIMEOUT_LONG
33 #define STOP_DEVICE_TIMEOUT SL_DRIVER_TIMEOUT_LONG
35 #ifndef SYNC_PATTERN_TIMEOUT_IN_MSEC
36 #define SYNC_PATTERN_TIMEOUT_IN_MSEC (50)
42 #ifndef CPU_FREQ_IN_MHZ
43 #define CPU_FREQ_IN_MHZ (200)
45 #define USEC_DELAY (50)
47 #define SL_DRV_PROTECTION_OBJ_UNLOCK() (void)_SlDrvProtectionObjUnLock();
48 #define SL_DRV_PROTECTION_OBJ_LOCK_FOREVER() (void)_SlDrvProtectionObjLockWaitForever();
49 #define SL_DRV_OBJ_UNLOCK(pObj) (void)_SlDrvObjUnLock(pObj);
50 #define SL_DRV_OBJ_LOCK_FOREVER(pObj) (void)_SlDrvObjLockWaitForever(pObj);
51 #define SL_DRV_SYNC_OBJ_SIGNAL(pObj) (void)_SlDrvSyncObjSignal(pObj);
52 #define SL_DRV_SYNC_OBJ_CLEAR(pObj) (void)sl_SyncObjWait(pObj,SL_OS_NO_WAIT);
56 #define SL_DRV_SYNC_OBJ_WAIT_FOREVER(SyncObj) (void)_SlDrvSyncObjWaitForever(SyncObj);
57 #define SL_DRV_LOCK_GLOBAL_LOCK_FOREVER(Flags) (void)_SlDrvObjGlobalLockWaitForever(Flags);
58 #define SL_DRV_LOCK_GLOBAL_UNLOCK(bDecrementApiInProgress) (void)_SlDrvGlobalObjUnLock(bDecrementApiInProgress);
60 #define SL_DRV_SYNC_OBJ_WAIT_FOREVER(SyncObj) { \
61 if (SL_API_ABORTED == _SlDrvSyncObjWaitForever(SyncObj)) \
63 return SL_API_ABORTED; \
66 #define SL_DRV_SYNC_OBJ_WAIT_TIMEOUT(SyncObj, timeoutVal, opcode) { \
67 if (SL_API_ABORTED == _SlDrvSyncObjWaitTimeout(SyncObj, timeoutVal, opcode)) \
69 return SL_API_ABORTED; \
72 #define SL_DRV_LOCK_GLOBAL_LOCK_FOREVER(Flags) { \
73 _SlReturnVal_t retVal; \
75 retVal = _SlDrvObjGlobalLockWaitForever(Flags); \
82 #define SL_DRV_LOCK_GLOBAL_UNLOCK(bDecrementApiInProgress) { \
83 _SlReturnVal_t retVal; \
85 retVal = _SlDrvGlobalObjUnLock(bDecrementApiInProgress); \
93 #define SL_IS_RESTART_REQUIRED (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_RESTART_REQUIRED)
94 #define SL_IS_DEVICE_STARTED (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_DEVICE_STARTED)
95 #define SL_IS_DEVICE_LOCKED (g_SlDeviceStatus & _SL_DEV_STATUS_BIT_LOCKED)
96 #define SL_IS_PROVISIONING_ACTIVE (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE))
97 #define SL_IS_PROVISIONING_INITIATED_BY_USER (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED))
98 #define SL_IS_PROVISIONING_API_ALLOWED (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_ENABLE_API))
99 #define SL_IS_DEVICE_STOP_IN_PROGRESS (!!(g_SlDeviceStatus & _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS))
100 #define SL_IS_DEVICE_START_IN_PROGRESS (!!(g_SlDeviceStatus & _SL_DRV_STATUS_BIT_START_IN_PROGRESS))
102 #define SL_IS_PROVISIONING_IN_PROGRESS (!!(g_SlDeviceStatus & ( _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED | _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE)))
110 #define SL_IS_COMMAND_ALLOWED ((g_SlDeviceStatus & (_SL_DRV_STATUS_BIT_DEVICE_STARTED | \
111 _SL_DRV_STATUS_BIT_RESTART_REQUIRED | \
112 _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE | \
113 _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED | \
114 _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS | \
115 _SL_DEV_STATUS_BIT_LOCKED)) == 0x200)
117 #define SL_SET_RESTART_REQUIRED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_RESTART_REQUIRED)
118 #define SL_UNSET_RESTART_REQUIRED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_RESTART_REQUIRED))
119 #define SL_SET_DEVICE_STARTED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_DEVICE_STARTED)
120 #define SL_UNSET_DEVICE_STARTED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_DEVICE_STARTED))
122 #define SL_SET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS)
123 #define SL_UNSET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_STOP_IN_PROGRESS))
126 #define SL_SET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_START_IN_PROGRESS)
127 #define SL_UNSET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_START_IN_PROGRESS))
130 #define SL_SET_DEVICE_STATUS(x) (g_SlDeviceStatus = ((g_SlDeviceStatus & 0xFF00) | (_u16)x) )
132 #define _SL_PENDING_RX_MSG(pDriverCB) (RxIrqCnt != (pDriverCB)->RxDoneCnt)
143 _u32 DeltaTicksReminder;
144 _i32 Total10MSecUnits;
157 _SlArgSize_t TxDescLen;
158 _SlArgSize_t RxDescLen;
166 _i16 ActualRxPayloadLen;
182 _SlSyncObj_t SyncObj;
211 ACCEPT_ID = MAX_SOCKET_ENUM_IDX,
214 CONNECT_ID = MAX_SOCKET_ENUM_IDX,
235 _u16 ActionAsyncOpcode;
236 _SlSpawnEntryFunc_t AsyncEventHandler;
244 _u16 MinTxPayloadSize;
245 _SlLockObj_t TxLockObj;
246 _SlSyncObj_t TxSyncObj;
261 _SlSpawnEntryFunc_t AsyncEvtHandler;
262 _SlRxMsgClass_e RxMsgClass;
279 SOCK_TRIGGER_WAITING_FOR_RESP,
280 SOCK_TRIGGER_RESP_RECEIVED
282 } _SlSockTriggerState_e;
287 _SlSockTriggerState_e State;
298 #ifdef SL_INC_INTERNAL_ERRNO
300 #define SL_DRVER_ERRNO_FLAGS_UNREAD (1)
304 #ifdef SL_PLATFORM_MULTI_THREADED
308 #ifdef SL_PLATFORM_MULTI_THREADED
319 P_INIT_CALLBACK pInitCallback;
325 _u32 ActiveActionsBitmap;
326 _SlLockObj_t ProtectionLockObj;
328 _SlSyncObj_t CmdSyncObj;
333 _u16 SocketNonBlocking;
334 _u16 SocketTXFailure;
339 _i8 ApiInProgressCnt;
341 #if ((defined(SL_RUNTIME_EVENT_REGISTERATION) || defined(slcb_SocketTriggerEventHandler)))
344 #ifdef SL_INC_INTERNAL_ERRNO
346 #ifdef SL_PLATFORM_MULTI_THREADED
347 _SlLockObj_t ErrnoLockObj;
354 extern _volatile _u8 RxIrqCnt;
356 extern _SlLockObj_t GlobalLockObj;
357 extern _u16 g_SlDeviceStatus;
360 extern P_SL_DEV_PING_CALLBACK pPingCallBackFunc;
365 extern _SlReturnVal_t _SlDrvDriverCBInit(
void);
366 extern _SlReturnVal_t _SlDrvDriverCBDeinit(
void);
367 extern _SlReturnVal_t _SlDrvRxIrqHandler(
void *pValue);
369 extern _SlReturnVal_t _SlDrvCmdSend_noLock(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
371 extern _SlReturnVal_t _SlDrvDataReadOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
372 extern _SlReturnVal_t _SlDrvDataWriteOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
373 extern _SlReturnVal_t _SlDeviceHandleAsync_InitComplete(
void *pVoidBuf);
374 extern _SlReturnVal_t _SlSocketHandleAsync_Connect(
void *pVoidBuf);
375 extern _SlReturnVal_t _SlSocketHandleAsync_Close(
void *pVoidBuf);
376 extern _SlReturnVal_t _SlDrvGlobalObjUnLock(_u8 bDecrementApiInProgress);
377 extern _SlReturnVal_t _SlDrvDriverIsApiAllowed(_u16 Silo);
378 extern _SlReturnVal_t _SlDrvMsgReadSpawnCtx(
void *pValue);
382 extern _i16 _SlDrvBasicCmd(_SlOpcode_t Opcode);
383 extern _SlReturnVal_t _SlSocketHandleAsync_Accept(
void *pVoidBuf);
384 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByService(
void *pVoidBuf);
385 extern _SlReturnVal_t _SlSocketHandleAsync_Select(
void *pVoidBuf);
387 #ifdef slcb_GetTimestamp
388 extern void _SlDrvStartMeasureTimeout(
_SlTimeoutParams_t *pTimeoutInfo, _u32 TimeoutInMsec);
390 extern void _SlDrvSleep(_u16 DurationInMsec);
396 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByName(
void *pVoidBuf);
397 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByAddr(
void *pVoidBuf);
398 extern _SlReturnVal_t _SlNetAppHandleAsync_PingResponse(
void *pVoidBuf);
399 extern _SlReturnVal_t _SlNetAppEventHandler(
void* pArgs);
401 #if defined(slcb_NetAppHttpServerHdlr) || defined(EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS)
405 #if defined(slcb_NetAppRequestHdlr) || defined(EXT_LIB_REGISTERED_NETAPP_REQUEST_EVENTS)
409 extern void _SlDeviceHandleAsync_Stop(
void *pVoidBuf);
410 extern void _SlNetUtilHandleAsync_Cmd(
void *pVoidBuf);
411 extern _u8 _SlDrvWaitForPoolObj(_u8 ActionID, _u8 SocketID);
412 extern void _SlDrvReleasePoolObj(_u8 pObj);
413 extern _u16 _SlDrvAlignSize(_u16 msgLen);
414 extern _u8 _SlDrvProtectAsyncRespSetting(_u8 *pAsyncRsp, _SlActionID_e ActionID, _u8 SocketID);
415 extern void _SlNetAppHandleAsync_NetAppReceive(
void *pVoidBuf);
418 extern _SlReturnVal_t _SlDeviceEventHandler(
void* pEventInfo);
419 extern _SlReturnVal_t _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj);
420 extern _SlReturnVal_t _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj);
421 extern _SlReturnVal_t _SlDrvSyncObjWaitTimeout(_SlSyncObj_t *pSyncObj,
423 _u32 asyncEventOpcode);
425 extern _SlReturnVal_t _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj);
426 extern _SlReturnVal_t _SlDrvObjLock(_SlLockObj_t *pLockObj, _SlTime_t Timeout);
427 extern _SlReturnVal_t _SlDrvProtectionObjLockWaitForever(
void);
428 extern _SlReturnVal_t _SlDrvObjUnLock(_SlLockObj_t *pLockObj);
429 extern _SlReturnVal_t _SlDrvProtectionObjUnLock(
void);
431 extern void _SlDrvMemZero(
void* Addr, _u16 size);
432 extern void _SlDrvResetCmdExt(
_SlCmdExt_t* pCmdExt);
434 extern _i8 _SlDrvIsApiInProgress(
void);
435 extern void _SlDrvHandleResetRequest(
const void* pIfHdl, _i8* pDevName);
438 extern void _SlDrvHandleFatalError(_u32 errorId, _u32 info1, _u32 info2);
439 extern void _SlDrvHandleAssert(
void);
443 _i32 _SlDrvSetErrno(_i32 Errno);
444 _i32* _SlDrvallocateErrno(_i32 Errno);
446 #ifndef SL_INC_INTERNAL_ERRNO
447 extern int slcb_SetErrno(
int Errno);
450 #define _SL_PROTOCOL_ALIGN_SIZE(msgLen) (((msgLen)+3) & (~3))
451 #define _SL_IS_PROTOCOL_ALIGNED_SIZE(msgLen) (!((msgLen) & 3))
454 #define _SL_PROTOCOL_CALC_LEN(pCmdCtrl,pCmdExt) ((pCmdExt) ? \
455 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen) + _SL_PROTOCOL_ALIGN_SIZE(pCmdExt->TxPayload1Len + pCmdExt->TxPayload2Len)) : \
456 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen)))