示例#1
0
VOS_VOID RRM_ClearRFIDUsedInfo
(
    RRM_RFID_ENUM_UINT16                enRFIDIndex
)
{
    RRM_RFID_INFO_STRU                 *pstRFIDInfoAddr = VOS_NULL_PTR;


    pstRFIDInfoAddr = RRM_GetRFIDInfoAddr(enRFIDIndex);
    if (VOS_NULL_PTR == pstRFIDInfoAddr)
    {
        RRM_ERROR_LOG1(UEPS_PID_RRM, "RRM_ClearRFIDUsedInfo: pstRFIDInfoAddr is null.", enRFIDIndex);
        return;
    }

    if (PS_TRUE == pstRFIDInfoAddr->enRFIDUsedFlg)
    {
        /* 清除RFID信息 */
        pstRFIDInfoAddr->enRFIDUsedFlg              = PS_FALSE;
        pstRFIDInfoAddr->enUsingModemId             = MODEM_ID_BUTT;
        pstRFIDInfoAddr->usUsingRFIDValue           = RRM_RFID_DEFAULT_VALUE;
        pstRFIDInfoAddr->stRFIDTimer.enRFIDTimerId  = RRM_RFID_BUTT;
        pstRFIDInfoAddr->stRFIDTimer.pstStaTHandle  = VOS_NULL_PTR;

    }


    return;
}
VOS_UINT32 RRM_StartTimer
(
    RRM_RFID_ENUM_UINT16                enRFIDTimerId
)
{
    RRM_RFID_TIMER_CTRL_STRU           *pstRFIDTimerAddr;
    VOS_UINT32                          ulRslt;


    /*获取该状态定时器控制块地址*/
    pstRFIDTimerAddr       = RRM_GetRFIDTimerAddr(enRFIDTimerId);

    /*无法获取该定时器控制块地址,说明定时器ID非法*/
    if( VOS_NULL_PTR == pstRFIDTimerAddr)
    {
        /* 打印错误信息 */
        RRM_WARNING_LOG1(UEPS_PID_RRM, "TimerId is Error!", enRFIDTimerId);
        return VOS_ERR;
    }

    /*检查该状态定时器是否在运行,如果正在运行,先停止该定时器。
      停止定时器时,VOS会直接将该定时器句柄清除为VOS_NULL_PTR*/
    if(VOS_NULL_PTR != pstRFIDTimerAddr->pstStaTHandle)
    {
        VOS_StopRelTimer(&(pstRFIDTimerAddr->pstStaTHandle));
    }

    /* 定时器ID设置 */
    pstRFIDTimerAddr->enRFIDTimerId = enRFIDTimerId;

    /* 定时器无参数信息,启动定时器时将定时器参数设置为0
      非循环定时器,定时器模式为VOS_RELTIMER_NOLOOP*/
    ulRslt        = VOS_StartRelTimer( &(pstRFIDTimerAddr->pstStaTHandle),
                                        UEPS_PID_RRM,
                                        RRM_TMR_DEF_LEN,
                                        pstRFIDTimerAddr->enRFIDTimerId,
                                        0,
                                        VOS_RELTIMER_NOLOOP,
                                        VOS_TIMER_PRECISION_0);

    /*这里调用的是VOS的接口函数,因此需要使用VOS的返回值进行检查*/
    if( VOS_OK != ulRslt)
    {
        /* 启动失败,打印失败信息 */
        RRM_ERROR_LOG1(UEPS_PID_RRM, "Start TimerId Failure!", enRFIDTimerId);
        return VOS_ERR;
    }

    return VOS_OK;
}
示例#3
0
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);
            }
        }
    }

}
示例#4
0
VOS_VOID RRM_RcvPSMsg(MsgBlock *pstMsg)
{
    VOS_UINT32                          ulMsgCnt;
    VOS_UINT32                          ulResult;


    /* 获取消息个数 */
    ulMsgCnt = sizeof(g_astRrmPsMsgProcTab) / sizeof(RRM_MSG_PROC_STRU);

    /* 查表,进行消息分发*/
    ulResult = RRM_HandleMsgTab(ulMsgCnt, pstMsg, g_astRrmPsMsgProcTab);

    /* 没有找到匹配的消息 */
    if (VOS_ERR == ulResult)
    {
        RRM_ERROR_LOG1(UEPS_PID_RRM, "MTC_RcvPSMsg, ulResult is false, ulMsgCnt is error.", (VOS_INT32)ulMsgCnt);
    }


    return;
}
示例#5
0
VOS_VOID RRM_InitModemInfo(VOS_VOID)
{
    VOS_UINT32                          ulRet;
    VOS_UINT16                          usIndex;
    NV_MODEM_RF_SHARE_CFG_STRU          stModemRFShareCfg;
    NV_MODEM_RF_SHARE_CFG_STRU         *pstModemCfgInfoAddr = VOS_NULL_PTR;


    for (usIndex = 0; usIndex < MODEM_ID_BUTT; usIndex++)
    {
        PS_MEM_SET(&stModemRFShareCfg, 0, sizeof(stModemRFShareCfg));

        /* 获取Modem配置信息地址 */
        pstModemCfgInfoAddr = RRM_GetModemCfgInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstModemCfgInfoAddr)
        {
            /* 初始化Modem配置信息 */
            RRM_InitModemCfgInfo(pstModemCfgInfoAddr);

            /* 读取Modem射频配置nv项 */
            ulRet = NV_ReadEx(usIndex,
                              en_NV_MODEM_RF_SHARE_CFG,
                              &stModemRFShareCfg,
                              sizeof(NV_MODEM_RF_SHARE_CFG_STRU));
            if (VOS_OK != ulRet)
            {
                RRM_ERROR_LOG1(UEPS_PID_RRM, "RRM_InitModemInfo: Read Nv Fail.", usIndex);
                continue;
            }

            /* 更新MODEM的配置信息 */
            PS_MEM_CPY(pstModemCfgInfoAddr, &stModemRFShareCfg, sizeof(NV_MODEM_RF_SHARE_CFG_STRU));
        }
    }

    return;
}