Make ota provider cancel bdx transfer on sigterm provider changes only (#41310)

* making ota-provider-app send StatusReport msg on sigterm.

* setting BdxOtaSender abort reason to bdx::StatusCode::kUnknown on sigterm.

* fixes for style check failure.

* gathering all scheduled functions.
diff --git a/examples/ota-provider-app/linux/main.cpp b/examples/ota-provider-app/linux/main.cpp
index 2b0743a..9d9aedd 100644
--- a/examples/ota-provider-app/linux/main.cpp
+++ b/examples/ota-provider-app/linux/main.cpp
@@ -407,9 +407,31 @@
 
 void ApplicationShutdown() {}
 
+namespace {
+class OtaProviderAppMainLoopImplementation : public AppMainLoopImplementation
+{
+public:
+    void RunMainLoop() override { chip::DeviceLayer::PlatformMgr().RunEventLoop(); }
+    void SignalSafeStopMainLoop() override
+    {
+        chip::DeviceLayer::PlatformMgr().ScheduleWork([](intptr_t) {
+            ChipLogDetail(SoftwareUpdate, "Scheduling BdxOtaSender to ABORT TRANSFER");
+
+            gOtaProvider.GetBdxOtaSender()->AbortTransfer();
+
+            chip::DeviceLayer::PlatformMgr().StopEventLoopTask();
+        });
+
+        chip::Server::GetInstance().GenerateShutDownEvent();
+    }
+};
+} // namespace
+
 int main(int argc, char * argv[])
 {
+    OtaProviderAppMainLoopImplementation ml_impl{};
+
     VerifyOrDie(ChipLinuxAppInit(argc, argv, &cmdLineOptions) == 0);
-    ChipLinuxAppMainLoop();
+    ChipLinuxAppMainLoop(&ml_impl);
     return 0;
 }
diff --git a/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp b/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp
index 12f6e76..0fb27bf 100644
--- a/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp
+++ b/examples/ota-provider-app/ota-provider-common/BdxOtaSender.cpp
@@ -236,3 +236,12 @@
     mNumBytesSent = 0;
     memset(mFileDesignator, 0, chip::bdx::kMaxFileDesignatorLen);
 }
+
+void BdxOtaSender::AbortTransfer()
+{
+    if (mInitialized)
+    {
+        mTransfer.AbortTransfer(StatusCode::kUnknown);
+        PollForOutput();
+    }
+}
diff --git a/examples/ota-provider-app/ota-provider-common/BdxOtaSender.h b/examples/ota-provider-app/ota-provider-common/BdxOtaSender.h
index 6cc3034..2838f94 100644
--- a/examples/ota-provider-app/ota-provider-common/BdxOtaSender.h
+++ b/examples/ota-provider-app/ota-provider-common/BdxOtaSender.h
@@ -28,6 +28,8 @@
     // Initializes BDX transfer-related metadata. Should always be called first.
     CHIP_ERROR InitializeTransfer(chip::FabricIndex fabricIndex, chip::NodeId nodeId);
 
+    void AbortTransfer();
+
 private:
     // Inherited from bdx::TransferFacilitator
     void HandleTransferSessionOutput(chip::bdx::TransferSession::OutputEvent & event) override;