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