1 /* 2 * Copyright (c) 2021 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 #define INVALID_SESSION_ID (-1) 31 #define INVALID_CHANNEL_ID (-1) 32 #define INVALID_SEQ_ID (0x7fffffff) 33 34 #define PKG_NAME_SIZE_MAX 65 35 #define SESSION_NAME_SIZE_MAX 256 36 #define DEVICE_ID_SIZE_MAX 65 37 #define GROUP_ID_SIZE_MAX 65 38 #define REQ_ID_SIZE_MAX 65 39 #define AUTH_STATE_SIZE_MAX 65 40 #define FILE_RECV_ROOT_DIR_SIZE_MAX 256 41 42 #define MAX_DEV_INFO_VALUE_LEN 65 43 #define MAX_CAPABILITY_LEN 33 44 #define MAX_CAPABILITY_DATA_LEN 512 45 #define MAX_PACKAGE_NAME_LEN 33 46 #define MAX_DEV_INFO_COUNT 32 47 #define MAX_PUBLISH_INFO_COUNT 32 48 #define IP_LEN 46 49 #define MAX_PEERS_NUM 32 50 #define MAX_OPERATION_CODE_LEN 32 51 #define SESSION_KEY_LENGTH 32 52 #define DEVICE_KEY_LEN 16 53 54 #define MAX_SOCKET_ADDR_LEN 46 55 56 #define MAX_SESSION_ID 16 57 #define MAX_SESSION_SERVER_NUMBER 10 58 59 #define WAIT_SERVER_READY_INTERVAL 200 60 61 #define NODE_ADDR_LOOPBACK "0" 62 63 typedef struct { 64 SoftBusMutex lock; 65 unsigned int cnt; 66 ListNode list; 67 } SoftBusList; 68 69 typedef enum { 70 SEC_TYPE_UNKNOWN = 0, 71 SEC_TYPE_PLAINTEXT = 1, 72 SEC_TYPE_CIPHERTEXT = 2, 73 } SoftBusSecType; 74 75 /* Timer type */ 76 enum { 77 TIMER_TYPE_ONCE, 78 TIMER_TYPE_PERIOD, 79 TIMER_TYPE_MAX, 80 }; 81 82 typedef enum { 83 TRANS_SESSION_BYTES = 0, 84 TRANS_SESSION_MESSAGE, 85 TRANS_SESSION_FILE_FIRST_FRAME = 3, 86 TRANS_SESSION_FILE_ONGOINE_FRAME, 87 TRANS_SESSION_FILE_LAST_FRAME, 88 TRANS_SESSION_FILE_ONLYONE_FRAME, 89 TRANS_SESSION_FILE_ALLFILE_SENT, 90 TRANS_SESSION_FILE_CRC_CHECK_FRAME, 91 TRANS_SESSION_FILE_RESULT_FRAME, 92 TRANS_SESSION_FILE_ACK_REQUEST_SENT, 93 TRANS_SESSION_FILE_ACK_RESPONSE_SENT, 94 } SessionPktType; 95 96 typedef enum { 97 CHANNEL_TYPE_TCP_DIRECT = 0, 98 CHANNEL_TYPE_PROXY, 99 CHANNEL_TYPE_UDP, 100 CHANNEL_TYPE_AUTH, 101 CHANNEL_TYPE_BUTT, 102 } ChannelType; 103 104 typedef enum { 105 BUSINESS_TYPE_MESSAGE = 1, 106 BUSINESS_TYPE_BYTE = 2, 107 BUSINESS_TYPE_FILE = 3, 108 BUSINESS_TYPE_STREAM = 4, 109 110 BUSINESS_TYPE_NOT_CARE, 111 BUSINESS_TYPE_BUTT, 112 } BusinessType; 113 114 typedef struct { 115 int32_t channelId; 116 int32_t channelType; 117 int32_t businessType; 118 int32_t fd; 119 bool isServer; 120 bool isEnabled; 121 int32_t peerUid; 122 int32_t peerPid; 123 char *groupId; 124 uint32_t keyLen; 125 char *sessionKey; 126 char *peerSessionName; 127 char *peerDeviceId; 128 char *myIp; 129 char *peerIp; 130 int32_t peerPort; 131 int32_t routeType; 132 int32_t streamType; 133 int32_t encrypt; 134 int32_t algorithm; 135 int32_t crc; 136 bool isUdpFile; 137 } ChannelInfo; 138 139 #ifdef __cplusplus 140 #if __cplusplus 141 } 142 #endif /* __cplusplus */ 143 #endif /* __cplusplus */ 144 #endif /* SOFTBUS_DEF_H */ 145 146