Reworked data types.

This commit is contained in:
2025-12-21 14:40:38 +01:00
parent acce874133
commit cb9eb8c3fe
9 changed files with 42 additions and 72 deletions

2
bc.h
View File

@@ -35,6 +35,8 @@
#include <QDebug> #include <QDebug>
#include <QObject> // Nötig für Q_GADGET/Q_ENUM Makros #include <QObject> // Nötig für Q_GADGET/Q_ENUM Makros
using bcdata_t = uint8_t;
namespace bc namespace bc
{ {
[[maybe_unused]] constexpr static double UNLIMITED_SPEED_VALUE = 70; // Km/h [[maybe_unused]] constexpr static double UNLIMITED_SPEED_VALUE = 70; // Km/h

View File

@@ -78,11 +78,4 @@ void BCCanDriver::onStartDriver()
} }
/*
void BCCanDriver::onLoadItem( CBCItem& item )
{
item.setValue( 99.99 );
emit itemLoaded( item );
}
*/

View File

@@ -82,8 +82,8 @@ public:
virtual BCCanDriver::dState loadDriver() = 0; virtual BCCanDriver::dState loadDriver() = 0;
virtual BCCanDriver::dState initDriver() = 0; virtual BCCanDriver::dState initDriver() = 0;
virtual uint getValue( BCDevice::ID dev, BC::ID reg ) const = 0; virtual std::optional<bcdata_t> readRawValue( BCDevice::ID deviceID, BC::ID registerID ) const = 0;
virtual void setValue( BCDevice::ID dev, BC::ID reg, int value ) const = 0; virtual void writeRawValue( BCDevice::ID deviceID, BC::ID registerID, bcdata_t value ) const = 0;
signals: signals:

View File

@@ -80,7 +80,7 @@ BCCanDriver::dState BCCanDriverTinyCan::initDriver()
qDebug() << "XXX BCCanDriverTinyCan::Driver Init: putting BCDevice::ID::Console in slave mode ... "; qDebug() << "XXX BCCanDriverTinyCan::Driver Init: putting BCDevice::ID::Console in slave mode ... ";
// BCDevice::ID::Console already in slave mode. good! // BCDevice::ID::Console already in slave mode. good!
if( getValue( BCDevice::ID::Console, BC::ID::Cons_Status_Slave ) ) if( readRawValue( BCDevice::ID::Console, BC::ID::Cons_Status_Slave ) )
return BCCanDriver::sReady; return BCCanDriver::sReady;
qDebug() << "BCCanDriverTinyCan::BCCanDriverTinyCan::XXX Driver Init: putting BCDevice::ID::Console in slave mode ... "; qDebug() << "BCCanDriverTinyCan::BCCanDriverTinyCan::XXX Driver Init: putting BCDevice::ID::Console in slave mode ... ";
@@ -88,11 +88,11 @@ BCCanDriver::dState BCCanDriverTinyCan::initDriver()
unsigned int retry = _timeOuts; unsigned int retry = _timeOuts;
emit statusHint( "Driver Init: putting BCDevice::ID::Console in slave mode ... " ); emit statusHint( "Driver Init: putting BCDevice::ID::Console in slave mode ... " );
int isSlave = 0; bcdata_t isSlave = 0;
do do
{ {
setValue( BCDevice::ID::Console, BC::ID::Cons_Status_Slave, 1 ); writeRawValue( BCDevice::ID::Console, BC::ID::Cons_Status_Slave, 1 );
isSlave = getValue( BCDevice::ID::Console, BC::ID::Cons_Status_Slave ); isSlave = *readRawValue( BCDevice::ID::Console, BC::ID::Cons_Status_Slave );
bc::delay_millis( 200 ); bc::delay_millis( 200 );
} while( retry-- && !isSlave ); } while( retry-- && !isSlave );
@@ -109,8 +109,8 @@ BCCanDriver::dState BCCanDriverTinyCan::initDriver()
} }
//unsigned int BCCanDriverTinyCan::getValue( unsigned char receipient, unsigned char reg )
uint BCCanDriverTinyCan::getValue(BCDevice::ID deviceID, BC::ID registerID ) const std::optional<bcdata_t> BCCanDriverTinyCan::readRawValue( BCDevice::ID deviceID, BC::ID registerID ) const
{ {
struct TCanMsg msg; struct TCanMsg msg;
@@ -169,16 +169,16 @@ retry:
if( !timeOuts ) if( !timeOuts )
throw std::runtime_error( "CAN --response errror" ); throw std::runtime_error( "CAN --response errror" );
return (unsigned int) msg.MsgData[3]; return (bcdata_t) msg.MsgData[3];
//das ist mist!
} }
// void BCCanDriverTinyCan::setValue( unsigned char receipient, unsigned char reg, unsigned char value ) // void BCCanDriverTinyCan::setValue( unsigned char receipient, unsigned char reg, unsigned char value )
void BCCanDriverTinyCan::setValue(BCDevice::ID deviceID, BC::ID registerID, int value ) const void BCCanDriverTinyCan::writeRawValue( BCDevice::ID deviceID, BC::ID registerID, bcdata_t value ) const
{ {
qDebug() << "SaveItem( BCCanDriverTinyCan::CBCItem& item ): "; qDebug() << " --- BCCanDriverTinyCan writeRawValue: " << value;
uint32_t device = static_cast<uint32_t>(deviceID); uint32_t device = static_cast<uint32_t>(deviceID);
uint8_t reg = static_cast<uint8_t> (registerID); uint8_t reg = static_cast<uint8_t> (registerID);
@@ -204,16 +204,3 @@ void BCCanDriverTinyCan::setValue(BCDevice::ID deviceID, BC::ID registerID, int
} }
void BCCanDriverTinyCan::awaitReceiveBuf( int timeout )
{
}
void BCCanDriverTinyCan::awaitSendBuf(int timeout )
{
}

View File

@@ -15,8 +15,8 @@ public:
BCCanDriver::dState loadDriver() override; BCCanDriver::dState loadDriver() override;
BCCanDriver::dState initDriver() override; BCCanDriver::dState initDriver() override;
uint getValue( BCDevice::ID dev, BC::ID reg ) const override; std::optional<bcdata_t> readRawValue ( BCDevice::ID deviceID, BC::ID registerID ) const override;
void setValue( BCDevice::ID dev, BC::ID reg, int value ) const override; void writeRawValue( BCDevice::ID deviceID, BC::ID registerID, bcdata_t value ) const override;
QString getNodeName( unsigned char id ); QString getNodeName( unsigned char id );

View File

@@ -17,9 +17,9 @@ void BCTransmitter::onToggleConnectionState( bool connect )
if( BCCanDriver::sIdle == _canDriver.getState() ) if( BCCanDriver::sIdle == _canDriver.getState() )
_canDriver.onStartDriver(); _canDriver.onStartDriver();
int hwVersion = _canDriver.getValue( BCDevice::ID::Console, BC::ID::Cons_Rev_Hw); std::optional<bcdata_t> hwVersion = _canDriver.readRawValue( BCDevice::ID::Console, BC::ID::Cons_Rev_Hw);
if (hwVersion == 0) if(!hwVersion.has_value())
{ {
qDebug() << "Console not responding"; qDebug() << "Console not responding";
} }
@@ -94,41 +94,28 @@ void BCTransmitter::processValueOp( BC::OpID opID )
currentValue =_valueQueue.dequeue(); currentValue =_valueQueue.dequeue();
} // Mutex wird hier freigegeben! WICHTIG: Execute ohne Lock! } // Mutex wird hier freigegeben! WICHTIG: Execute ohne Lock!
std::optional<bcdata_t> result;
/*
if( opID == BC::OpID::ReadValue ) if( opID == BC::OpID::ReadValue )
result = executeRead(currentValue); currentValue->readRawValue( *this );
else if( opID == BC::OpID::WriteValue ) else if( opID == BC::OpID::WriteValue )
result = executeRead(currentValue); currentValue->writeRawValue( *this );
*/
//emit commandFinished(cmd.id, true); //emit commandFinished(cmd.id, true);
//emit commandFinished(0, true); //emit commandFinished(0, true);
} }
} }
std::optional<bcdata_t> BCTransmitter::executeRead(const BCValue& value) std::optional<bcdata_t> BCTransmitter::readRawValue( BCDevice::ID deviceID, BC::ID registerID ) const
{ {
return _canDriver.readRawValue( deviceID, registerID );
}
return 0; void BCTransmitter::writeRawValue( BCDevice::ID deviceID, BC::ID registerID, bcdata_t value ) const
std::optional<uint32_t> result;
switch( value.deviceID )
{ {
// hier lacht der blaue riesenhase! _canDriver.writeRawValue( deviceID, registerID, value );
case BCDevice::ID::Invalid:
case BCDevice::ID::Console:
case BCDevice::ID::Console_Master:
case BCDevice::ID::Battery:
case BCDevice::ID::Motor:
case BCDevice::ID::BIB:
case BCDevice::ID::Sensor:
break;
};
} }
std::optional<bcdata_t> BCTransmitter::executeWrite(const BCValue& value)
{
}

View File

@@ -4,7 +4,6 @@
#include <QObject> #include <QObject>
#include <QQueue> #include <QQueue>
#include <QMutex> #include <QMutex>
#include <functional>
#include <atomic> #include <atomic>
#include <bcvalue.h> #include <bcvalue.h>
@@ -18,6 +17,8 @@ public:
explicit BCTransmitter(QObject *parent = nullptr); explicit BCTransmitter(QObject *parent = nullptr);
std::optional<bcdata_t> readRawValue( BCDevice::ID deviceID, BC::ID registerID ) const override;
void writeRawValue(BCDevice::ID deviceID, BC::ID registerID, bcdata_t value ) const override;
public slots: public slots:
@@ -32,8 +33,7 @@ signals:
private: private:
std::optional<bcdata_t> executeRead(const BCValue& value);
std::optional<bcdata_t> executeWrite(const BCValue& value);
using BCValueQueue = QQueue<const BCValue*>; using BCValueQueue = QQueue<const BCValue*>;

View File

@@ -52,15 +52,16 @@ BCValue::BCValue()
} }
*/ */
BCValue::BCValue(const BCValueType& valueType_, BCDevice::ID deviceID_, BC::ID targetID_) BCValue::BCValue(const BCValueType& valueType_, BCDevice::ID deviceID_, BC::ID registerID_)
: valueType{valueType_}, deviceID{deviceID_}, targetID{targetID_} : valueType{valueType_}, deviceID{deviceID_}, registerID{registerID_}
{ {
} }
void BCValue::readRawValue( const BCAbstractTransmitter& transmitter ) const void BCValue::readRawValue( const BCAbstractTransmitter& transmitter ) const
{ {
transmitter.readValue( deviceID, targetID ); std::optional<uint32_t> result = transmitter.readRawValue( deviceID, registerID );
} }
void BCValue::writeRawValue( const BCAbstractTransmitter& transmitter ) const void BCValue::writeRawValue( const BCAbstractTransmitter& transmitter ) const

View File

@@ -53,7 +53,7 @@
- -
*/ */
using bcdata_t = uint32_t;
class BCAbstractTransmitter class BCAbstractTransmitter
{ {
@@ -61,8 +61,8 @@ class BCAbstractTransmitter
public: public:
// //
virtual bcdata_t readValue( BCDevice::ID deviceID_, BC::ID targetID_ ) const { return 0;}; virtual std::optional<bcdata_t> readRawValue( BCDevice::ID deviceID_, BC::ID registerID_ ) const = 0;
///virtual uint32_t readByte( BCDevice::ID deviceID_, BC::ID targetID_ ) const = 0; virtual void writeRawValue( BCDevice::ID deviceID_, BC::ID registerID_, uint8_t value_ ) const = 0;
}; };
@@ -120,7 +120,7 @@ class BCValue
public: public:
//BCValue(); //BCValue();
BCValue( const BCValueType& valueType_, BCDevice::ID deviceID_, BC::ID targetID_ ); BCValue( const BCValueType& valueType_, BCDevice::ID deviceID_, BC::ID registerID_ );
void readRawValue( const BCAbstractTransmitter& transmitter ) const; void readRawValue( const BCAbstractTransmitter& transmitter ) const;
void writeRawValue( const BCAbstractTransmitter& transmitter ) const; void writeRawValue( const BCAbstractTransmitter& transmitter ) const;
@@ -128,7 +128,7 @@ public:
BCValueTypeCRef valueType; BCValueTypeCRef valueType;
BCDevice::ID deviceID{BCDevice::ID::Invalid}; BCDevice::ID deviceID{BCDevice::ID::Invalid};
BC::ID targetID{BC::ID::Invalid}; BC::ID registerID{BC::ID::Invalid};
int rowInModel{-1}; int rowInModel{-1};
QString label; QString label;
QVariant value; QVariant value;
@@ -137,7 +137,7 @@ public:
bool inSync{false}; bool inSync{false};
bool readOnly{false}; bool readOnly{false};
mutable double rawValue{}; mutable std::optional<bcdata_t> rawValue;