VOS_VOID TAF_APS_SaveItemInCmdBufferQueue( TAF_APS_TIMER_ID_ENUM_UINT32 enTimerId, VOS_UINT32 *pulMsgInfo, VOS_UINT32 ulMsgInfoLen, VOS_UINT32 ulPara ) { VOS_UINT32 i; VOS_UINT32 *pulMsgBuf; TAF_APS_CMD_BUFFER_STRU *pstCmdBufferQueue; /* 如果消息指针为空,直接返回 */ if (VOS_NULL_PTR == pulMsgInfo) { return; } pstCmdBufferQueue = TAF_APS_GetCmdBufferQueueAddr(); for ( i = 0 ; i < TAF_APS_MAX_CMD_BUFFER_QUEUE_SIZE; i++ ) { if (TI_TAF_APS_TIMER_BUTT == pstCmdBufferQueue[i].enTimerId) { break; } } /* 判定当前的循环队列是否已经满了,如果满了则直接返回,进行异常打印 */ if ( i >= TAF_APS_MAX_CMD_BUFFER_QUEUE_SIZE ) { /* 缓存队列已满 */ TAF_ERROR_LOG1(WUEPS_PID_TAF, "TAF_APS_SaveInfoInWaitL4aCnfMsgQueue, Buffer Full, Timer Id :", enTimerId); return; } /* 在队列增加相应的信息,分配内存,进行信息赋值 */ pulMsgBuf = (VOS_UINT32 *)PS_MEM_ALLOC(WUEPS_PID_TAF, ulMsgInfoLen); if (VOS_NULL_PTR == pulMsgBuf) { /* 缓存队列已满 */ TAF_ERROR_LOG1(WUEPS_PID_TAF, "TAF_APS_SaveInfoInWaitL4aCnfMsgQueue, Mem Alloc Fail, Timer Id :", enTimerId); return; } /* 赋值 */ PS_MEM_CPY((VOS_UINT8 *)pulMsgBuf, (VOS_UINT8 *)pulMsgInfo, ulMsgInfoLen); pstCmdBufferQueue[i].pulMsgInfo = pulMsgBuf; pstCmdBufferQueue[i].enTimerId = enTimerId; pstCmdBufferQueue[i].ulMsgInfoLen = ulMsgInfoLen; pstCmdBufferQueue[i].ulPara = ulPara; return; }
TAF_APS_CMD_BUFFER_STRU *TAF_APS_GetItemFromCmdBufferQueue( TAF_APS_TIMER_ID_ENUM_UINT32 enTimerId, VOS_UINT32 ulPara ) { VOS_UINT32 i; TAF_APS_CMD_BUFFER_STRU *pstCmdBufferQueue; pstCmdBufferQueue = TAF_APS_GetCmdBufferQueueAddr(); /* 遍历队列, 获取enTimerId指定的消息节点 */ for ( i = 0 ; i < TAF_APS_MAX_CMD_BUFFER_QUEUE_SIZE; i++ ) { if ((enTimerId == pstCmdBufferQueue[i].enTimerId) && (ulPara == pstCmdBufferQueue[i].ulPara)) { break; } } /* 判定当前的循环队列是否已经满了,如果满了则直接返回,进行异常打印 */ if ( i >= TAF_APS_MAX_CMD_BUFFER_QUEUE_SIZE ) { /* 未找到 */ TAF_ERROR_LOG1(WUEPS_PID_TAF, "TAF_APS_GetInfoFromWaitL4aCnfMsgQueue, Msg Not Found, Timer Id :", enTimerId); return VOS_NULL_PTR; } /* 将缓存的消息指针返回 */ return &pstCmdBufferQueue[i]; }
VOS_VOID TAF_MMA_FSM_PushFsm( TAF_MMA_FSM_STACK_STRU *pstFsmStack, TAF_MMA_FSM_CTX_STRU *pstNewFsm ) { TAF_MMA_FSM_CTX_STRU *pstCurFsm; if ( (VOS_NULL_PTR == pstFsmStack) || (VOS_NULL_PTR == pstNewFsm) ) { TAF_ERROR_LOG(WUEPS_PID_MMA, "TAF_MMA_FSM_PushFsm,Para null ptr,pstFsmStack,pstNewFsm"); return; } if ( pstFsmStack->usStackDepth >= TAF_MMA_MAX_STACK_DEPTH ) { TAF_ERROR_LOG1(WUEPS_PID_MMA, "TAF_MMA_FSM_PushFsm,Fsm Stack Depth Error!", pstFsmStack->usStackDepth); return; } pstCurFsm = &((pstFsmStack->astFsmStack)[pstFsmStack->usStackDepth]); /* 将当前状态机所有CTX都需要保存起来 */ PS_MEM_CPY(pstCurFsm, pstNewFsm, sizeof(TAF_MMA_FSM_CTX_STRU)); pstFsmStack->usStackDepth++; return; }
VOS_VOID TAF_CBA_MsgProc( struct MsgCB *pstMsg ) { switch (pstMsg->ulSenderPid) { case UEPS_PID_GAS: TAF_CBA_ProcGasMsg(pstMsg); break; case WUEPS_PID_WRR: TAF_CBA_ProcWrrMsg(pstMsg); break; case WUEPS_PID_BMC: TAF_CBA_ProcBmcMsg(pstMsg); break; #if (FEATURE_ON == FEATURE_LTE) case PS_PID_ERRC: TAF_CBA_ProcLrrcMsg(pstMsg); break; #endif case WUEPS_PID_MMC: TAF_CBA_ProcMmcMsg(pstMsg); break; case WUEPS_PID_AT: TAF_CBA_ProcAtMsg(pstMsg); break; case WUEPS_PID_MMA: TAF_CBA_ProcMmaMsg(pstMsg); break; default: TAF_ERROR_LOG1(WUEPS_PID_TAF, "TAF_CBA_MsgProc: Unknown message sender, SenderPid, ", (VOS_INT32)pstMsg->ulSenderPid); break; } }