VOS_VOID CDS_ImsaSetImsBearerReqMsgProc(MsgBlock *pstMsg) { IMSA_CDS_SET_IMS_BEARER_REQ_STRU *pstReqMsg; CDS_ENTITY_STRU *pstCdsEntity; CDS_INFO_LOG(UEPS_PID_CDS,"Enter CDS_ImsaSetImsBearerReqMsgProc."); pstReqMsg = (IMSA_CDS_SET_IMS_BEARER_REQ_STRU *)((VOS_UINT32)pstMsg); if (pstReqMsg->ulImsBearerNum > IMSA_CDS_MAX_IMS_BEARER_NUM) { CDS_ERROR_LOG1(UEPS_PID_CDS,"CDS_ImsaSetImsBearerReqMsgProc : IMS Bearer Number Error.",pstReqMsg->ulImsBearerNum); CDS_SendImsaSetImsBearerCnfMsg(PS_FAIL); return; } /*默认按MODEM_0处理*/ pstCdsEntity = CDS_GetCdsEntity(MODEM_ID_0); if (VOS_NULL_PTR == pstCdsEntity) { CDS_ERROR_LOG(UEPS_PID_CDS,"CDS_ImsaSetImsBearerReqMsgProc : Get CDS Entity Fail."); CDS_SendImsaSetImsBearerCnfMsg(PS_FAIL); return; } /*注册IMS NIC回调函数*/ if (PS_SUCC != IMS_NIC_RegUlDataSendCb((IMS_NIC_SEND_UL_DATA_FUNC)CDS_RxDataFromImsNIC, pstCdsEntity->usModemId)) { CDS_ERROR_LOG(UEPS_PID_CDS,"CDS_ImsaSetImsBearerReqMsgProc : IMS_NIC_RegUlDataSendCb Fail."); CDS_SendImsaSetImsBearerCnfMsg(PS_FAIL); return; } /*更新CDS实体信息*/ pstCdsEntity->ulImsBearerNum = pstReqMsg->ulImsBearerNum; PS_MEM_CPY(pstCdsEntity->astImsBearerInfo, pstReqMsg->astImsBearerArray, pstReqMsg->ulImsBearerNum * sizeof(IMSA_CDS_IMS_BEARER_STRU)); pstCdsEntity->stImsPortInfo.usMinImsPort = pstReqMsg->stImsPortInfo.usMinImsPort; pstCdsEntity->stImsPortInfo.usMaxImsPort = pstReqMsg->stImsPortInfo.usMaxImsPort; /*发送成功消息*/ CDS_SendImsaSetImsBearerCnfMsg(PS_SUCC); CDS_INFO_LOG(UEPS_PID_CDS,"Leave CDS_ImsaSetImsBearerReqMsgProc Succ."); return; }
VOS_VOID CDS_SendImsaSetImsBearerCnfMsg(VOS_UINT32 ulResult) { IMSA_CDS_SET_IMS_BEARER_CNF_STRU *pstCnfMsg; VOS_UINT32 ulMsgLen; CDS_INFO_LOG1(UEPS_PID_CDS,"Enter CDS_SendImsaSetImsBearerCnfMsg. ulResult=",ulResult); ulMsgLen = sizeof(IMSA_CDS_SET_IMS_BEARER_CNF_STRU); pstCnfMsg = CDS_ALLOC_MSG_WITH_HDR(ulMsgLen); if (VOS_NULL_PTR == pstCnfMsg) { CDS_ERROR_LOG1(UEPS_PID_CDS,"CDS_SendImsaSetImsBearerCnfMsg : Alloc Msg Fail. Size .",ulMsgLen); return; } /*填写消息内容*/ CDS_CFG_MSG_HDR(pstCnfMsg,PS_PID_IMSA); pstCnfMsg->ulMsgId = ID_IMSA_CDS_SET_IMS_BEARER_CNF; pstCnfMsg->ulResult = ulResult; /*发送消息*/ CDS_SEND_MSG(pstCnfMsg); CDS_INFO_LOG(UEPS_PID_CDS,"Leave CDS_SendImsaSetImsBearerCnfMsg Succ."); return; }
VOS_VOID CDS_SendNdDataIndMsg(TTF_MEM_ST *pstNdPkt, VOS_UINT8 ucRabId, const CDS_ENTITY_STRU *pstCdsEntity) { CDS_NDCLIENT_ND_DATA_IND_STRU *pstDataInd; VOS_UINT32 ulMsgLen; VOS_UINT32 ulPktLen; CDS_ASSERT(VOS_NULL_PTR != pstNdPkt); CDS_ASSERT(VOS_NULL_PTR != pstCdsEntity); CDS_INFO_LOG1(UEPS_PID_CDS,"Enter CDS_SendNdDataIndMsg.ucRabid=",ucRabId); /*申请消息内存*/ ulPktLen = TTF_MemGetLen(UEPS_PID_CDS,pstNdPkt); ulMsgLen = sizeof(CDS_NDCLIENT_ND_DATA_IND_STRU) + ulPktLen; pstDataInd = CDS_ALLOC_MSG_WITH_HDR(ulMsgLen); if (VOS_NULL_PTR == pstDataInd) { CDS_ERROR_LOG1(UEPS_PID_CDS,"CDS_SendNdDataIndMsg : Alloc Msg Fail. Size=",ulMsgLen); return; } /*填写消息内容*/ CDS_CFG_MSG_HDR(pstDataInd,UEPS_PID_NDCLIENT); pstDataInd->enMsgId = ID_CDS_NDCLIENT_ND_DATA_IND; pstDataInd->enModemId = pstCdsEntity->usModemId; pstDataInd->ucRabId = ucRabId; pstDataInd->ulLen = ulPktLen; /*内存拷贝*/ if (PS_SUCC != TTF_MemGetHeadData(UEPS_PID_CDS, pstNdPkt, pstDataInd->aucData, (VOS_UINT16)ulPktLen)) { /*lint -e961*/ PS_FREE_MSG(UEPS_PID_CDS, pstDataInd); /*lint +e961*/ CDS_ERROR_LOG(UEPS_PID_CDS,"CDS_SendNdDataIndMsg : TTF_MemGetHeadData Error."); return ; } /*发送消息*/ CDS_SEND_MSG(pstDataInd); CDS_INFO_LOG(UEPS_PID_CDS,"Leave CDS_SendNdDataIndMsg Succ."); return; }
VOS_UINT32 CDS_EnableDlIPFFilter(VOS_UINT16 usModemId) { IPF_FILTER_CHAIN_TYPE_E enFCType; /*根据ModemId区分过滤器首地址*/ if (MODEM_ID_0 == usModemId) { enFCType = IPF_MODEM0_DLFC; } else if (MODEM_ID_1 == usModemId) { enFCType = IPF_MODEM1_DLFC; } else { CDS_ERROR_LOG2(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Input Para Error. ModemId,MaxModemNum:", usModemId,CDS_MAX_MODEM_NUM); return PS_FAIL; } /*改变下行IPF过滤器的类型*/ if (PS_SUCC != CDS_ChangeDlIpfFilterType(usModemId)) { CDS_ERROR_LOG(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Change DL Filter Type Fail."); return PS_FAIL; } /*将已设置好的过滤器配置给下行IPF*/ if (IPF_SUCCESS != BSP_IPF_SetFilter(enFCType, CDS_GET_DL_IPF_FILTER_ARRAY(), CDS_GET_DL_IPF_FILTER_NUM())) { CDS_ERROR_LOG1(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Enable Dl IPF Filter Fail.Filter Num:", CDS_GET_DL_IPF_FILTER_NUM()); return PS_FAIL; } else { CDS_INFO_LOG(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Enable Dl IPF Filter Success."); return PS_SUCC; } }
VOS_UINT32 CDS_EnableDlIPFFilter(VOS_UINT16 usModemId) { if (usModemId >= CDS_MAX_MODEM_NUM) { CDS_ERROR_LOG2(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Input Para Error. ModemId,MaxModemNum:", usModemId,CDS_MAX_MODEM_NUM); return PS_FAIL; } /*将已设置好的过滤器配置给下行IPF*/ if (IPF_SUCCESS != BSP_IPF_SetFilter(IPF_CHANNEL_DOWN, CDS_GET_DL_IPF_FILTER_ARRAY(), CDS_GET_DL_IPF_FILTER_NUM())) { CDS_ERROR_LOG1(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Enable Dl IPF Filter Fail.Filter Num:", CDS_GET_DL_IPF_FILTER_NUM()); return PS_FAIL; } else { CDS_INFO_LOG(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Enable Dl IPF Filter Success."); return PS_SUCC; } }
VOS_UINT32 CDS_DisableDlIPFFilter(MODEM_ID_ENUM_UINT16 enModemId) { VOS_UINT32 ulFilterNum = 0; if (enModemId >= CDS_MAX_MODEM_NUM) { CDS_ERROR_LOG2(UEPS_PID_CDS, "CDS_DisableDlIPFFilter : Input Para Error. ModemId,MaxModemNum:", enModemId,CDS_MAX_MODEM_NUM); return PS_FAIL; } if (IPF_SUCCESS != BSP_IPF_SetFilter(IPF_CHANNEL_DOWN, CDS_GET_DL_IPF_FILTER_ARRAY(), ulFilterNum)) { CDS_ERROR_LOG1(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Disable Dl IPF Filter Fail.Filter Num:", CDS_GET_DL_IPF_FILTER_NUM()); return PS_FAIL; } else { CDS_INFO_LOG(UEPS_PID_CDS, "CDS_EnableDlIPFFilter : Disable Dl IPF Filter Success."); return PS_SUCC; } }
VOS_VOID CDS_IMSA_MsgProc(MsgBlock *pstMsg) { if (VOS_NULL_PTR == pstMsg) { CDS_INFO_LOG(UEPS_PID_CDS,"CDS_IMSA_MsgProc : Input NULL PTR."); return; } switch(TTF_GET_MSG_NAME(pstMsg)) { case ID_IMSA_CDS_SET_IMS_BEARER_REQ: CDS_ImsaSetImsBearerReqMsgProc(pstMsg); break; default: CDS_INFO_LOG1(UEPS_PID_CDS,"CDS_IMSA_MsgProc: Msg Id Error.MsgID=",TTF_GET_MSG_NAME(pstMsg)); break; } return; }