#include #include BCValueType::BCValueType() { } BCValueType::BCValueType( QString unitLabel_, double factor_, optDouble min_, optDouble max_ ) : unitLabel{unitLabel_}, factor{factor_}, min{min_}, max{max_} { } QString BCValueType::formatValue( uint32_t value ) const { if( factor == 1 ) return QString::number( value ); double result = value * factor; return QString::number(result, 'f', 2); } /// ---- BCValueTypeByte::BCValueTypeByte( QString unitLabel_, double factor_, optDouble min_, optDouble max_ ) : BCValueType{ unitLabel_, factor_, min_, max_} { } QString BCValueTypeByte::createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const { uint32_t result = transmitter.readRawByte( deviceID, registerID ); return formatValue( result ); } /// ---- BCValueTypeWord::BCValueTypeWord( QString unitLabel_, double factor_, optDouble min_, optDouble max_ ) : BCValueType{ unitLabel_, factor_, min_, max_} { } QString BCValueTypeWord::createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const { //getValue(CONSOLE, CONSOLE_SN_PN_HI) << 8) + getValue(CONSOLE, CONSOLE_SN_PN_LO)), // hi byte uint32_t result = transmitter.readRawByte( deviceID, registerID ) << 8; // low byte, use followup register: +1 result += transmitter.readRawByte( deviceID, registerID+1 ); return formatValue( result ); } /// ---- BCValueTypeODO::BCValueTypeODO( QString unitLabel_, double factor_, optDouble min_, optDouble max_ ) : BCValueType{ unitLabel_, factor_, min_, max_} { } QString BCValueTypeODO::createStringValue( const BCAbstractTransmitter& transmitter, uint32_t deviceID, uint8_t registerID ) const { return "0x0"; }