Clean up data types.

This commit is contained in:
2025-12-21 12:06:14 +01:00
parent c382ba472d
commit acce874133
10 changed files with 31 additions and 28 deletions

2
bc.h
View File

@@ -748,7 +748,7 @@ public:
enum class ID : uint8_t
{
Invalid = 0,
Console = uint8_t( BC::ID::ID_Console_Slave ),
Console = static_cast<uint8_t>( BC::ID::ID_Console_Slave ),
Console_Master = uint8_t( BC::ID::ID_Console_Master),
Battery = uint8_t( BC::ID::ID_Battery),
Motor = uint8_t( BC::ID::ID_Motor ),

View File

@@ -116,7 +116,7 @@ uint BCCanDriverTinyCan::getValue(BCDevice::ID deviceID, BC::ID registerID ) con
struct TCanMsg msg;
uint32_t device = static_cast<uint32_t>(deviceID);
uint32_t reg = static_cast<uint32_t>(registerID);
uint8_t reg = static_cast<uint8_t> (registerID);
// msg verpacken
msg.MsgFlags = 0L;
@@ -128,9 +128,9 @@ uint BCCanDriverTinyCan::getValue(BCDevice::ID deviceID, BC::ID registerID ) con
// msg verschicken
::CanTransmit( 0, &msg, 1 );
int retries = _retries;
int retries = _retries; // 5?
// _timeOuts (== 20) mal cTIMEOUT_MS (== 10 ms ) Versuche ...
int timeOuts = _timeOuts;
int timeOuts = _timeOuts; // 20 ?
// ... warten bis der Sendepuffer leer ist
while( timeOuts-- && ::CanTransmitGetCount( 0 ) )
@@ -170,7 +170,7 @@ retry:
throw std::runtime_error( "CAN --response errror" );
return (unsigned int) msg.MsgData[3];
//das ist mist!
}
@@ -181,7 +181,7 @@ void BCCanDriverTinyCan::setValue(BCDevice::ID deviceID, BC::ID registerID, int
qDebug() << "SaveItem( BCCanDriverTinyCan::CBCItem& item ): ";
uint32_t device = static_cast<uint32_t>(deviceID);
uint32_t reg = static_cast<uint32_t>(registerID);
uint8_t reg = static_cast<uint8_t> (registerID);
struct TCanMsg msg;
int timeout_count = cTIMEOUT_COUNT;

View File

@@ -27,9 +27,9 @@ BCItemDelegate::BCItemDelegate(QListView *view)
QString BCItemDelegate::displayText(const QVariant& dataValue, const QLocale& locale) const
{
// Wir prüfen, ob im Variant unser Struct steckt
if (dataValue.canConvert<BCValue>())
if (dataValue.canConvert<BCValue*>())
{
BCValue bc = dataValue.value<BCValue>();
BCValue& bc = *dataValue.value<BCValue*>();
//qDebug() << " --- YES: " << bc.label;
// Hier bauen wir den String zusammen, den man sieht,
// wenn KEIN Editor offen ist.
@@ -45,10 +45,10 @@ QString BCItemDelegate::displayText(const QVariant& dataValue, const QLocale& lo
QWidget *BCItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QVariant rawData = index.data(Qt::EditRole);
if (!rawData.canConvert<BCValue>())
if (!rawData.canConvert<BCValue*>())
return QStyledItemDelegate::createEditor(parent, option, index);
BCValue bc = rawData.value<BCValue>();
const BCValue& bc = *rawData.value<BCValue*>();
// Nur bei Integern den Slider-Editor bauen
if (bc.value.typeId() == QMetaType::Int)
@@ -93,7 +93,7 @@ QWidget *BCItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewIte
void BCItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
// Daten vom Model in den Editor laden
BCValue bc = index.data(Qt::EditRole).value<BCValue>();
const BCValue& bc = *index.data(Qt::EditRole).value<BCValue*>();
QSlider *slider = editor->findChild<QSlider*>("slider");
QLabel *lblUnit = editor->findChild<QLabel*>("lblUnit");

View File

@@ -94,7 +94,7 @@ void BCTransmitter::processValueOp( BC::OpID opID )
currentValue =_valueQueue.dequeue();
} // Mutex wird hier freigegeben! WICHTIG: Execute ohne Lock!
std::optional<uint32_t> result;
std::optional<bcdata_t> result;
/*
if( opID == BC::OpID::ReadValue )
@@ -107,7 +107,7 @@ void BCTransmitter::processValueOp( BC::OpID opID )
}
}
std::optional<uint32_t> BCTransmitter::executeRead(const BCValue& value)
std::optional<bcdata_t> BCTransmitter::executeRead(const BCValue& value)
{
return 0;
@@ -128,7 +128,7 @@ std::optional<uint32_t> BCTransmitter::executeRead(const BCValue& value)
}
std::optional<uint32_t> BCTransmitter::executeWrite(const BCValue& value)
std::optional<bcdata_t> BCTransmitter::executeWrite(const BCValue& value)
{
}

View File

@@ -32,8 +32,8 @@ signals:
private:
std::optional<uint32_t> executeRead(const BCValue& value);
std::optional<uint32_t> executeWrite(const BCValue& value);
std::optional<bcdata_t> executeRead(const BCValue& value);
std::optional<bcdata_t> executeWrite(const BCValue& value);
using BCValueQueue = QQueue<const BCValue*>;

View File

@@ -45,11 +45,12 @@ BCValueType::BCValueType( TypeID ID_, QString unitLabel_, optDouble factor_, opt
///-------------------------------
/*
BCValue::BCValue()
{
}
*/
BCValue::BCValue(const BCValueType& valueType_, BCDevice::ID deviceID_, BC::ID targetID_)
: valueType{valueType_}, deviceID{deviceID_}, targetID{targetID_}

View File

@@ -53,6 +53,7 @@
-
*/
using bcdata_t = uint32_t;
class BCAbstractTransmitter
{
@@ -60,7 +61,7 @@ class BCAbstractTransmitter
public:
//
virtual uint32_t readValue( BCDevice::ID deviceID_, BC::ID targetID_ ) const = 0;
virtual bcdata_t readValue( BCDevice::ID deviceID_, BC::ID targetID_ ) const { return 0;};
///virtual uint32_t readByte( BCDevice::ID deviceID_, BC::ID targetID_ ) const = 0;
};
@@ -109,6 +110,7 @@ public:
};
// really needed?
using BCValueTypeCRef = std::optional<std::reference_wrapper<const BCValueType>>;
@@ -117,7 +119,7 @@ class BCValue
public:
BCValue();
//BCValue();
BCValue( const BCValueType& valueType_, BCDevice::ID deviceID_, BC::ID targetID_ );
void readRawValue( const BCAbstractTransmitter& transmitter ) const;
@@ -140,7 +142,7 @@ public:
};
Q_DECLARE_METATYPE(BCValue)
Q_DECLARE_METATYPE(BCValue*)
struct BCValueParams

View File

@@ -49,14 +49,12 @@ BCValueManager::BCValueManager(QObject *parent)
{
createValueTypes();
qRegisterMetaType<BCValue>("BCValue");
//qRegisterMetaType<BCValue*>("BCValue*");
qRegisterMetaType<BCValue*>();
_transmitter.moveToThread(&_worker);
// 4. Verbindungen herstellen (Signal/Slot über Thread-Grenzen)
// A) Befehl senden (Manager -> Runner)
connect(this, &BCValueManager::sendValueCommand, &_transmitter, &BCTransmitter::enqueueValueCommand);
connect(this, &BCValueManager::sendValueCommand, &_transmitter, &BCTransmitter::enqueueValueOp);
// B) Ergebnisse empfangen (Runner -> Manager)
//connect(&_transmitter, &BCTransmitter::commandFinished, this, &BCValueManager::onCommandFinished);
@@ -156,7 +154,7 @@ void BCValueManager::onSyncFromDevice()
// wir das eleganter über emit sendValueCommand()
//_transmitter.enqueueValueCommand( value );
emit sendValueCommand( BC::OpID::ReadValue, value);
emit sendValueCommand( BC::OpID::ReadValue, &value);
emit valueTouched( value.rowInModel );

View File

@@ -64,7 +64,7 @@ public slots:
signals:
// Internes Signal, um Daten an den Worker Thread zu senden
void sendValueCommand( BC::OpID, const BCValue& cmd);
void sendValueCommand( BC::OpID, const BCValue* cmd);
//void valuedTouched(const BCValue& cmd);
void valueTouched(int rowInModel );

View File

@@ -144,11 +144,13 @@ unsigned int getValue(unsigned char receipient, unsigned char reg)
printf("error: could not send value to node %s" _NL, getNodeName(receipient));
retry:
timeout = TIMEOUT_VALUE;
while(timeout-- && !CanReceiveGetCount(0))
usleep(TIMEOUT_US);
if (timeout == -1) {
if (timeout == -1)
{
printf("error: no response from node %s" _NL, getNodeName(receipient));
return 0;
}