@@ -1061,13 +1061,17 @@ def WriteAttributes(future: Future, eventLoop, device,
10611061 return res
10621062
10631063
1064- def TestOnlyWriteAttributeTimedRequestFlagWithNoTimedAction (future : Future , eventLoop , device ,
1065- attributes : List [AttributeWriteRequest ],
1066- interactionTimeoutMs : Union [None , int ] = None ,
1067- busyWaitMs : Union [None , int ] = None ) -> PyChipError :
1064+ def TestOnlyWriteAttributeWithMismatchedTimedRequestField (future : Future , eventLoop , device ,
1065+ attributes : List [AttributeWriteRequest ],
1066+ timedRequestTimeoutMs : int ,
1067+ timedRequestFieldValue : bool ,
1068+ interactionTimeoutMs : Union [None , int ] = None ,
1069+ busyWaitMs : Union [None , int ] = None ) -> PyChipError :
10681070 '''
1069- ONLY TO BE USED FOR TEST: Writes attributes with TimedRequest flag but no TimedAction transaction
1070- This should result in TIMED_REQUEST_MISMATCH error.
1071+ ONLY TO BE USED FOR TEST: Writes attributes with decoupled Timed Request action and TimedRequest field.
1072+ This allows testing TIMED_REQUEST_MISMATCH scenarios:
1073+ - timedRequestTimeoutMs=0, timedRequestFieldValue=True: No action, but field=true (MISMATCH)
1074+ - timedRequestTimeoutMs>0, timedRequestFieldValue=False: Action sent, but field=false (MISMATCH)
10711075 '''
10721076 handle = GetLibraryHandle ()
10731077
@@ -1079,43 +1083,12 @@ def TestOnlyWriteAttributeTimedRequestFlagWithNoTimedAction(future: Future, even
10791083 transaction = AsyncWriteTransaction (future , eventLoop )
10801084 ctypes .pythonapi .Py_IncRef (ctypes .py_object (transaction ))
10811085
1082- # Call the TestOnly C++ function that sets TimedRequest=True but no timed transaction
1086+ # Call the TestOnly C++ function that decouples action and field
10831087 res = builtins .chipStack .Call (
1084- lambda : handle .pychip_WriteClient_TestOnlyWriteAttributesTimedRequestNoTimedAction (
1085- ctypes .py_object (transaction ), device ,
1086- ctypes .c_size_t (0 if interactionTimeoutMs is None else interactionTimeoutMs ),
1087- ctypes .c_size_t (0 if busyWaitMs is None else busyWaitMs ),
1088- pyWriteAttributes , ctypes .c_size_t (numberOfAttributes ))
1089- )
1090- if not res .is_success :
1091- ctypes .pythonapi .Py_DecRef (ctypes .py_object (transaction ))
1092- return res
1093-
1094-
1095- def TestOnlyWriteAttributeTimedActionNoTimedRequestFlag (future : Future , eventLoop , device ,
1096- attributes : List [AttributeWriteRequest ],
1097- timedRequestTimeoutMs : int ,
1098- interactionTimeoutMs : Union [None , int ] = None ,
1099- busyWaitMs : Union [None , int ] = None ) -> PyChipError :
1100- '''
1101- ONLY TO BE USED FOR TEST: Writes attributes with Timed Action performed but TimedRequest flag set to false.
1102- This should result in TIMED_REQUEST_MISMATCH error.
1103- '''
1104- handle = GetLibraryHandle ()
1105-
1106- # Note: We skip the timed write check here to allow testing the TIMED_REQUEST_MISMATCH scenario
1107- # In normal WriteAttributes, this would check for must_use_timed_write
1108- pyWriteAttributes , numberOfAttributes = _prepare_write_attributes_data (
1109- attributes , must_use_timed_write_check = False )
1110-
1111- transaction = AsyncWriteTransaction (future , eventLoop )
1112- ctypes .pythonapi .Py_IncRef (ctypes .py_object (transaction ))
1113-
1114- # Call the TestOnly C++ function that performs TimedRequest action but sets flag=False
1115- res = builtins .chipStack .Call (
1116- lambda : handle .pychip_WriteClient_TestOnlyWriteAttributesTimedActionNoTimedRequestFlag (
1088+ lambda : handle .pychip_WriteClient_TestOnlyWriteAttributesWithMismatchedTimedRequestField (
11171089 ctypes .py_object (transaction ), device ,
11181090 ctypes .c_size_t (timedRequestTimeoutMs ),
1091+ ctypes .c_bool (timedRequestFieldValue ),
11191092 ctypes .c_size_t (0 if interactionTimeoutMs is None else interactionTimeoutMs ),
11201093 ctypes .c_size_t (0 if busyWaitMs is None else busyWaitMs ),
11211094 pyWriteAttributes , ctypes .c_size_t (numberOfAttributes ))
@@ -1295,12 +1268,9 @@ def Init():
12951268
12961269 handle .pychip_WriteClient_WriteAttributes .restype = PyChipError
12971270 handle .pychip_WriteClient_WriteGroupAttributes .restype = PyChipError
1298- handle .pychip_WriteClient_TestOnlyWriteAttributesTimedRequestNoTimedAction .restype = PyChipError
1299- handle .pychip_WriteClient_TestOnlyWriteAttributesTimedRequestNoTimedAction .argtypes = [py_object , c_void_p ,
1300- c_size_t , c_size_t , POINTER (PyWriteAttributeData ), c_size_t ]
1301- handle .pychip_WriteClient_TestOnlyWriteAttributesTimedActionNoTimedRequestFlag .restype = PyChipError
1302- handle .pychip_WriteClient_TestOnlyWriteAttributesTimedActionNoTimedRequestFlag .argtypes = [py_object , c_void_p ,
1303- c_size_t , c_size_t , c_size_t , POINTER (PyWriteAttributeData ), c_size_t ]
1271+ handle .pychip_WriteClient_TestOnlyWriteAttributesWithMismatchedTimedRequestField .restype = PyChipError
1272+ handle .pychip_WriteClient_TestOnlyWriteAttributesWithMismatchedTimedRequestField .argtypes = [py_object , c_void_p ,
1273+ c_size_t , c_bool , c_size_t , c_size_t , POINTER (PyWriteAttributeData ), c_size_t ]
13041274
13051275 # Both WriteAttributes and WriteGroupAttributes are variadic functions. As per ctype documentation
13061276 # https://docs.python.org/3/library/ctypes.html#calling-varadic-functions, it is critical that we
0 commit comments