diff --git a/0001-Rename-the-variable-and-reduce-code.patch b/0001-Rename-the-variable-and-reduce-code.patch new file mode 100644 index 0000000000..f52f7882ef --- /dev/null +++ b/0001-Rename-the-variable-and-reduce-code.patch @@ -0,0 +1,77 @@ +From f19da9191362d70a020ab6852233eb327c19f906 Mon Sep 17 00:00:00 2001 +From: Hunsup Jung +Date: Sat, 7 Mar 2026 15:36:45 +0900 +Subject: [PATCH] Rename the variable and reduce code + +Signed-off-by: Hunsup Jung +--- + .../matter-lock/src/new-matter-lock/init.lua | 25 +++++++++---------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +diff --git a/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua b/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua +index d9b9c9f6..37a9493a 100644 +--- a/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua ++++ b/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua +@@ -29,7 +29,8 @@ local PowerSource = clusters.PowerSource + + local INITIAL_CREDENTIAL_INDEX = 1 + local ALL_INDEX = 0xFFFE +-local NAME_MAX_L = 10 ++-- maximum as defined by the Matter specification ++local MAX_USER_NAME_LENGTH = 10 + local MIN_EPOCH_S = 0 + local MAX_EPOCH_S = 0xffffffff + local THIRTY_YEARS_S = 946684800 -- 1970-01-01T00:00:00 ~ 2000-01-01T00:00:00 +@@ -1274,10 +1275,7 @@ local function handle_update_user(driver, device, command) + local cmdName = "updateUser" + local userIdx = command.args.userIndex + local userName = command.args.userName +- local userNameMatter = userName +- if #userNameMatter > NAME_MAX_L then +- userNameMatter = string.sub(userNameMatter, 1, NAME_MAX_L) +- end ++ local userNameMatter = string.sub(userName, 1, MAX_USER_NAME_LENGTH) + local userType = command.args.userType + local userTypeMatter = DoorLock.types.UserTypeEnum.UNRESTRICTED_USER + if userType == "guest" then +@@ -1307,7 +1305,7 @@ local function handle_update_user(driver, device, command) + device:send( + DoorLock.server.commands.SetUser( + device, ep, +- DoorLock.types.DataOperationTypeEnum.MODIFY, -- Operation Type: Add(0), Modify(2) ++ DoorLock.types.DataOperationTypeEnum.MODIFY, + userIdx, + userNameMatter, + nil, -- Unique ID +@@ -1355,6 +1353,7 @@ local function get_user_response_handler(driver, device, ib, response) + -- Found available user index + if status == nil or status == DoorLock.types.UserStatusEnum.AVAILABLE then + local userName = device:get_field(lock_utils.USER_NAME) ++ local userNameMatter = string.sub(userName, 1, MAX_USER_NAME_LENGTH) + local userType = device:get_field(lock_utils.USER_TYPE) + local userTypeMatter = DoorLock.types.UserTypeEnum.UNRESTRICTED_USER + if userType == "guest" then +@@ -1368,13 +1367,13 @@ local function get_user_response_handler(driver, device, ib, response) + device:send( + DoorLock.server.commands.SetUser( + device, ep, +- DoorLock.types.DataOperationTypeEnum.ADD, -- Operation Type: Add(0), Modify(2) +- userIdx, -- User Index +- userName, -- User Name +- nil, -- Unique ID +- nil, -- User Status +- userTypeMatter, -- User Type +- nil -- Credential Rule ++ DoorLock.types.DataOperationTypeEnum.ADD, ++ userIdx, ++ userNameMatter, ++ nil, -- Unique ID ++ nil, -- User Status ++ userTypeMatter, ++ nil -- Credential Rule + ) + ) + elseif userIdx >= maxUser then -- There's no available user index +-- +2.39.5 (Apple Git-154) + diff --git a/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua b/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua index 00aed22adf..8f2a99fd5d 100644 --- a/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua +++ b/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua @@ -18,6 +18,8 @@ local PowerSource = clusters.PowerSource local INITIAL_CREDENTIAL_INDEX = 1 local ALL_INDEX = 0xFFFE +-- maximum as defined by the Matter specification +local MAX_USER_NAME_LENGTH = 10 local MIN_EPOCH_S = 0 local MAX_EPOCH_S = 0xffffffff local THIRTY_YEARS_S = 946684800 -- 1970-01-01T00:00:00 ~ 2000-01-01T00:00:00 @@ -1220,6 +1222,7 @@ local function handle_update_user(driver, device, command) local cmdName = "updateUser" local userIdx = command.args.userIndex local userName = command.args.userName + local userNameMatter = string.sub(userName, 1, MAX_USER_NAME_LENGTH) local userType = command.args.userType local userTypeMatter = DoorLock.types.UserTypeEnum.UNRESTRICTED_USER if userType == "guest" then @@ -1249,13 +1252,13 @@ local function handle_update_user(driver, device, command) device:send( DoorLock.server.commands.SetUser( device, ep, - DoorLock.types.DataOperationTypeEnum.MODIFY, -- Operation Type: Add(0), Modify(2) - userIdx, -- User Index - userName, -- User Name - nil, -- Unique ID - nil, -- User Status - userTypeMatter, -- User Type - nil -- Credential Rule + DoorLock.types.DataOperationTypeEnum.MODIFY, + userIdx, + userNameMatter, + nil, -- Unique ID + nil, -- User Status + userTypeMatter, + nil -- Credential Rule ) ) end @@ -1297,6 +1300,7 @@ local function get_user_response_handler(driver, device, ib, response) -- Found available user index if status == nil or status == DoorLock.types.UserStatusEnum.AVAILABLE then local userName = device:get_field(lock_utils.USER_NAME) + local userNameMatter = string.sub(userName, 1, MAX_USER_NAME_LENGTH) local userType = device:get_field(lock_utils.USER_TYPE) local userTypeMatter = DoorLock.types.UserTypeEnum.UNRESTRICTED_USER if userType == "guest" then @@ -1310,13 +1314,13 @@ local function get_user_response_handler(driver, device, ib, response) device:send( DoorLock.server.commands.SetUser( device, ep, - DoorLock.types.DataOperationTypeEnum.ADD, -- Operation Type: Add(0), Modify(2) - userIdx, -- User Index - userName, -- User Name - nil, -- Unique ID - nil, -- User Status - userTypeMatter, -- User Type - nil -- Credential Rule + DoorLock.types.DataOperationTypeEnum.ADD, + userIdx, + userNameMatter, + nil, -- Unique ID + nil, -- User Status + userTypeMatter, + nil -- Credential Rule ) ) elseif userIdx >= maxUser then -- There's no available user index @@ -1477,14 +1481,16 @@ local function handle_add_credential(driver, device, command) -- Get parameters local cmdName = "addCredential" local userIdx = command.args.userIndex - if userIdx == 0 then - userIdx = nil - end local userType = command.args.userType local userTypeMatter = DoorLock.types.UserTypeEnum.UNRESTRICTED_USER if userType == "guest" then userTypeMatter = DoorLock.types.UserTypeEnum.SCHEDULE_RESTRICTED_USER end + if userIdx == 0 then + userIdx = nil + else + userTypeMatter = nil + end local credential = { credential_type = DoorLock.types.CredentialTypeEnum.PIN, credential_index = INITIAL_CREDENTIAL_INDEX diff --git a/drivers/SmartThings/matter-lock/src/test/test_new_matter_lock.lua b/drivers/SmartThings/matter-lock/src/test/test_new_matter_lock.lua index e760d77e5d..d2ee8f39ba 100644 --- a/drivers/SmartThings/matter-lock/src/test/test_new_matter_lock.lua +++ b/drivers/SmartThings/matter-lock/src/test/test_new_matter_lock.lua @@ -1402,7 +1402,7 @@ test.register_coroutine_test( "654123", -- credential_data 1, -- user_index nil, -- user_status - DoorLock.types.DlUserType.UNRESTRICTED_USER -- user_type + nil -- user_type ), } ) @@ -1496,7 +1496,7 @@ test.register_coroutine_test( "654123", -- credential_data 1, -- user_index nil, -- user_status - DoorLock.types.DlUserType.UNRESTRICTED_USER -- user_type + nil -- user_type ), } ) @@ -1552,7 +1552,7 @@ test.register_coroutine_test( "654123", -- credential_data 1, -- user_index nil, -- user_status - DoorLock.types.DlUserType.UNRESTRICTED_USER -- user_type + nil -- user_type ), } ) @@ -1615,7 +1615,7 @@ test.register_coroutine_test( "654123", -- credential_data 1, -- user_index nil, -- user_status - DoorLock.types.DlUserType.UNRESTRICTED_USER -- user_type + nil -- user_type ), } )