• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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