You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
972 B
54 lines
972 B
#ifndef FIELD_H
|
|
#define FIELD_H
|
|
|
|
#include <QObject>
|
|
|
|
class Field
|
|
{
|
|
private:
|
|
quint32 _value;
|
|
quint64 _valueLong;
|
|
|
|
quint32 _mask;
|
|
quint64 _maskLong;
|
|
|
|
quint8 _length;
|
|
quint8 _position;
|
|
quint32 _zeroBasedMask;
|
|
quint64 _zeroBasedMaskLong;
|
|
|
|
bool _isSigned;
|
|
bool _isUpdated;
|
|
|
|
Field(quint32 mask, bool isSigned);
|
|
Field(quint64 mask);
|
|
|
|
void findLength();
|
|
void findLengthLong();
|
|
|
|
void findPosition();
|
|
void findPositionLong();
|
|
|
|
void findZeroBasedMask();
|
|
void findZeroBasedMaskLong();
|
|
|
|
public:
|
|
static Field* fromBitPosition(quint32 bitPosition);
|
|
static Field* fromMaskSigned(quint32 mask);
|
|
static Field* fromMaskUnsigned(quint32 mask);
|
|
static Field* fromMaskUnsignedLong(quint64 maskLong);
|
|
|
|
quint32 getValue();
|
|
|
|
void setValue(quint32 value);
|
|
void setValueLong(quint64 valueLong);
|
|
|
|
bool isUpdated();
|
|
|
|
void updateValue(quint32 value);
|
|
|
|
quint32 getRegisterWriteValue();
|
|
quint64 getRegisterWriteValueLong();
|
|
};
|
|
|
|
#endif //FIELD_H
|
|
|