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 /* event from internal lnn */ 45 LNN_EVENT_NODE_ONLINE_STATE_CHANGED, 46 LNN_EVENT_NODE_MIGRATE, 47 LNN_EVENT_RELATION_CHANGED, 48 LNN_EVENT_NODE_MASTER_STATE_CHANGED, 49 LNN_EVENT_NODE_ADDR_CHANGED, 50 LNN_EVENT_NETWORK_STATE_CHANGED, 51 LNN_EVENT_NODE_HB_REPEAT_CYCLE, 52 LNN_EVENT_TYPE_MAX, 53 } LnnEventType; 54 55 typedef struct { 56 LnnEventType event; 57 } LnnEventBasicInfo; 58 59 typedef struct { 60 LnnEventBasicInfo basic; 61 char ifName[NET_IF_NAME_LEN]; 62 } LnnMonitorAddressChangedEvent; 63 64 typedef enum { 65 SOFTBUS_WIFI_CONNECTED, 66 SOFTBUS_WIFI_DISCONNECTED, 67 SOFTBUS_WIFI_DISABLING, 68 SOFTBUS_WIFI_DISABLED, 69 SOFTBUS_WIFI_ENABLING, 70 SOFTBUS_WIFI_ENABLED, 71 SOFTBUS_AP_DISABLED, 72 SOFTBUS_AP_ENABLED, 73 SOFTBUS_WIFI_OBTAINING_IPADDR, 74 SOFTBUS_WIFI_UNKNOWN, 75 } SoftBusWifiState; 76 77 typedef enum { 78 SOFTBUS_SCREEN_ON, 79 SOFTBUS_SCREEN_OFF, 80 SOFTBUS_SCREEN_UNKNOWN, 81 } SoftBusScreenState; 82 83 typedef enum { 84 SOFTBUS_BLE_TURN_ON, 85 SOFTBUS_BLE_TURN_OFF, 86 SOFTBUS_BR_TURN_ON, 87 SOFTBUS_BR_TURN_OFF, 88 SOFTBUS_BT_UNKNOWN, 89 } SoftBusBtState; 90 91 typedef enum { 92 SOFTBUS_SCREEN_LOCK, 93 SOFTBUS_SCREEN_UNLOCK, 94 SOFTBUS_SCREEN_LOCK_UNKNOWN, 95 } SoftBusScreenLockState; 96 97 typedef enum { 98 SOFTBUS_ACCOUNT_LOG_IN, 99 SOFTBUS_ACCOUNT_LOG_OUT, 100 SOFTBUS_ACCOUNT_UNKNOWN, 101 } SoftBusAccountState; 102 103 typedef enum { 104 SOFTBUS_DIF_ACCOUNT_DEV_CHANGE, 105 SOFTBUS_DIF_ACCOUNT_UNKNOWN, 106 } SoftBusDifferentAccountState; 107 108 typedef enum { 109 SOFTBUS_USER_FOREGROUND, 110 SOFTBUS_USER_BACKGROUND, 111 SOFTBUS_USER_UNKNOWN, 112 } SoftBusUserState; 113 114 typedef enum { 115 SOFTBUS_NIGHT_MODE_ON, 116 SOFTBUS_NIGHT_MODE_OFF, 117 SOFTBUS_NIGHT_MODE_UNKNOWN, 118 } SoftBusNightModeState; 119 120 typedef enum { 121 SOFTBUS_OOBE_RUNNING, 122 SOFTBUS_OOBE_END, 123 SOFTBUS_OOBE_UNKNOWN, 124 } SoftBusOOBEState; 125 126 typedef enum { 127 SOFTBUS_HOME_GROUP_JOIN = 1, 128 SOFTBUS_HOME_GROUP_LEAVE, 129 SOFTBUS_HOME_GROUP_UNKNOWN, 130 } SoftBusHomeGroupState; 131 132 typedef enum { 133 SOFTBUS_BR_ACL_CONNECTED, 134 SOFTBUS_BR_ACL_DISCONNECTED, 135 } SoftBusBtAclState; 136 137 typedef enum { 138 SOFTBUS_WIFI_NETWORKD_ENABLE, 139 SOFTBUS_WIFI_NETWORKD_DISABLE, 140 SOFTBUS_BLE_NETWORKD_ENABLE, 141 SOFTBUS_BLE_NETWORKD_DISABLE, 142 SOFTBUS_NETWORKD_UNKNOWN, 143 } SoftBusNetworkState; 144 145 typedef struct { 146 LnnEventBasicInfo basic; 147 uint8_t status; 148 } LnnMonitorWlanStateChangedEvent; 149 150 typedef struct { 151 LnnEventBasicInfo basic; 152 uint8_t status; 153 } LnnMonitorScreenStateChangedEvent; 154 155 typedef struct { 156 LnnEventBasicInfo basic; 157 uint8_t status; 158 } LnnMonitorHbStateChangedEvent; 159 160 typedef struct { 161 LnnEventBasicInfo basic; 162 uint8_t status; 163 char btMac[BT_MAC_LEN]; 164 } LnnMonitorBtAclStateChangedEvent; 165 166 typedef struct { 167 LnnEventBasicInfo basic; 168 bool isOnline; 169 const char *networkId; 170 const char *uuid; 171 const char *udid; 172 } LnnOnlineStateEventInfo; 173 174 typedef struct { 175 LnnEventBasicInfo basic; 176 ConnectionAddrType type; 177 uint8_t relation; 178 bool isJoin; 179 const char *udid; 180 } LnnRelationChanedEventInfo; 181 182 typedef struct { 183 LnnEventBasicInfo basic; 184 const char* masterNodeUDID; 185 int32_t weight; 186 bool isMasterNode; 187 } LnnMasterNodeChangedEvent; 188 189 typedef struct { 190 LnnEventBasicInfo basic; 191 char addr[SHORT_ADDRESS_MAX_LEN]; 192 char networkId[NETWORK_ID_BUF_LEN]; 193 bool delFlag; 194 bool isLocal; 195 } LnnNodeAddrChangedEvent; 196 197 typedef void (*LnnEventHandler)(const LnnEventBasicInfo *info); 198 199 int32_t LnnInitBusCenterEvent(void); 200 void LnnDeinitBusCenterEvent(void); 201 202 int32_t LnnRegisterEventHandler(LnnEventType event, LnnEventHandler handler); 203 void LnnUnregisterEventHandler(LnnEventType event, LnnEventHandler handler); 204 205 void LnnNotifyJoinResult(ConnectionAddr *addr, 206 const char *networkId, int32_t retCode); 207 void MetaNodeNotifyJoinResult(ConnectionAddr *addr, 208 const char *networkId, int32_t retCode); 209 void LnnNotifyLeaveResult(const char *networkId, int32_t retCode); 210 void MetaNodeNotifyLeaveResult(const char *networkId, int32_t retCode); 211 212 void LnnNotifyOnlineState(bool isOnline, NodeBasicInfo *info); 213 void LnnNotifyBasicInfoChanged(NodeBasicInfo *info, NodeBasicInfoType type); 214 void LnnNotifyMigrate(bool isOnline, NodeBasicInfo *info); 215 216 void LnnNotifyWlanStateChangeEvent(SoftBusWifiState state); 217 void LnnNotifyScreenStateChangeEvent(SoftBusScreenState state); 218 void LnnNotifyDifferentAccountChangeEvent(void *state); 219 void LnnNotifyBtStateChangeEvent(void *state); 220 void LnnNotifyScreenLockStateChangeEvent(SoftBusScreenLockState state); 221 void LnnNotifyAccountStateChangeEvent(void *state); 222 void LnnNotifyUserStateChangeEvent(SoftBusUserState state); 223 void LnnNotifyHomeGroupChangeEvent(SoftBusHomeGroupState state); 224 void LnnNotifyNightModeStateChangeEvent(void *state); 225 void LnnNotifyOOBEStateChangeEvent(SoftBusOOBEState state); 226 void LnnNotifyBtAclStateChangeEvent(const char *btMac, SoftBusBtAclState state); 227 void LnnNotifyAddressChangedEvent(const char* ifName); 228 void LnnNotifyLnnRelationChanged(const char *udid, ConnectionAddrType type, uint8_t relation, bool isJoin); 229 void LnnNotifyDeviceVerified(const char *udid); 230 231 void LnnNotifyTimeSyncResult(const char *pkgName, int32_t pid, const TimeSyncResultInfo *info, int32_t retCode); 232 233 void LnnNotifyMasterNodeChanged(bool isMaster, const char* masterNodeUdid, int32_t weight); 234 235 void LnnNotifyNodeAddressChanged(const char *addr, const char *networkId, bool isLocal); 236 237 void LnnNotifyNetworkStateChanged(SoftBusNetworkState state); 238 void LnnNotifyHBRepeat(void); 239 240 #ifdef __cplusplus 241 } 242 #endif 243 #endif 244