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 d88a105180764c..e1472b43aa5cf0 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
@@ -2134,6 +2134,7 @@ server cluster DoorLock = 257 {
kPin = 6;
kRfid = 7;
kFingerprint = 8;
+ kFingerVein = 9;
}
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 cfedfe8eed5453..34ca3399dfcc31 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
@@ -1926,6 +1926,7 @@ server cluster DoorLock = 257 {
kPin = 6;
kRfid = 7;
kFingerprint = 8;
+ kFingerVein = 9;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
index e7df6f98a88a4c..6523f786491744 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
@@ -1229,6 +1229,7 @@ server cluster DoorLock = 257 {
kPin = 6;
kRfid = 7;
kFingerprint = 8;
+ kFingerVein = 9;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index 73387c9dedeb08..21e16d7bdaa102 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -1547,6 +1547,7 @@ server cluster DoorLock = 257 {
kPin = 6;
kRfid = 7;
kFingerprint = 8;
+ kFingerVein = 9;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/examples/lock-app/nxp/zap/lock-app.matter b/examples/lock-app/nxp/zap/lock-app.matter
index cffdb5274b26b8..41807705d58670 100644
--- a/examples/lock-app/nxp/zap/lock-app.matter
+++ b/examples/lock-app/nxp/zap/lock-app.matter
@@ -1006,6 +1006,7 @@ server cluster DoorLock = 257 {
kPin = 6;
kRfid = 7;
kFingerprint = 8;
+ kFingerVein = 9;
}
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 9c1b6be44bc0f7..884f7c38cfd1f5 100644
--- a/src/app/clusters/door-lock-server/door-lock-server.cpp
+++ b/src/app/clusters/door-lock-server/door-lock-server.cpp
@@ -3060,9 +3060,10 @@ LockDataTypeEnum DoorLockServer::credentialTypeToLockDataType(CredentialTypeEnum
case CredentialTypeEnum::kFingerprint:
return LockDataTypeEnum::kFingerprint;
case CredentialTypeEnum::kFingerVein:
- return LockDataTypeEnum::kFingerprint;
+ return LockDataTypeEnum::kFingerVein;
case CredentialTypeEnum::kFace:
- // So far there's no distinct data type for face credentials
+ // So far there's no distinct data type for face credentials.
+ // See https://github.com/CHIP-Specifications/connectedhomeip-spec/issues/6272
return LockDataTypeEnum::kUnspecified;
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 33c34f855a9994..08ad81e73e7e0a 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
@@ -521,6 +521,7 @@ limitations under the License.
+
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index b51f471244568f..3b1e0f994f72b4 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -2250,6 +2250,7 @@ client cluster DoorLock = 257 {
kPin = 6;
kRfid = 7;
kFingerprint = 8;
+ kFingerVein = 9;
}
enum LockOperationTypeEnum : ENUM8 {
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index c14201e263a9b5..492253ff5815fb 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -14748,11 +14748,12 @@ class LockDataTypeEnum(MatterIntEnum):
kPin = 0x06
kRfid = 0x07
kFingerprint = 0x08
+ kFingerVein = 0x09
# 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 = 9,
+ kUnknownEnumValue = 10,
class LockOperationTypeEnum(MatterIntEnum):
kLock = 0x00
diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml
index 656e472aeb75ed..9c858aa64f8d74 100644
--- a/src/darwin/Framework/CHIP/templates/availability.yaml
+++ b/src/darwin/Framework/CHIP/templates/availability.yaml
@@ -6651,3 +6651,14 @@
- EventList
FaultInjection:
- EventList
+ enum values:
+ DoorLock:
+ LockDataTypeEnum:
+ - FingerVein
+ removed:
+ enum values:
+ DoorLock:
+ DlLockDataType:
+ # This value never existed for this enum name so, don't start
+ # exposing it. It's exposed for LockDataTypeEnum
+ - FingerVein
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index c97bf537f8e975..29a46c7aa0c3f7 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -20874,6 +20874,7 @@ typedef NS_ENUM(uint8_t, MTRDoorLockLockDataType) {
MTRDoorLockLockDataTypePIN API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x06,
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,
} 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 a823faf417234f..f648bcea863766 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
@@ -1324,9 +1324,10 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(DoorLock::LockDataTypeE
case EnumType::kPin:
case EnumType::kRfid:
case EnumType::kFingerprint:
+ case EnumType::kFingerVein:
return val;
default:
- return static_cast(9);
+ return static_cast(10);
}
}
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 47a5293538d1e6..d9e16296348ae0 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
@@ -1511,11 +1511,12 @@ enum class LockDataTypeEnum : uint8_t
kPin = 0x06,
kRfid = 0x07,
kFingerprint = 0x08,
+ kFingerVein = 0x09,
// 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 = 9,
+ kUnknownEnumValue = 10,
};
// Enum for LockOperationTypeEnum