Updated ValueHandling.
This commit is contained in:
@@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
#include <QThread>
|
||||
#include <QDebug>
|
||||
#include <//qDebug>
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include <bctransmitter.h>
|
||||
@@ -56,7 +56,7 @@ BCTransmitter::BCTransmitter(QObject *parent)
|
||||
|
||||
void BCTransmitter::onToggleDriverConnection( bool connect )
|
||||
{
|
||||
qDebug() << " --- onToggleDriverConnection: " << connect;
|
||||
//qDebug() << " --- onToggleDriverConnection: " << connect;
|
||||
emit driverStateChanged(BCDriver::DriverState::Initialized, "BUSY!");
|
||||
bc::delay_millis(350);
|
||||
// kill all pending stuff
|
||||
@@ -103,13 +103,13 @@ void BCTransmitter::connectCanDriver()
|
||||
if( hwVersion.has_value() )
|
||||
{
|
||||
message = " ---- HAIL to the king!";
|
||||
qDebug() << message;
|
||||
//qDebug() << message;
|
||||
// swap driver
|
||||
_canDriver = &_tinyCanDriver;
|
||||
}
|
||||
else
|
||||
{
|
||||
qDebug() << "Console not responding";
|
||||
//qDebug() << "Console not responding";
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -144,7 +144,7 @@ void BCTransmitter::onUpdateValue( BCValuePtrConst valuePtr)
|
||||
// der aktuelle Auftragsblock abgearbeit wurde.
|
||||
|
||||
_valueQueue.enqueue( valuePtr );
|
||||
qDebug() << " # #### ENQ: " <<_valueQueue.size();
|
||||
//qDebug() << " # #### ENQ: " <<_valueQueue.size();
|
||||
|
||||
// Wir schicken den event gleich wieder weiter ...
|
||||
QMetaObject::invokeMethod(this, "onProcessValue", Qt::QueuedConnection);
|
||||
@@ -160,12 +160,12 @@ void BCTransmitter::onProcessValue()
|
||||
if (_valueQueue.isEmpty())
|
||||
{
|
||||
//_isBusy = false;
|
||||
qDebug() << " --- XXXXXXXXXX Warum so oft?";
|
||||
//qDebug() << " --- XXXXXXXXXX Warum so oft?";
|
||||
emit valueQueueEmpty();
|
||||
break; // Schleife verlassen, warten auf neue Events
|
||||
}
|
||||
valuePtr =_valueQueue.dequeue();
|
||||
qDebug() << " # #### DEQ: " <<_valueQueue.size();
|
||||
//qDebug() << " # #### DEQ: " <<_valueQueue.size();
|
||||
} // Mutex wird hier freigegeben! WICHTIG: Execute ohne Lock!
|
||||
|
||||
// Kosmetik
|
||||
@@ -174,19 +174,20 @@ void BCTransmitter::onProcessValue()
|
||||
// Kosmetik
|
||||
//const BCValue& value = *(valuePtr.get());
|
||||
|
||||
qDebug() << "------- DE.-.QUEUE: " << QThread::currentThreadId() << ": " << value.label;
|
||||
//qDebug() << "------- DE.-.QUEUE: " << QThread::currentThreadId() << ": " << value.label;
|
||||
|
||||
// Value ist 'under construction'
|
||||
//emit valueUpdated( value.deviceID, value.indexRow, BCValue::State::Locked );
|
||||
//emit valueUpdated( value.deviceID, value.indexRow, BCValue::Flag::Locked );
|
||||
|
||||
|
||||
uint32_t devID = static_cast<uint32_t>(value.deviceID);
|
||||
uint8_t regID = static_cast<uint8_t> (value.registerID);
|
||||
|
||||
QString newVisibleValue;
|
||||
BCValue::State newState = BCValue::State::NoState;
|
||||
// Für den Fehlerfall: Wir senden den alten Wert einfach zurück
|
||||
uint32_t newValue = value.rawUIntValue;
|
||||
BCValue::Flag newState = BCValue::Flag::Failed;;
|
||||
|
||||
if(value.state.testFlag( BCValue::State::WriteMe ) )
|
||||
if(value.flags.testFlag( BCValue::Flag::WriteMe ) )
|
||||
{
|
||||
|
||||
|
||||
@@ -194,23 +195,18 @@ void BCTransmitter::onProcessValue()
|
||||
// oder sollen wir hier beides erlauben ? readFlag & writeFlag ?
|
||||
// Was kommt dann zuerst? Schreiben und lesen als verify ?
|
||||
|
||||
else if( value.state.testFlag( BCValue::State::ReadMe ) )
|
||||
else if( value.flags.testFlag( BCValue::Flag::ReadMe ) )
|
||||
{
|
||||
// wir sind hier im anderen thread! nicht einfach so reinschreiben, nur lesen
|
||||
TransmitResult result = value.isWord ? readWordValue( devID, regID ) : readByteValue( devID, regID );
|
||||
TransmitResult result = value.isWord() ? readWordValue( devID, regID ) : readByteValue( devID, regID );
|
||||
if( result.has_value() )
|
||||
{
|
||||
// quark! das gehört hier nicht hin!
|
||||
newVisibleValue = value.formatValues( result.value() );
|
||||
newState = BCValue::State::InSync;
|
||||
}
|
||||
else
|
||||
{
|
||||
newState = BCValue::State::Failed;
|
||||
newState = BCValue::Flag::InSync;
|
||||
newValue = result.value();
|
||||
}
|
||||
}
|
||||
|
||||
emit valueUpdated( value.deviceID, value.indexRow, newState, newVisibleValue );
|
||||
emit valueUpdated( value.deviceID, value.indexRow, newState, newValue );
|
||||
|
||||
// __fix
|
||||
//bc::processEventsFor(150);
|
||||
@@ -223,7 +219,7 @@ void BCTransmitter::onProcessValue()
|
||||
|
||||
TransmitResult BCTransmitter::readByteValue( uint32_t deviceID, uint8_t registerID )
|
||||
{
|
||||
//qDebug() << " --- YES: Read ByteValue: " << registerID;
|
||||
////qDebug() << " --- YES: Read ByteValue: " << registerID;
|
||||
// Wir lesen nur ein Byte und gut.
|
||||
return _canDriver->readRawByte( deviceID, registerID );
|
||||
}
|
||||
@@ -231,7 +227,7 @@ TransmitResult BCTransmitter::readByteValue( uint32_t deviceID, uint8_t register
|
||||
|
||||
TransmitResult BCTransmitter::readWordValue( uint32_t deviceID, uint8_t registerID )
|
||||
{
|
||||
//qDebug() << " --- YES: Read WordValue: " << registerID;
|
||||
////qDebug() << " --- YES: Read WordValue: " << registerID;
|
||||
|
||||
uint32_t result{};
|
||||
// hi byte Leseversuch.
|
||||
|
||||
Reference in New Issue
Block a user