#include "LogViewXdrType.hpp" namespace N_LogView { LogViewXdrType::LogViewXdrType(const QString& a_name, const QString& a_type, const uint16_t a_arraySize, const uint16_t a_dynArrayOffset, const E_ElementKind a_kind) : LogViewXdrElement(a_name, a_kind, "LogViewXdrElement") , m_Type(a_type) , m_ArraySize(a_arraySize) , m_MaxArraySize(a_dynArrayOffset) , m_FirstBit(-1) , m_LastBit(-1) , m_IsLast(true) { } LogViewXdrType::LogViewXdrType(const QString& a_name, const QString& a_type, const uint16_t a_arraySize, const uint16_t a_dynArrayOffset, const E_ElementKind a_kind, const int16_t a_firstBit, const int16_t a_lastBit, const bool a_isLast) : LogViewXdrElement(a_name, a_kind, "LogViewXdrType") , m_Type(a_type) , m_ArraySize(a_arraySize) , m_MaxArraySize(a_dynArrayOffset) , m_FirstBit(a_firstBit) , m_LastBit(a_lastBit) , m_IsLast(a_isLast) { } void LogViewXdrType::dump() const { INFO_LOG(m_logger) << "Element[" << getName() << "]: kind=" << getKindName() << " type=" << getType() << " arraySize=" << getArraySize() << " maxArraySize=" << getMaxArraySize() << " firstBit=" << m_FirstBit << " lastBit=" << m_LastBit << " isLast=" << m_IsLast; } const QString& LogViewXdrType::getType() const { return m_Type; } uint16_t LogViewXdrType::getArraySize() const { return m_ArraySize; } bool LogViewXdrType::maskValue(uint32_t& a_value, const uint16_t a_size, QString& a_tooltip) const { if (m_FirstBit != -1 && m_LastBit != -1) { DEBUG_LOG(m_logger) << "MaskValue for Element " << m_Name << " type: " << m_Type << " size: " << m_ArraySize << " first:last " << m_FirstBit << ":" << m_LastBit << " isLast: " << m_IsLast; uint16_t bitshift = (a_size*8)-m_LastBit-1; uint32_t mask = (1<<(m_LastBit-m_FirstBit+1))-1; a_value = (a_value >> bitshift) & mask; a_tooltip.insert(a_tooltip.length()-(a_size*8)+m_FirstBit, QLatin1String("")); a_tooltip.insert(a_tooltip.length()-(a_size*8)+m_LastBit+1, QLatin1String("")); return m_IsLast; } return true; } uint16_t LogViewXdrType::getMaxArraySize() const { return m_MaxArraySize; } }