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) 68 #ifndef CPU_FREQ_IN_MHZ 69 #define CPU_FREQ_IN_MHZ (200) 71 #define USEC_DELAY (50) 73 #define SL_DRV_PROTECTION_OBJ_UNLOCK() (void)_SlDrvProtectionObjUnLock(); 74 #define SL_DRV_PROTECTION_OBJ_LOCK_FOREVER() (void)_SlDrvProtectionObjLockWaitForever(); 75 #define SL_DRV_OBJ_UNLOCK(pObj) (void)_SlDrvObjUnLock(pObj); 76 #define SL_DRV_OBJ_LOCK_FOREVER(pObj) (void)_SlDrvObjLockWaitForever(pObj); 77 #define SL_DRV_SYNC_OBJ_SIGNAL(pObj) (void)_SlDrvSyncObjSignal(pObj); 78 #define SL_DRV_SYNC_OBJ_CLEAR(pObj) (void)sl_SyncObjWait(pObj,SL_OS_NO_WAIT); 82 #define SL_DRV_SYNC_OBJ_WAIT_FOREVER(SyncObj) (void)_SlDrvSyncObjWaitForever(SyncObj); 83 #define SL_DRV_LOCK_GLOBAL_LOCK_FOREVER(Flags) (void)_SlDrvObjGlobalLockWaitForever(Flags); 84 #define SL_DRV_LOCK_GLOBAL_UNLOCK(bDecrementApiInProgress) (void)_SlDrvGlobalObjUnLock(bDecrementApiInProgress); 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 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_SET_RESTART_REQUIRED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_RESTART_REQUIRED) 144 #define SL_UNSET_RESTART_REQUIRED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_RESTART_REQUIRED)) 145 #define SL_SET_DEVICE_STARTED (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_DEVICE_STARTED) 146 #define SL_UNSET_DEVICE_STARTED (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_DEVICE_STARTED)) 148 #define SL_SET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_STOP_IN_PROGRESS) 149 #define SL_UNSET_DEVICE_STOP_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_STOP_IN_PROGRESS)) 152 #define SL_SET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus |= _SL_DRV_STATUS_BIT_START_IN_PROGRESS) 153 #define SL_UNSET_DEVICE_START_IN_PROGRESS (g_SlDeviceStatus &= (~_SL_DRV_STATUS_BIT_START_IN_PROGRESS)) 156 #define SL_SET_DEVICE_STATUS(x) (g_SlDeviceStatus = ((g_SlDeviceStatus & 0xFF00) | (_u16)x) ) 158 #define _SL_PENDING_RX_MSG(pDriverCB) (RxIrqCnt != (pDriverCB)->RxDoneCnt) 169 _u32 DeltaTicksReminder;
170 _i32 Total10MSecUnits;
182 _SlArgSize_t TxDescLen;
183 _SlArgSize_t RxDescLen;
191 _i16 ActualRxPayloadLen;
205 _SlSyncObj_t SyncObj;
232 ACCEPT_ID = MAX_SOCKET_ENUM_IDX,
235 CONNECT_ID = MAX_SOCKET_ENUM_IDX,
257 _u16 ActionAsyncOpcode;
258 _SlSpawnEntryFunc_t AsyncEventHandler;
265 _u16 MinTxPayloadSize;
266 _SlLockObj_t TxLockObj;
267 _SlSyncObj_t TxSyncObj;
275 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 276 MULTI_SELECT_RESP_CLASS,
285 _SlSpawnEntryFunc_t AsyncEvtHandler;
286 _SlRxMsgClass_e RxMsgClass;
299 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 318 _SlSyncObj_t SelectSyncObj;
319 _SlLockObj_t SelectLockObj;
328 SOCK_TRIGGER_WAITING_FOR_RESP,
329 SOCK_TRIGGER_RESP_RECEIVED
330 } _SlSockTriggerState_e;
334 _SlSockTriggerState_e State;
350 P_INIT_CALLBACK pInitCallback;
356 _u32 ActiveActionsBitmap;
357 _SlLockObj_t ProtectionLockObj;
359 _SlSyncObj_t CmdSyncObj;
364 _u16 SocketNonBlocking;
365 _u16 SocketTXFailure;
370 _i8 ApiInProgressCnt;
372 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 377 #if defined(slcb_SocketTriggerEventHandler) 384 extern _volatile _u8 RxIrqCnt;
386 extern _SlLockObj_t GlobalLockObj;
387 extern _u16 g_SlDeviceStatus;
390 extern P_SL_DEV_PING_CALLBACK pPingCallBackFunc;
395 extern _SlReturnVal_t _SlDrvDriverCBInit(
void);
396 extern _SlReturnVal_t _SlDrvDriverCBDeinit(
void);
397 extern _SlReturnVal_t _SlDrvRxIrqHandler(
void *pValue);
399 extern _SlReturnVal_t _SlDrvCmdSend_noLock(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
400 extern _SlReturnVal_t _SlDrvCmdSend_noWait(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
402 extern _SlReturnVal_t _SlDrvDataReadOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
403 extern _SlReturnVal_t _SlDrvDataWriteOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
404 extern _SlReturnVal_t _SlDeviceHandleAsync_InitComplete(
void *pVoidBuf);
405 extern _SlReturnVal_t _SlSocketHandleAsync_Connect(
void *pVoidBuf);
406 extern _SlReturnVal_t _SlSocketHandleAsync_Close(
void *pVoidBuf);
407 extern _SlReturnVal_t _SlDrvGlobalObjUnLock(_u8 bDecrementApiInProgress);
408 extern _SlReturnVal_t _SlDrvDriverIsApiAllowed(_u16 Silo);
409 extern _SlReturnVal_t _SlDrvMsgReadSpawnCtx(
void *pValue);
413 extern _i16 _SlDrvBasicCmd(_SlOpcode_t Opcode);
414 extern _SlReturnVal_t _SlSocketHandleAsync_Accept(
void *pVoidBuf);
415 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByService(
void *pVoidBuf);
416 extern _SlReturnVal_t _SlSocketHandleAsync_Select(
void *pVoidBuf);
417 extern _SlReturnVal_t _SlSocketHandleAsync_StartTLS(
void *pVoidBuf);
419 #ifdef slcb_GetTimestamp 420 extern void _SlDrvStartMeasureTimeout(
_SlTimeoutParams_t *pTimeoutInfo, _u32 TimeoutInMsec);
422 extern void _SlDrvSleep(_u16 DurationInMsec);
428 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByName(
void *pVoidBuf);
429 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByAddr(
void *pVoidBuf);
430 extern _SlReturnVal_t _SlNetAppHandleAsync_PingResponse(
void *pVoidBuf);
431 extern _SlReturnVal_t _SlNetAppEventHandler(
void* pArgs);
433 #if defined(slcb_NetAppHttpServerHdlr) || defined(EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS) 437 #if defined(slcb_NetAppRequestHdlr) || defined(EXT_LIB_REGISTERED_NETAPP_REQUEST_EVENTS) 441 extern void _SlDeviceHandleAsync_Stop(
void *pVoidBuf);
442 extern void _SlNetUtilHandleAsync_Cmd(
void *pVoidBuf);
443 extern _u8 _SlDrvWaitForPoolObj(_u8 ActionID, _u8 SocketID);
444 extern void _SlDrvReleasePoolObj(_u8 pObj);
445 extern _u16 _SlDrvAlignSize(_u16 msgLen);
446 extern _u8 _SlDrvProtectAsyncRespSetting(_u8 *pAsyncRsp, _SlActionID_e ActionID, _u8 SocketID);
447 extern void _SlNetAppHandleAsync_NetAppReceive(
void *pVoidBuf);
450 extern _SlReturnVal_t _SlDeviceEventHandler(
void* pEventInfo);
451 extern _SlReturnVal_t _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj);
452 extern _SlReturnVal_t _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj);
453 extern _SlReturnVal_t _SlDrvSyncObjWaitTimeout(_SlSyncObj_t *pSyncObj,
455 _u32 asyncEventOpcode);
457 extern _SlReturnVal_t _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj);
458 extern _SlReturnVal_t _SlDrvObjLock(_SlLockObj_t *pLockObj, _SlTime_t Timeout);
459 extern _SlReturnVal_t _SlDrvProtectionObjLockWaitForever(
void);
460 extern _SlReturnVal_t _SlDrvObjUnLock(_SlLockObj_t *pLockObj);
461 extern _SlReturnVal_t _SlDrvProtectionObjUnLock(
void);
463 extern void _SlDrvMemZero(
void* Addr, _u16 size);
464 extern void _SlDrvResetCmdExt(
_SlCmdExt_t* pCmdExt);
466 extern _i8 _SlDrvIsApiInProgress(
void);
467 extern void _SlDrvHandleResetRequest(
const void* pIfHdl, _i8* pDevName);
470 extern void _SlDrvHandleFatalError(_u32 errorId, _u32 info1, _u32 info2);
471 extern void _SlDrvHandleAssert(
void);
475 #define _SL_PROTOCOL_ALIGN_SIZE(msgLen) (((msgLen)+3) & (~3)) 476 #define _SL_IS_PROTOCOL_ALIGNED_SIZE(msgLen) (!((msgLen) & 3)) 479 #define _SL_PROTOCOL_CALC_LEN(pCmdCtrl,pCmdExt) ((pCmdExt) ? \ 480 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen) + _SL_PROTOCOL_ALIGN_SIZE(pCmdExt->TxPayload1Len + pCmdExt->TxPayload2Len)) : \ 481 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen)))