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