VOS_VOID RRM_ClearRegInfo ( VOS_UINT16 usRegInfoIndex ) { RRM_REG_INFO_STRU *pstRegInfoAddr = VOS_NULL_PTR; pstRegInfoAddr = RRM_GetRegInfoAddr(usRegInfoIndex); if (VOS_NULL_PTR == pstRegInfoAddr) { RRM_WARNING_LOG1(UEPS_PID_RRM, "RRM_ClearRegInfo: pstRegInfoAddr is null.", usRegInfoIndex); return; } if (PS_TRUE == pstRegInfoAddr->enRegisteredFlg) { /* 清除REG信息 */ pstRegInfoAddr->enRegisteredFlg = PS_FALSE; pstRegInfoAddr->enRatType = RRM_PS_RAT_TYPE_BUTT; pstRegInfoAddr->enModemId = MODEM_ID_BUTT; pstRegInfoAddr->ulPid = RRM_PID_DEFAULT_VALUE; } return; }
VOS_VOID RRM_ShowInfo(VOS_VOID) { VOS_UINT16 usIndex; RRM_RFID_INFO_STRU *pstRFIDInfoAddr = VOS_NULL_PTR; RRM_REG_INFO_STRU *pstRegInfoAddr = VOS_NULL_PTR; NV_MODEM_RF_SHARE_CFG_STRU *pstModemCfgInfoAddr = VOS_NULL_PTR; for (usIndex = 0; usIndex < RRM_RFID_BUTT; usIndex++) { pstRFIDInfoAddr = RRM_GetRFIDInfoAddr(usIndex); if (VOS_NULL_PTR != pstRFIDInfoAddr) { vos_printf("========RFID info for Index %d ========\n", usIndex); vos_printf("RFID使用状态: %d \n", pstRFIDInfoAddr->enRFIDUsedFlg); vos_printf("RFID使用的MODEM: %d \n", pstRFIDInfoAddr->enUsingModemId); vos_printf("RFID使用的值: %d \n", pstRFIDInfoAddr->usUsingRFIDValue); } } vos_printf("\r\n"); for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++) { pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex); if (VOS_NULL_PTR != pstRegInfoAddr) { vos_printf("========REG info for Index %d ========\n", usIndex); vos_printf("REG信息状态: %d \n", pstRegInfoAddr->enRegisteredFlg); vos_printf("REG信息的RAT TYPE: %d \n", pstRegInfoAddr->enRatType); vos_printf("REG信息的MODEM: %d \n", pstRegInfoAddr->enModemId); vos_printf("REG信息的PID: %d \n", pstRegInfoAddr->ulPid); } } vos_printf("\r\n"); for (usIndex = 0; usIndex < MODEM_ID_BUTT; usIndex++) { pstModemCfgInfoAddr = RRM_GetModemCfgInfoAddr(usIndex); if (VOS_NULL_PTR != pstModemCfgInfoAddr) { vos_printf("========MODEM info for Index %d ========\n", usIndex); vos_printf("MODEM是否支持该特性: %d \n", pstModemCfgInfoAddr->usSupportFlag); vos_printf("MODEM的GSM RFID值: %d \n", pstModemCfgInfoAddr->usGSMRFID); vos_printf("MODEM的WCDMA RFID值: %d \n", pstModemCfgInfoAddr->usWCDMARFID); vos_printf("MODEM的TDS RFID值: %d \n", pstModemCfgInfoAddr->usTDSRFID); vos_printf("MODEM的LTE RFID值: %d \n", pstModemCfgInfoAddr->usLTERFID); vos_printf("MODEM的CDMA RFID值: %d \n", pstModemCfgInfoAddr->usCDMARFID); vos_printf("MODEM的EVDO RFID值: %d \n", pstModemCfgInfoAddr->usEVDORFID); } } vos_printf("\r\n"); return; }
VOS_UINT32 RRM_JudgeRegInfoIsReged ( MODEM_ID_ENUM_UINT16 enModemId, VOS_UINT32 ulPid, PS_BOOL_ENUM_UINT8 *enIsSameModem, VOS_UINT16 *usRegInfoIndex, PS_BOOL_ENUM_UINT8 *enRegInfoIsReged ) { VOS_UINT16 usIndex; RRM_REG_INFO_STRU *pstRegInfoAddr = VOS_NULL_PTR; /* 初始化 */ *enIsSameModem = PS_FALSE; *enRegInfoIsReged = PS_FALSE; for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++) { pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex); if (VOS_NULL_PTR != pstRegInfoAddr) { /* 当前REG INFO是否已注册判断 */ if (PS_TRUE == pstRegInfoAddr->enRegisteredFlg) { /* PID的值是否相同判断 */ if (ulPid == pstRegInfoAddr->ulPid) { /* 记录索引号 */ *usRegInfoIndex = usIndex; /* 设置使用标识 */ *enRegInfoIsReged = PS_TRUE; /* 同一个MODEM判断 */ if (enModemId == pstRegInfoAddr->enModemId) { *enIsSameModem = PS_TRUE; } return VOS_OK; } } } } return VOS_OK; }
VOS_VOID RRM_RcvTimeOutProc(RRM_RFID_ENUM_UINT16 enRFIDIndex) { VOS_UINT16 usIndex; VOS_UINT32 ulRecievePid; RRM_REG_INFO_STRU *pstRegInfoAddr = VOS_NULL_PTR; RRM_RFID_TIMER_CTRL_STRU *pstRFIDTimerAddr = VOS_NULL_PTR; /* 获取该状态定时器控制块地址 */ pstRFIDTimerAddr = RRM_GetRFIDTimerAddr(enRFIDIndex); /* 无法获取该定时器控制块地址,说明定时器ID非法 */ if( VOS_NULL_PTR == pstRFIDTimerAddr) { /* 打印错误信息 */ RRM_ERROR_LOG1(UEPS_PID_RRM, "TimerId is Error!", (VOS_INT32)enRFIDIndex); return; } /* 防止其他分支停止定时器后,缓存的超时处理的消息又收到的场景 */ if (RRM_RFID_BUTT == pstRFIDTimerAddr->enRFIDTimerId) { /* 打印错误信息 */ RRM_WARNING_LOG1(UEPS_PID_RRM, "Timer is already stop!", (VOS_INT32)enRFIDIndex); return; } /* 清除RF资源信息 */ RRM_ClearRFIDUsedInfo(enRFIDIndex); /* 注册信息处理 */ for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++) { pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex); if (VOS_NULL_PTR != pstRegInfoAddr) { if (PS_TRUE == pstRegInfoAddr->enRegisteredFlg) { ulRecievePid = pstRegInfoAddr->ulPid; /* 向已注册的协议栈任务发送通知 */ RRM_SndPSStatusInd(ulRecievePid); } } } }
VOS_VOID RRM_InitRegInfo(VOS_VOID) { VOS_UINT16 usIndex; RRM_REG_INFO_STRU *pstRegInfoAddr = VOS_NULL_PTR; for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++) { pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex); if (VOS_NULL_PTR != pstRegInfoAddr) { /* 初始化REG信息 */ pstRegInfoAddr->enRegisteredFlg = PS_FALSE; pstRegInfoAddr->enRatType = RRM_PS_RAT_TYPE_BUTT; pstRegInfoAddr->enModemId = MODEM_ID_BUTT; pstRegInfoAddr->ulPid = RRM_PID_DEFAULT_VALUE; } } return; }
VOS_VOID RRM_SetRegInfo ( PS_BOOL_ENUM_UINT8 enRegisteredFlg, RRM_PS_RAT_TYPE_ENUM_UINT8 enRatType, MODEM_ID_ENUM_UINT16 enModemId, VOS_UINT32 ulPid ) { VOS_UINT16 usIndex; RRM_REG_INFO_STRU *pstRegInfoAddr = VOS_NULL_PTR; for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++) { pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex); if (VOS_NULL_PTR != pstRegInfoAddr) { if (PS_FALSE == pstRegInfoAddr->enRegisteredFlg) { /* 设置REG信息 */ pstRegInfoAddr->enRegisteredFlg = enRegisteredFlg; pstRegInfoAddr->enRatType = enRatType; pstRegInfoAddr->enModemId = enModemId; pstRegInfoAddr->ulPid = ulPid; break; } } } if (RRM_REG_MAX_NUMBER == usIndex) { RRM_WARNING_LOG4(UEPS_PID_RRM, "Reg Info has been full.", enRegisteredFlg, enRatType, enModemId, ulPid); } return; }