Dropped BCAbstractTransmitter, simplified code.

This commit is contained in:
2026-01-03 12:48:47 +01:00
parent c5dc84179b
commit 61bf3b2cec
6 changed files with 68 additions and 148 deletions

View File

@@ -137,21 +137,17 @@ void BCTransmitter::processValue()
else if( value.state.testFlag( BCValue::State::ReadMe ) )
{
/*
// wir sind hier im anderen thread! nicht einfach so reinschreiben, nur lesen
TransmitResult result = valueType.readValueFunc( *this, devID, regID );
TransmitResult result = value.isWord ? readWordValue( devID, regID ) : readByteValue( devID, regID );
if( result.has_value() )
{
newVisibleValue = valueType.formatValue( result.value() );
newVisibleValue = value.formatValue( result.value() );
newState = BCValue::State::InSync;
}
else
{
newState = BCValue::State::Failed;
}
*/
}
emit valueUpdated( value.deviceID, value.indexRow, newState, newVisibleValue );
@@ -165,30 +161,30 @@ void BCTransmitter::processValue()
}
/**
* @brief BCTransmitter::readByte
* NEIN NEIN NEIN!
* Reicht den read request an den aktuellen Treiber weiter. Wird von aussen, von der readValueFunc des ValueTypes
* aufgerufen, deshalb public.
*/
TransmitResult BCTransmitter::readByte( uint32_t deviceID, uint8_t registerID ) const
TransmitResult BCTransmitter::readByteValue( uint32_t deviceID, uint8_t registerID )
{
qDebug() << " --- YES: Read ByteValue: " << registerID;
// Wir lesen nur ein Byte und gut.
return _canDriver->readRawByte( deviceID, registerID );
}
/**
* @brief BCTransmitter::writeByte
* Reicht den write request an den aktuellen Treiber weiter. Wird von aussen, von der writeValueFunc des ValueTypes
* aufgerufen, deshalb public.
*/
TransmitResult BCTransmitter::writeByte( uint32_t deviceID, uint8_t registerID , uint8_t value ) const
TransmitResult BCTransmitter::readWordValue( uint32_t deviceID, uint8_t registerID )
{
return _canDriver->writeRawByte( deviceID, registerID, value );
qDebug() << " --- YES: Read WordValue: " << registerID;
uint32_t result{};
// hi byte Leseversuch.
TransmitResult value = _canDriver->readRawByte( deviceID, registerID );
// Fehler? dann weg
if( !value)
return std::unexpected( value.error() );
// hi byte speichern
result = *value << 8;
// low byte, liegt im followup register: +1
value = _canDriver->readRawByte( deviceID, registerID+1 );
if( !value)
return std::unexpected( value.error() );
result += *value;
return result;
}