1 /* 2 * Copyright (c) 2021-2025 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 SOFTBUS_CONN_INTERFACE_STRUCT_H 17 #define SOFTBUS_CONN_INTERFACE_STRUCT_H 18 19 #include "softbus_common.h" 20 #include "softbus_def.h" 21 #include "softbus_protocol_def.h" 22 23 #ifdef __cplusplus 24 #if __cplusplus 25 extern "C" { 26 #endif 27 #endif 28 typedef enum { 29 MODULE_TRUST_ENGINE = 1, 30 MODULE_HICHAIN = 2, 31 MODULE_AUTH_SDK = 3, 32 MODULE_AUTH_CONNECTION = 5, 33 MODULE_AUTH_CANCEL = 6, 34 MODULE_MESSAGE_SERVICE = 8, 35 MODULE_AUTH_CHANNEL = 8, 36 MODULE_AUTH_MSG = 9, 37 MODULE_BLUETOOTH_MANAGER = 9, 38 MODULE_CONNECTION = 11, 39 MODULE_DIRECT_CHANNEL = 12, 40 MODULE_PROXY_CHANNEL = 13, 41 MODULE_DEVICE_AUTH = 14, 42 MODULE_P2P_LINK = 15, 43 MODULE_P2P_LISTEN = 16, 44 MODULE_UDP_INFO = 17, 45 MODULE_P2P_NETWORKING_SYNC = 18, 46 MODULE_TIME_SYNC = 19, 47 MODULE_PKG_VERIFY = 20, 48 MODULE_META_AUTH = 21, 49 MODULE_P2P_NEGO = 22, 50 MODULE_AUTH_SYNC_INFO = 23, 51 MODULE_PTK_VERIFY = 24, 52 MODULE_SESSION_AUTH = 25, 53 MODULE_SESSION_KEY_AUTH = 26, 54 MODULE_SLE_AUTH_CMD = 27, 55 MODULE_APPLY_KEY_CONNECTION = 28, 56 MODULE_LANE_SELECT = 29, 57 MODULE_VIRTUAL_LINK = 30, 58 MODULE_BLE_NET = 100, 59 MODULE_BLE_CONN = 101, 60 MODULE_BLE_GENERAL = 102, 61 MODULE_PAGING_CONN = 103, 62 MODULE_NIP_BR_CHANNEL = 201, 63 MODULE_OLD_NEARBY = 300, 64 } ConnModule; 65 66 typedef enum { 67 CONNECT_TCP = 1, 68 CONNECT_BR, 69 CONNECT_BLE, 70 CONNECT_P2P, 71 CONNECT_P2P_REUSE, 72 CONNECT_BLE_DIRECT, 73 CONNECT_HML, 74 CONNECT_TRIGGER_HML, 75 CONNECT_SLE, 76 CONNECT_SLE_DIRECT, 77 CONNECT_BLE_GENERAL, 78 CONNECT_TRIGGER_HML_V2C, 79 CONNECT_PROXY_CHANNEL, 80 CONNECT_PAGING, 81 CONNECT_TYPE_MAX 82 } ConnectType; 83 84 #define CONN_INVALID_LISTENER_MODULE_ID 0xffff 85 #define CONN_DYNAMIC_LISTENER_MODULE_COUNT 32 86 #define DEVID_BUFF_LEN 65 87 #define NETIF_NAME_LEN 16 88 89 #define BT_LINK_TYPE_BR 1 90 #define BT_LINK_TYPE_BLE 2 91 #define HML_NUM 8 92 #define AUTH_ENHANCED_P2P_NUM 8 93 94 typedef enum { 95 PROXY = 0, 96 AUTH, 97 AUTH_P2P, 98 AUTH_ENHANCED_P2P_START, 99 AUTH_ENHANCED_P2P_END = AUTH_ENHANCED_P2P_START + AUTH_ENHANCED_P2P_NUM - 1, 100 DIRECT_CHANNEL_SERVER_P2P, 101 DIRECT_CHANNEL_CLIENT, 102 DIRECT_CHANNEL_SERVER_WIFI, 103 DIRECT_CHANNEL_SERVER_USB, 104 DIRECT_CHANNEL_SERVER_HML_START, 105 DIRECT_CHANNEL_SERVER_HML_END = DIRECT_CHANNEL_SERVER_HML_START + HML_NUM * 2 - 1, 106 DIRECT_LOWLATENCY, 107 LANE, 108 NETLINK, 109 AUTH_RAW_P2P_SERVER, 110 AUTH_RAW_P2P_CLIENT, 111 AUTH_USB, 112 AUTH_SESSION_KEY, 113 TIME_SYNC, 114 115 LISTENER_MODULE_DYNAMIC_START, 116 LISTENER_MODULE_DYNAMIC_END = LISTENER_MODULE_DYNAMIC_START + CONN_DYNAMIC_LISTENER_MODULE_COUNT, 117 UNUSE_BUTT, 118 } ListenerModule; 119 120 struct BrInfo { 121 char brMac[BT_MAC_LEN]; 122 }; 123 struct BleInfo { 124 char bleMac[BT_MAC_LEN]; 125 char deviceIdHash[UDID_HASH_LEN]; 126 BleProtocolType protocol; 127 uint32_t psm; 128 uint16_t challengeCode; 129 }; 130 131 struct SleInfo { 132 char address[BT_MAC_LEN]; 133 uint16_t challengeCode; 134 SleProtocolType protocol; 135 char networkId[NETWORK_ID_BUF_LEN]; 136 137 uint8_t deviceIdHash[SHA_256_HASH_LEN]; 138 uint8_t deviceIdHashLen; 139 }; 140 141 struct ConnSocketInfo { 142 char addr[IP_LEN]; 143 ProtocolType protocol; 144 int32_t port; 145 int32_t fd; 146 int32_t moduleId; /* For details, see {@link ListenerModule}. */ 147 }; 148 149 typedef struct { 150 int32_t isAvailable; 151 int32_t isServer; 152 ConnectType type; 153 union { 154 struct BrInfo brInfo; 155 struct BleInfo bleInfo; 156 struct SleInfo sleInfo; 157 struct ConnSocketInfo socketInfo; 158 }; 159 } ConnectionInfo; 160 161 typedef struct { 162 void (*OnConnected)(uint32_t connectionId, const ConnectionInfo *info); 163 void (*OnReusedConnected)(uint32_t connectionId, const ConnectionInfo *info); 164 void (*OnDisconnected)(uint32_t connectionId, const ConnectionInfo *info); 165 void (*OnDataReceived)(uint32_t connectionId, ConnModule moduleId, int64_t seq, char *data, int32_t len); 166 } ConnectCallback; 167 168 typedef enum { 169 CONN_DEFAULT = 0, 170 CONN_LOW, 171 CONN_MIDDLE, 172 CONN_HIGH 173 } SendPriority; 174 175 typedef enum { 176 CONN_SIDE_ANY = 0, 177 CONN_SIDE_CLIENT, 178 CONN_SIDE_SERVER 179 } ConnSideType; 180 181 typedef struct { 182 int32_t module; // ConnModule 183 int64_t seq; 184 int32_t flag; // SendPriority 185 int32_t pid; 186 uint32_t len; 187 char *buf; 188 } ConnPostData; 189 190 typedef struct { 191 void (*OnConnectSuccessed)(uint32_t requestId, uint32_t connectionId, const ConnectionInfo *info); 192 void (*OnConnectFailed)(uint32_t requestId, int32_t reason); 193 } ConnectResult; 194 195 struct BrOption { 196 char brMac[BT_MAC_LEN]; 197 uint32_t connectionId; 198 ConnSideType sideType; 199 uint32_t waitTimeoutDelay; 200 }; 201 202 struct BleOption { 203 char bleMac[BT_MAC_LEN]; 204 char deviceIdHash[UDID_HASH_LEN]; 205 bool fastestConnectEnable; 206 uint16_t challengeCode; 207 uint32_t psm; 208 BleProtocolType protocol; 209 }; 210 211 struct BleDirectOption { 212 char networkId[NETWORK_ID_BUF_LEN]; 213 BleProtocolType protoType; 214 }; 215 216 struct SleDirectOption { 217 char networkId[NETWORK_ID_BUF_LEN]; 218 SleProtocolType protoType; 219 }; 220 221 struct SocketOption { 222 char ifName[NETIF_NAME_LEN]; 223 char addr[IP_LEN]; /* ipv6 addr format: ip%ifname */ 224 int32_t port; 225 int32_t moduleId; /* For details, see {@link ListenerModule}. */ 226 ProtocolType protocol; 227 int32_t keepAlive; 228 char localMac[MAC_MAX_LEN]; 229 char remoteMac[MAC_MAX_LEN]; 230 }; 231 232 struct SleOption { 233 char networkId[NETWORK_ID_BUF_LEN]; 234 char address[BT_MAC_LEN]; 235 uint16_t challengeCode; 236 bool isHighPower; 237 SleProtocolType protocol; 238 }; 239 240 struct PagingOption { 241 char accountId[ACCOUNT_ID_SIZE_MAX]; 242 }; 243 244 typedef struct { 245 ConnectType type; 246 union { 247 struct BrOption brOption; 248 struct BleOption bleOption; 249 struct SocketOption socketOption; 250 struct BleDirectOption bleDirectOption; 251 struct SleOption sleOption; 252 struct SleDirectOption sleDirectOption; 253 struct PagingOption pagingOption; 254 }; 255 } ConnectOption; 256 257 typedef enum { 258 CONN_BLE_PRIORITY_BALANCED = 0x0, 259 CONN_BLE_PRIORITY_HIGH, 260 CONN_BLE_PRIORITY_LOW_POWER, 261 } ConnectBlePriority; 262 263 typedef struct { 264 ConnectType type; 265 union { 266 struct { 267 ConnectBlePriority priority; 268 } bleOption; 269 }; 270 } UpdateOption; 271 272 struct ListenerSocketOption { 273 char addr[IP_LEN]; 274 int32_t port; 275 ListenerModule moduleId; /* For details, see {@link ListenerModule}. */ 276 ProtocolType protocol; 277 char ifName[NETIF_NAME_LEN]; 278 char localMac[MAC_MAX_LEN]; 279 char remoteMac[MAC_MAX_LEN]; 280 }; 281 282 typedef struct { 283 ConnectType type; 284 union { 285 struct ListenerSocketOption socketOption; 286 }; 287 } LocalListenerInfo; 288 289 typedef struct { 290 bool active; 291 ConnectType type; 292 int32_t windowInMillis; 293 int32_t quotaInBytes; 294 } LimitConfiguration; 295 296 #ifdef __cplusplus 297 #if __cplusplus 298 } 299 #endif /* __cplusplus */ 300 #endif /* __cplusplus */ 301 302 #endif