1 // Copyright (C) 2014-2019 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) 2 // This Source Code Form is subject to the terms of the Mozilla Public 3 // License, v. 2.0. If a copy of the MPL was not distributed with this 4 // file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 6 #ifndef VSOMEIP_V3_INTERNAL_HPP_ 7 #define VSOMEIP_V3_INTERNAL_HPP_ 8 9 #include <cstdint> 10 #include <limits> 11 #include <vsomeip/primitive_types.hpp> 12 13 #define VSOMEIP_ENV_APPLICATION_NAME "VSOMEIP_APPLICATION_NAME" 14 #define VSOMEIP_ENV_CONFIGURATION "VSOMEIP_CONFIGURATION" 15 #define VSOMEIP_ENV_CONFIGURATION_MODULE "VSOMEIP_CONFIGURATION_MODULE" 16 #define VSOMEIP_ENV_E2E_PROTECTION_MODULE "VSOMEIP_E2E_PROTECTION_MODULE" 17 #define VSOMEIP_ENV_MANDATORY_CONFIGURATION_FILES "VSOMEIP_MANDATORY_CONFIGURATION_FILES" 18 #define VSOMEIP_ENV_LOAD_PLUGINS "VSOMEIP_LOAD_PLUGINS" 19 #define VSOMEIP_ENV_CLIENTSIDELOGGING "VSOMEIP_CLIENTSIDELOGGING" 20 21 #define VSOMEIP_DEFAULT_CONFIGURATION_FILE "/etc/vsomeip.json" 22 #define VSOMEIP_LOCAL_CONFIGURATION_FILE "./vsomeip.json" 23 #define VSOMEIP_MANDATORY_CONFIGURATION_FILES "vsomeip_std.json,vsomeip_app.json,vsomeip_plc.json,vsomeip_log.json,vsomeip_security.json,vsomeip_whitelist.json" 24 25 #define VSOMEIP_DEFAULT_CONFIGURATION_FOLDER "/etc/vsomeip" 26 #define VSOMEIP_DEBUG_CONFIGURATION_FOLDER "/var/opt/public/sin/vsomeip/" 27 #define VSOMEIP_LOCAL_CONFIGURATION_FOLDER "./vsomeip" 28 29 #define VSOMEIP_BASE_PATH "/tmp/" 30 31 #ifdef _WIN32 32 #define VSOMEIP_CFG_LIBRARY "vsomeip3-cfg.dll" 33 #else 34 #define VSOMEIP_CFG_LIBRARY "libvsomeip3-cfg.so" 35 #endif 36 37 #ifdef _WIN32 38 #define VSOMEIP_SD_LIBRARY "vsomeip3-sd.dll" 39 #else 40 #define VSOMEIP_SD_LIBRARY "libvsomeip3-sd.so" 41 #endif 42 43 #ifdef _WIN32 44 #define VSOMEIP_E2E_LIBRARY "vsomeip3-e2e.dll" 45 #else 46 #define VSOMEIP_E2E_LIBRARY "libvsomeip3-e2e.so" 47 #endif 48 49 #define VSOMEIP_ROUTING_CLIENT 0 50 51 #define VSOMEIP_CLIENT_UNSET 0xFFFF 52 53 #ifdef _WIN32 54 #define VSOMEIP_INTERNAL_BASE_PORT 51234 55 #define __func__ __FUNCTION__ 56 #endif 57 58 #define VSOMEIP_UNICAST_ADDRESS "127.0.0.1" 59 #define VSOMEIP_NETMASK "255.255.255.0" 60 61 #define VSOMEIP_DEFAULT_CONNECT_TIMEOUT 100 62 #define VSOMEIP_MAX_CONNECT_TIMEOUT 1600 63 #define VSOMEIP_DEFAULT_FLUSH_TIMEOUT 1000 64 65 #define VSOMEIP_DEFAULT_SHUTDOWN_TIMEOUT 5000 66 67 #define VSOMEIP_DEFAULT_QUEUE_WARN_SIZE 102400 68 69 #define VSOMEIP_MAX_TCP_CONNECT_TIME 5000 70 #define VSOMEIP_MAX_TCP_RESTART_ABORTS 5 71 #define VSOMEIP_MAX_TCP_SENT_WAIT_TIME 10000 72 73 #define VSOMEIP_DEFAULT_BUFFER_SHRINK_THRESHOLD 5 74 75 #define VSOMEIP_DEFAULT_WATCHDOG_TIMEOUT 5000 76 #define VSOMEIP_DEFAULT_MAX_MISSING_PONGS 3 77 78 #define VSOMEIP_DEFAULT_UDP_RCV_BUFFER_SIZE 1703936 79 80 #define VSOMEIP_IO_THREAD_COUNT 2 81 #define VSOMEIP_IO_THREAD_NICE_LEVEL 255 82 83 #define VSOMEIP_MAX_DISPATCHERS 10 84 #define VSOMEIP_MAX_DISPATCH_TIME 100 85 86 #define VSOMEIP_REQUEST_DEBOUNCE_TIME 10 87 #define VSOMEIP_DEFAULT_STATISTICS_MAX_MSG 50 88 #define VSOMEIP_DEFAULT_STATISTICS_MIN_FREQ 50 89 #define VSOMEIP_DEFAULT_STATISTICS_INTERVAL 10000 90 91 #define VSOMEIP_DEFAULT_MAX_REMOTE_SUBSCRIBERS 3 92 93 #define VSOMEIP_MAX_WAIT_SENT 5 94 95 #define VSOMEIP_COMMAND_HEADER_SIZE 7 96 97 #define VSOMEIP_COMMAND_TYPE_POS 0 98 #define VSOMEIP_COMMAND_CLIENT_POS 1 99 #define VSOMEIP_COMMAND_SIZE_POS_MIN 3 100 #define VSOMEIP_COMMAND_SIZE_POS_MAX 6 101 #define VSOMEIP_COMMAND_PAYLOAD_POS 7 102 103 #define VSOMEIP_ASSIGN_CLIENT 0x00 104 #define VSOMEIP_ASSIGN_CLIENT_ACK 0x01 105 #define VSOMEIP_REGISTER_APPLICATION 0x02 106 #define VSOMEIP_DEREGISTER_APPLICATION 0x03 107 #define VSOMEIP_APPLICATION_LOST 0x04 108 #define VSOMEIP_ROUTING_INFO 0x05 109 #define VSOMEIP_REGISTERED_ACK 0x06 110 111 #define VSOMEIP_PING 0x0E 112 #define VSOMEIP_PONG 0x0F 113 114 #define VSOMEIP_OFFER_SERVICE 0x10 115 #define VSOMEIP_STOP_OFFER_SERVICE 0x11 116 #define VSOMEIP_SUBSCRIBE 0x12 117 #define VSOMEIP_UNSUBSCRIBE 0x13 118 #define VSOMEIP_REQUEST_SERVICE 0x14 119 #define VSOMEIP_RELEASE_SERVICE 0x15 120 #define VSOMEIP_SUBSCRIBE_NACK 0x16 121 #define VSOMEIP_SUBSCRIBE_ACK 0x17 122 123 #define VSOMEIP_SEND 0x18 124 #define VSOMEIP_NOTIFY 0x19 125 #define VSOMEIP_NOTIFY_ONE 0x1A 126 127 #define VSOMEIP_REGISTER_EVENT 0x1B 128 #define VSOMEIP_UNREGISTER_EVENT 0x1C 129 #define VSOMEIP_ID_RESPONSE 0x1D 130 #define VSOMEIP_ID_REQUEST 0x1E 131 #define VSOMEIP_OFFERED_SERVICES_REQUEST 0x1F 132 #define VSOMEIP_OFFERED_SERVICES_RESPONSE 0x20 133 #define VSOMEIP_UNSUBSCRIBE_ACK 0x21 134 #define VSOMEIP_RESEND_PROVIDED_EVENTS 0x22 135 136 #define VSOMEIP_UPDATE_SECURITY_POLICY 0x23 137 #define VSOMEIP_UPDATE_SECURITY_POLICY_RESPONSE 0x24 138 #define VSOMEIP_REMOVE_SECURITY_POLICY 0x25 139 #define VSOMEIP_REMOVE_SECURITY_POLICY_RESPONSE 0x26 140 #define VSOMEIP_UPDATE_SECURITY_CREDENTIALS 0x27 141 #define VSOMEIP_DISTRIBUTE_SECURITY_POLICIES 0x28 142 #define VSOMEIP_UPDATE_SECURITY_POLICY_INT 0x29 143 #define VSOMEIP_EXPIRED_SUBSCRIPTION 0x2A 144 145 #define VSOMEIP_SUSPEND 0x30 146 147 #define VSOMEIP_SEND_COMMAND_SIZE 13 148 #define VSOMEIP_SEND_COMMAND_INSTANCE_POS_MIN 7 149 #define VSOMEIP_SEND_COMMAND_INSTANCE_POS_MAX 8 150 #define VSOMEIP_SEND_COMMAND_RELIABLE_POS 9 151 #define VSOMEIP_SEND_COMMAND_CHECK_STATUS_POS 10 152 #define VSOMEIP_SEND_COMMAND_DST_CLIENT_POS_MIN 11 153 #define VSOMEIP_SEND_COMMAND_DST_CLIENT_POS_MAX 12 154 #define VSOMEIP_SEND_COMMAND_PAYLOAD_POS 13 155 156 #define VSOMEIP_ASSIGN_CLIENT_ACK_COMMAND_SIZE 9 157 #define VSOMEIP_OFFER_SERVICE_COMMAND_SIZE 16 158 #define VSOMEIP_REQUEST_SERVICE_COMMAND_SIZE 16 159 #define VSOMEIP_RELEASE_SERVICE_COMMAND_SIZE 11 160 #define VSOMEIP_STOP_OFFER_SERVICE_COMMAND_SIZE 16 161 #define VSOMEIP_SUBSCRIBE_COMMAND_SIZE 18 162 #define VSOMEIP_SUBSCRIBE_ACK_COMMAND_SIZE 19 163 #define VSOMEIP_SUBSCRIBE_NACK_COMMAND_SIZE 19 164 #define VSOMEIP_UNSUBSCRIBE_COMMAND_SIZE 17 165 #define VSOMEIP_UNSUBSCRIBE_ACK_COMMAND_SIZE 15 166 #define VSOMEIP_REGISTER_EVENT_COMMAND_SIZE 16 167 #define VSOMEIP_UNREGISTER_EVENT_COMMAND_SIZE 14 168 #define VSOMEIP_OFFERED_SERVICES_COMMAND_SIZE 8 169 #define VSOMEIP_RESEND_PROVIDED_EVENTS_COMMAND_SIZE 11 170 #define VSOMEIP_REMOVE_SECURITY_POLICY_COMMAND_SIZE 19 171 #define VSOMEIP_UPDATE_SECURITY_POLICY_RESPONSE_COMMAND_SIZE 11 172 #define VSOMEIP_REMOVE_SECURITY_POLICY_RESPONSE_COMMAND_SIZE 11 173 #define VSOMEIP_PING_COMMAND_SIZE 7 174 #define VSOMEIP_PONG_COMMAND_SIZE 7 175 #define VSOMEIP_REGISTER_APPLICATION_COMMAND_SIZE 7 176 #define VSOMEIP_DEREGISTER_APPLICATION_COMMAND_SIZE 7 177 #define VSOMEIP_REGISTERED_ACK_COMMAND_SIZE 7 178 #define VSOMEIP_EXPIRED_SUBSCRIPTION_COMMAND_SIZE 17 179 180 181 #ifndef _WIN32 182 #include <pthread.h> 183 #endif 184 185 #define VSOMEIP_DATA_ID 0x677D 186 #define VSOMEIP_DIAGNOSIS_ADDRESS 0x01 187 188 #define VSOMEIP_DEFAULT_SHM_PERMISSION 0666 189 #define VSOMEIP_DEFAULT_UDS_PERMISSIONS 0666 190 191 #define VSOMEIP_ROUTING_READY_MESSAGE "SOME/IP routing ready." 192 193 namespace vsomeip_v3 { 194 195 typedef enum { 196 RIE_ADD_CLIENT = 0x0, 197 RIE_ADD_SERVICE_INSTANCE = 0x1, 198 RIE_DEL_SERVICE_INSTANCE = 0x2, 199 RIE_DEL_CLIENT = 0x3, 200 } routing_info_entry_e; 201 202 struct service_data_t { 203 service_t service_; 204 instance_t instance_; 205 major_version_t major_; 206 minor_version_t minor_; 207 operator <vsomeip_v3::service_data_t208 bool operator<(const service_data_t &_other) const { 209 return (service_ < _other.service_ 210 || (service_ == _other.service_ 211 && instance_ < _other.instance_)); 212 } 213 }; 214 215 typedef enum { 216 SUBSCRIPTION_ACKNOWLEDGED, 217 SUBSCRIPTION_NOT_ACKNOWLEDGED, 218 IS_SUBSCRIBING 219 } subscription_state_e; 220 221 const std::uint32_t MESSAGE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)(); 222 223 const std::uint32_t QUEUE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)(); 224 225 #define VSOMEIP_DEFAULT_NPDU_DEBOUNCING_NANO 2 * 1000 * 1000 226 #define VSOMEIP_DEFAULT_NPDU_MAXIMUM_RETENTION_NANO 5 * 1000 * 1000 227 228 const std::uint32_t MAX_RECONNECTS_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)(); 229 230 const std::uint32_t ANY_UID = 0xFFFFFFFF; 231 const std::uint32_t ANY_GID = 0xFFFFFFFF; 232 233 typedef std::pair<std::uint32_t, std::uint32_t> credentials_t; 234 235 enum class port_type_e { 236 PT_OPTIONAL, 237 PT_SECURE, 238 PT_UNSECURE, 239 PT_UNKNOWN 240 }; 241 242 typedef uint8_t partition_id_t; 243 const partition_id_t VSOMEIP_DEFAULT_PARTITION_ID = 0; 244 245 } // namespace vsomeip_v3 246 247 #endif // VSOMEIP_V3_INTERNAL_HPP_ 248