#ifndef BCVALUETYPE_H #define BCVALUETYPE_H #include #include #include #include #include class BCAbstractTransmitter; class BCDataValue; using optDouble = std::optional; struct BCValueType { Q_GADGET public: BCValueType(); BCValueType( QString unitLabel_, double factor_= 1.0, optDouble min_=std::nullopt, optDouble max_= std::nullopt ); QString unitLabel; double factor; optDouble min; optDouble max; virtual QString createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const = 0; //virtual void writeValue( const BCAbstractTransmitter& transmitter, BCDataValue& value ) = 0; virtual QString formatValue( uint32_t value ) const; }; struct BCValueTypeByte : BCValueType { BCValueTypeByte( QString unitLabel_, double factor_= 1.0, optDouble min_=std::nullopt, optDouble max_= std::nullopt ); QString createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const override; }; struct BCValueTypeWord : public BCValueType { BCValueTypeWord( QString unitLabel_, double factor_= 1.0, optDouble min_=std::nullopt, optDouble max_= std::nullopt ); QString createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const override; }; struct BCValueTypeODO : public BCValueType { BCValueTypeODO( QString unitLabel_, double factor_= 1.0, optDouble min_=std::nullopt, optDouble max_= std::nullopt ); QString createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const override; }; /* struct BCValueTypeVolt : public BCValueType { BCValueTypeODO( QString unitLabel_, double factor_= 1.0, optDouble min_=std::nullopt, optDouble max_= std::nullopt ); QString createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) override; }; */ //using BCTypeVariant = std::variant; // really needed? //using BCValueTypeCRef = std::optional>; #endif // BCVALUETYPE_H