/* * * Copyright (c) 2022 Project CHIP Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #import typedef NS_ENUM(uint8_t, UserConsentState) { OTAProviderUserGranted = 0x00, OTAProviderUserObtaining = 0x01, OTAProviderUserDenied = 0x02, OTAProviderUserUnknown = 0x03, }; @interface DeviceSoftwareVersionModelData : MTROTASoftwareUpdateProviderClusterQueryImageParams @property BOOL softwareVersionValid; @property (strong, nonatomic, nullable) NSNumber * cDVersionNumber; @property (strong, nonatomic, nullable) NSNumber * minApplicableSoftwareVersion; @property (strong, nonatomic, nullable) NSNumber * maxApplicableSoftwareVersion; @property (strong, nonatomic, nullable) NSString * otaURL; @end @interface DeviceSoftwareVersionModel : MTROTASoftwareUpdateProviderClusterQueryImageResponseParams @property (strong, nonatomic, nullable) DeviceSoftwareVersionModelData * deviceModelData; - (NSComparisonResult)CompareSoftwareVersions:(DeviceSoftwareVersionModel * _Nullable)otherObject; @end @interface OTAProviderDelegate : NSObject - (void)handleQueryImageForNodeID:(NSNumber * _Nonnull)nodeID controller:(MTRDeviceController * _Nonnull)controller params:(MTROTASoftwareUpdateProviderClusterQueryImageParams * _Nonnull)params completion:(void (^_Nonnull)(MTROTASoftwareUpdateProviderClusterQueryImageResponseParams * _Nullable data, NSError * _Nullable error))completion; - (void)handleApplyUpdateRequestForNodeID:(NSNumber * _Nonnull)nodeID controller:(MTRDeviceController * _Nonnull)controller params:(MTROTASoftwareUpdateProviderClusterApplyUpdateRequestParams * _Nonnull)params completion: (void (^_Nonnull)(MTROTASoftwareUpdateProviderClusterApplyUpdateResponseParams * _Nullable data, NSError * _Nullable error))completion; - (void)handleNotifyUpdateAppliedForNodeID:(NSNumber * _Nonnull)nodeID controller:(MTRDeviceController * _Nonnull)controller params:(MTROTASoftwareUpdateProviderClusterNotifyUpdateAppliedParams * _Nonnull)params completion:(MTRStatusCompletion _Nonnull)completion; @property (strong, nonatomic, nullable) NSArray * candidates; @property (strong, nonatomic, nullable) DeviceSoftwareVersionModel * selectedCandidate; @property (strong, nonatomic, nullable) NSNumber * nodeID; @property (nonatomic, readwrite) MTROTASoftwareUpdateProviderOTAQueryStatus queryImageStatus; @property (nonatomic, readwrite) UserConsentState userConsentState; @property (nonatomic, readwrite) MTROTASoftwareUpdateProviderOTAApplyUpdateAction action; @property (nonatomic, readwrite, nullable) NSNumber * delayedActionTime; @property (nonatomic, readwrite, nullable) NSNumber * timedInvokeTimeoutMs; @property (nonatomic, readwrite, nullable) NSNumber * userConsentNeeded; @end