diff --git a/hal/include/IHalCpp.h b/hal/include/IHalCpp.h index 5d8f3b5..6c4e10e 100644 --- a/hal/include/IHalCpp.h +++ b/hal/include/IHalCpp.h @@ -71,7 +71,7 @@ public: { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } - virtual StatusCode GetLedName(std::string &LedName) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } + virtual std::string GetLedName(void) { return "undefine"; } }; #if 0 @@ -83,7 +83,7 @@ public: // StatusCode SetLedHalOwner(std::shared_ptr owner) override; StatusCode SetHalLedState(const HalLedState &state) override; - StatusCode GetLedName(std::string &LedName) override; + std::string GetLedName(void) override; private: // VLedHalOwner m_LedHalOwner; @@ -101,7 +101,7 @@ public: static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); virtual StatusCode Init(void) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } virtual StatusCode UnInit(void) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } - virtual StatusCode GetLedHal(std::vector> &ledHals) + virtual StatusCode GetLedHals(std::vector> &ledHals) { return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } diff --git a/hal/src/HalCpp.cpp b/hal/src/HalCpp.cpp index 095c22b..d6ee8d0 100644 --- a/hal/src/HalCpp.cpp +++ b/hal/src/HalCpp.cpp @@ -24,7 +24,7 @@ StatusCode HalCpp::UnInit(void) LogInfo("HalCpp::UnInit\n"); return CreateStatusCode(STATUS_CODE_OK); } -StatusCode HalCpp::GetLedHal(std::vector> &ledHals) +StatusCode HalCpp::GetLedHals(std::vector> &ledHals) { ledHals = mLedHals; return CreateStatusCode(STATUS_CODE_OK); diff --git a/hal/src/HalCpp.h b/hal/src/HalCpp.h index 09191f7..4185a94 100644 --- a/hal/src/HalCpp.h +++ b/hal/src/HalCpp.h @@ -22,7 +22,7 @@ public: virtual ~HalCpp() = default; StatusCode Init(void) override; StatusCode UnInit(void) override; - StatusCode GetLedHal(std::vector> &ledHals) override; + StatusCode GetLedHals(std::vector> &ledHals) override; private: std::vector> mLedHals; diff --git a/middleware/DeviceManager/include/IDeviceManager.h b/middleware/DeviceManager/include/IDeviceManager.h index 2545fa0..4ba7538 100644 --- a/middleware/DeviceManager/include/IDeviceManager.h +++ b/middleware/DeviceManager/include/IDeviceManager.h @@ -48,18 +48,6 @@ enum LedState LED_STATE_END }; -class VLedManager -{ -public: - VLedManager() = default; - ~VLedManager() = default; - virtual StatusCode SetLedState(std::string ledName, LedState &CurrentState, const unsigned int &KeepAliveTime, - const unsigned int &BlinkPeriod) - { - return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); - } -}; - class IDeviceManager { public: @@ -69,8 +57,11 @@ public: virtual const StatusCode Init(void) { return CreateStatusCode(STATUS_CODE_OK); } virtual const StatusCode UnInit(void) { return CreateStatusCode(STATUS_CODE_OK); } virtual const IpcMission GetIpcMissiony(void) { return IpcMission::END; } - // virtual const StatusCode GetLedManager(std::vector> &ledManagers) { return - // CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); } + virtual const StatusCode ISetLedState(std::string ledName, LedState &CurrentState, + const unsigned int &KeepAliveTime, const unsigned int &BlinkPeriod) + { + return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION); + } }; bool CreateDeviceManagerModule(void); #endif \ No newline at end of file diff --git a/middleware/DeviceManager/src/DeviceManager.cpp b/middleware/DeviceManager/src/DeviceManager.cpp index 7ebd017..ab97471 100644 --- a/middleware/DeviceManager/src/DeviceManager.cpp +++ b/middleware/DeviceManager/src/DeviceManager.cpp @@ -19,16 +19,17 @@ const StatusCode DeviceManager::Init(void) { std::vector> ledHals; - IHalCpp::GetInstance()->GetLedHal(ledHals); + IHalCpp::GetInstance()->GetLedHals(ledHals); for (auto it = ledHals.begin(); it != ledHals.end(); ++it) { std::shared_ptr ledHal = *it; std::shared_ptr ledOut = - std::make_shared(ledHal, NEW_LED_STATE, DEFAULT_KEEP_ALIVE_TIME, BLINKING_FAST_MS); + std::make_shared(ledHal, NEW_LED_STATE, DEFAULT_KEEP_ALIVE_TIME, LED_NOT_BLINK); mLedManagers.push_back(ledOut); } return CreateStatusCode(STATUS_CODE_OK); } + const StatusCode DeviceManager::UnInit(void) { if (!mLedManagers.empty()) { @@ -37,4 +38,18 @@ const StatusCode DeviceManager::UnInit(void) return CreateStatusCode(STATUS_CODE_OK); } + const IpcMission DeviceManager::GetIpcMissiony(void) { return IpcMission::TEST; } + +const StatusCode DeviceManager::ISetLedState(std::string ledName, LedState &CurrentState, + const unsigned int &KeepAliveTime, const unsigned int &BlinkPeriod) +{ + for (auto it = mLedManagers.begin(); it != mLedManagers.end(); ++it) { + std::shared_ptr ledOut = *it; + if (ledOut->GetLedHal()->GetLedName() == ledName) { + ledOut->SetLedState(CurrentState, KeepAliveTime, BlinkPeriod); + return CreateStatusCode(STATUS_CODE_OK); + } + } + return CreateStatusCode(STATUS_CODE_NOT_OK); +} diff --git a/middleware/DeviceManager/src/DeviceManager.h b/middleware/DeviceManager/src/DeviceManager.h index c810df1..0e53ad7 100644 --- a/middleware/DeviceManager/src/DeviceManager.h +++ b/middleware/DeviceManager/src/DeviceManager.h @@ -26,9 +26,12 @@ public: const StatusCode Init(void) override; const StatusCode UnInit(void) override; const IpcMission GetIpcMissiony(void) override; - // const StatusCode GetLedManager(std::vector> &ledManagers) override; + const StatusCode ISetLedState(std::string ledName, LedState &CurrentState, + const unsigned int &KeepAliveTime = DEFAULT_KEEP_ALIVE_TIME, + const unsigned int &BlinkPeriod = LED_NOT_BLINK) override; + private: - std::vector> mLedManagers; + std::vector> mLedManagers; }; #endif diff --git a/middleware/DeviceManager/src/LedManager.cpp b/middleware/DeviceManager/src/LedManager.cpp index b23ac37..eceb2cc 100644 --- a/middleware/DeviceManager/src/LedManager.cpp +++ b/middleware/DeviceManager/src/LedManager.cpp @@ -20,10 +20,11 @@ LedManager::LedManager() { mLedHal = nullptr; mCurrentState = NEW_LED_STATE; - mBlinkPeriod = BLINKING_FAST_MS; + mBlinkPeriod = LED_NOT_BLINK; mKeepAliveTime = DEFAULT_KEEP_ALIVE_TIME; mStateAliveTime = 0; } + LedManager::LedManager(std::shared_ptr &LedHal, const LedState &CurrentState, const unsigned int &KeepAliveTime, const unsigned int &BlinkPeriod) { @@ -34,13 +35,17 @@ LedManager::LedManager(std::shared_ptr &LedHal, const LedState &Current mStateAliveTime = 0; } -StatusCode LedManager::SetLedState(std::string ledName, LedState &CurrentState, const unsigned int &KeepAliveTime, +std::shared_ptr LedManager::GetLedHal(void) { return mLedHal; } + +StatusCode LedManager::SetLedState(LedState &CurrentState, const unsigned int &KeepAliveTime, const unsigned int &BlinkPeriod) { mCurrentState = CurrentState; mKeepAliveTime = KeepAliveTime; + mBlinkPeriod = BlinkPeriod; return CreateStatusCode(STATUS_CODE_OK); } + StatusCode LedManager::GetLedState(LedState &CurrentState) { CurrentState = mCurrentState; diff --git a/middleware/DeviceManager/src/LedManager.h b/middleware/DeviceManager/src/LedManager.h index 57faa81..e9caf07 100644 --- a/middleware/DeviceManager/src/LedManager.h +++ b/middleware/DeviceManager/src/LedManager.h @@ -28,21 +28,21 @@ constexpr long int DEFAULT_KEEP_ALIVE_TIME = 1500; constexpr unsigned int DELETED_LED_STATE = -1; constexpr unsigned int DO_NOT_KEEP_ALIVE = -2; -class LedManager : public VLedManager +class LedManager { public: LedManager(); LedManager(std::shared_ptr &LedHal, const LedState &CurrentState, const unsigned int &KeepAliveTime = DEFAULT_KEEP_ALIVE_TIME, - const unsigned int &BlinkPeriod = BLINKING_FAST_MS); + const unsigned int &BlinkPeriod = LED_NOT_BLINK); ~LedManager() = default; StatusCode Init(void) { return CreateStatusCode(STATUS_CODE_NOT_OK); } StatusCode Unit(void) { return CreateStatusCode(STATUS_CODE_NOT_OK); } - StatusCode SetLedState(std::string ledName, LedState &CurrentState, - const unsigned int &KeepAliveTime = DEFAULT_KEEP_ALIVE_TIME, - const unsigned int &BlinkPeriod = LED_NOT_BLINK) override; public: + std::shared_ptr GetLedHal(void); + StatusCode SetLedState(LedState &CurrentState, const unsigned int &KeepAliveTime = DEFAULT_KEEP_ALIVE_TIME, + const unsigned int &BlinkPeriod = LED_NOT_BLINK); StatusCode GetLedState(LedState &CurrentState); StatusCode BlinkOn(LedState CurrentState, unsigned int KeepAliveTime); StatusCode BlinkOff(void);