YULTek/Otarcik_CAN/Sources/CANSignal.cpp
2023-01-23 21:22:40 -05:00

47 lines
1.0 KiB
C++

#include "CANSignal.h"
#include "defines.h"
CCANSignal::CCANSignal()
{
mEncoding = CAN_SIGNAL_ENCODING_INVALID;
}
int CCANSignal::ComputeNewSignalValue(quint64 NewValue, quint16 MessageSize)
{
if(mEncoding == CAN_SIGNAL_ENCODING_INTEL)
{
//TODO: trouver un device qui crache du intel??
mRawValue = NewValue;
}
else if(mEncoding == CAN_SIGNAL_ENCODING_MOTOROLA)
{
//mRawValue = MotorolaValue;
mRawValue = NewValue;
int StartIndex = mStartBit - (mStartBit % 8) + 7 - (mStartBit % 8);
int shift = ((MessageSize * 8) - StartIndex -1);
mRawValue >>= shift;
quint64 mask = 1;
mask <<= mSignalSize;
mask -= 1;
mRawValue &= mask;
}
else
{
return RET_GENERAL_ERROR;
}
// mRawValue >>= mStartBit;
// quint64 mask = ((1 << mSignalSize)-1);
// mRawValue &= mask;
mPhysicalValue = ((signed) mRawValue * mValueFactor) + mValueOffset;
// mPhysicalValue = (test * mValueFactor) + mValueOffset;
//mPhysicalValue = test;
}