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_CLEAR(pObj) sl_SyncObjWait(pObj,SL_OS_NO_WAIT); 85 #define SL_DRV_SYNC_OBJ_WAIT_FOREVER(SyncObj) { \ 86 if (SL_API_ABORTED == _SlDrvSyncObjWaitForever(SyncObj)) \ 88 return SL_API_ABORTED; \ 91 #define SL_DRV_SYNC_OBJ_WAIT_TIMEOUT(SyncObj, timeoutVal, opcode) { \ 92 if (SL_API_ABORTED == _SlDrvSyncObjWaitTimeout(SyncObj, timeoutVal, opcode)) \ 94 _SlDrvReleasePoolObj(g_pCB->FunctionParams.AsyncExt.ActionIndex); \ 95 return SL_API_ABORTED; \ 98 #define SL_DRV_LOCK_GLOBAL_LOCK_FOREVER(Flags) { \ 99 _SlReturnVal_t retVal; \ 101 retVal = _SlDrvObjGlobalLockWaitForever(Flags); \ 108 #define SL_DRV_LOCK_GLOBAL_UNLOCK(bDecrementApiInProgress) { \ 109 _SlReturnVal_t retVal; \ 111 retVal = _SlDrvGlobalObjUnLock(bDecrementApiInProgress); \ 119 #define SL_IS_RESTART_REQUIRED (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_RESTART_REQUIRED) 120 #define SL_IS_DEVICE_STARTED (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_DEVICE_STARTED) 121 #define SL_IS_DEVICE_LOCKED (g_SlDeviceStatus & _SL_DEV_STATUS_BIT_LOCKED) 122 #define SL_IS_PROVISIONING_ACTIVE (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE)) 123 #define SL_IS_PROVISIONING_INITIATED_BY_USER (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED)) 124 #define SL_IS_PROVISIONING_API_ALLOWED (!!(g_SlDeviceStatus & _SL_DEV_STATUS_BIT_PROVISIONING_ENABLE_API)) 125 #define SL_IS_DEVICE_STOP_IN_PROGRESS (!!(g_SlDeviceStatus & _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS)) 126 #define SL_IS_DEVICE_START_IN_PROGRESS (!!(g_SlDeviceStatus & _SL_DRV_STATUS_BIT_START_IN_PROGRESS)) 128 #define SL_IS_PROVISIONING_IN_PROGRESS (!!(g_SlDeviceStatus & ( _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED | _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE))) 136 #define SL_IS_COMMAND_ALLOWED ((g_SlDeviceStatus & (_SL_DRV_STATUS_BIT_DEVICE_STARTED | \ 137 _SL_DRV_STATUS_BIT_RESTART_REQUIRED | \ 138 _SL_DEV_STATUS_BIT_PROVISIONING_ACTIVE | \ 139 _SL_DEV_STATUS_BIT_PROVISIONING_USER_INITIATED | \ 140 _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS | \ 141 _SL_DEV_STATUS_BIT_LOCKED)) == 0x200) 143 #define SL_IS_GLOBAL_LOCK_INIT (g_SlDeviceStatus & _SL_DRV_STATUS_BIT_GLOBAL_LOCK_INIT) 144 #define SL_SET_GLOBAL_LOCK_INIT (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_GLOBAL_LOCK_INIT) 145 #define SL_UNSET_GLOBAL_LOCK_INIT (g_SlDeviceStatus &= (~ _SL_DRV_STATUS_BIT_GLOBAL_LOCK_INIT)) 147 #define SL_SET_RESTART_REQUIRED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_RESTART_REQUIRED) 148 #define SL_UNSET_RESTART_REQUIRED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_RESTART_REQUIRED)) 149 #define SL_SET_DEVICE_STARTED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_DEVICE_STARTED) 150 #define SL_UNSET_DEVICE_STARTED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_DEVICE_STARTED)) 152 #define SL_SET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS) 153 #define SL_UNSET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_STOP_IN_PROGRESS)) 156 #define SL_SET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_START_IN_PROGRESS) 157 #define SL_UNSET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_START_IN_PROGRESS)) 159 #define SL_SET_DEVICE_STATUS(x) (g_SlDeviceStatus = ((g_SlDeviceStatus & 0xFF00) | (_u16)x) ) 161 #define _SL_PENDING_RX_MSG(pDriverCB) (RxIrqCnt != (pDriverCB)->RxDoneCnt) 169 _SlSpawnEntryFunc_t AsyncHndlr;
181 _u32 DeltaTicksReminder;
182 _i32 Total10MSecUnits;
194 _SlArgSize_t TxDescLen;
195 _SlArgSize_t RxDescLen;
203 _i16 ActualRxPayloadLen;
217 _SlSyncObj_t SyncObj;
243 ACCEPT_ID = MAX_SOCKET_ENUM_IDX,
261 _u16 ActionAsyncOpcode;
262 _SlSpawnEntryFunc_t AsyncEventHandler;
269 _u16 MinTxPayloadSize;
270 _SlLockObj_t TxLockObj;
271 _SlSyncObj_t TxSyncObj;
279 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 280 MULTI_SELECT_RESP_CLASS,
288 _SlSpawnEntryFunc_t AsyncEvtHandler;
289 _SlRxMsgClass_e RxMsgClass;
302 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 321 _SlSyncObj_t SelectSyncObj;
322 _SlLockObj_t SelectLockObj;
331 SOCK_TRIGGER_WAITING_FOR_RESP,
332 SOCK_TRIGGER_RESP_RECEIVED
333 } _SlSockTriggerState_e;
337 _SlSockTriggerState_e State;
353 P_INIT_CALLBACK pInitCallback;
359 _u32 ActiveActionsBitmap;
360 _SlLockObj_t ProtectionLockObj;
362 _SlSyncObj_t CmdSyncObj;
367 _u16 SocketNonBlocking;
368 _u16 SocketTXFailure;
373 _i8 ApiInProgressCnt;
375 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 380 #if defined(slcb_SocketTriggerEventHandler) 385 #ifdef SL_MEMORY_MGMT_DYNAMIC 388 _u8 NumOfDeletedSyncObj;
393 _SlSpawnEntryFunc_t AsyncHndlr;
395 _u8 Buffer[SL_ASYNC_MAX_MSG_LEN];
398 extern _volatile _u8 RxIrqCnt;
400 extern _SlLockObj_t GlobalLockObj;
401 extern _u16 g_SlDeviceStatus;
404 extern P_SL_DEV_PING_CALLBACK pPingCallBackFunc;
409 extern _SlReturnVal_t _SlDrvDriverCBInit(
void);
410 extern _SlReturnVal_t _SlDrvDriverCBDeinit(
void);
411 extern _SlReturnVal_t _SlDrvRxIrqHandler(
void *pValue);
413 extern _SlReturnVal_t _SlDrvCmdSend_noLock(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
414 extern _SlReturnVal_t _SlDrvCmdSend_noWait(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
416 extern _SlReturnVal_t _SlDrvDataReadOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
417 extern _SlReturnVal_t _SlDrvDataWriteOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
418 extern _SlReturnVal_t _SlDeviceHandleAsync_InitComplete(
void *pVoidBuf);
419 extern _SlReturnVal_t _SlSocketHandleAsync_Connect(
void *pVoidBuf);
420 extern _SlReturnVal_t _SlSocketHandleAsync_Close(
void *pVoidBuf);
421 extern _SlReturnVal_t _SlDrvGlobalObjUnLock(_u8 bDecrementApiInProgress);
422 extern _SlReturnVal_t _SlDrvObjGlobalLockWaitForever(_u32 Flags);
423 extern _SlReturnVal_t _SlDrvDriverIsApiAllowed(_u16 Silo);
424 extern _SlReturnVal_t _SlDrvMsgReadSpawnCtx(
void *pValue);
425 extern void _SlInternalSpawnWaitForEvent(
void);
426 extern void _SlDrvSetGlobalLockOwner(_u8 Owner);
427 #if (!defined (SL_PLATFORM_EXTERNAL_SPAWN)) 428 extern _u8 _SlDrvIsSpawnOwnGlobalLock();
430 extern _SlReturnVal_t _SlDrvBasicCmd(_SlOpcode_t Opcode);
431 extern _SlReturnVal_t _SlSocketHandleAsync_Accept(
void *pVoidBuf);
432 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByService(
void *pVoidBuf);
433 extern _SlReturnVal_t _SlSocketHandleAsync_Select(
void *pVoidBuf);
434 extern _SlReturnVal_t _SlSocketHandleAsync_StartTLS(
void *pVoidBuf);
435 extern _SlReturnVal_t _SlDrvReleaseAllActivePendingPoolObj();
437 #ifdef slcb_GetTimestamp 438 extern void _SlDrvStartMeasureTimeout(
_SlTimeoutParams_t *pTimeoutInfo, _u32 TimeoutInMsec);
440 extern void _SlDrvSleep(_u16 DurationInMsec);
443 #if defined(SL_PLATFORM_MULTI_THREADED) 444 extern void * pthread_self(
void);
447 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByName(
void *pVoidBuf);
448 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByAddr(
void *pVoidBuf);
449 extern _SlReturnVal_t _SlNetAppHandleAsync_PingResponse(
void *pVoidBuf);
450 extern _SlReturnVal_t _SlNetAppEventHandler(
void* pArgs);
452 #if defined(slcb_NetAppHttpServerHdlr) || defined(EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS) 456 #if defined(slcb_NetAppRequestHdlr) || defined(EXT_LIB_REGISTERED_NETAPP_REQUEST_EVENTS) 460 extern void _SlDeviceHandleAsync_Stop(
void *pVoidBuf);
461 extern void _SlNetUtilHandleAsync_Cmd(
void *pVoidBuf);
462 extern _SlReturnVal_t _SlDrvWaitForPoolObj(_u8 ActionID, _u8 SocketID);
463 extern _SlReturnVal_t _SlDrvReleasePoolObj(_u8 pObj);
464 extern void _SlDrvReleaseAllPendingPoolObj();
465 extern _SlReturnVal_t _SlDrvAlignSize(_u16 msgLen);
466 extern _SlReturnVal_t _SlDrvProtectAsyncRespSetting(_u8 *pAsyncRsp, _SlActionID_e ActionID, _u8 SocketID);
467 extern void _SlNetAppHandleAsync_NetAppReceive(
void *pVoidBuf);
470 extern _SlReturnVal_t _SlDeviceEventHandler(
void* pEventInfo);
471 extern _SlReturnVal_t _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj);
472 extern _SlReturnVal_t _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj);
473 extern _SlReturnVal_t _SlDrvSyncObjWaitTimeout(_SlSyncObj_t *pSyncObj,
475 _u32 asyncEventOpcode);
477 extern _SlReturnVal_t _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj);
478 extern _SlReturnVal_t _SlDrvObjLock(_SlLockObj_t *pLockObj, _SlTime_t Timeout);
479 extern _SlReturnVal_t _SlDrvProtectionObjLockWaitForever(
void);
480 extern _SlReturnVal_t _SlDrvObjUnLock(_SlLockObj_t *pLockObj);
481 extern _SlReturnVal_t _SlDrvProtectionObjUnLock(
void);
483 extern void _SlDrvMemZero(
void* Addr, _u16 size);
484 extern void _SlDrvResetCmdExt(
_SlCmdExt_t* pCmdExt);
486 extern _i8 _SlDrvIsApiInProgress(
void);
487 extern void _SlDrvHandleResetRequest(
const void* pIfHdl, _i8* pDevName);
488 extern _SlReturnVal_t _SlDrvWaitForInternalAsyncEvent(_u8 ObjIdx, _u32 Timeout, _SlOpcode_t Opcode);
489 extern _SlReturnVal_t _SlSpawnMsgListInsert(_u16 AsyncEventLen, _u8 *pAsyncBuf);
490 extern _SlReturnVal_t _SlSpawnMsgListProcess(
void);
491 extern _u16 _SlSpawnMsgListGetCount(
void);
492 extern void _SlDrvHandleFatalError(_u32 errorId, _u32 info1, _u32 info2);
493 extern void _SlDrvHandleAssert(
void);
494 extern void _SlFindAndReleasePendingCmd();
496 #define _SL_PROTOCOL_ALIGN_SIZE(msgLen) (((msgLen)+3) & (~3)) 497 #define _SL_IS_PROTOCOL_ALIGNED_SIZE(msgLen) (!((msgLen) & 3)) 500 #define _SL_PROTOCOL_CALC_LEN(pCmdCtrl,pCmdExt) ((pCmdExt) ? \ 501 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen) + _SL_PROTOCOL_ALIGN_SIZE(pCmdExt->TxPayload1Len + pCmdExt->TxPayload2Len)) : \ 502 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen)))