diff --git a/aalegacy.cpp b/aalegacy.cpp index 3c9f2ff..70e84c9 100644 --- a/aalegacy.cpp +++ b/aalegacy.cpp @@ -185,102 +185,7 @@ double gSetSpeedLimit = -1, gSetMinSpeedLimit = -1, gSetThrottleSpeedLimit = -1; #define BATTERY 3 #define BIB 4 -/* -class BCThemeSwitchButton : public QPushButton { - Q_OBJECT -public: - explicit BCThemeSwitchButton(QWidget *parent = nullptr) - : QPushButton(parent), m_isDarkMode(true) - { - // 1. Visuelles Setup: Flach, keine Ränder, Hand-Cursor - setFlat(true); - setCursor(Qt::PointingHandCursor); - setFixedSize(32, 24); // Kleiner Footprint im StatusBar - - // CSS: Transparent, damit es sich nahtlos in den StatusBar einfügt - // Schriftgröße etwas erhöhen, damit die Emojis gut erkennbar sind - setStyleSheet(R"( - QPushButton { - border: none; - background-color: transparent; - font-size: 14pt; - } - QPushButton:hover { - background-color: rgba(128, 128, 128, 30); // Leichter Hover-Effekt - border-radius: 4px; - } - )"); - - // 2. Initialer Status (Startet im Dark Mode -> zeigt Mond) - updateIcon(); - - // 3. Klick verbinden - connect(this, &QPushButton::clicked, this, &BCThemeSwitchButton::toggle); - } - -signals: - void themeChanged(bool isDark); - -private slots: - void toggle() { - m_isDarkMode = !m_isDarkMode; - updateIcon(); - emit themeChanged(m_isDarkMode); - } - -private: - void updateIcon() { - // Logik: - // Ist Dark Mode an? Zeige Mond (oder Sonne, je nach Geschmack). - // Hier: Zeige das Symbol des AKTUELLEN Modus. - setText(m_isDarkMode ? "🌙" : "☀️"); - setToolTip(m_isDarkMode ? "Switch to Light Mode" : "Switch to Dark Mode"); - } - - bool m_isDarkMode; -}; -*/ - -/* -class MainWindow : public QMainWindow -{ - Q_OBJECT -public: - MainWindow(QWidget *parent = nullptr) - : QMainWindow(parent) - { - setWindowTitle("Fluent Theme Switcher"); - resize(800, 600); - - // --- STATUSBAR SETUP --- - QStatusBar *statBar = statusBar(); - - // Optional: Normale Nachricht links - statBar->showMessage("Ready"); - - // 1. Unseren Switcher erstellen - BCThemeSwitchButton *themeBtn = new BCThemeSwitchButton(this); - - // 2. WICHTIG: Rechts hinzufügen - statBar->addPermanentWidget(themeBtn); - - // 3. Signal verbinden: Button klick -> Theme ändern - connect(themeBtn, &BCThemeSwitchButton::themeChanged, this, [this](bool isDark){ - if (isDark) { - applyFluentDarkTheme(*qApp); // Funktion von vorhin - statusBar()->showMessage("Dark Mode Activated", 3000); - } else { - applyFluentLightTheme(*qApp); // Funktion von vorhin - statusBar()->showMessage("Light Mode Activated", 3000); - } - }); - - // Initiale Anwendung (Dark Mode) - applyFluentDarkTheme(*qApp); -} -}; -*/ char *getNodeName(unsigned char id) { diff --git a/bcdrivertinycan.cpp b/bcdrivertinycan.cpp index 8510adb..8453b29 100644 --- a/bcdrivertinycan.cpp +++ b/bcdrivertinycan.cpp @@ -135,19 +135,28 @@ BCDriver::DriverStateResult BCDriverTinyCan::setConsoleSlaveMode() { uint32_t console = static_cast(BCDevice::ID::Console); - uint8_t slaveFlag = static_cast(BC::ID::Cons_Status_Slave); + uint8_t slaveFlag = static_cast (BC::ID::Cons_Status_Slave); qDebug() << "XXX BCDriverTinyCan::Driver Init: putting Console in slave mode ... "; - // Console already in slave mode. good! - if( readRawByte( console, slaveFlag ) ) - return DriverState::DeviceReady; + TransmitResult isSlave = 0; + // Already slave? + isSlave = readRawByte( console, slaveFlag ); + if( isSlave.has_value() ) + { + qDebug() << "Console responded: " << isSlave.value(); + if( isSlave.value() == 1 ) + { + qDebug() << "Console already in slave mode. good!"; + return DriverState::DeviceReady; + } + } qDebug() << "BCDriverTinyCan::BCDriverTinyCan::XXX Driver Init: putting Console in slave mode ... "; unsigned int retry = cTimeOuts; - TransmitResult isSlave = 0; + do { writeRawByte( console, slaveFlag, 1 ); @@ -222,12 +231,13 @@ retry: if ((err = CanReceive(0, &msg, 1)) > 0) { - if (--retry && (msg.Id != BIB || msg.MsgLen != 4 || msg.MsgData[1] != reg)) + qDebug() << " retry: " << retry << " BIB:" << BC::ID::ID_Bib << " msg.Id: " << msg.Id << " msg.MsgLen: " << msg.MsgLen << " msg.MsgData[1]: " << msg.MsgData[1] << " reg: " << reg; + if (--retry && (msg.Id != (uint32_t)BC::ID::ID_Bib|| msg.MsgLen != 4 || msg.MsgData[1] != reg)) goto retry; if (!retry) { - qDebug() << "XXX error: no response from node"; + qDebug() << "XXX error: no response from node: " << err; return 0; } qDebug() << " --- CAN Read Byte: Device: "<< deviceID << " register: " << registerID << " BYTE: " << (uint32_t) msg.MsgData[3]; diff --git a/bcdrivertinycan.h b/bcdrivertinycan.h index cb7be6a..2c0bad3 100644 --- a/bcdrivertinycan.h +++ b/bcdrivertinycan.h @@ -63,9 +63,6 @@ private: static constexpr int cTIMEOUT_MS = 10; // 10ms static constexpr int cTIMEOUT_COUNT = 10; - //const unsigned int BATTERY = 0x010; - //const unsigned int MOTOR = 0x020; - const unsigned int BIB = 0x048; };