Skip to content

Commit

Permalink
[NXP][common][mcxw71_k32w1] Update ButtonApp::HandleLongPress and Pla…
Browse files Browse the repository at this point in the history
…tformManagerImpl (#35989)

* [nxp][examples][common] Schedule ButtonApp::HandleLongPress on Matter task
 * Remove CleanReset call
 * Schedule button work on matter task. This code is run from interrupt and
   Reset might call some functions (e.g. LogEvent) that must be run
   from matter task. See PlatformMgr().HandleServerShuttingDown() from
   PlatformManagerImpl::_Shutdown.

Signed-off-by: Andrei Menzopol <[email protected]>

* [nxp][platform][mcxw71_k32w1] Update PlatformManagerImpl.cpp

 * Add .HandleServerShuttingDown PlatformManagerImpl::_Shutdown()
 * Use NVIC_SystemReset instead of HAL_ResetMCU
 * Rename CleanReset to Reset

Signed-off-by: Andrei Menzopol <[email protected]>

* Restyled by clang-format

---------

Signed-off-by: Andrei Menzopol <[email protected]>
Co-authored-by: Restyled.io <[email protected]>
  • Loading branch information
andrei-menzopol and restyled-commits authored Oct 9, 2024
1 parent 50b5dfb commit d4c2eaf
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,14 @@ void chip::NXP::App::ButtonApp::HandleShortPress()

void chip::NXP::App::ButtonApp::HandleLongPress()
{
chip::DeviceLayer::PlatformMgrImpl().CleanReset();
// Execute "clean" reset
chip::DeviceLayer::PlatformMgr().ScheduleWork(
[](intptr_t arg) {
chip::DeviceLayer::PlatformMgr().StopEventLoopTask();
chip::DeviceLayer::PlatformMgr().Shutdown();
chip::DeviceLayer::PlatformMgrImpl().Reset();
},
(intptr_t) nullptr);
}

void chip::NXP::App::ButtonApp::HandleDoubleClick()
Expand Down
15 changes: 10 additions & 5 deletions src/platform/nxp/mcxw71_k32w1/PlatformManagerImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@

#include <mbedtls/platform.h>

extern "C" void HAL_ResetMCU(void);
extern "C" void freertos_mbedtls_mutex_init(void);

extern uint8_t __data_end__[], m_data0_end[];
Expand Down Expand Up @@ -93,14 +92,16 @@ CHIP_ERROR PlatformManagerImpl::ServiceInit(void)
return CHIP_NO_ERROR;
}

void PlatformManagerImpl::CleanReset()
void PlatformManagerImpl::Reset()
{
StopEventLoopTask();
Shutdown();
#if (CHIP_PLAT_NVM_SUPPORT == 1)
NvCompletePendingOperations();
#endif
HAL_ResetMCU();
// Restart the system.
NVIC_SystemReset();
while (1)
{
}
}

void PlatformManagerImpl::ScheduleResetInIdle(void)
Expand Down Expand Up @@ -200,6 +201,10 @@ void PlatformManagerImpl::_Shutdown()
ChipLogError(DeviceLayer, "Failed to get current uptime since the Node’s last reboot");
}

/* Handle the server shutting down & emit the ShutDown event */
/* Make sure to call this function from Matter Task */
PlatformMgr().HandleServerShuttingDown();
/* Shutdown all layers */
Internal::GenericPlatformManagerImpl_FreeRTOS<PlatformManagerImpl>::_Shutdown();
}

Expand Down
2 changes: 1 addition & 1 deletion src/platform/nxp/mcxw71_k32w1/PlatformManagerImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class PlatformManagerImpl final : public PlatformManager, public Internal::Gener
System::Clock::Timestamp GetStartTime() { return mStartTime; }
void HardwareInit(void);
CHIP_ERROR ServiceInit(void);
void CleanReset();
void Reset();
void StopBLEConnectivity() {}
void ScheduleResetInIdle(void);
bool GetResetInIdleValue(void);
Expand Down

0 comments on commit d4c2eaf

Please sign in to comment.