diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 5121505cff7afe..e867cd1fc6be2e 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -2135,6 +2135,7 @@ server cluster DoorLock = 257 {
kRfid = 7;
kFingerprint = 8;
kFingerVein = 9;
+ kFace = 10;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index a0903903cf66fb..1a4cb57456cd15 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -1927,6 +1927,7 @@ server cluster DoorLock = 257 {
kRfid = 7;
kFingerprint = 8;
kFingerVein = 9;
+ kFace = 10;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
index bdd1ccc6a9797a..3d3c17dcf318e9 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
@@ -1230,6 +1230,7 @@ server cluster DoorLock = 257 {
kRfid = 7;
kFingerprint = 8;
kFingerVein = 9;
+ kFace = 10;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index c3c3ef210e1087..a2a5e9185ec820 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -1548,6 +1548,7 @@ server cluster DoorLock = 257 {
kRfid = 7;
kFingerprint = 8;
kFingerVein = 9;
+ kFace = 10;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/lock-app/nxp/zap/lock-app.matter b/examples/lock-app/nxp/zap/lock-app.matter
index f5aaf526416588..0c93ada0a2e67c 100644
--- a/examples/lock-app/nxp/zap/lock-app.matter
+++ b/examples/lock-app/nxp/zap/lock-app.matter
@@ -1007,6 +1007,7 @@ server cluster DoorLock = 257 {
kRfid = 7;
kFingerprint = 8;
kFingerVein = 9;
+ kFace = 10;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/src/app/clusters/door-lock-server/door-lock-server.cpp b/src/app/clusters/door-lock-server/door-lock-server.cpp
index 42354a8c9465c5..ee45c0e4b0c33c 100644
--- a/src/app/clusters/door-lock-server/door-lock-server.cpp
+++ b/src/app/clusters/door-lock-server/door-lock-server.cpp
@@ -3046,9 +3046,7 @@ LockDataTypeEnum DoorLockServer::credentialTypeToLockDataType(CredentialTypeEnum
case CredentialTypeEnum::kFingerVein:
return LockDataTypeEnum::kFingerVein;
case CredentialTypeEnum::kFace:
- // So far there's no distinct data type for face credentials.
- // See https://github.com/CHIP-Specifications/connectedhomeip-spec/issues/6272
- return LockDataTypeEnum::kUnspecified;
+ return LockDataTypeEnum::kFace;
case CredentialTypeEnum::kUnknownEnumValue:
return LockDataTypeEnum::kUnspecified;
}
diff --git a/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml
index 08ad81e73e7e0a..9902fe74d2dd79 100644
--- a/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml
@@ -522,6 +522,7 @@ limitations under the License.
+
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index fec46ee12c0b03..a7c67911b83024 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -2251,6 +2251,7 @@ client cluster DoorLock = 257 {
kRfid = 7;
kFingerprint = 8;
kFingerVein = 9;
+ kFace = 10;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 3be505def39d2f..d471823584da23 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -14749,11 +14749,12 @@ class LockDataTypeEnum(MatterIntEnum):
kRfid = 0x07
kFingerprint = 0x08
kFingerVein = 0x09
+ kFace = 0x0A
# All received enum values that are not listed above will be mapped
# to kUnknownEnumValue. This is a helper enum value that should only
# be used by code to process how it handles receiving and unknown
# enum value. This specific should never be transmitted.
- kUnknownEnumValue = 10,
+ kUnknownEnumValue = 11,
class LockOperationTypeEnum(MatterIntEnum):
kLock = 0x00
diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml
index b39b224e530b91..6562fe05bed6e6 100644
--- a/src/darwin/Framework/CHIP/templates/availability.yaml
+++ b/src/darwin/Framework/CHIP/templates/availability.yaml
@@ -6696,6 +6696,7 @@
DoorLock:
LockDataTypeEnum:
- FingerVein
+ - Face
DiagnosticLogs:
IntentEnum:
- EndUserSupport
@@ -6759,9 +6760,10 @@
enum values:
DoorLock:
DlLockDataType:
- # This value never existed for this enum name so, don't start
- # exposing it. It's exposed for LockDataTypeEnum
+ # These values never existed for this enum name so, don't
+ # start exposing them. They're exposed for LockDataTypeEnum
- FingerVein
+ - Face
renames:
attributes:
TimeSynchronization:
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index f5b16e64a5c544..c703ab8c3135a1 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -20946,6 +20946,7 @@ typedef NS_ENUM(uint8_t, MTRDoorLockLockDataType) {
MTRDoorLockLockDataTypeRFID API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x07,
MTRDoorLockLockDataTypeFingerprint API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x08,
MTRDoorLockLockDataTypeFingerVein MTR_NEWLY_AVAILABLE = 0x09,
+ MTRDoorLockLockDataTypeFace MTR_NEWLY_AVAILABLE = 0x0A,
} API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
typedef NS_ENUM(uint8_t, MTRDoorLockDlLockDataType) {
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
index 138f23bafc022a..b4ac0a3c912e5b 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
@@ -1274,9 +1274,10 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(DoorLock::LockDataTypeE
case EnumType::kRfid:
case EnumType::kFingerprint:
case EnumType::kFingerVein:
+ case EnumType::kFace:
return val;
default:
- return static_cast(10);
+ return static_cast(11);
}
}
static auto __attribute__((unused)) EnsureKnownEnumValue(DoorLock::LockOperationTypeEnum val)
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 3843edaa5baaba..dffd67bc144165 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -1467,11 +1467,12 @@ enum class LockDataTypeEnum : uint8_t
kRfid = 0x07,
kFingerprint = 0x08,
kFingerVein = 0x09,
+ kFace = 0x0A,
// All received enum values that are not listed above will be mapped
// to kUnknownEnumValue. This is a helper enum value that should only
// be used by code to process how it handles receiving and unknown
// enum value. This specific should never be transmitted.
- kUnknownEnumValue = 10,
+ kUnknownEnumValue = 11,
};
// Enum for LockOperationTypeEnum