diff --git a/src/app/EventManagement.cpp b/src/app/EventManagement.cpp index 1321475d3e8314..bcac83c2348957 100644 --- a/src/app/EventManagement.cpp +++ b/src/app/EventManagement.cpp @@ -80,26 +80,20 @@ struct CopyAndAdjustDeltaTimeContext EventLoadOutContext * mpContext = nullptr; }; -void EventManagement::Init(Messaging::ExchangeManager * apExchangeManager, uint32_t aNumBuffers, - CircularEventBuffer * apCircularEventBuffer, const LogStorageResources * const apLogStorageResources, - MonotonicallyIncreasingCounter * apEventNumberCounter, - System::Clock::Milliseconds64 aMonotonicStartupTime, EventReporter * apEventReporter) +CHIP_ERROR EventManagement::Init(Messaging::ExchangeManager * apExchangeManager, uint32_t aNumBuffers, + CircularEventBuffer * apCircularEventBuffer, + const LogStorageResources * const apLogStorageResources, + MonotonicallyIncreasingCounter * apEventNumberCounter, + System::Clock::Milliseconds64 aMonotonicStartupTime, EventReporter * apEventReporter) { + VerifyOrReturnError(apEventReporter != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(aNumBuffers != 0, CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(mState == EventManagementStates::Shutdown, CHIP_ERROR_INCORRECT_STATE); + CircularEventBuffer * current = nullptr; CircularEventBuffer * prev = nullptr; CircularEventBuffer * next = nullptr; - if (aNumBuffers == 0) - { - ChipLogError(EventLogging, "Invalid aNumBuffers"); - return; - } - - if (mState != EventManagementStates::Shutdown) - { - ChipLogError(EventLogging, "Invalid EventManagement State"); - return; - } mpExchangeMgr = apExchangeManager; for (uint32_t bufferIndex = 0; bufferIndex < aNumBuffers; bufferIndex++) @@ -125,15 +119,9 @@ void EventManagement::Init(Messaging::ExchangeManager * apExchangeManager, uint3 mMonotonicStartupTime = aMonotonicStartupTime; - // TODO(#36890): Should remove using the global instance and rely only on passed in variable. - if (apEventReporter == nullptr) - { - mpEventReporter = &InteractionModelEngine::GetInstance()->GetReportingEngine(); - } - else - { - mpEventReporter = apEventReporter; - } + mpEventReporter = apEventReporter; + + return CHIP_NO_ERROR; } CHIP_ERROR EventManagement::CopyToNextBuffer(CircularEventBuffer * apEventBuffer) @@ -355,7 +343,7 @@ void EventManagement::CreateEventManagement(Messaging::ExchangeManager * apExcha { sInstance.Init(apExchangeManager, aNumBuffers, apCircularEventBuffer, apLogStorageResources, apEventNumberCounter, - aMonotonicStartupTime); + aMonotonicStartupTime, &InteractionModelEngine::GetInstance()->GetReportingEngine()); } /** diff --git a/src/app/EventManagement.h b/src/app/EventManagement.h index f5687b586e02f4..81babec13df12f 100644 --- a/src/app/EventManagement.h +++ b/src/app/EventManagement.h @@ -228,11 +228,13 @@ class EventManagement : public DataModel::EventsGenerator * * @param[in] apEventReporter Event reporter to be notified when events are generated. * + * @return CHIP_ERROR CHIP Error Code + * */ - void Init(Messaging::ExchangeManager * apExchangeManager, uint32_t aNumBuffers, CircularEventBuffer * apCircularEventBuffer, - const LogStorageResources * const apLogStorageResources, - MonotonicallyIncreasingCounter * apEventNumberCounter, - System::Clock::Milliseconds64 aMonotonicStartupTime, EventReporter * apEventReporter = nullptr); + CHIP_ERROR Init(Messaging::ExchangeManager * apExchangeManager, uint32_t aNumBuffers, + CircularEventBuffer * apCircularEventBuffer, const LogStorageResources * const apLogStorageResources, + MonotonicallyIncreasingCounter * apEventNumberCounter, + System::Clock::Milliseconds64 aMonotonicStartupTime, EventReporter * apEventReporter); static EventManagement & GetInstance(); diff --git a/src/app/server/Server.cpp b/src/app/server/Server.cpp index 2afb5242137509..128ccd6ed069ab 100644 --- a/src/app/server/Server.cpp +++ b/src/app/server/Server.cpp @@ -283,9 +283,12 @@ CHIP_ERROR Server::Init(const ServerInitParams & initParams) { &sCritEventBuffer[0], sizeof(sCritEventBuffer), app::PriorityLevel::Critical } }; - app::EventManagement::GetInstance().Init(&mExchangeMgr, CHIP_NUM_EVENT_LOGGING_BUFFERS, &sLoggingBuffer[0], - &logStorageResources[0], &sGlobalEventIdCounter, - std::chrono::duration_cast(mInitTimestamp)); + err = app::EventManagement::GetInstance().Init(&mExchangeMgr, CHIP_NUM_EVENT_LOGGING_BUFFERS, &sLoggingBuffer[0], + &logStorageResources[0], &sGlobalEventIdCounter, + std::chrono::duration_cast(mInitTimestamp), + &app::InteractionModelEngine::GetInstance()->GetReportingEngine()); + + SuccessOrExit(err); } #endif // CHIP_CONFIG_ENABLE_SERVER_IM_EVENT