Reworked driver code, again.

This commit is contained in:
2026-01-03 20:10:30 +01:00
parent 68680db6b4
commit 3a132bb584
22 changed files with 228 additions and 184 deletions

View File

@@ -84,9 +84,9 @@ class BCDriverStatus;
*/
class BCDriver : public QObject
class BCDriver
{
Q_OBJECT
Q_GADGET
public:
@@ -95,21 +95,23 @@ public:
enum class DriverState
{
NotPresent,
Error,
NotPresent,
Loaded,
Initialized,
Opened, // bis hierher: dll vorhanden, Treiber geladen
DeviceReady // hier: devices connectable, wir können arbeiten.
DeviceReady, // hier: devices connectable, wir können arbeiten.
Error,
};
Q_ENUM(DriverState)
// Enthält den Treiberzustand oder einen Fehlerstring
using DriverStateResult = std::expected<DriverState,QString>;
explicit BCDriver( QObject* parent = nullptr );
explicit BCDriver() = default;
virtual ~BCDriver() = default;
virtual BCDriver::DriverStateResult loadAndStartDriver() = 0;
// Gibt den aktuelle Zustand des Treibers zurück. Der DriverState
// muss auf DeviceReady stehen, um Werte lesen & schreiben zu können.
// Dazu muss das Bionx-System eingeschaltet sein.
@@ -122,14 +124,6 @@ public:
virtual TransmitResult readRawByte ( uint32_t deviceID, uint8_t registerID ) const = 0;
virtual TransmitResult writeRawByte( uint32_t deviceID, uint8_t registerID, uint8_t value ) const = 0;
public slots:
virtual void onStartDriver() = 0;
signals:
void driverStateChanged( DriverState state, const QString& message="" ) const;
protected:
DriverState _driverState{DriverState::NotPresent};
@@ -139,18 +133,15 @@ protected:
class BCDriverDummy : public BCDriver
{
Q_OBJECT
public:
explicit BCDriverDummy( QObject* parent = nullptr );
BCDriver::DriverStateResult loadAndStartDriver() override;
TransmitResult readRawByte( uint32_t deviceID, uint8_t registerID ) const override;
TransmitResult writeRawByte( uint32_t deviceID, uint8_t registerID, uint8_t value ) const override;
public slots:
virtual void onStartDriver() override;
};
#endif // BCDRIVER_H