• 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 #ifndef SOFTBUS_DEF_H
16 #define SOFTBUS_DEF_H
17 
18 #include  <pthread.h>
19 #include "common_list.h"
20 #include "softbus_adapter_thread.h"
21 #include "stdint.h"
22 #include "softbus_protocol_def.h"
23 
24 #ifdef __cplusplus
25 #if __cplusplus
26 extern "C" {
27 #endif
28 #endif
29 
30 #ifndef NO_SANITIZE
31 #ifdef __has_attribute
32 #if __has_attribute(no_sanitize)
33 #define NO_SANITIZE(type) __attribute__((no_sanitize(type)))
34 #endif
35 #endif
36 #endif
37 
38 #ifndef NO_SANITIZE
39 #define NO_SANITIZE(type)
40 #endif
41 
42 #define INVALID_SESSION_ID (-1)
43 #define INVALID_CHANNEL_ID (-1)
44 #define INVALID_ROUTE_TYPE (-1)
45 #define INVALID_DATA_CONFIG (0)
46 #define INVALID_SEQ_ID (0x7fffffff)
47 #define INVALID_ACTION_ID 0
48 
49 #define PKG_NAME_SIZE_MAX 65
50 #define SESSION_NAME_SIZE_MAX 256
51 #define INTERFACE_NAME_SIZE_MAX 64
52 #define PROCESS_NAME_SIZE_MAX 64
53 #define DEVICE_ID_SIZE_MAX 65
54 #define DEVICE_VERSION_SIZE_MAX 128
55 #define PRODUCT_ID_SIZE_MAX 128
56 #define MODEL_NAME_SIZE_MAX 128
57 #define GROUP_ID_SIZE_MAX 128
58 #define REQ_ID_SIZE_MAX 65
59 #define AUTH_STATE_SIZE_MAX 65
60 #define FILE_RECV_ROOT_DIR_SIZE_MAX 256
61 
62 #define MAX_DEV_INFO_VALUE_LEN 65
63 #define MAX_CAPABILITY_LEN 33
64 #define MAX_CAPABILITY_DATA_LEN 512
65 #define MAX_PACKAGE_NAME_LEN 33
66 #define MAX_DEV_INFO_COUNT 32
67 #define MAX_PUBLISH_INFO_COUNT 32
68 #define IP_LEN 46
69 #define MAC_MAX_LEN 18
70 #define MAX_PEERS_NUM 32
71 #define MAX_OPERATION_CODE_LEN 32
72 #define SESSION_KEY_LENGTH 32
73 #define SHORT_SESSION_KEY_LENGTH 16
74 #define SHORT_SESSION_IV_LENGTH 4
75 #define ORIGIN_LEN_16_BASE64_LENGTH 25
76 #define D2D_SHORT_UDID_HASH_LEN 5
77 #define D2D_SHORT_ACCOUNT_HASH_LEN 5
78 #define DEVICE_KEY_LEN 16
79 
80 #define MAX_SOCKET_ADDR_LEN 46
81 
82 #define MAX_SESSION_ID 20
83 #define MAX_SESSION_SERVER_NUMBER 32
84 
85 #define WAIT_SERVER_READY_INTERVAL 200
86 #define WAIT_SERVER_READY_SHORT_INTERVAL 50
87 
88 #define EXTRA_DATA_MAX_LEN 5
89 #define EXTRA_DATA_STR_MAX_LEN 11
90 #define SHORT_DEVICE_LEN 9
91 #define PAGING_SOCKET_NAME_PREFIX "Paging_"
92 
93 #define NODE_ADDR_LOOPBACK "0"
94 
95 #define MAX_UDP_CHANNEL_ID_COUNT 20
96 #define ACCOUNT_UID_STR_LEN 65
97 
98 #define ACCOUNT_ID_SIZE_MAX 65
99 
100 #ifndef ARRAY_SIZE
101 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
102 #endif
103 
104 #define FILE_PRIORITY_BE 0x00
105 #define FILE_PRIORITY_BK 0x08
106 
107 #define GENERAL_SEND_DATA_MAX_LEN 1024
108 #define GENERAL_NAME_SIZE_MAX     256
109 
110 typedef struct {
111     SoftBusMutex lock;
112     unsigned int cnt;
113     ListNode list;
114 } SoftBusList;
115 
116 typedef enum {
117     SEC_TYPE_UNKNOWN = 0,
118     SEC_TYPE_PLAINTEXT = 1,
119     SEC_TYPE_CIPHERTEXT = 2,
120 } SoftBusSecType;
121 
122 /* Timer type */
123 enum {
124     TIMER_TYPE_ONCE,
125     TIMER_TYPE_PERIOD,
126     TIMER_TYPE_MAX,
127 };
128 
129 typedef enum {
130     TRANS_SESSION_BYTES = 0,
131     TRANS_SESSION_ACK,
132     TRANS_SESSION_MESSAGE,
133     TRANS_SESSION_FILE_FIRST_FRAME = 3,
134     TRANS_SESSION_FILE_ONGOINE_FRAME,
135     TRANS_SESSION_FILE_LAST_FRAME,
136     TRANS_SESSION_FILE_ONLYONE_FRAME,
137     TRANS_SESSION_FILE_ALLFILE_SENT,
138     TRANS_SESSION_FILE_CRC_CHECK_FRAME,
139     TRANS_SESSION_FILE_RESULT_FRAME,
140     TRANS_SESSION_FILE_ACK_REQUEST_SENT,
141     TRANS_SESSION_FILE_ACK_RESPONSE_SENT,
142     TRANS_SESSION_ASYNC_MESSAGE,
143 } SessionPktType;
144 
145 typedef enum {
146     CHANNEL_TYPE_UNDEFINED = -1,
147     CHANNEL_TYPE_TCP_DIRECT = 0,
148     CHANNEL_TYPE_PROXY,
149     CHANNEL_TYPE_UDP,
150     CHANNEL_TYPE_AUTH,
151     CHANNEL_TYPE_BUTT,
152 } ChannelType;
153 
154 typedef enum {
155     MESSAGE_TYPE_UNDEFINED = -1,
156     MESSAGE_TYPE_NOMAL = 0,
157     MESSAGE_TYPE_CLOSE_ACK,
158     MESSAGE_TYPE_BUTT,
159 } MessageType;
160 
161 typedef enum {
162     BUSINESS_TYPE_MESSAGE = 1,
163     BUSINESS_TYPE_BYTE = 2,
164     BUSINESS_TYPE_FILE = 3,
165     BUSINESS_TYPE_STREAM = 4,
166     BUSINESS_TYPE_D2D_MESSAGE = 10,
167     BUSINESS_TYPE_D2D_VOICE = 11,
168     BUSINESS_TYPE_NOT_CARE,
169     BUSINESS_TYPE_BUTT,
170 } BusinessType;
171 
172 typedef struct {
173     int32_t userId;
174     uint64_t localTokenId;
175     char *businessAccountId;
176     char *extraAccessInfo;
177 } AccessInfo;
178 
179 typedef struct {
180     bool isServer;
181     bool isEnabled;
182     bool isEncrypt;
183     bool isUdpFile;
184     bool isFastData;
185     bool isSupportTlv;
186     bool isD2D;
187     int32_t sessionId;
188     int32_t pagingId;
189     int32_t channelId;
190     int32_t channelType;
191     int32_t businessType;
192     int32_t fd;
193     int32_t peerUid;
194     int32_t peerPid;
195     uint32_t keyLen;
196     int32_t peerPort;
197     int32_t routeType;
198     int32_t streamType;
199     int32_t encrypt;
200     int32_t fileEncrypt;
201     int32_t algorithm;
202     int32_t crc;
203     int32_t autoCloseTime;
204     int myHandleId;
205     int peerHandleId;
206     int32_t linkType;
207     int32_t connectType;
208     uint32_t dataConfig;
209     int32_t osType;
210     int64_t timeStart;
211     uint64_t laneId;
212     uint32_t dataLen;
213     uint32_t businessFlag;
214     char *groupId;
215     char *sessionKey;
216     char *peerSessionName;
217     char *peerDeviceId;
218     char *myIp;
219     char *peerIp;
220     char *reqId;
221     int32_t tokenType;
222     int32_t peerUserId;
223     uint64_t peerTokenId;
224     uint32_t deviceTypeId;
225     char *peerBusinessAccountId;
226     char *peerExtraAccessInfo;
227     char *extraData;
228     char *pagingNonce;
229     char *pagingSessionkey;
230     char *pagingAccountId;
231     bool isLowLatency;
232     ProtocolType fdProtocol;
233     char *pkgName;
234 } ChannelInfo;
235 
236 #ifdef __cplusplus
237 #if __cplusplus
238 }
239 #endif /* __cplusplus */
240 #endif /* __cplusplus */
241 #endif /* SOFTBUS_DEF_H */
242 
243