forked from nrfconnect/sdk-connectedhomeip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDevicePairingDelegate.h
154 lines (136 loc) · 5.59 KB
/
DevicePairingDelegate.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
* Copyright (c) 2021 Project CHIP Authors
* All rights reserved.
*
* 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
#include <app-common/zap-generated/cluster-objects.h>
#include <controller/CommissioningDelegate.h>
#include <lib/core/CHIPError.h>
#include <lib/core/NodeId.h>
#include <lib/support/DLLUtil.h>
#include <stdint.h>
namespace chip {
namespace Controller {
/**
* A delegate that can be notified of progress as a "pairing" (which might mean
* "PASE session establishment" or "commissioning") proceeds.
*/
class DLL_EXPORT DevicePairingDelegate
{
public:
virtual ~DevicePairingDelegate() {}
enum Status : uint8_t
{
SecurePairingSuccess = 0,
SecurePairingFailed,
};
/**
* @brief
* Called when the pairing reaches a certain stage.
*
* @param status Current status of pairing
*/
virtual void OnStatusUpdate(DevicePairingDelegate::Status status) {}
/**
* @brief
* Called when PASE session establishment is complete (with success or error)
*
* @param error Error cause, if any
*/
virtual void OnPairingComplete(CHIP_ERROR error) {}
/**
* @brief
* Called when the pairing is deleted (with success or error)
*
* @param error Error cause, if any
*/
virtual void OnPairingDeleted(CHIP_ERROR error) {}
/**
* Called when the commissioning process is complete (with success or error)
*/
virtual void OnCommissioningComplete(NodeId deviceId, CHIP_ERROR error) {}
virtual void OnCommissioningSuccess(PeerId peerId) {}
virtual void OnCommissioningFailure(PeerId peerId, CHIP_ERROR error, CommissioningStage stageFailed,
Optional<Credentials::AttestationVerificationResult> additionalErrorInfo)
{}
virtual void OnCommissioningStatusUpdate(PeerId peerId, CommissioningStage stageCompleted, CHIP_ERROR error) {}
/**
* @brief
* Called with the ReadCommissioningInfo returned from the target
*/
virtual void OnReadCommissioningInfo(const ReadCommissioningInfo & info) {}
/**
* @brief
* Called when MatchingFabricInfo returned from target
*/
virtual void OnFabricCheck(NodeId matchingNodeId) {}
/**
* @brief
* Called with the NetworkScanResponse returned from the target.
*
* The DeviceCommissioner will be waiting in the kNeedsNetworkCreds step and not advancing the commissioning process.
*
* The implementation should set the network credentials on the CommissioningParameters of the CommissioningDelegate
* using CommissioningDelegate.SetCommissioningParameters(), and then call DeviceCommissioner.NetworkCredentialsReady()
* in order to resume the commissioning process.
*/
virtual void
OnScanNetworksSuccess(const app::Clusters::NetworkCommissioning::Commands::ScanNetworksResponse::DecodableType & dataResponse)
{}
/**
* @brief
* Called when the NetworkScan request fails.
*
* The DeviceCommissioner will be waiting in the kNeedsNetworkCreds step and not advancing the commissioning process.
*
* The implementation should set the network credentials on the CommissioningParameters of the CommissioningDelegate
* using CommissioningDelegate.SetCommissioningParameters(), and then call DeviceCommissioner.NetworkCredentialsReady()
* in order to resume the commissioning process.
*/
virtual void OnScanNetworksFailure(CHIP_ERROR error) {}
/**
* @brief
* Called when the ICD registration information (ICD symmetric key, check-in node ID and monitored subject) is required.
*
* The DeviceCommissioner will be waiting in the kICDGetRegistrationInfo step and not advancing the commissioning process.
*
* The implementation should set the ICD registration info on the CommissioningParameters of the CommissioningDelegate
* using CommissioningDelegate.SetCommissioningParameters(), and then call DeviceCommissioner.ICDRegistrationInfoReady()
* in order to resume the commissioning process.
*
* Not called if the ICD registration info is provided up front.
*/
virtual void OnICDRegistrationInfoRequired() {}
/**
* @brief
* Called when the registration flow for the ICD completes.
*
* @param[in] icdNodeId The node id of the ICD.
* @param[in] icdCounter The ICD Counter received from the device.
*/
virtual void OnICDRegistrationComplete(NodeId icdNodeId, uint32_t icdCounter) {}
/**
* @brief
* Called upon completion of the LIT ICD commissioning flow, when ICDStayActiveDuration is set
* and the corresponding stayActive command response is received
*
* @param[in] icdNodeId The node id of the ICD.
* @param[in] promisedActiveDurationMsec The actual duration that the ICD server can stay active
* from the time it receives the StayActiveRequest command.
*/
virtual void OnICDStayActiveComplete(NodeId icdNodeId, uint32_t promisedActiveDurationMsec) {}
};
} // namespace Controller
} // namespace chip