[Silabs] Bugfix/silabs lock app aliro fix (#36300)

* [SL-UP] 917 static variable retention fix (#79)

* [SL-UP] Doorlock featuremap Aliro Removal (#80)
diff --git a/examples/lock-app/silabs/data_model/lock-app.matter b/examples/lock-app/silabs/data_model/lock-app.matter
index 512435d..8a7695c 100644
--- a/examples/lock-app/silabs/data_model/lock-app.matter
+++ b/examples/lock-app/silabs/data_model/lock-app.matter
@@ -3261,7 +3261,7 @@
     callback attribute generatedCommandList;
     callback attribute acceptedCommandList;
     callback attribute attributeList;
-    ram      attribute featureMap default = 0x7DB3;
+    ram      attribute featureMap default = 0x1DB3;
     ram      attribute clusterRevision default = 7;
 
     handle command LockDoor;
diff --git a/examples/lock-app/silabs/data_model/lock-app.zap b/examples/lock-app/silabs/data_model/lock-app.zap
index a10a27e..e3488a6 100644
--- a/examples/lock-app/silabs/data_model/lock-app.zap
+++ b/examples/lock-app/silabs/data_model/lock-app.zap
@@ -6188,7 +6188,7 @@
               "storageOption": "RAM",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "0x7DB3",
+              "defaultValue": "0x1DB3",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
diff --git a/examples/lock-app/silabs/include/LockManager.h b/examples/lock-app/silabs/include/LockManager.h
index 7345782..00a4407 100644
--- a/examples/lock-app/silabs/include/LockManager.h
+++ b/examples/lock-app/silabs/include/LockManager.h
@@ -199,10 +199,12 @@
 private:
     struct UnlatchContext
     {
+        static constexpr uint8_t kMaxPinLength = UINT8_MAX;
+        uint8_t mPinBuffer[kMaxPinLength];
+        uint8_t mPinLength;
         chip::EndpointId mEndpointId;
         Nullable<chip::FabricIndex> mFabricIdx;
         Nullable<chip::NodeId> mNodeId;
-        Optional<chip::ByteSpan> mPin;
         OperationErrorEnum mErr;
 
         void Update(chip::EndpointId endpointId, const Nullable<chip::FabricIndex> & fabricIdx,
@@ -211,8 +213,18 @@
             mEndpointId = endpointId;
             mFabricIdx  = fabricIdx;
             mNodeId     = nodeId;
-            mPin        = pin;
             mErr        = err;
+
+            if (pin.HasValue())
+            {
+                memcpy(mPinBuffer, pin.Value().data(), pin.Value().size());
+                mPinLength = static_cast<uint8_t>(pin.Value().size());
+            }
+            else
+            {
+                memset(mPinBuffer, 0, kMaxPinLength);
+                mPinLength = 0;
+            }
         }
     };
     UnlatchContext mUnlatchContext;
@@ -242,11 +254,7 @@
     uint8_t mCredentialData[kNumCredentialTypes][kMaxCredentials][kMaxCredentialSize];
     CredentialStruct mCredentials[kMaxUsers][kMaxCredentials];
 
-    static LockManager sLock;
     EFR32DoorLock::LockInitParams::LockParam LockParams;
 };
 
-inline LockManager & LockMgr()
-{
-    return LockManager::sLock;
-}
+LockManager & LockMgr();
diff --git a/examples/lock-app/silabs/src/LockManager.cpp b/examples/lock-app/silabs/src/LockManager.cpp
index 04527e5..1a4fd93 100644
--- a/examples/lock-app/silabs/src/LockManager.cpp
+++ b/examples/lock-app/silabs/src/LockManager.cpp
@@ -25,11 +25,18 @@
 #include <cstring>
 #include <lib/support/logging/CHIPLogging.h>
 
-LockManager LockManager::sLock;
-
 using namespace ::chip::DeviceLayer::Internal;
 using namespace EFR32DoorLock::LockInitParams;
 
+namespace {
+LockManager sLock;
+} // namespace
+
+LockManager & LockMgr()
+{
+    return sLock;
+}
+
 CHIP_ERROR LockManager::Init(chip::app::DataModel::Nullable<chip::app::Clusters::DoorLock::DlLockState> state, LockParam lockParam)
 {
 
@@ -257,8 +264,9 @@
     bool succes = false;
     if (mUnlatchContext.mEndpointId != kInvalidEndpointId)
     {
-        succes = setLockState(mUnlatchContext.mEndpointId, mUnlatchContext.mFabricIdx, mUnlatchContext.mNodeId,
-                              DlLockState::kUnlocked, mUnlatchContext.mPin, mUnlatchContext.mErr);
+        succes = setLockState(
+            mUnlatchContext.mEndpointId, mUnlatchContext.mFabricIdx, mUnlatchContext.mNodeId, DlLockState::kUnlocked,
+            MakeOptional(chip::ByteSpan(mUnlatchContext.mPinBuffer, mUnlatchContext.mPinLength)), mUnlatchContext.mErr);
     }
 
     if (!succes)