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