@@ -2862,6 +2862,8 @@ - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID
2862
2862
expectedValueInterval:(NSNumber *)expectedValueInterval
2863
2863
timedWriteTimeout:(NSNumber * _Nullable)timeout
2864
2864
{
2865
+ value = [value copy];
2866
+
2865
2867
if (timeout) {
2866
2868
timeout = MTRClampedNumber(timeout, @(1), @(UINT16_MAX));
2867
2869
}
@@ -2901,7 +2903,7 @@ - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID
2901
2903
// [ attribute path, value, timedWriteTimeout, expectedValueID ]
2902
2904
//
2903
2905
// where expectedValueID is stored as NSNumber and NSNull represents nil timeouts
2904
- auto * writeData = @[ attributePath, [ value copy] , timeout ?: [NSNull null], @(expectedValueID) ];
2906
+ auto * writeData = @[ attributePath, value, timeout ?: [NSNull null], @(expectedValueID) ];
2905
2907
2906
2908
NSMutableArray<NSArray *> * writeRequests = [NSMutableArray arrayWithObject:writeData];
2907
2909
@@ -2958,24 +2960,24 @@ - (void)writeAttributeWithEndpointID:(NSNumber *)endpointID
2958
2960
}
2959
2961
2960
2962
[baseDevice
2961
- writeAttributeWithEndpointID :path.endpoint
2962
- clusterID:path.cluster
2963
- attributeID:path.attribute
2964
- value:request[MTRDeviceWriteRequestFieldValueIndex]
2965
- timedWriteTimeout:timedWriteTimeout
2966
- queue:self.queue
2967
- completion:^(NSArray<NSDictionary<NSString *, id> *> * _Nullable values, NSError * _Nullable error) {
2968
- if (error) {
2969
- MTR_LOG_ERROR("Write attribute work item [%llu] failed: %@", workItemID, error);
2970
- if (useValueAsExpectedValue) {
2971
- NSNumber * expectedValueID = request[MTRDeviceWriteRequestFieldExpectedValueIDIndex];
2972
- [self removeExpectedValueForAttributePath:attributePath expectedValueID:expectedValueID.unsignedLongLongValue];
2973
- }
2974
- }
2975
- completion(MTRAsyncWorkComplete);
2976
- }];
2963
+ _writeAttributeWithEndpointID :path.endpoint
2964
+ clusterID:path.cluster
2965
+ attributeID:path.attribute
2966
+ value:request[MTRDeviceWriteRequestFieldValueIndex]
2967
+ timedWriteTimeout:timedWriteTimeout
2968
+ queue:self.queue
2969
+ completion:^(NSArray<NSDictionary<NSString *, id> *> * _Nullable values, NSError * _Nullable error) {
2970
+ if (error) {
2971
+ MTR_LOG_ERROR("Write attribute work item [%llu] failed: %@", workItemID, error);
2972
+ if (useValueAsExpectedValue) {
2973
+ NSNumber * expectedValueID = request[MTRDeviceWriteRequestFieldExpectedValueIDIndex];
2974
+ [self removeExpectedValueForAttributePath:attributePath expectedValueID:expectedValueID.unsignedLongLongValue];
2975
+ }
2976
+ }
2977
+ completion(MTRAsyncWorkComplete);
2978
+ }];
2977
2979
}];
2978
- [_asyncWorkQueue enqueueWorkItem:workItem descriptionWithFormat:@"write %@ 0x%llx 0x%llx", endpointID, clusterID.unsignedLongLongValue, attributeID.unsignedLongLongValue];
2980
+ [_asyncWorkQueue enqueueWorkItem:workItem descriptionWithFormat:@"write %@ 0x%llx 0x%llx: %@ ", endpointID, clusterID.unsignedLongLongValue, attributeID.unsignedLongLongValue, value ];
2979
2981
}
2980
2982
2981
2983
- (NSArray<NSDictionary<NSString *, id> *> *)readAttributePaths:(NSArray<MTRAttributeRequestPath *> *)attributePaths
@@ -3070,6 +3072,7 @@ - (void)_invokeCommandWithEndpointID:(NSNumber *)endpointID
3070
3072
3071
3073
serverSideProcessingTimeout = [serverSideProcessingTimeout copy];
3072
3074
timeout = [timeout copy];
3075
+ commandFields = [commandFields copy];
3073
3076
3074
3077
if (timeout == nil && MTRCommandNeedsTimedInvoke(clusterID, commandID)) {
3075
3078
timeout = @(MTR_DEFAULT_TIMED_INTERACTION_TIMEOUT_MS);
@@ -3130,6 +3133,7 @@ - (void)_invokeCommandWithEndpointID:(NSNumber *)endpointID
3130
3133
commandFields:commandFields
3131
3134
timedInvokeTimeout:timedInvokeTimeout
3132
3135
serverSideProcessingTimeout:serverSideProcessingTimeout
3136
+ logCall:NO
3133
3137
queue:self.queue
3134
3138
completion:^(NSArray<NSDictionary<NSString *, id> *> * _Nullable values, NSError * _Nullable error) {
3135
3139
// Log the data at the INFO level (not usually persisted permanently),
@@ -3145,7 +3149,7 @@ - (void)_invokeCommandWithEndpointID:(NSNumber *)endpointID
3145
3149
workDone(values, error);
3146
3150
}];
3147
3151
}];
3148
- [_asyncWorkQueue enqueueWorkItem:workItem descriptionWithFormat:@"invoke %@ 0x%llx 0x%llx", endpointID, clusterID.unsignedLongLongValue, commandID.unsignedLongLongValue];
3152
+ [_asyncWorkQueue enqueueWorkItem:workItem descriptionWithFormat:@"invoke %@ 0x%llx 0x%llx: %@ ", endpointID, clusterID.unsignedLongLongValue, commandID.unsignedLongLongValue, commandFields ];
3149
3153
}
3150
3154
3151
3155
- (void)openCommissioningWindowWithSetupPasscode:(NSNumber *)setupPasscode
0 commit comments