VOS_UINT32 TAF_AGENT_IsValidMsg(MsgBlock* pstMsg) { MSG_HEADER_STRU *pstMsgHeader; if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_IsValidMsg: Msg is invalid!"); return VOS_ERR; } pstMsgHeader = (MSG_HEADER_STRU *)pstMsg; /* Modified by l60609 for DSDA Phase II, 2012-12-24, Begin */ if ((I0_WUEPS_PID_TAF == pstMsgHeader->ulSenderPid) || (I1_WUEPS_PID_TAF == pstMsgHeader->ulSenderPid) || (I0_UEPS_PID_MTA == pstMsgHeader->ulSenderPid) || (I1_UEPS_PID_MTA == pstMsgHeader->ulSenderPid)) { if ((ID_TAFAGENT_APS_FIND_CID_FOR_DIAL_CNF <= pstMsgHeader->ulMsgName) && (ID_TAFAGENT_MSG_ID_ENUM_BUTT > pstMsgHeader->ulMsgName)) { return VOS_OK; } } /* Modified by l60609 for DSDA Phase II, 2012-12-24, End */ return VOS_ERR; }
VOS_UINT32 TAF_AGENT_IsValidMsg(MsgBlock* pstMsg) { MSG_HEADER_STRU *pstMsgHeader; if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_IsValidMsg: Msg is invalid!"); return VOS_ERR; } pstMsgHeader = (MSG_HEADER_STRU *)pstMsg; if ((I0_WUEPS_PID_TAF == pstMsgHeader->ulSenderPid) || (I1_WUEPS_PID_TAF == pstMsgHeader->ulSenderPid) || (I0_UEPS_PID_MTA == pstMsgHeader->ulSenderPid) || (I1_UEPS_PID_MTA == pstMsgHeader->ulSenderPid)) { if ((ID_TAFAGENT_APS_FIND_CID_FOR_DIAL_CNF <= pstMsgHeader->ulMsgName) && (ID_TAFAGENT_MSG_ID_ENUM_BUTT > pstMsgHeader->ulMsgName)) { return VOS_OK; } } return VOS_ERR; }
VOS_UINT32 Taf_Agent_InitCtx(VOS_VOID) { g_stTafAgentCtx.pucTafAcpuCnfMsg = VOS_NULL_PTR; /* 分配互斥信号量 */ if (VOS_OK != VOS_SmMCreate("SYNC", VOS_SEMA4_FIFO, &g_stTafAgentCtx.hTafAcpuSyncSem)) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "Create aps acpu sycn sem failed!"); TAF_AGENT_DBG_CREATE_MUTEX_SEM_FAIL_NUM(1); g_stTafAgentCtx.ulInitFlg = VOS_FALSE; return VOS_ERR; } else { TAF_AGENT_DBG_SAVE_MUTEX_SEM_ID(g_stTafAgentCtx.hTafAcpuSyncSem); } /* 分配二进制信号量 */ if (VOS_OK != VOS_SmBCreate( "CNF", 0, VOS_SEMA4_FIFO, &g_stTafAgentCtx.hTafAcpuCnfSem)) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "Create aps acpu cnf sem failed!"); TAF_AGENT_DBG_CREATE_BINARY_SEM_FAIL_NUM(1); g_stTafAgentCtx.ulInitFlg = VOS_FALSE; return VOS_ERR; } else { TAF_AGENT_DBG_SAVE_BINARY_SEM_ID(g_stTafAgentCtx.hTafAcpuCnfSem); } g_stTafAgentCtx.ulInitFlg = VOS_TRUE; TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); TAF_AGENT_ClearMsg(); return VOS_OK; }
/***************************************************************************** 函 数 名 : TAF_AGENT_GetAntState 功能描述 : 获取天线状态 输入参数 : VOS_UINT16 usClientId 输出参数 : VOS_UINT16 *pusAntState 返 回 值 : VOS_UINT32 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2013年8月2日 作 者 : z60575 修改内容 : 获取天线状态 *****************************************************************************/ VOS_UINT32 TAF_AGENT_GetAntState( VOS_UINT16 usClientId, VOS_UINT16 *pusAntState ) { VOS_UINT32 ulResult; TAFAGENT_MTA_GET_ANT_STATE_CNF_STRU *pstCnf = VOS_NULL_PTR; TAFAGENT_MTA_GET_ANT_STATE_REQ_STRU *pstMsg = VOS_NULL_PTR; ulResult = VOS_ERR; TAF_AGENT_SetTafAcpuCnfMsg(VOS_NULL_PTR); TAF_AGENT_ClearMsg(); /* 如果同步信号量已锁,挂起任务,依次进入等待队列;如果同步信号量未锁,锁信号量。*/ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuSyncSem(), 0); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Lock Mutex SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_MUTEX_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_MUTEX_SEM_FAIL_NUM(1); return VOS_ERR; } /* 构造消息 */ pstMsg = (TAFAGENT_MTA_GET_ANT_STATE_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN(ACPU_PID_TAFAGENT, sizeof(TAFAGENT_MTA_GET_ANT_STATE_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Malloc Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } /* 填写消息头 */ pstMsg->ulReceiverPid = AT_GetDestPid(usClientId, I0_UEPS_PID_MTA); pstMsg->enMsgId = ID_TAFAGENT_MTA_GET_ANT_STATE_REQ; /* 将请求消息发送给CCPU */ ulResult = PS_SEND_MSG(ACPU_PID_TAFAGENT, pstMsg); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Send Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_TRUE); /* 等待回复信号量初始为锁状态,等待CCPU的回复后信号量解锁。 */ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuCnfSem(), PS_SYNC_CNF_TIMEOUT_LEN); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Lock Binary SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_BIN_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_BINARY_SEM_FAIL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } ulResult = VOS_ERR; pstCnf = (TAFAGENT_MTA_GET_ANT_STATE_CNF_STRU*)(TAF_AGENT_GetTafAcpuCnfMsg()); if (VOS_NULL_PTR == pstCnf) { TAF_AGENT_DBG_SYNC_MSG_IS_NULL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } if ((ID_TAFAGENT_MTA_GET_ANT_STATE_CNF == pstCnf->enMsgId) && (VOS_OK == pstCnf->ulRslt)) { *pusAntState = pstCnf->usAntState; ulResult = VOS_OK; } else { TAF_AGENT_DBG_SYNC_MSG_NOT_MATCH_NUM(1); } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return ulResult; }
VOS_UINT32 TAF_AGENT_GetCallInfoReq( MN_CLIENT_ID_T usClientId, VOS_UINT8 *pucCallNum, TAFAGERNT_MN_CALL_INFO_STRU *pstCallInfos ) { TAFAGERNT_MN_GET_CALL_INFO_CNF_STRU *pstCnf; VOS_UINT32 ulResult; ulResult = VOS_ERR; TAF_AGENT_SetTafAcpuCnfMsg(VOS_NULL_PTR); TAF_AGENT_ClearMsg(); /* 如果同步信号量已锁,挂起任务,依次进入等待队列;如果同步信号量未锁,锁信号量。*/ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuSyncSem(), 0); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetCallInfoReq: Lock Mutex SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_MUTEX_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_MUTEX_SEM_FAIL_NUM(1); return VOS_ERR; } /* 发送异步应用请求 */ /* Modified by l60609 for DSDA PhaseIII, 2013-3-13, begin */ ulResult = MN_CALL_SendAppRequest(ID_TAFAGENT_MN_GET_CALL_INFO_REQ, usClientId, 0, 0, VOS_NULL_PTR); /* Modified by l60609 for DSDA PhaseIII, 2013-3-13, end */ if (MN_ERR_NO_ERROR != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetCallInfoReq: Malloc Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_TRUE); #if (defined(__PS_WIN32_RECUR__)) ulResult = VOS_OK; #else /* 等待回复信号量初始为锁状态,等待CCPU的回复后信号量解锁。 */ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuCnfSem(), PS_SYNC_CNF_TIMEOUT_LEN); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetCallInfoReq: Lock Binary SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_BIN_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_BINARY_SEM_FAIL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } ulResult = VOS_ERR; pstCnf = (TAFAGERNT_MN_GET_CALL_INFO_CNF_STRU*)(TAF_AGENT_GetTafAcpuCnfMsg()); if (VOS_NULL_PTR == pstCnf) { TAF_AGENT_DBG_SYNC_MSG_IS_NULL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } if (ID_TAFAGENT_MN_GET_CALL_INFO_CNF == pstCnf->enMsgId) { PS_MEM_CPY((VOS_VOID*)pstCallInfos, (VOS_VOID*)(pstCnf->stCallInfo), sizeof(TAFAGERNT_MN_CALL_INFO_STRU) * MN_CALL_MAX_NUM); *pucCallNum = pstCnf->ucNumOfCalls; ulResult = VOS_OK; } else { TAF_AGENT_DBG_SYNC_MSG_NOT_MATCH_NUM(1); } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); #endif return ulResult; }
VOS_UINT32 TAF_AGENT_GetPdpCidQosPara( MN_CLIENT_ID_T usClientId, VOS_UINT8 ucCid, TAF_PS_PDP_QOS_QUERY_PARA_STRU *pstQosPara ) { VOS_UINT32 ulResult; TAFAGENT_APS_GET_CID_QOS_PARA_CNF_STRU *pstCnf; TAFAGENT_APS_GET_CID_QOS_PARA_REQ_STRU *pstMsg; ulResult = VOS_ERR; TAF_AGENT_SetTafAcpuCnfMsg(VOS_NULL_PTR); TAF_AGENT_ClearMsg(); /* 如果同步信号量已锁,挂起任务,依次进入等待队列;如果同步信号量未锁,锁信号量。*/ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuSyncSem(), 0); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Lock Mutex SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_MUTEX_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_MUTEX_SEM_FAIL_NUM(1); return VOS_ERR; } /* 构造消息 */ pstMsg = (TAFAGENT_APS_GET_CID_QOS_PARA_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN(ACPU_PID_TAFAGENT, sizeof(TAFAGENT_APS_GET_CID_QOS_PARA_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Malloc Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } /* 填写消息头 */ pstMsg->ulReceiverPid = AT_GetDestPid(usClientId, I0_WUEPS_PID_TAF); pstMsg->ulMsgId = ID_TAFAGENT_APS_GET_CID_QOS_PARA_REQ; pstMsg->ucCid = ucCid; /* 将请求消息发送给CCPU */ ulResult = PS_SEND_MSG(ACPU_PID_TAFAGENT, pstMsg); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Send Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_TRUE); /* 等待回复信号量初始为锁状态,等待CCPU的回复后信号量解锁。 */ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuCnfSem(), PS_SYNC_CNF_TIMEOUT_LEN); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Lock Binary SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_BIN_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_BINARY_SEM_FAIL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } ulResult = VOS_ERR; pstCnf = (TAFAGENT_APS_GET_CID_QOS_PARA_CNF_STRU*)(TAF_AGENT_GetTafAcpuCnfMsg()); if (VOS_NULL_PTR == pstCnf) { TAF_AGENT_DBG_SYNC_MSG_IS_NULL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } if ((ID_TAFAGENT_APS_GET_CID_QOS_PARA_CNF == pstCnf->enMsgId) && (VOS_OK == pstCnf->ulRet)) { PS_MEM_CPY((VOS_VOID*)pstQosPara, (VOS_VOID*)&(pstCnf->stQosPara), sizeof(TAF_PS_PDP_QOS_QUERY_PARA_STRU)); ulResult = VOS_OK; } else { TAF_AGENT_DBG_SYNC_MSG_NOT_MATCH_NUM(1); } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return ulResult; }