37 #ifndef __DRIVER_INT_H__ 38 #define __DRIVER_INT_H__ 44 #include <ti/drivers/net/wifi/source/protocol.h> 46 #define TIMEOUT_STATE_EXPIRY (0) 47 #define TIMEOUT_ONE_MORE_SHOT (1) 48 #define TIMEOUT_STATE_INIT_VAL (2) 51 #ifndef SL_DRIVER_TIMEOUT_SHORT 52 #define SL_DRIVER_TIMEOUT_SHORT (10000) 54 #ifndef SL_DRIVER_TIMEOUT_LONG 55 #define SL_DRIVER_TIMEOUT_LONG (65535) 58 #define INIT_COMPLETE_TIMEOUT SL_DRIVER_TIMEOUT_LONG 59 #define STOP_DEVICE_TIMEOUT SL_DRIVER_TIMEOUT_LONG 61 #ifndef SYNC_PATTERN_TIMEOUT_IN_MSEC 62 #define SYNC_PATTERN_TIMEOUT_IN_MSEC (50) 65 #define GLOBAL_LOCK_FLAGS_NONE (0x0) 66 #define GLOBAL_LOCK_FLAGS_UPDATE_API_IN_PROGRESS (0x1) 67 #define GLOBAL_LOCK_FLAGS_PROVISIONING_STOP_API (0x2) 68 #define GLOBAL_LOCK_FLAGS_STARTING_DEVICE (0x4) 73 #ifndef CPU_FREQ_IN_MHZ 74 #define CPU_FREQ_IN_MHZ (200) 76 #define USEC_DELAY (50) 78 #define SL_DRV_PROTECTION_OBJ_UNLOCK() LOCK_OK_CHECK(_SlDrvProtectionObjUnLock()); 79 #define SL_DRV_PROTECTION_OBJ_LOCK_FOREVER() LOCK_OK_CHECK(_SlDrvProtectionObjLockWaitForever()); 80 #define SL_DRV_OBJ_UNLOCK(pObj) LOCK_OK_CHECK(_SlDrvObjUnLock(pObj)); 81 #define SL_DRV_OBJ_LOCK_FOREVER(pObj) LOCK_OK_CHECK(_SlDrvObjLockWaitForever(pObj)); 82 #define SL_DRV_SYNC_OBJ_SIGNAL(pObj) _SlDrvSyncObjSignal(pObj); 83 #define SL_DRV_SYNC_OBJ_SIGNAL_FROM_IRQ(pObj) sl_SyncObjSignalFromIRQ(pObj); 84 #define SL_DRV_SYNC_OBJ_CLEAR(pObj) sl_SyncObjWait(pObj,SL_OS_NO_WAIT); 86 #define SL_DRV_SYNC_OBJ_WAIT_FOREVER(SyncObj) { \ 87 if (SL_API_ABORTED == _SlDrvSyncObjWaitForever(SyncObj)) \ 89 return SL_API_ABORTED; \ 92 #define SL_DRV_SYNC_OBJ_WAIT_TIMEOUT(SyncObj, timeoutVal, opcode) { \ 93 if (SL_API_ABORTED == _SlDrvSyncObjWaitTimeout(SyncObj, timeoutVal, opcode)) \ 95 _SlDrvReleasePoolObj(g_pCB->FunctionParams.AsyncExt.ActionIndex); \ 96 return SL_API_ABORTED; \ 99 #define SL_DRV_LOCK_GLOBAL_LOCK_FOREVER(Flags) { \ 100 _SlReturnVal_t retVal; \ 102 retVal = _SlDrvObjGlobalLockWaitForever(Flags); \ 109 #define SL_DRV_LOCK_GLOBAL_UNLOCK(bDecrementApiInProgress) { \ 110 _SlReturnVal_t retVal; \ 112 retVal = _SlDrvGlobalObjUnLock(bDecrementApiInProgress); \ 120 #define SL_IS_RESTART_REQUIRED (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_RESTART_REQUIRED) 121 #define SL_IS_DEVICE_STARTED (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_DEVICE_STARTED) 122 #define SL_IS_DEVICE_LOCKED (g_SlDeviceStatus & _SL_DEV_STATUS_BIT_LOCKED) 123 #define SL_IS_PROVISIONING_ACTIVE (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE)) 124 #define SL_IS_PROVISIONING_INITIATED_BY_USER (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED)) 125 #define SL_IS_PROVISIONING_API_ALLOWED (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_ENABLE_API)) 126 #define SL_IS_DEVICE_STOP_IN_PROGRESS (!!(g_SlDeviceStatus & _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS)) 127 #define SL_IS_DEVICE_START_IN_PROGRESS (!!(g_SlDeviceStatus & _SL_DRV_STATUS_BIT_START_IN_PROGRESS)) 129 #define SL_IS_PROVISIONING_IN_PROGRESS (!!(g_SlDeviceStatus & ( _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED | _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE))) 131 #define SL_IS_WLAN_RX_STAT_IN_PROGRESS (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_RX_STAT_IN_PROGRESS) 132 #define SL_IS_DEVICE_STAT_IN_PROGRESS (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_DEVICE_STAT_IN_PROGRESS) 142 #define SL_IS_COMMAND_ALLOWED ((g_SlDeviceStatus & (_SL_DRV_STATUS_BIT_DEVICE_STARTED | \ 143 _SL_DRV_STATUS_BIT_RESTART_REQUIRED | \ 144 _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE | \ 145 _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED | \ 146 _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS | \ 147 _SL_DEV_STATUS_BIT_LOCKED)) == 0x200) 149 #define SL_IS_GLOBAL_LOCK_INIT (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_GLOBAL_LOCK_INIT) 150 #define SL_SET_GLOBAL_LOCK_INIT (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_GLOBAL_LOCK_INIT) 151 #define SL_UNSET_GLOBAL_LOCK_INIT (g_SlDeviceStatus &= (~ _SL_DRV_STATUS_BIT_GLOBAL_LOCK_INIT)) 153 #define SL_SET_RESTART_REQUIRED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_RESTART_REQUIRED) 154 #define SL_UNSET_RESTART_REQUIRED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_RESTART_REQUIRED)) 155 #define SL_SET_DEVICE_STARTED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_DEVICE_STARTED) 156 #define SL_UNSET_DEVICE_STARTED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_DEVICE_STARTED)) 158 #define SL_SET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS) 159 #define SL_UNSET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_STOP_IN_PROGRESS)) 162 #define SL_SET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_START_IN_PROGRESS) 163 #define SL_UNSET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_START_IN_PROGRESS)) 168 #define SL_SET_WLAN_RX_STAT_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_RX_STAT_IN_PROGRESS) 169 #define SL_UNSET_WLAN_RX_STAT_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_RX_STAT_IN_PROGRESS)) 172 #define SL_SET_DEVICE_STAT_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_DEVICE_STAT_IN_PROGRESS) 173 #define SL_UNSET_DEVICE_STAT_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_DEVICE_STAT_IN_PROGRESS)) 178 #define SL_SET_DEVICE_STATUS(x) (g_SlDeviceStatus = ((g_SlDeviceStatus & 0xFF00) | (_u16)x) ) 180 #define _SL_PENDING_RX_MSG(pDriverCB) (RxIrqCnt != (pDriverCB)->RxDoneCnt) 188 _SlSpawnEntryFunc_t AsyncHndlr;
200 _u32 DeltaTicksReminder;
201 _i32 Total10MSecUnits;
213 _SlArgSize_t TxDescLen;
214 _SlArgSize_t RxDescLen;
222 _i16 ActualRxPayloadLen;
236 _SlSyncObj_t SyncObj;
262 ACCEPT_ID = MAX_SOCKET_ENUM_IDX,
280 _u16 ActionAsyncOpcode;
281 _SlSpawnEntryFunc_t AsyncEventHandler;
288 _u16 MinTxPayloadSize;
289 _SlLockObj_t TxLockObj;
290 _SlSyncObj_t TxSyncObj;
298 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 299 MULTI_SELECT_RESP_CLASS,
307 _SlSpawnEntryFunc_t AsyncEvtHandler;
308 _SlRxMsgClass_e RxMsgClass;
321 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 340 _SlSyncObj_t SelectSyncObj;
341 _SlLockObj_t SelectLockObj;
350 SOCK_TRIGGER_WAITING_FOR_RESP,
351 SOCK_TRIGGER_RESP_RECEIVED
352 } _SlSockTriggerState_e;
356 _SlSockTriggerState_e State;
372 P_INIT_CALLBACK pInitCallback;
378 _u32 ActiveActionsBitmap;
379 _SlLockObj_t ProtectionLockObj;
381 _SlSyncObj_t CmdSyncObj;
386 _u16 SocketNonBlocking;
387 _u16 SocketTXFailure;
392 _i8 ApiInProgressCnt;
394 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 399 #if defined(slcb_SocketTriggerEventHandler) 404 #ifdef SL_MEMORY_MGMT_DYNAMIC 407 _u8 NumOfDeletedSyncObj;
412 _SlSpawnEntryFunc_t AsyncHndlr;
414 _u8 Buffer[SL_ASYNC_MAX_MSG_LEN];
417 extern _volatile _u8 RxIrqCnt;
419 extern _SlLockObj_t GlobalLockObj;
420 extern _u16 g_SlDeviceStatus;
423 extern P_SL_DEV_PING_CALLBACK pPingCallBackFunc;
428 extern _SlReturnVal_t _SlDrvDriverCBInit(
void);
429 extern _SlReturnVal_t _SlDrvDriverCBDeinit(
void);
430 extern _SlReturnVal_t _SlDrvRxIrqHandler(
void *pValue);
432 extern _SlReturnVal_t _SlDrvCmdSend_noLock(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
433 extern _SlReturnVal_t _SlDrvCmdSend_noWait(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
435 extern _SlReturnVal_t _SlDrvDataReadOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
436 extern _SlReturnVal_t _SlDrvDataWriteOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
437 extern _SlReturnVal_t _SlDeviceHandleAsync_InitComplete(
void *pVoidBuf);
438 extern _SlReturnVal_t _SlSocketHandleAsync_Connect(
void *pVoidBuf);
439 extern _SlReturnVal_t _SlSocketHandleAsync_Close(
void *pVoidBuf);
440 extern _SlReturnVal_t _SlDrvGlobalObjUnLock(_u8 bDecrementApiInProgress);
441 extern _SlReturnVal_t _SlDrvObjGlobalLockWaitForever(_u32 Flags);
442 extern _SlReturnVal_t _SlDrvDriverIsApiAllowed(_u16 Silo);
443 extern _SlReturnVal_t _SlDrvMsgReadSpawnCtx(
void *pValue);
444 extern void _SlInternalSpawnWaitForEvent(
void);
445 extern void _SlDrvSetGlobalLockOwner(_u8 Owner);
446 #if (!defined (SL_PLATFORM_EXTERNAL_SPAWN)) 447 extern _u8 _SlDrvIsSpawnOwnGlobalLock();
449 extern _SlReturnVal_t _SlDrvBasicCmd(_SlOpcode_t Opcode);
450 extern _SlReturnVal_t _SlSocketHandleAsync_Accept(
void *pVoidBuf);
451 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByService(
void *pVoidBuf);
452 extern _SlReturnVal_t _SlSocketHandleAsync_Select(
void *pVoidBuf);
453 extern _SlReturnVal_t _SlSocketHandleAsync_StartTLS(
void *pVoidBuf);
454 extern _SlReturnVal_t _SlDrvReleaseAllActivePendingPoolObj();
456 #ifdef slcb_GetTimestamp 457 extern void _SlDrvStartMeasureTimeout(
_SlTimeoutParams_t *pTimeoutInfo, _u32 TimeoutInMsec);
459 extern void _SlDrvSleep(_u16 DurationInMsec);
462 #if defined(SL_PLATFORM_MULTI_THREADED) 463 extern void * pthread_self(
void);
466 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByName(
void *pVoidBuf);
467 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByAddr(
void *pVoidBuf);
468 extern _SlReturnVal_t _SlNetAppHandleAsync_PingResponse(
void *pVoidBuf);
469 extern _SlReturnVal_t _SlNetAppEventHandler(
void* pArgs);
471 #if defined(slcb_NetAppHttpServerHdlr) || defined(EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS) 475 #if defined(slcb_NetAppRequestHdlr) || defined(EXT_LIB_REGISTERED_NETAPP_REQUEST_EVENTS) 479 extern void _SlDeviceHandleAsync_Stop(
void *pVoidBuf);
480 extern void _SlNetUtilHandleAsync_Cmd(
void *pVoidBuf);
481 extern _SlReturnVal_t _SlDrvWaitForPoolObj(_u8 ActionID, _u8 SocketID);
482 extern _SlReturnVal_t _SlDrvReleasePoolObj(_u8 pObj);
483 extern void _SlDrvReleaseAllPendingPoolObj();
484 extern _SlReturnVal_t _SlDrvAlignSize(_u16 msgLen);
485 extern _SlReturnVal_t _SlDrvProtectAsyncRespSetting(_u8 *pAsyncRsp, _SlActionID_e ActionID, _u8 SocketID);
486 extern void _SlNetAppHandleAsync_NetAppReceive(
void *pVoidBuf);
489 extern _SlReturnVal_t _SlDeviceEventHandler(
void* pEventInfo);
490 extern _SlReturnVal_t _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj);
491 extern _SlReturnVal_t _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj);
492 extern _SlReturnVal_t _SlDrvSyncObjWaitTimeout(_SlSyncObj_t *pSyncObj,
494 _u32 asyncEventOpcode);
496 extern _SlReturnVal_t _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj);
497 extern _SlReturnVal_t _SlDrvObjLock(_SlLockObj_t *pLockObj, _SlTime_t Timeout);
498 extern _SlReturnVal_t _SlDrvProtectionObjLockWaitForever(
void);
499 extern _SlReturnVal_t _SlDrvObjUnLock(_SlLockObj_t *pLockObj);
500 extern _SlReturnVal_t _SlDrvProtectionObjUnLock(
void);
502 extern void _SlDrvMemZero(
void* Addr, _u16 size);
503 extern void _SlDrvResetCmdExt(
_SlCmdExt_t* pCmdExt);
505 extern _i8 _SlDrvIsApiInProgress(
void);
506 extern void _SlDrvHandleResetRequest(
const void* pIfHdl, _i8* pDevName);
507 extern _SlReturnVal_t _SlDrvWaitForInternalAsyncEvent(_u8 ObjIdx, _u32 Timeout, _SlOpcode_t Opcode);
508 extern _SlReturnVal_t _SlSpawnMsgListInsert(_u16 AsyncEventLen, _u8 *pAsyncBuf);
509 extern _SlReturnVal_t _SlSpawnMsgListProcess(
void);
510 extern _u16 _SlSpawnMsgListGetCount(
void);
511 extern void _SlDrvHandleFatalError(_u32 errorId, _u32 info1, _u32 info2);
512 extern void _SlDrvHandleAssert(
void);
513 extern void _SlFindAndReleasePendingCmd();
515 #define _SL_PROTOCOL_ALIGN_SIZE(msgLen) (((msgLen)+3) & (~3)) 516 #define _SL_IS_PROTOCOL_ALIGNED_SIZE(msgLen) (!((msgLen) & 3)) 519 #define _SL_PROTOCOL_CALC_LEN(pCmdCtrl,pCmdExt) ((pCmdExt) ? \ 520 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen) + _SL_PROTOCOL_ALIGN_SIZE(pCmdExt->TxPayload1Len + pCmdExt->TxPayload2Len)) : \ 521 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen)))