-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Expand file tree
/
Copy pathConnectivityManagerImpl_NetworkManagementBasis.h
More file actions
132 lines (121 loc) · 4.01 KB
/
ConnectivityManagerImpl_NetworkManagementBasis.h
File metadata and controls
132 lines (121 loc) · 4.01 KB
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
/*
*
* Copyright (c) 2026 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
#include <lib/core/CHIPError.h>
namespace chip {
namespace DeviceLayer {
namespace Internal {
// Forward Declarations
class NetworkManagementDelegate;
/**
* @brief
* A lightweight base class providing delegate wiring for Linux
* Connectivity Manager network management implementations.
*
* This serves as a common base for concrete Linux Connectivity
* Manager network management backends (for example, Connection
* Manager- (also known as, connman) or wpa_supplicant-based
* management).
*
* The class provides:
*
* * Storage and management of an optional network management
* delegate.
* * A protected action-delegation helper for reporting Wi-Fi
* medium availability changes to the delegate.
*
* This base does not define the full network management
* control-plane API. Instead, it provides a small amount of shared
* "glue" used to coordinate cross-cutting concerns between the
* network management backend and the owning platform Connectivity
* Manager implementation (which may also be coordinating the Wi-Fi
* NAN USD / PAF commissioning transport).
*
* @note
* The delegate is not owned by this class. Callers must ensure the
* delegate remains valid for as long as it is set.
*
* @note
* This type is intended to be used as a mix-in base alongside a
* concrete network management interface implementation.
*
*/
class NetworkManagementBasis
{
public:
virtual ~NetworkManagementBasis() = default;
/**
* @brief
* Perform explicit class initialization.
*
* Initializes internal state used by the base class, including
* clearing any previously-set delegate.
*
* Concrete derived classes should invoke this during their own
* initialization (typically before establishing subscriptions or
* starting external network management services).
*
* @returns
* #CHIP_NO_ERROR on success; otherwise @c
* !::chip::ChipError::IsSuccess.
*
*/
CHIP_ERROR Init() noexcept;
/**
* @brief
* Set the delegate to receive coordination callbacks.
*
* Sets (or clears) the network management delegate that will be
* notified of relevant state changes observed by the network
* management backend.
*
* @note
* The delegate is not owned by this object.
*
* @param[in] inNetworkManagementDelegate
* A pointer to the delegate to set, or null to clear the
* delegate.
*
* @sa OnWiFiMediumAvailable
*
*/
void SetDelegate(NetworkManagementDelegate * inNetworkManagementDelegate) noexcept;
protected:
/**
* @brief
* Notify the delegate of Wi-Fi medium availability changes.
*
* Derived classes should invoke this helper when the underlying
* Wi-Fi control plane indicates that the Wi-Fi medium (radio /
* interface resources) has become available or unavailable.
*
* If a delegate is set, this forwards the notification to
* NetworkManagementDelegate::OnWiFiMediumAvailable.
*
* @param[in] inAvailable
* A Boolean indicating whether the Wi-Fi medium is available.
*
* @sa SetDelegate
*
*/
void OnWiFiMediumAvailable(bool inAvailable) noexcept;
private:
NetworkManagementDelegate * mDelegate;
};
} // namespace Internal
} // namespace DeviceLayer
} // namespace chip