VOS_UINT32 TAF_AGENT_GetSysMode( VOS_UINT16 usClientId, TAF_AGENT_SYS_MODE_STRU *pstSysMode ) { VOS_UINT32 ulResult; TAFAGENT_MTA_GET_SYSMODE_CNF_STRU *pstCnf = VOS_NULL_PTR; TAFAGENT_MTA_GET_SYSMODE_REQ_STRU *pstMsg = VOS_NULL_PTR; ulResult = VOS_ERR; #ifdef DMT return DMT_GetSysMode(pstSysMode); #else 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_GetSysMode: 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_SYSMODE_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN(ACPU_PID_TAFAGENT, sizeof(TAFAGENT_MTA_GET_SYSMODE_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetSysMode: 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_SYSMODE_REQ; /* 将请求消息发送给CCPU */ ulResult = PS_SEND_MSG(ACPU_PID_TAFAGENT, pstMsg); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetSysMode: 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_GetSysMode: 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_SYSMODE_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_SYSMODE_CNF == pstCnf->enMsgId) && (VOS_OK == pstCnf->ulRet)) { pstSysMode->enRatType = pstCnf->stSysMode.enRatType; pstSysMode->enSysSubMode = pstCnf->stSysMode.enSysSubMode; 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; #endif }
VOS_UINT32 TAF_AGENT_FindCidForDial( MN_CLIENT_ID_T usClientId, VOS_UINT8 *pCid ) { VOS_UINT32 ulResult; TAFAGENT_APS_FIND_CID_FOR_DIAL_CNF_STRU *pstCnf; TAFAGENT_APS_FIND_CID_FOR_DIAL_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_FindCidForDial: 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_FIND_CID_FOR_DIAL_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN(ACPU_PID_TAFAGENT, sizeof(TAFAGENT_APS_FIND_CID_FOR_DIAL_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAFAGENT_APS_FIND_CID_FOR_DIAL_REQ_STRU: Malloc Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } /* 填写消息头 */ pstMsg->ulReceiverPid = AT_GetDestPid(usClientId, I0_WUEPS_PID_TAF); pstMsg->enMsgId = ID_TAFAGENT_APS_FIND_CID_FOR_DIAL_REQ; /* 将请求消息发送给CCPU */ ulResult = PS_SEND_MSG(ACPU_PID_TAFAGENT, pstMsg); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_FindCidForDial: 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_FindCidForDial: 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_FIND_CID_FOR_DIAL_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_FIND_CID_FOR_DIAL_CNF == pstCnf->enMsgId) && (VOS_OK == pstCnf->ulRet)) { *pCid = pstCnf->ucCid; 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; } /* 发送异步应用请求 */ ulResult = MN_CALL_SendAppRequest(ID_TAFAGENT_MN_GET_CALL_INFO_REQ, usClientId, 0, 0, VOS_NULL_PTR); 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; }