1 /*
2  * Copyright (c) 2021-2024 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 
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 DEVICE_ID_SIZE_MAX 65
52 #define DEVICE_VERSION_SIZE_MAX 128
53 #define GROUP_ID_SIZE_MAX 128
54 #define REQ_ID_SIZE_MAX 65
55 #define AUTH_STATE_SIZE_MAX 65
56 #define FILE_RECV_ROOT_DIR_SIZE_MAX 256
57 
58 #define MAX_DEV_INFO_VALUE_LEN 65
59 #define MAX_CAPABILITY_LEN 33
60 #define MAX_CAPABILITY_DATA_LEN 512
61 #define MAX_PACKAGE_NAME_LEN 33
62 #define MAX_DEV_INFO_COUNT 32
63 #define MAX_PUBLISH_INFO_COUNT 32
64 #define IP_LEN 46
65 #define MAX_PEERS_NUM 32
66 #define MAX_OPERATION_CODE_LEN 32
67 #define SESSION_KEY_LENGTH 32
68 #define DEVICE_KEY_LEN 16
69 
70 #define MAX_SOCKET_ADDR_LEN 46
71 
72 #define MAX_SESSION_ID 20
73 #define MAX_SESSION_SERVER_NUMBER 32
74 
75 #define WAIT_SERVER_READY_INTERVAL 200
76 
77 #define NODE_ADDR_LOOPBACK "0"
78 
79 #define MAX_UDP_CHANNEL_ID_COUNT 20
80 
81 #ifndef ARRAY_SIZE
82 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
83 #endif
84 
85 #define FILE_PRIORITY_BE 0x00
86 #define FILE_PRIORITY_BK 0x08
87 
88 typedef struct {
89     SoftBusMutex lock;
90     unsigned int cnt;
91     ListNode list;
92 } SoftBusList;
93 
94 typedef enum {
95     SEC_TYPE_UNKNOWN = 0,
96     SEC_TYPE_PLAINTEXT = 1,
97     SEC_TYPE_CIPHERTEXT = 2,
98 } SoftBusSecType;
99 
100 /* Timer type */
101 enum {
102     TIMER_TYPE_ONCE,
103     TIMER_TYPE_PERIOD,
104     TIMER_TYPE_MAX,
105 };
106 
107 typedef enum {
108     TRANS_SESSION_BYTES = 0,
109     TRANS_SESSION_ACK,
110     TRANS_SESSION_MESSAGE,
111     TRANS_SESSION_FILE_FIRST_FRAME = 3,
112     TRANS_SESSION_FILE_ONGOINE_FRAME,
113     TRANS_SESSION_FILE_LAST_FRAME,
114     TRANS_SESSION_FILE_ONLYONE_FRAME,
115     TRANS_SESSION_FILE_ALLFILE_SENT,
116     TRANS_SESSION_FILE_CRC_CHECK_FRAME,
117     TRANS_SESSION_FILE_RESULT_FRAME,
118     TRANS_SESSION_FILE_ACK_REQUEST_SENT,
119     TRANS_SESSION_FILE_ACK_RESPONSE_SENT,
120     TRANS_SESSION_ASYNC_MESSAGE,
121 } SessionPktType;
122 
123 typedef enum {
124     CHANNEL_TYPE_UNDEFINED = -1,
125     CHANNEL_TYPE_TCP_DIRECT = 0,
126     CHANNEL_TYPE_PROXY,
127     CHANNEL_TYPE_UDP,
128     CHANNEL_TYPE_AUTH,
129     CHANNEL_TYPE_BUTT,
130 } ChannelType;
131 
132 typedef enum {
133     MESSAGE_TYPE_UNDEFINED = -1,
134     MESSAGE_TYPE_NOMAL = 0,
135     MESSAGE_TYPE_CLOSE_ACK,
136     MESSAGE_TYPE_BUTT,
137 } MessageType;
138 
139 typedef enum {
140     BUSINESS_TYPE_MESSAGE = 1,
141     BUSINESS_TYPE_BYTE = 2,
142     BUSINESS_TYPE_FILE = 3,
143     BUSINESS_TYPE_STREAM = 4,
144 
145     BUSINESS_TYPE_NOT_CARE,
146     BUSINESS_TYPE_BUTT,
147 } BusinessType;
148 
149 typedef struct {
150     int32_t channelId;
151     int32_t channelType;
152     int32_t businessType;
153     int32_t fd;
154     bool isServer;
155     bool isEnabled;
156     bool isEncrypt;
157     int32_t peerUid;
158     int32_t peerPid;
159     char *groupId;
160     uint32_t keyLen;
161     char *sessionKey;
162     char *peerSessionName;
163     char *peerDeviceId;
164     char *myIp;
165     char *peerIp;
166     int32_t peerPort;
167     int32_t routeType;
168     int32_t streamType;
169     int32_t encrypt;
170     int32_t fileEncrypt;
171     int32_t algorithm;
172     int32_t crc;
173     int32_t autoCloseTime;
174     bool isUdpFile;
175     int myHandleId;
176     int peerHandleId;
177     char *reqId;
178     int64_t timeStart;
179     int32_t linkType;
180     int32_t connectType;
181     bool isFastData;
182     uint32_t dataConfig;
183     uint64_t laneId;
184     int32_t osType;
185 } ChannelInfo;
186 
187 #ifdef __cplusplus
188 #if __cplusplus
189 }
190 #endif /* __cplusplus */
191 #endif /* __cplusplus */
192 #endif /* SOFTBUS_DEF_H */
193 
194