Skip to content

Commit 1151388

Browse files
bzbarsky-applepull[bot]
authored andcommitted
Apply API review fixes for MTROTAHeaderParser. (#23479)
This is a re-landing of PR #22611 but with changes made for backwards compat. * Move the parsing method to MTROTAHeader. * Rename the file to MTROTAHeader.h * Add documentation.
1 parent 5c60091 commit 1151388

File tree

5 files changed

+33
-17
lines changed

5 files changed

+33
-17
lines changed

examples/darwin-framework-tool/commands/provider/OTASoftwareUpdateInteractive.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
}
4040

4141
NSError * error;
42-
return [MTROTAHeaderParser headerFromData:[NSData dataWithBytes:buffer.data() length:buffer.size()] error:&error];
42+
return [MTROTAHeader headerFromData:[NSData dataWithBytes:buffer.data() length:buffer.size()] error:&error];
4343
}
4444

4545
// Parses the JSON filepath and extracts DeviceSoftwareVersionModel parameters

src/darwin/Framework/CHIP/MTROTAHeaderParser.h renamed to src/darwin/Framework/CHIP/MTROTAHeader.h

+7-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717

1818
#import <Foundation/Foundation.h>
1919

20+
/**
21+
* A representation of an OTA image header as defined in the Matter
22+
* specification's "Over-the-Air (OTA) Software Update File Format" section.
23+
*/
24+
2025
NS_ASSUME_NONNULL_BEGIN
2126

2227
typedef NS_ENUM(NSUInteger, MTROTAImageDigestType) {
@@ -39,7 +44,6 @@ typedef NS_ENUM(NSUInteger, MTROTAImageDigestType) {
3944
/**
4045
* The identifier of the vendor whose product this image is meant for.
4146
*
42-
*
4347
* This field can be compared to the vendor id received in the Query Image
4448
* command to determine whether an image matches.
4549
*
@@ -101,8 +105,10 @@ typedef NS_ENUM(NSUInteger, MTROTAImageDigestType) {
101105
*/
102106
@property (nonatomic, copy, nullable) NSNumber * maxApplicableVersion;
103107

108+
+ (nullable MTROTAHeader *)headerFromData:(NSData *)data error:(NSError * __autoreleasing *)error MTR_NEWLY_AVAILABLE;
104109
@end
105110

111+
MTR_NEWLY_DEPRECATED("Please use [MTROTAHeader headerFromData]")
106112
@interface MTROTAHeaderParser : NSObject
107113
+ (nullable MTROTAHeader *)headerFromData:(NSData *)data error:(NSError * __autoreleasing *)error;
108114
@end

src/darwin/Framework/CHIP/MTROTAHeaderParser.mm renamed to src/darwin/Framework/CHIP/MTROTAHeader.mm

+16-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
#import "MTROTAHeaderParser.h"
18+
#import "MTROTAHeader.h"
1919

2020
#import "MTRError.h"
2121
#import "MTRError_Internal.h"
@@ -25,25 +25,26 @@
2525
#include <lib/core/OTAImageHeader.h>
2626

2727
@implementation MTROTAHeader
28-
@end
29-
30-
@implementation MTROTAHeaderParser
3128
+ (nullable MTROTAHeader *)headerFromData:(NSData *)data error:(NSError * __autoreleasing *)error
3229
{
3330
chip::OTAImageHeaderParser parser;
3431

3532
parser.Init();
3633

3734
if (!parser.IsInitialized()) {
38-
*error = [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil];
35+
if (error != nil) {
36+
*error = [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeGeneralError userInfo:nil];
37+
}
3938
return nil;
4039
}
4140

4241
chip::ByteSpan buffer = AsByteSpan(data);
4342
chip::OTAImageHeader header;
4443
CHIP_ERROR err = parser.AccumulateAndDecode(buffer, header);
4544
if (err != CHIP_NO_ERROR) {
46-
*error = [MTRError errorForCHIPErrorCode:err];
45+
if (error != nil) {
46+
*error = [MTRError errorForCHIPErrorCode:err];
47+
}
4748
parser.Clear();
4849
return nil;
4950
}
@@ -70,3 +71,12 @@ + (nullable MTROTAHeader *)headerFromData:(NSData *)data error:(NSError * __auto
7071
return headerObj;
7172
}
7273
@end
74+
75+
@implementation MTROTAHeaderParser
76+
77+
+ (nullable MTROTAHeader *)headerFromData:(NSData *)data error:(NSError * __autoreleasing *)error
78+
{
79+
return [MTROTAHeader headerFromData:data error:error];
80+
}
81+
82+
@end

src/darwin/Framework/CHIP/Matter.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
#import <Matter/MTRKeypair.h>
4949
#import <Matter/MTRManualSetupPayloadParser.h>
5050
#import <Matter/MTRNOCChainIssuer.h>
51-
#import <Matter/MTROTAHeaderParser.h>
51+
#import <Matter/MTROTAHeader.h>
5252
#import <Matter/MTROTAProviderDelegate.h>
5353
#import <Matter/MTROnboardingPayloadParser.h>
5454
#import <Matter/MTRPersistentStorageDelegate.h>

src/darwin/Framework/Matter.xcodeproj/project.pbxproj

+8-8
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
1ED276E026C57CF000547A89 /* MTRCallbackBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ED276DF26C57CF000547A89 /* MTRCallbackBridge.mm */; };
1616
1ED276E226C5812A00547A89 /* MTRCluster.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1ED276E126C5812A00547A89 /* MTRCluster.mm */; };
1717
1ED276E426C5832500547A89 /* MTRCluster.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ED276E326C5832500547A89 /* MTRCluster.h */; settings = {ATTRIBUTES = (Public, ); }; };
18-
1EDCE545289049A100E41EC9 /* MTROTAHeaderParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EDCE543289049A100E41EC9 /* MTROTAHeaderParser.h */; settings = {ATTRIBUTES = (Public, ); }; };
19-
1EDCE546289049A100E41EC9 /* MTROTAHeaderParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1EDCE544289049A100E41EC9 /* MTROTAHeaderParser.mm */; };
18+
1EDCE545289049A100E41EC9 /* MTROTAHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EDCE543289049A100E41EC9 /* MTROTAHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
19+
1EDCE546289049A100E41EC9 /* MTROTAHeader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1EDCE544289049A100E41EC9 /* MTROTAHeader.mm */; };
2020
27A53C1727FBC6920053F131 /* MTRAttestationTrustStoreBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 27A53C1527FBC6920053F131 /* MTRAttestationTrustStoreBridge.h */; };
2121
27A53C1827FBC6920053F131 /* MTRAttestationTrustStoreBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27A53C1627FBC6920053F131 /* MTRAttestationTrustStoreBridge.mm */; };
2222
2C1B027A2641DB4E00780EF1 /* MTROperationalCredentialsDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C1B02782641DB4E00780EF1 /* MTROperationalCredentialsDelegate.mm */; };
@@ -155,8 +155,8 @@
155155
1ED276DF26C57CF000547A89 /* MTRCallbackBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MTRCallbackBridge.mm; path = "zap-generated/MTRCallbackBridge.mm"; sourceTree = "<group>"; };
156156
1ED276E126C5812A00547A89 /* MTRCluster.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRCluster.mm; sourceTree = "<group>"; };
157157
1ED276E326C5832500547A89 /* MTRCluster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRCluster.h; sourceTree = "<group>"; };
158-
1EDCE543289049A100E41EC9 /* MTROTAHeaderParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTROTAHeaderParser.h; sourceTree = "<group>"; };
159-
1EDCE544289049A100E41EC9 /* MTROTAHeaderParser.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTROTAHeaderParser.mm; sourceTree = "<group>"; };
158+
1EDCE543289049A100E41EC9 /* MTROTAHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTROTAHeader.h; sourceTree = "<group>"; };
159+
1EDCE544289049A100E41EC9 /* MTROTAHeader.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTROTAHeader.mm; sourceTree = "<group>"; };
160160
27A53C1527FBC6920053F131 /* MTRAttestationTrustStoreBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MTRAttestationTrustStoreBridge.h; sourceTree = "<group>"; };
161161
27A53C1627FBC6920053F131 /* MTRAttestationTrustStoreBridge.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTRAttestationTrustStoreBridge.mm; sourceTree = "<group>"; };
162162
2C1B02782641DB4E00780EF1 /* MTROperationalCredentialsDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MTROperationalCredentialsDelegate.mm; sourceTree = "<group>"; };
@@ -357,8 +357,8 @@
357357
B202528F2459E34F00F97062 /* CHIP */ = {
358358
isa = PBXGroup;
359359
children = (
360-
1EDCE543289049A100E41EC9 /* MTROTAHeaderParser.h */,
361-
1EDCE544289049A100E41EC9 /* MTROTAHeaderParser.mm */,
360+
1EDCE543289049A100E41EC9 /* MTROTAHeader.h */,
361+
1EDCE544289049A100E41EC9 /* MTROTAHeader.mm */,
362362
27A53C1527FBC6920053F131 /* MTRAttestationTrustStoreBridge.h */,
363363
27A53C1627FBC6920053F131 /* MTRAttestationTrustStoreBridge.mm */,
364364
88EBF8CB27FABDD500686BC1 /* MTRDeviceAttestationDelegate.h */,
@@ -559,7 +559,7 @@
559559
7596A84828762783004DAE0E /* MTRAsyncCallbackWorkQueue.h in Headers */,
560560
5A7947E527C0129F00434CF2 /* MTRDeviceController+XPC.h in Headers */,
561561
B2E0D7B4245B0B5C003C5B48 /* MTRError_Internal.h in Headers */,
562-
1EDCE545289049A100E41EC9 /* MTROTAHeaderParser.h in Headers */,
562+
1EDCE545289049A100E41EC9 /* MTROTAHeader.h in Headers */,
563563
);
564564
runOnlyForDeploymentPostprocessing = 0;
565565
};
@@ -702,7 +702,7 @@
702702
3CF134A9289D8D800017A19E /* MTRCSRInfo.m in Sources */,
703703
991DC0892475F47D00C13860 /* MTRDeviceController.mm in Sources */,
704704
B2E0D7B7245B0B5C003C5B48 /* MTRQRCodeSetupPayloadParser.mm in Sources */,
705-
1EDCE546289049A100E41EC9 /* MTROTAHeaderParser.mm in Sources */,
705+
1EDCE546289049A100E41EC9 /* MTROTAHeader.mm in Sources */,
706706
1EC4CE5D25CC26E900D7304F /* MTRBaseClusters.mm in Sources */,
707707
51E0310127EA20D20083DC9C /* MTRControllerAccessControl.mm in Sources */,
708708
1ED276E226C5812A00547A89 /* MTRCluster.mm in Sources */,

0 commit comments

Comments
 (0)