Пример #1
0
void CFormatMsgJ1939::vFormatTime(BYTE bExprnFlag,
                                  PSTJ1939_MSG psJ1939BData,
                                  PSFORMATTEDATA_J1939 psJ1939FData)
{
    BYTE bTmpExprnFlag = bExprnFlag;
    if (IS_TM_ABS_RES(bExprnFlag))//for Absolute reset timestamp
    {
        CLEAR_EXPR_TM_BITS(bTmpExprnFlag);
        SET_TM_ABS_RES(bTmpExprnFlag);
        vCalculateAndFormatTM(bTmpExprnFlag, psJ1939BData->m_sMsgProperties.m_un64TimeStamp,
                              psJ1939FData->m_acTimeAbsReset);
    }
    if (IS_TM_ABS_SET(bExprnFlag))
    {
        CLEAR_EXPR_TM_BITS(bTmpExprnFlag);
        SET_TM_ABS(bTmpExprnFlag);
        vCalculateAndFormatTM(bTmpExprnFlag, psJ1939BData->m_sMsgProperties.m_un64TimeStamp,
                              psJ1939FData->m_acTimeAbs);
    }

    if (IS_TM_REL_SET(bExprnFlag))
    {
        CLEAR_EXPR_TM_BITS(bTmpExprnFlag);
        SET_TM_REL(bTmpExprnFlag);
        vCalculateAndFormatTM(bTmpExprnFlag, psJ1939BData->m_sMsgProperties.m_un64TimeStamp,
                              psJ1939FData->m_acTimeRel);
    }

    if (IS_TM_SYS_SET(bExprnFlag))
    {
        CLEAR_EXPR_TM_BITS(bTmpExprnFlag);
        SET_TM_SYS(bTmpExprnFlag);
        vCalculateAndFormatTM(bTmpExprnFlag, psJ1939BData->m_sMsgProperties.m_un64TimeStamp,
                              psJ1939FData->m_acTimeSys);
    }
}
Пример #2
0
void CFormatMsgCommon::vCalculateAndFormatTM(BYTE bExprnFlag, UINT64 TimeStamp,
        char acTime[])
{
    /* In order to make this function work properly ENSURE bExprnFlag has ONLY
    ONE time mode bit up */

    DWORD dwTSTmp = 0; // temporary time stamp
    UINT64 qwRefSysTime, qwAbsBaseTime;
    m_ouRefTimeKeeper.vGetTimeParams(qwRefSysTime, qwAbsBaseTime);

    if (IS_TM_SYS_SET(bExprnFlag))
    {
        dwTSTmp = (DWORD) ((TimeStamp - qwAbsBaseTime) + qwRefSysTime);
    }
    else if (IS_TM_REL_SET(bExprnFlag))
    {
        if (m_qwRelBaseTime == 0)
        {
            m_qwRelBaseTime = TimeStamp;
        }
        //Time difference should be +ve value
        if(TimeStamp >= m_qwRelBaseTime)
        {
            dwTSTmp = (DWORD) (TimeStamp - m_qwRelBaseTime);
        }
        else
        {
            dwTSTmp = (DWORD) (m_qwRelBaseTime - TimeStamp);
        }

        m_qwRelBaseTime = TimeStamp;
    }
    else if (IS_TM_ABS_SET(bExprnFlag))
    {
        //Time difference should be +ve value
        if(TimeStamp >= qwAbsBaseTime)
        {
            dwTSTmp = (DWORD) (TimeStamp - qwAbsBaseTime);
        }
        else
        {
            dwTSTmp = (DWORD) (qwAbsBaseTime - TimeStamp);
        }

    }
    else if (IS_TM_ABS_RES(bExprnFlag))
    {
        if(m_bResetMsgAbsTime == TRUE)
        {
            //reset the time for new logging session
            SYSTEMTIME LocalCurrTime;
            GetLocalTime(&LocalCurrTime);

            UINT64 RefCurrTime = (LocalCurrTime.wHour * 3600 + LocalCurrTime.wMinute * 60 +
                                  + LocalCurrTime.wSecond) * 10000 + (LocalCurrTime.wMilliseconds * 10);

            UINT64 RefLogTime = (m_LogSysTime.wHour * 3600 + m_LogSysTime.wMinute * 60 +
                                 + m_LogSysTime.wSecond) * 10000 + (m_LogSysTime.wMilliseconds * 10);

            m_qwLogDelayTime = (DWORD)(RefCurrTime - RefLogTime);//for log & msg delay time

            if(TimeStamp >= qwAbsBaseTime)//Time difference should be +ve value
            {
                m_qwResTime = TimeStamp - qwAbsBaseTime;
            }
            else
            {
                m_qwResTime = qwAbsBaseTime - TimeStamp;
            }
            m_bResetMsgAbsTime = FALSE;
        }
        //Time difference should be +ve value
        if(TimeStamp >= (qwAbsBaseTime + m_qwResTime))
        {
            dwTSTmp = (DWORD) (TimeStamp - qwAbsBaseTime - m_qwResTime );
        }
        else
        {
            dwTSTmp = (DWORD) (m_qwResTime + qwAbsBaseTime - TimeStamp );
        }

        dwTSTmp = dwTSTmp + m_qwLogDelayTime; //add msg delay time

    }
    else
    {
        ASSERT(FALSE);
    }

    vFormatTimeStamp(dwTSTmp, acTime);
}
Пример #3
0
void CFormatMsgCommon::vCalculateAndFormatTM(BYTE bExprnFlag, UINT64 TimeStamp, char acTime[], int bufferSize)
{
    UINT64 qwRefSysTime, qwAbsBaseTime;
    m_ouRefTimeKeeper.vGetTimeParams(qwRefSysTime, qwAbsBaseTime);

    /* temporary time stamp */
    DWORD dwTSTmp = 0;
    if (IS_TM_SYS_SET(bExprnFlag))
    {
        dwTSTmp = (DWORD) ((TimeStamp - qwAbsBaseTime) + qwRefSysTime);
    }
    else if (IS_TM_REL_SET(bExprnFlag))
    {
        if (m_qwRelBaseTime == 0)
        {
            m_qwRelBaseTime = TimeStamp;
        }

        /* Time difference should be +ve value */
        if(TimeStamp >= m_qwRelBaseTime)
        {
            dwTSTmp = (DWORD) (TimeStamp - m_qwRelBaseTime);
        }
        else
        {
            dwTSTmp = (DWORD) (m_qwRelBaseTime - TimeStamp);
        }

        m_qwRelBaseTime = TimeStamp;
    }
    else if (IS_TM_ABS_SET(bExprnFlag))
    {
        /* Time difference should be +ve value */
        if(TimeStamp >= qwAbsBaseTime)
        {
            dwTSTmp = (DWORD) (TimeStamp - qwAbsBaseTime);
        }
        else
        {
            dwTSTmp = (DWORD) (qwAbsBaseTime - TimeStamp);
        }

    }
    else if (IS_TM_ABS_RES(bExprnFlag))
    {
        if(m_bResetMsgAbsTime == TRUE)
        {
            /* reset the time for new logging session */
            SYSTEMTIME LocalCurrTime;
            GetLocalTime(&LocalCurrTime);

            UINT64 RefCurrTime =
                LocalCurrTime.wHour         * 36000000 +
                LocalCurrTime.wMinute       *   600000 +
                LocalCurrTime.wSecond       *    10000 +
                LocalCurrTime.wMilliseconds *       10;

            UINT64 RefLogTime =
                m_LogSysTime.wHour         * 36000000 +
                m_LogSysTime.wMinute       *   600000 +
                m_LogSysTime.wSecond       *    10000 +
                m_LogSysTime.wMilliseconds *       10;

            /* for log & msg delay time */
            m_qwLogDelayTime = (DWORD)(RefCurrTime - RefLogTime);

            /* Time difference should be +ve value */
            if(TimeStamp >= qwAbsBaseTime)
            {
                m_qwResTime = TimeStamp - qwAbsBaseTime;
            }
            else
            {
                m_qwResTime = qwAbsBaseTime - TimeStamp;
            }
            m_bResetMsgAbsTime = FALSE;
        }

        /* Time difference should be +ve value */
        if(TimeStamp >= (qwAbsBaseTime + m_qwResTime))
        {
            dwTSTmp = (DWORD) (TimeStamp - qwAbsBaseTime - m_qwResTime );
        }
        else
        {
            dwTSTmp = (DWORD) (m_qwResTime + qwAbsBaseTime - TimeStamp );
        }

        /* add msg delay time */
        dwTSTmp = dwTSTmp + m_qwLogDelayTime;

    }
    else
    {
        ASSERT(false);
    }

    vFormatTimeStamp(dwTSTmp, acTime, bufferSize);
}