TAF_MTA_CMD_BUFFER_STRU *TAF_MTA_GetItemFromCmdBufferQueue( TAF_MTA_TIMER_ID_ENUM_UINT32 enTimerId ) { VOS_UINT32 i; TAF_MTA_CMD_BUFFER_STRU *pstCmdBufferQueue; pstCmdBufferQueue = TAF_MTA_GetCmdBufferQueueAddr(); /* 遍历队列, 获取enTimerId指定的消息节点 */ for ( i = 0; i < TAF_MTA_MAX_CMD_BUFFER_QUEUE_SIZE; i++ ) { if (enTimerId == pstCmdBufferQueue[i].enTimerId) { break; } } /* 判定当前的循环队列是否已经满了,如果满了则直接返回,进行异常打印 */ if ( i >= TAF_MTA_MAX_CMD_BUFFER_QUEUE_SIZE ) { /* 未找到 */ MTA_WARNING2_LOG("TAF_MTA_GetItemFromCmdBufferQueue, Msg Not Found, Timer Id :", UEPS_PID_MTA, enTimerId); return VOS_NULL_PTR; } /* 将缓存的消息指针返回 */ return &pstCmdBufferQueue[i]; }
VOS_VOID TAF_MTA_DelItemInCmdBufferQueue( TAF_MTA_TIMER_ID_ENUM_UINT32 enTimerId ) { VOS_UINT32 i; TAF_MTA_CMD_BUFFER_STRU *pstCmdBufferQueue; pstCmdBufferQueue = TAF_MTA_GetCmdBufferQueueAddr(); for ( i = 0; i < TAF_MTA_MAX_CMD_BUFFER_QUEUE_SIZE; i++ ) { if (enTimerId == pstCmdBufferQueue[i].enTimerId) { /* 如果有缓存的消息,释放消息内存 */ if (VOS_NULL_PTR != pstCmdBufferQueue[i].pucMsgInfo) { PS_MEM_FREE(UEPS_PID_MTA, pstCmdBufferQueue[i].pucMsgInfo); } /* 初始化 */ pstCmdBufferQueue[i].pucMsgInfo = VOS_NULL_PTR; pstCmdBufferQueue[i].enTimerId = TI_TAF_MTA_TIMER_BUTT; pstCmdBufferQueue[i].ulMsgInfoLen = 0; break; } } return; }
VOS_VOID TAF_MTA_InitCtx(TAF_MTA_CONTEXT_STRU *pstMtaCtx) { /* 初始化化记录XML码流资源的结构 */ pstMtaCtx->stAgpsCtx.stXmlText.pcBufHead = VOS_NULL_PTR; pstMtaCtx->stAgpsCtx.stXmlText.pcBufCur = VOS_NULL_PTR; /* 初始化化所有定时器消息 */ TAF_MTA_InitAllTimers(pstMtaCtx->astTimerCtx); /* 初始化AT命令缓存队列 */ TAF_MTA_InitCmdBufferQueue(TAF_MTA_GetCmdBufferQueueAddr()); /* 初始化GPS参考时钟状态信息 */ TAF_MTA_InitRefClockInfo(&pstMtaCtx->stAgpsCtx.stRefClockInfo); /* 初始化RF&Lcd相关上下文件 */ TAF_MTA_InitRfLcdIntrusionCtx(&pstMtaCtx->stMtaRfLcdCtx); TAF_MTA_InitEcidCfg(&pstMtaCtx->stAgpsCtx.stEcidCfg); #if(FEATURE_ON == FEATURE_LTE) TAF_MTA_InitIsmCoex(pstMtaCtx->astIsmCoex); #endif #if (FEATURE_ON == FEATURE_PTM) TAF_MMA_InitInfoCltCtx(&pstMtaCtx->stInfoCltCtx); #endif TAF_MTA_InitNetmonGsmInfo(&pstMtaCtx->stNetmonGsmInfo); return; }
VOS_VOID TAF_MTA_SaveItemInCmdBufferQueue( TAF_MTA_TIMER_ID_ENUM_UINT32 enTimerId, VOS_UINT8 *pucMsgInfo, VOS_UINT32 ulMsgInfoLen ) { VOS_UINT32 i; VOS_UINT8 *pucMsgBuf; TAF_MTA_CMD_BUFFER_STRU *pstCmdBufferQueue; /* 如果消息指针为空,直接返回 */ if (VOS_NULL_PTR == pucMsgInfo) { return; } pstCmdBufferQueue = TAF_MTA_GetCmdBufferQueueAddr(); for ( i = 0; i < TAF_MTA_MAX_CMD_BUFFER_QUEUE_SIZE; i++ ) { if (TI_TAF_MTA_TIMER_BUTT == pstCmdBufferQueue[i].enTimerId) { break; } } /* 判定当前的循环队列是否已经满了,如果满了则直接返回,进行异常打印 */ if ( i >= TAF_MTA_MAX_CMD_BUFFER_QUEUE_SIZE ) { /* 缓存队列已满 */ MTA_WARNING2_LOG("TAF_MTA_SaveItemInCmdBufferQueue, Buffer Full, Timer Id :", UEPS_PID_MTA, enTimerId); return; } /* 在队列增加相应的信息,分配内存,进行信息赋值 */ pucMsgBuf = (VOS_UINT8 *)PS_MEM_ALLOC(UEPS_PID_MTA, ulMsgInfoLen); if (VOS_NULL_PTR == pucMsgBuf) { /* 内存分配失败 */ MTA_WARNING2_LOG("TAF_MTA_SaveItemInCmdBufferQueue, Mem Alloc Fail, Timer Id :", UEPS_PID_MTA, enTimerId ); return; } /* 赋值 */ PS_MEM_CPY((VOS_UINT8 *)pucMsgBuf, pucMsgInfo, ulMsgInfoLen); pstCmdBufferQueue[i].pucMsgInfo = pucMsgBuf; pstCmdBufferQueue[i].enTimerId = enTimerId; pstCmdBufferQueue[i].ulMsgInfoLen = ulMsgInfoLen; return; }