Skip to content

Commit 320d6f1

Browse files
Initialize MTRDevice_XPC and MTRDevice_Concrete with the corresponding controller types.
Removes the unreached/unused initWithNodeID:controller: on MTRDevice. unitTestSetMostRecentReportTimes is only used on MTRDevice_Concrete instances, and is already implemented there, so can be removed from MTRDevice.
1 parent 6f93ec2 commit 320d6f1

6 files changed

+10
-64
lines changed

src/darwin/Framework/CHIP/MTRDevice.mm

-59
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,6 @@ @implementation MTRDevice {
280280
// _allNetworkFeatures is a bitwise or of the feature maps of all network commissioning clusters
281281
// present on the device, or nil if there aren't any.
282282
NSNumber * _Nullable _allNetworkFeatures;
283-
// Most recent entry in _mostRecentReportTimes, if any.
284-
NSDate * _Nullable _mostRecentReportTimeForDescription;
285283
}
286284

287285
- (instancetype)initForSubclassesWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller
@@ -297,44 +295,6 @@ - (instancetype)initForSubclassesWithNodeID:(NSNumber *)nodeID controller:(MTRDe
297295
return self;
298296
}
299297

300-
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller
301-
{
302-
if (self = [super init]) {
303-
_lock = OS_UNFAIR_LOCK_INIT;
304-
_descriptionLock = OS_UNFAIR_LOCK_INIT;
305-
_nodeID = [nodeID copy];
306-
_fabricIndex = controller.fabricIndex;
307-
_deviceController = controller;
308-
_queue
309-
= dispatch_queue_create("org.csa-iot.matter.framework.device.workqueue", DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL);
310-
_asyncWorkQueue = [[MTRAsyncWorkQueue alloc] initWithContext:self];
311-
_state = MTRDeviceStateUnknown;
312-
if (controller.controllerDataStore) {
313-
_persistedClusterData = [[NSCache alloc] init];
314-
} else {
315-
_persistedClusterData = nil;
316-
}
317-
_clusterDataToPersist = nil;
318-
_persistedClusters = [NSMutableSet set];
319-
320-
// If there is a data store, make sure we have an observer to monitor system clock changes, so
321-
// NSDate-based write coalescing could be reset and not get into a bad state.
322-
if (_persistedClusterData) {
323-
mtr_weakify(self);
324-
_systemTimeChangeObserverToken = [[NSNotificationCenter defaultCenter] addObserverForName:NSSystemClockDidChangeNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull notification) {
325-
mtr_strongify(self);
326-
std::lock_guard lock(self->_lock);
327-
[self _resetStorageBehaviorState];
328-
}];
329-
}
330-
331-
_delegates = [NSMutableSet set];
332-
333-
MTR_LOG_DEBUG("%@ init with hex nodeID 0x%016llX", self, _nodeID.unsignedLongLongValue);
334-
}
335-
return self;
336-
}
337-
338298
- (void)dealloc
339299
{
340300
[[NSNotificationCenter defaultCenter] removeObserver:_systemTimeChangeObserverToken];
@@ -727,16 +687,6 @@ - (void)_persistClusterDataAsNeeded
727687
_clusterDataPersistenceFirstScheduledTime = nil;
728688
}
729689

730-
#ifdef DEBUG
731-
- (void)unitTestSetMostRecentReportTimes:(NSMutableArray<NSDate *> *)mostRecentReportTimes
732-
{
733-
_mostRecentReportTimes = mostRecentReportTimes;
734-
735-
std::lock_guard lock(_descriptionLock);
736-
_mostRecentReportTimeForDescription = [mostRecentReportTimes lastObject];
737-
}
738-
#endif
739-
740690
- (void)_scheduleClusterDataPersistence
741691
{
742692
os_unfair_lock_assert_owner(&self->_lock);
@@ -788,11 +738,6 @@ - (void)_scheduleClusterDataPersistence
788738
}
789739
[_mostRecentReportTimes addObject:[NSDate now]];
790740

791-
{
792-
std::lock_guard lock(_descriptionLock);
793-
_mostRecentReportTimeForDescription = [_mostRecentReportTimes lastObject];
794-
}
795-
796741
// Calculate running average and update multiplier - need at least 2 items to calculate intervals
797742
if (_mostRecentReportTimes.count > 2) {
798743
NSTimeInterval cumulativeIntervals = 0;
@@ -858,10 +803,6 @@ - (void)_resetStorageBehaviorState
858803

859804
_clusterDataPersistenceFirstScheduledTime = nil;
860805
_mostRecentReportTimes = nil;
861-
{
862-
std::lock_guard lock(_descriptionLock);
863-
_mostRecentReportTimeForDescription = nil;
864-
}
865806
_deviceReportingExcessivelyStartTime = nil;
866807
_reportToPersistenceDelayCurrentMultiplier = 1;
867808

src/darwin/Framework/CHIP/MTRDevice_Concrete.h

+4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818
#import <Foundation/Foundation.h>
1919
#import <Matter/MTRDevice.h>
2020

21+
#import "MTRDeviceController_Concrete.h"
22+
2123
NS_ASSUME_NONNULL_BEGIN
2224

2325
@interface MTRDevice_Concrete : MTRDevice
2426

27+
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController_Concrete *)controller;
28+
2529
@end
2630

2731
NS_ASSUME_NONNULL_END

src/darwin/Framework/CHIP/MTRDevice_Concrete.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ @implementation MTRDevice_Concrete {
361361
//@synthesize lock = _lock;
362362
//@synthesize persistedClusterData = _persistedClusterData;
363363

364-
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller
364+
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController_Concrete *)controller
365365
{
366366
// `super` was NSObject, is now MTRDevice. MTRDevice hides its `init`
367367
if (self = [super initForSubclassesWithNodeID:nodeID controller:controller]) {

src/darwin/Framework/CHIP/MTRDevice_Internal.h

-1
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ MTR_DIRECT_MEMBERS
123123
}
124124

125125
- (instancetype)initForSubclassesWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller;
126-
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller;
127126

128127
// called by controller to clean up and shutdown
129128
- (void)invalidate;

src/darwin/Framework/CHIP/MTRDevice_XPC.h

+4
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@
1717

1818
#import <Matter/Matter.h>
1919

20+
#import "MTRDeviceController_XPC.h"
21+
2022
NS_ASSUME_NONNULL_BEGIN
2123

2224
@interface MTRDevice_XPC : MTRDevice <MTRXPCClientProtocol_MTRDevice>
2325

26+
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController_XPC *)controller;
27+
2428
@end
2529

2630
NS_ASSUME_NONNULL_END

src/darwin/Framework/CHIP/MTRDevice_XPC.mm

+1-3
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,8 @@ @implementation MTRDevice_XPC
8484

8585
@synthesize _internalState;
8686

87-
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController *)controller
87+
- (instancetype)initWithNodeID:(NSNumber *)nodeID controller:(MTRDeviceController_XPC *)controller
8888
{
89-
// TODO: Verify that this is a valid MTRDeviceController_XPC?
90-
9189
if (self = [super initForSubclassesWithNodeID:nodeID controller:controller]) {
9290
// Nothing else to do, all set.
9391
}

0 commit comments

Comments
 (0)