This commit is contained in:
2025-12-23 20:47:03 +01:00
parent b219a71cba
commit 71cfb86e1f
10 changed files with 173 additions and 95 deletions

View File

@@ -66,6 +66,8 @@ public:
};
class BCDataItem;
using optDouble = std::optional<double>;
struct BCDataType
@@ -75,43 +77,63 @@ struct BCDataType
public:
enum class TypeID : uint8_t
{
Invalid = 0x0,
Text,
Number,
Float,
Byte,
Word,
Quad,
Percent,
KWh,
Watt,
Km,
Kmh,
Mm,
Sec,
SoC,
Odo,
Assist,
AssistFac,
Date
};
Q_ENUM(TypeID)
BCDataType();
BCDataType( TypeID ID_, QString unitLabel_="", optDouble factor_=std::nullopt, optDouble min_=std::nullopt, optDouble max_= std::nullopt );
BCDataType( QString unitLabel_, double factor_= 1.0, optDouble min_=std::nullopt, optDouble max_= std::nullopt );
TypeID ID{TypeID::Invalid};
QString unitLabel;
optDouble factor;
double factor;
optDouble min;
optDouble max;
virtual double readValue( const BCAbstractTransmitter& transmitter ) = 0;
virtual void writeValue( const BCAbstractTransmitter& transmitter ) = 0;
};
struct BCDataTypeByte : public BCDataType
{
/*
double readValue( const BCAbstractTransmitter& transmitter, const BCDA ) override
{
return 0;
}
void writeValue( const BCAbstractTransmitter& transmitter ) override;
{
}
*/
};
struct ODO : public BCDataType
{
double readValue( const BCAbstractTransmitter& transmitter ) override
{
return 0;
}
void writeValue( const BCAbstractTransmitter& transmitter ) override;
{
}
};
struct Long : public BCDataType
{};
struct Fitz : public BCDataType
{};
struct Fatz : public BCDataType
{};
using BCTypeVariant = std::variant<BCDataType,ODO,Long,Fitz,Fatz>;
// really needed?
using BCDataTypeCRef = std::optional<std::reference_wrapper<const BCDataType>>;
//using BCDataTypeCRef = std::optional<std::reference_wrapper<const BCTypeVariant>>;
class BCDataItem
@@ -119,13 +141,15 @@ class BCDataItem
public:
BCDataItem( const BCDataType& valueType_, BCDevice::ID deviceID_, BC::ID registerID_ );
BCDataItem( const BCDataType* valueType_, BCDevice::ID deviceID_, BC::ID registerID_ );
void readRawValue( const BCAbstractTransmitter& transmitter ) const;
void writeRawValue( const BCAbstractTransmitter& transmitter ) const;
void readRawValueX( const BCAbstractTransmitter& transmitter ) const;
void writeRawValueX( const BCAbstractTransmitter& transmitter ) const;
// void reset()
BCDataTypeCRef valueType;
//const BCDataType& valueType;
//BCDataTypeCRef valueType;
const BCDataType* valueType{};
BCDevice::ID deviceID{BCDevice::ID::Invalid};
BC::ID registerID{BC::ID::Invalid};
int rowInModel{-1};
@@ -144,13 +168,10 @@ public:
Q_DECLARE_METATYPE(BCDataItem*)
struct BCDataParams
{
QString ID;
QString Label;
QString Default;
QString UnitType;
};
using BCDataList = QVector<BCDataItem>;
// abbreviations:
// SOC = State Of Charge
@@ -168,7 +189,7 @@ constexpr auto to_u(E e) noexcept {
}
*/
using BCDataList = QVector<BCDataItem>;
#endif // BCDATAITEM_H