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;
233 ACCEPT_ID = MAX_SOCKET_ENUM_IDX,
236 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;
346 #ifdef SL_INC_INTERNAL_ERRNO 348 #define SL_DRVER_ERRNO_FLAGS_UNREAD (1) 352 #ifdef SL_PLATFORM_MULTI_THREADED 356 #ifdef SL_PLATFORM_MULTI_THREADED 368 P_INIT_CALLBACK pInitCallback;
374 _u32 ActiveActionsBitmap;
375 _SlLockObj_t ProtectionLockObj;
377 _SlSyncObj_t CmdSyncObj;
382 _u16 SocketNonBlocking;
383 _u16 SocketTXFailure;
388 _i8 ApiInProgressCnt;
390 #if (defined(SL_PLATFORM_MULTI_THREADED) && !defined(slcb_SocketTriggerEventHandler)) 395 #if defined(slcb_SocketTriggerEventHandler) 400 #ifdef SL_INC_INTERNAL_ERRNO 402 #ifdef SL_PLATFORM_MULTI_THREADED 403 _SlLockObj_t ErrnoLockObj;
410 extern _volatile _u8 RxIrqCnt;
412 extern _SlLockObj_t GlobalLockObj;
413 extern _u16 g_SlDeviceStatus;
416 extern P_SL_DEV_PING_CALLBACK pPingCallBackFunc;
421 extern _SlReturnVal_t _SlDrvDriverCBInit(
void);
422 extern _SlReturnVal_t _SlDrvDriverCBDeinit(
void);
423 extern _SlReturnVal_t _SlDrvRxIrqHandler(
void *pValue);
425 extern _SlReturnVal_t _SlDrvCmdSend_noLock(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
426 extern _SlReturnVal_t _SlDrvCmdSend_noWait(
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
428 extern _SlReturnVal_t _SlDrvDataReadOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
429 extern _SlReturnVal_t _SlDrvDataWriteOp(_SlSd_t Sd,
_SlCmdCtrl_t *pCmdCtrl ,
void* pTxRxDescBuff ,
_SlCmdExt_t* pCmdExt);
430 extern _SlReturnVal_t _SlDeviceHandleAsync_InitComplete(
void *pVoidBuf);
431 extern _SlReturnVal_t _SlSocketHandleAsync_Connect(
void *pVoidBuf);
432 extern _SlReturnVal_t _SlSocketHandleAsync_Close(
void *pVoidBuf);
433 extern _SlReturnVal_t _SlDrvGlobalObjUnLock(_u8 bDecrementApiInProgress);
434 extern _SlReturnVal_t _SlDrvDriverIsApiAllowed(_u16 Silo);
435 extern _SlReturnVal_t _SlDrvMsgReadSpawnCtx(
void *pValue);
439 extern _i16 _SlDrvBasicCmd(_SlOpcode_t Opcode);
440 extern _SlReturnVal_t _SlSocketHandleAsync_Accept(
void *pVoidBuf);
441 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByService(
void *pVoidBuf);
442 extern _SlReturnVal_t _SlSocketHandleAsync_Select(
void *pVoidBuf);
444 #ifdef slcb_GetTimestamp 445 extern void _SlDrvStartMeasureTimeout(
_SlTimeoutParams_t *pTimeoutInfo, _u32 TimeoutInMsec);
447 extern void _SlDrvSleep(_u16 DurationInMsec);
453 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByName(
void *pVoidBuf);
454 extern _SlReturnVal_t _SlNetAppHandleAsync_DnsGetHostByAddr(
void *pVoidBuf);
455 extern _SlReturnVal_t _SlNetAppHandleAsync_PingResponse(
void *pVoidBuf);
456 extern _SlReturnVal_t _SlNetAppEventHandler(
void* pArgs);
458 #if defined(slcb_NetAppHttpServerHdlr) || defined(EXT_LIB_REGISTERED_HTTP_SERVER_EVENTS) 462 #if defined(slcb_NetAppRequestHdlr) || defined(EXT_LIB_REGISTERED_NETAPP_REQUEST_EVENTS) 466 extern void _SlDeviceHandleAsync_Stop(
void *pVoidBuf);
467 extern void _SlNetUtilHandleAsync_Cmd(
void *pVoidBuf);
468 extern _u8 _SlDrvWaitForPoolObj(_u8 ActionID, _u8 SocketID);
469 extern void _SlDrvReleasePoolObj(_u8 pObj);
470 extern _u16 _SlDrvAlignSize(_u16 msgLen);
471 extern _u8 _SlDrvProtectAsyncRespSetting(_u8 *pAsyncRsp, _SlActionID_e ActionID, _u8 SocketID);
472 extern void _SlNetAppHandleAsync_NetAppReceive(
void *pVoidBuf);
475 extern _SlReturnVal_t _SlDeviceEventHandler(
void* pEventInfo);
476 extern _SlReturnVal_t _SlDrvSyncObjWaitForever(_SlSyncObj_t *pSyncObj);
477 extern _SlReturnVal_t _SlDrvObjLockWaitForever(_SlLockObj_t *pLockObj);
478 extern _SlReturnVal_t _SlDrvSyncObjWaitTimeout(_SlSyncObj_t *pSyncObj,
480 _u32 asyncEventOpcode);
482 extern _SlReturnVal_t _SlDrvSyncObjSignal(_SlSyncObj_t *pSyncObj);
483 extern _SlReturnVal_t _SlDrvObjLock(_SlLockObj_t *pLockObj, _SlTime_t Timeout);
484 extern _SlReturnVal_t _SlDrvProtectionObjLockWaitForever(
void);
485 extern _SlReturnVal_t _SlDrvObjUnLock(_SlLockObj_t *pLockObj);
486 extern _SlReturnVal_t _SlDrvProtectionObjUnLock(
void);
488 extern void _SlDrvMemZero(
void* Addr, _u16 size);
489 extern void _SlDrvResetCmdExt(
_SlCmdExt_t* pCmdExt);
491 extern _i8 _SlDrvIsApiInProgress(
void);
492 extern void _SlDrvHandleResetRequest(
const void* pIfHdl, _i8* pDevName);
495 extern void _SlDrvHandleFatalError(_u32 errorId, _u32 info1, _u32 info2);
496 extern void _SlDrvHandleAssert(
void);
500 _i32 _SlDrvSetErrno(_i32 Errno);
501 _i32* _SlDrvallocateErrno(_i32 Errno);
503 #ifndef SL_INC_INTERNAL_ERRNO 504 extern int slcb_SetErrno(
int Errno);
507 #define _SL_PROTOCOL_ALIGN_SIZE(msgLen) (((msgLen)+3) & (~3)) 508 #define _SL_IS_PROTOCOL_ALIGNED_SIZE(msgLen) (!((msgLen) & 3)) 511 #define _SL_PROTOCOL_CALC_LEN(pCmdCtrl,pCmdExt) ((pCmdExt) ? \ 512 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen) + _SL_PROTOCOL_ALIGN_SIZE(pCmdExt->TxPayload1Len + pCmdExt->TxPayload2Len)) : \ 513 (_SL_PROTOCOL_ALIGN_SIZE(pCmdCtrl->TxDescLen)))