From 756dc11121659224242f6a19bda56ee0fb262619 Mon Sep 17 00:00:00 2001 From: Hussein Elsherbini Date: Fri, 10 Feb 2023 09:31:44 -0500 Subject: [PATCH 1/3] added User Key domain to valid keys for the NVM3 Silabs implemented API --- src/platform/silabs/SilabsConfig.cpp | 4 ++-- src/platform/silabs/SilabsConfig.h | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/platform/silabs/SilabsConfig.cpp b/src/platform/silabs/SilabsConfig.cpp index a02fe5ed7f5d2d..d75b13170147ed 100644 --- a/src/platform/silabs/SilabsConfig.cpp +++ b/src/platform/silabs/SilabsConfig.cpp @@ -507,8 +507,8 @@ bool SILABSConfig::ValidConfigKey(Key key) { // Returns true if the key is in the Matter nvm3 reserved key range. // Additional check validates that the user consciously defined the expected key range - if ((key >= kMatterNvm3KeyLoLimit) && (key <= kMatterNvm3KeyHiLimit) && (key >= kMinConfigKey_MatterFactory) && - (key <= kMaxConfigKey_MatterKvs)) + if (((key >= kMatterNvm3KeyLoLimit) && (key <= kMatterNvm3KeyHiLimit) && (key >= kMinConfigKey_MatterFactory) && + (key <= kMaxConfigKey_MatterKvs)) || ((key >= kUserNvm3KeyDomainLoLimit) && (key <= kUserNvm3KeyDomainHiLimit)) { return true; } diff --git a/src/platform/silabs/SilabsConfig.h b/src/platform/silabs/SilabsConfig.h index d08daf14158a1b..f3cafafe114de9 100644 --- a/src/platform/silabs/SilabsConfig.h +++ b/src/platform/silabs/SilabsConfig.h @@ -64,6 +64,9 @@ namespace Internal { // '08' = Matter nvm3 region // '72' = the sub region group base offset (Factory, Config, Counter or KVS) // '01' = the id offset inside the group. +constexpr uint32_t kUserNvm3KeyDomainLoLimit = 0x000000U; +constexpr uint32_t kUserNvm3KeyDomainHiLimit = 0x00FFFFU; +constexpr uint32_t kUserNvm3KeyDomain = 0x000000U; constexpr uint32_t kMatterNvm3KeyDomain = 0x080000U; constexpr uint32_t kMatterNvm3KeyLoLimit = 0x087200U; // Do not modify without Silabs GSDK team approval constexpr uint32_t kMatterNvm3KeyHiLimit = 0x087FFFU; // Do not modify without Silabs GSDK team approval From 50cc59b5a6dbad1ddd1347482ac81198f38de52f Mon Sep 17 00:00:00 2001 From: Hussein Elsherbini Date: Fri, 10 Feb 2023 09:40:59 -0500 Subject: [PATCH 2/3] removed unnecessary define, added missing bracket --- src/platform/silabs/SilabsConfig.cpp | 3 ++- src/platform/silabs/SilabsConfig.h | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/platform/silabs/SilabsConfig.cpp b/src/platform/silabs/SilabsConfig.cpp index d75b13170147ed..960334161a6028 100644 --- a/src/platform/silabs/SilabsConfig.cpp +++ b/src/platform/silabs/SilabsConfig.cpp @@ -506,9 +506,10 @@ exit:; bool SILABSConfig::ValidConfigKey(Key key) { // Returns true if the key is in the Matter nvm3 reserved key range. + // or if the key is in the User Domain key range // Additional check validates that the user consciously defined the expected key range if (((key >= kMatterNvm3KeyLoLimit) && (key <= kMatterNvm3KeyHiLimit) && (key >= kMinConfigKey_MatterFactory) && - (key <= kMaxConfigKey_MatterKvs)) || ((key >= kUserNvm3KeyDomainLoLimit) && (key <= kUserNvm3KeyDomainHiLimit)) + (key <= kMaxConfigKey_MatterKvs)) || ((key >= kUserNvm3KeyDomainLoLimit) && (key <= kUserNvm3KeyDomainHiLimit))) { return true; } diff --git a/src/platform/silabs/SilabsConfig.h b/src/platform/silabs/SilabsConfig.h index f3cafafe114de9..43cfd2cccb401f 100644 --- a/src/platform/silabs/SilabsConfig.h +++ b/src/platform/silabs/SilabsConfig.h @@ -64,9 +64,8 @@ namespace Internal { // '08' = Matter nvm3 region // '72' = the sub region group base offset (Factory, Config, Counter or KVS) // '01' = the id offset inside the group. -constexpr uint32_t kUserNvm3KeyDomainLoLimit = 0x000000U; -constexpr uint32_t kUserNvm3KeyDomainHiLimit = 0x00FFFFU; -constexpr uint32_t kUserNvm3KeyDomain = 0x000000U; +constexpr uint32_t kUserNvm3KeyDomainLoLimit = 0x000000U; // User Domain NVM3 Key Range lower limit +constexpr uint32_t kUserNvm3KeyDomainHiLimit = 0x00FFFFU; // User Domain NVM3 Key Range Maximum limit constexpr uint32_t kMatterNvm3KeyDomain = 0x080000U; constexpr uint32_t kMatterNvm3KeyLoLimit = 0x087200U; // Do not modify without Silabs GSDK team approval constexpr uint32_t kMatterNvm3KeyHiLimit = 0x087FFFU; // Do not modify without Silabs GSDK team approval From af259a2dcd830c8c8f14a6709b747e7c61089db5 Mon Sep 17 00:00:00 2001 From: Hussein Elsherbini Date: Wed, 15 Feb 2023 10:17:37 -0500 Subject: [PATCH 3/3] restyled --- src/platform/silabs/SilabsConfig.cpp | 3 ++- src/platform/silabs/SilabsConfig.h | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/platform/silabs/SilabsConfig.cpp b/src/platform/silabs/SilabsConfig.cpp index 960334161a6028..61581155a87e8e 100644 --- a/src/platform/silabs/SilabsConfig.cpp +++ b/src/platform/silabs/SilabsConfig.cpp @@ -509,7 +509,8 @@ bool SILABSConfig::ValidConfigKey(Key key) // or if the key is in the User Domain key range // Additional check validates that the user consciously defined the expected key range if (((key >= kMatterNvm3KeyLoLimit) && (key <= kMatterNvm3KeyHiLimit) && (key >= kMinConfigKey_MatterFactory) && - (key <= kMaxConfigKey_MatterKvs)) || ((key >= kUserNvm3KeyDomainLoLimit) && (key <= kUserNvm3KeyDomainHiLimit))) + (key <= kMaxConfigKey_MatterKvs)) || + ((key >= kUserNvm3KeyDomainLoLimit) && (key <= kUserNvm3KeyDomainHiLimit))) { return true; } diff --git a/src/platform/silabs/SilabsConfig.h b/src/platform/silabs/SilabsConfig.h index 43cfd2cccb401f..ec032dc0587a29 100644 --- a/src/platform/silabs/SilabsConfig.h +++ b/src/platform/silabs/SilabsConfig.h @@ -64,11 +64,11 @@ namespace Internal { // '08' = Matter nvm3 region // '72' = the sub region group base offset (Factory, Config, Counter or KVS) // '01' = the id offset inside the group. -constexpr uint32_t kUserNvm3KeyDomainLoLimit = 0x000000U; // User Domain NVM3 Key Range lower limit -constexpr uint32_t kUserNvm3KeyDomainHiLimit = 0x00FFFFU; // User Domain NVM3 Key Range Maximum limit -constexpr uint32_t kMatterNvm3KeyDomain = 0x080000U; -constexpr uint32_t kMatterNvm3KeyLoLimit = 0x087200U; // Do not modify without Silabs GSDK team approval -constexpr uint32_t kMatterNvm3KeyHiLimit = 0x087FFFU; // Do not modify without Silabs GSDK team approval +constexpr uint32_t kUserNvm3KeyDomainLoLimit = 0x000000U; // User Domain NVM3 Key Range lower limit +constexpr uint32_t kUserNvm3KeyDomainHiLimit = 0x00FFFFU; // User Domain NVM3 Key Range Maximum limit +constexpr uint32_t kMatterNvm3KeyDomain = 0x080000U; +constexpr uint32_t kMatterNvm3KeyLoLimit = 0x087200U; // Do not modify without Silabs GSDK team approval +constexpr uint32_t kMatterNvm3KeyHiLimit = 0x087FFFU; // Do not modify without Silabs GSDK team approval constexpr inline uint32_t SILABSConfigKey(uint8_t keyBaseOffset, uint8_t id) { return kMatterNvm3KeyDomain | static_cast(keyBaseOffset) << 8 | id;