1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef BUS_CENTER_EVENT_H
17 #define BUS_CENTER_EVENT_H
18 
19 #include <stdbool.h>
20 #include <stdint.h>
21 
22 #include "softbus_bus_center.h"
23 #include "bus_center_info_key.h"
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 typedef enum {
30     /* event from system monitor */
31     LNN_EVENT_IP_ADDR_CHANGED,
32     LNN_EVENT_WIFI_STATE_CHANGED,
33     LNN_EVENT_BT_STATE_CHANGED,
34     LNN_EVENT_BT_ACL_STATE_CHANGED,
35     LNN_EVENT_WLAN_PARAM,
36     LNN_EVENT_SCREEN_STATE_CHANGED,
37     LNN_EVENT_SCREEN_LOCK_CHANGED,
38     LNN_EVENT_ACCOUNT_CHANGED,
39     LNN_EVENT_DIF_ACCOUNT_DEV_CHANGED,
40     LNN_EVENT_USER_STATE_CHANGED,
41     LNN_EVENT_NIGHT_MODE_CHANGED,
42     LNN_EVENT_OOBE_STATE_CHANGED,
43     LNN_EVENT_HOME_GROUP_CHANGED,
44     LNN_EVENT_USER_SWITCHED,
45     /* event from internal lnn */
46     LNN_EVENT_NODE_ONLINE_STATE_CHANGED,
47     LNN_EVENT_NODE_MIGRATE,
48     LNN_EVENT_RELATION_CHANGED,
49     LNN_EVENT_NODE_MASTER_STATE_CHANGED,
50     LNN_EVENT_NODE_ADDR_CHANGED,
51     LNN_EVENT_NETWORK_STATE_CHANGED,
52     LNN_EVENT_SINGLE_NETWORK_OFFLINE,
53     LNN_EVENT_NODE_HB_REPEAT_CYCLE,
54     LNN_EVENT_NETWORKID_CHANGED,
55     LNN_EVENT_LP_EVENT_REPORT,
56     LNN_EVENT_LANE_VAP_CHANGE,
57     LNN_EVENT_TYPE_MAX,
58 } LnnEventType;
59 
60 typedef struct {
61     LnnEventType event;
62 } LnnEventBasicInfo;
63 
64 typedef struct {
65     LnnEventBasicInfo basic;
66     char ifName[NET_IF_NAME_LEN];
67 } LnnMonitorAddressChangedEvent;
68 
69 typedef enum {
70     SOFTBUS_WIFI_CONNECTED,
71     SOFTBUS_WIFI_DISCONNECTED,
72     SOFTBUS_WIFI_DISABLING,
73     SOFTBUS_WIFI_DISABLED,
74     SOFTBUS_WIFI_ENABLING,
75     SOFTBUS_WIFI_ENABLED,
76     SOFTBUS_AP_DISABLED,
77     SOFTBUS_AP_ENABLED,
78     SOFTBUS_WIFI_OBTAINING_IPADDR,
79     SOFTBUS_WIFI_SEMI_ACTIVE,
80     SOFTBUS_WIFI_UNKNOWN,
81 } SoftBusWifiState;
82 
83 typedef enum {
84     SOFTBUS_SCREEN_ON,
85     SOFTBUS_SCREEN_OFF,
86     SOFTBUS_SCREEN_UNKNOWN,
87 } SoftBusScreenState;
88 
89 typedef enum {
90     SOFTBUS_BLE_TURN_ON,
91     SOFTBUS_BLE_TURN_OFF,
92     SOFTBUS_BR_TURN_ON,
93     SOFTBUS_BR_TURN_OFF,
94     SOFTBUS_BT_UNKNOWN,
95 } SoftBusBtState;
96 
97 typedef enum {
98     SOFTBUS_SCREEN_LOCK,
99     SOFTBUS_USER_UNLOCK,
100     SOFTBUS_SCREEN_UNLOCK,
101     SOFTBUS_SCREEN_LOCK_UNKNOWN,
102 } SoftBusScreenLockState;
103 
104 typedef enum {
105     SOFTBUS_ACCOUNT_LOG_IN,
106     SOFTBUS_ACCOUNT_LOG_OUT,
107     SOFTBUS_ACCOUNT_UNKNOWN,
108 } SoftBusAccountState;
109 
110 typedef enum {
111     SOFTBUS_USER_SWITCHED,
112     SOFTBUS_USER_SWITCH_UNKNOWN,
113 } SoftBusUserSwitchState;
114 
115 typedef enum {
116     SOFTBUS_DIF_ACCOUNT_DEV_CHANGE,
117     SOFTBUS_DIF_ACCOUNT_UNKNOWN,
118 } SoftBusDifferentAccountState;
119 
120 typedef enum {
121     SOFTBUS_USER_FOREGROUND,
122     SOFTBUS_USER_BACKGROUND,
123     SOFTBUS_USER_UNKNOWN,
124 } SoftBusUserState;
125 
126 typedef enum {
127     SOFTBUS_NIGHT_MODE_ON,
128     SOFTBUS_NIGHT_MODE_OFF,
129     SOFTBUS_NIGHT_MODE_UNKNOWN,
130 } SoftBusNightModeState;
131 
132 typedef enum {
133     SOFTBUS_OOBE_RUNNING,
134     SOFTBUS_OOBE_END,
135     SOFTBUS_FACK_OOBE_END,
136     SOFTBUS_OOBE_UNKNOWN,
137 } SoftBusOOBEState;
138 
139 typedef enum {
140     SOFTBUS_HOME_GROUP_CHANGE = 0X1,
141     SOFTBUS_HOME_GROUP_JOIN,
142     SOFTBUS_HOME_GROUP_LEAVE,
143     SOFTBUS_HOME_GROUP_UNKNOWN,
144 } SoftBusHomeGroupState;
145 
146 typedef enum {
147     SOFTBUS_BR_ACL_CONNECTED,
148     SOFTBUS_BR_ACL_DISCONNECTED,
149 } SoftBusBtAclState;
150 
151 typedef enum {
152     SOFTBUS_WIFI_NETWORKD_ENABLE,
153     SOFTBUS_WIFI_NETWORKD_DISABLE,
154     SOFTBUS_BLE_NETWORKD_ENABLE,
155     SOFTBUS_BLE_NETWORKD_DISABLE,
156     SOFTBUS_NETWORKD_UNKNOWN,
157 } SoftBusNetworkState;
158 
159 typedef enum {
160     SOFTBUS_MSDP_MOVEMENT_AND_STATIONARY,
161     SOFTBUS_LP_EVENT_UNKNOWN,
162 } SoftBusLpEventType;
163 
164 typedef struct {
165     LnnEventBasicInfo basic;
166     uint8_t status;
167 } LnnMonitorWlanStateChangedEvent;
168 
169 typedef struct {
170     LnnEventBasicInfo basic;
171     uint8_t status;
172 } LnnMonitorScreenStateChangedEvent;
173 
174 typedef struct {
175     LnnEventBasicInfo basic;
176     uint8_t status;
177 } LnnMonitorHbStateChangedEvent;
178 
179 typedef struct {
180     LnnEventBasicInfo basic;
181     uint8_t status;
182     char btMac[BT_MAC_LEN];
183 } LnnMonitorBtAclStateChangedEvent;
184 
185 typedef struct {
186     LnnEventBasicInfo basic;
187     bool isOnline;
188     const char *networkId;
189     const char *uuid;
190     const char *udid;
191 } LnnOnlineStateEventInfo;
192 
193 typedef struct {
194     LnnEventBasicInfo basic;
195     ConnectionAddrType type;
196     uint8_t relation;
197     bool isJoin;
198     const char *udid;
199 } LnnRelationChanedEventInfo;
200 
201 typedef struct {
202     LnnEventBasicInfo basic;
203     const char* masterNodeUDID;
204     int32_t weight;
205     bool isMasterNode;
206 } LnnMasterNodeChangedEvent;
207 
208 typedef struct {
209     LnnEventBasicInfo basic;
210     char addr[SHORT_ADDRESS_MAX_LEN];
211     char networkId[NETWORK_ID_BUF_LEN];
212     bool delFlag;
213     bool isLocal;
214 } LnnNodeAddrChangedEvent;
215 
216 typedef struct {
217     LnnEventBasicInfo basic;
218     ConnectionAddrType type;
219     const char *networkId;
220     const char *uuid;
221     const char *udid;
222 } LnnSingleNetworkOffLineEvent;
223 
224 typedef struct {
225     LnnEventBasicInfo basic;
226     char networkId[NETWORK_ID_BUF_LEN];
227 } LnnNetworkIdChangedEvent;
228 
229 typedef struct {
230     LnnEventBasicInfo basic;
231     SoftBusLpEventType type;
232 } LnnLpReportEvent;
233 
234 typedef struct {
235     LnnEventBasicInfo basic;
236     int32_t vapPreferChannel;
237 } LnnLaneVapChangeEvent;
238 
239 typedef void (*LnnEventHandler)(const LnnEventBasicInfo *info);
240 
241 int32_t LnnInitBusCenterEvent(void);
242 void LnnDeinitBusCenterEvent(void);
243 
244 int32_t LnnRegisterEventHandler(LnnEventType event, LnnEventHandler handler);
245 void LnnUnregisterEventHandler(LnnEventType event, LnnEventHandler handler);
246 
247 void LnnNotifyJoinResult(ConnectionAddr *addr,
248     const char *networkId, int32_t retCode);
249 void LnnNotifyLeaveResult(const char *networkId, int32_t retCode);
250 
251 void LnnNotifyOnlineState(bool isOnline, NodeBasicInfo *info);
252 void LnnNotifyBasicInfoChanged(NodeBasicInfo *info, NodeBasicInfoType type);
253 void LnnNotifyNodeStatusChanged(NodeStatus *info, NodeStatusType type);
254 void LnnNotifyLocalNetworkIdChanged(void);
255 void LnnNotifyDeviceNotTrusted(const char *msg);
256 void LnnNotifyHichainProofException(
257     const char *proofInfo, uint32_t proofLen, uint16_t deviceTypeId, int32_t errCode);
258 void LnnNotifyMigrate(bool isOnline, NodeBasicInfo *info);
259 
260 void LnnNotifyWlanStateChangeEvent(void *state);
261 void LnnNotifyScreenStateChangeEvent(SoftBusScreenState state);
262 void LnnNotifyDifferentAccountChangeEvent(void *state);
263 void LnnNotifyBtStateChangeEvent(void *state);
264 void LnnNotifyScreenLockStateChangeEvent(SoftBusScreenLockState state);
265 void LnnNotifyAccountStateChangeEvent(SoftBusAccountState state);
266 void LnnNotifyUserStateChangeEvent(SoftBusUserState state);
267 void LnnNotifyHomeGroupChangeEvent(SoftBusHomeGroupState state);
268 void LnnNotifyNightModeStateChangeEvent(void *state);
269 void LnnNotifyOOBEStateChangeEvent(SoftBusOOBEState state);
270 void LnnNotifyBtAclStateChangeEvent(const char *btMac, SoftBusBtAclState state);
271 void LnnNotifyAddressChangedEvent(const char* ifName);
272 void LnnNotifyLnnRelationChanged(const char *udid, ConnectionAddrType type, uint8_t relation, bool isJoin);
273 void LnnNotifyDeviceVerified(const char *udid);
274 
275 void LnnNotifyTimeSyncResult(const char *pkgName, int32_t pid, const TimeSyncResultInfo *info, int32_t retCode);
276 
277 void LnnNotifyMasterNodeChanged(bool isMaster, const char* masterNodeUdid, int32_t weight);
278 
279 void LnnNotifyNodeAddressChanged(const char *addr, const char *networkId, bool isLocal);
280 
281 void LnnNotifyNetworkStateChanged(SoftBusNetworkState state);
282 
283 void LnnNotifySingleOffLineEvent(const ConnectionAddr *addr, NodeBasicInfo *basicInfo);
284 
285 void LnnNotifyNetworkIdChangeEvent(const char *networkId);
286 
287 void LnnNotifyLpReportEvent(SoftBusLpEventType type);
288 
289 void LnnNotifyHBRepeat(void);
290 
291 void LnnNotifyUserSwitchEvent(SoftBusUserSwitchState state);
292 
293 void LnnNotifyVapInfoChangeEvent(int32_t preferChannel);
294 
295 #ifdef __cplusplus
296 }
297 #endif
298 #endif
299