M module-apps/apps-common/ApplicationCommon.cpp => module-apps/apps-common/ApplicationCommon.cpp +0 -3
@@ 115,9 115,6 @@ namespace app
connect(typeid(sdesktop::usb::USBConnected),
[&](sys::Message *msg) -> sys::MessagePointer { return handleUsbStatusChange(); });
connect(typeid(sdesktop::usb::USBDisconnected), [&](sys::Message *msg) -> sys::MessagePointer {
- if (onUsbDisconnected != nullptr) {
- onUsbDisconnected();
- }
return handleUsbStatusChange();
});
M module-apps/apps-common/ApplicationCommon.hpp => module-apps/apps-common/ApplicationCommon.hpp +0 -2
@@ 176,8 176,6 @@ namespace app
using OnActionReceived = std::function<ActionResult(manager::actions::ActionParamsPtr &&)>;
protected:
- std::function<void()> onUsbDisconnected;
-
virtual sys::MessagePointer handleKBDKeyEvent(sys::Message *msgl);
virtual sys::MessagePointer handleApplicationSwitch(sys::Message *msgl);
virtual sys::MessagePointer handleAppClose(sys::Message *msgl);
M module-services/service-desktop/WorkerDesktop.cpp => module-services/service-desktop/WorkerDesktop.cpp +30 -13
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "service-desktop/ServiceDesktop.hpp"
@@ 15,7 15,8 @@
#include <utility>
#include <vector>
-#include "system/messages/SentinelRegistrationMessage.hpp"
+#include <system/messages/SentinelRegistrationMessage.hpp>
+#include <module-utils/EventStore/EventStore.hpp>
WorkerDesktop::WorkerDesktop(sys::Service *ownerServicePtr,
std::function<void()> messageProcessedCallback,
@@ 216,23 217,15 @@ bool WorkerDesktop::handleIrqQueueMessage(std::shared_ptr<sys::WorkerQueue> &que
switch (notification) {
case bsp::USBDeviceStatus::Connected:
- LOG_DEBUG("USB status: Connected");
- ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBConnected>(),
- sys::BusChannel::USBNotifications);
+ handleUsbConnected();
break;
case bsp::USBDeviceStatus::Configured:
- LOG_DEBUG("USB status: Configured");
- ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBConfigured>(),
- sys::BusChannel::USBNotifications);
- configured = true;
+ handleUsbConfigured();
break;
case bsp::USBDeviceStatus::Disconnected:
- LOG_DEBUG("USB status: Disconnected");
- ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBDisconnected>(),
- sys::BusChannel::USBNotifications);
- configured = false;
+ handleUsbDisconnected();
break;
case bsp::USBDeviceStatus::DataReceived:
@@ 254,6 247,30 @@ bool WorkerDesktop::handleIrqQueueMessage(std::shared_ptr<sys::WorkerQueue> &que
return true;
}
+void WorkerDesktop::handleUsbConnected()
+{
+ LOG_DEBUG("USB status: Connected");
+ ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBConnected>(), sys::BusChannel::USBNotifications);
+}
+
+void WorkerDesktop::handleUsbDisconnected()
+{
+ LOG_DEBUG("USB status: Disconnected");
+ Store::Usb::modify().status = Store::Usb::Status::NotConfigured;
+ ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBDisconnected>(),
+ sys::BusChannel::USBNotifications);
+ configured = false;
+}
+
+void WorkerDesktop::handleUsbConfigured()
+{
+ LOG_DEBUG("USB status: Configured");
+ Store::Usb::modify().status = Store::Usb::Status::Configured;
+ ownerService->bus.sendMulticast(std::make_shared<sdesktop::usb::USBConfigured>(),
+ sys::BusChannel::USBNotifications);
+ configured = true;
+}
+
bool WorkerDesktop::handleSignallingQueueMessage(std::shared_ptr<sys::WorkerQueue> &queue)
{
if (!initialized) {
M module-services/service-desktop/WorkerDesktop.hpp => module-services/service-desktop/WorkerDesktop.hpp +5 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 46,6 46,10 @@ class WorkerDesktop : public sys::Worker
bool handleIrqQueueMessage(std::shared_ptr<sys::WorkerQueue> &queue);
bool handleSignallingQueueMessage(std::shared_ptr<sys::WorkerQueue> &queue);
+ void handleUsbConnected();
+ void handleUsbDisconnected();
+ void handleUsbConfigured();
+
std::atomic<bool> initialized = false;
std::atomic<bool> configured = false;
M module-utils/EventStore/EventStore.cpp => module-utils/EventStore/EventStore.cpp +13 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "EventStore.hpp"
@@ 38,6 38,18 @@ namespace Store
return false;
}
+ Usb usb;
+
+ const Usb &Usb::get()
+ {
+ return usb;
+ }
+
+ Usb &Usb::modify()
+ {
+ return usb;
+ }
+
cpp_freertos::MutexStandard GSM::mutex;
GSM *GSM::get()
M module-utils/EventStore/EventStore.hpp => module-utils/EventStore/EventStore.hpp +19 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 65,6 65,24 @@ namespace Store
static bool takeUpdated();
};
+ struct Usb
+ {
+ public:
+ enum class Status : bool
+ {
+ NotConfigured,
+ Configured
+ } status = Status::NotConfigured;
+
+ /// @brief Returns const reference to Usb instance, used to read Usb status
+ /// @return const Usb&
+ static const Usb &get();
+
+ /// @brief Returns reference to Usb instance, used to change Usb status
+ /// @return Usb&
+ static Usb &modify();
+ };
+
enum class RssiBar : size_t
{
zero = 0,
M products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp => products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp +0 -5
@@ 82,7 82,6 @@ namespace app
});
connect(typeid(sdesktop::usb::USBConfigured), [&](sys::Message *msg) -> sys::MessagePointer {
- usbStatusModel->setUsbStatus(app::AbstractUsbStatusModel::UsbStatus::Connected);
if (getCurrentWindow()->getName() == gui::name::window::main_window) {
homeScreenPresenter->updateUsbStatus();
}
@@ 98,10 97,6 @@ namespace app
alarmModel->activateAlarm(true);
return sys::msgHandled();
});
-
- onUsbDisconnected = [this]() {
- usbStatusModel->setUsbStatus(app::AbstractUsbStatusModel::UsbStatus::Disconnected);
- };
}
sys::ReturnCodes ApplicationBellMain::InitHandler()
M products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.cpp => products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.cpp +3 -3
@@ 7,11 7,11 @@ namespace app
{
bool UsbStatusModel::isUsbConnected(const Store::Battery::State &state) const
{
- return ((usbConnected == UsbStatus::Connected) && (state == Store::Battery::State::PluggedNotCharging));
+ return (isUsbConfigured() && (state == Store::Battery::State::PluggedNotCharging));
}
- void UsbStatusModel::setUsbStatus(UsbStatus status)
+ bool UsbStatusModel::isUsbConfigured() const
{
- usbConnected = status;
+ return Store::Usb::get().status == Store::Usb::Status::Configured;
}
} // namespace app
M products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.hpp => products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.hpp +1 -9
@@ 10,25 10,17 @@ namespace app
class AbstractUsbStatusModel
{
public:
- enum class UsbStatus : bool
- {
- Disconnected,
- Connected
- };
-
virtual ~AbstractUsbStatusModel() noexcept = default;
virtual bool isUsbConnected(const Store::Battery::State &state) const = 0;
- virtual void setUsbStatus(UsbStatus status) = 0;
};
class UsbStatusModel : public AbstractUsbStatusModel
{
public:
bool isUsbConnected(const Store::Battery::State &state) const override;
- void setUsbStatus(UsbStatus status) override;
private:
- UsbStatus usbConnected{UsbStatus::Disconnected};
+ bool isUsbConfigured() const;
};
} // namespace app