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 "@DEFAULT_CONFIGURATION_FILE@" 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 "@DEFAULT_CONFIGURATION_FOLDER@" 26#define VSOMEIP_DEBUG_CONFIGURATION_FOLDER "/var/opt/public/sin/vsomeip/" 27#define VSOMEIP_LOCAL_CONFIGURATION_FOLDER "./vsomeip" 28 29#define VSOMEIP_BASE_PATH "@VSOMEIP_BASE_PATH@/" 30 31#ifdef _WIN32 32#define VSOMEIP_CFG_LIBRARY "vsomeip3-cfg.dll" 33#else 34#define VSOMEIP_CFG_LIBRARY "libvsomeip3-cfg.so.@VSOMEIP_MAJOR_VERSION@" 35#endif 36 37#ifdef _WIN32 38#define VSOMEIP_SD_LIBRARY "vsomeip3-sd.dll" 39#else 40#define VSOMEIP_SD_LIBRARY "libvsomeip3-sd.so.@VSOMEIP_MAJOR_VERSION@" 41#endif 42 43#ifdef _WIN32 44#define VSOMEIP_E2E_LIBRARY "vsomeip3-e2e.dll" 45#else 46#define VSOMEIP_E2E_LIBRARY "libvsomeip3-e2e.so.@VSOMEIP_MAJOR_VERSION@" 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 "@VSOMEIP_UNICAST_ADDRESS@" 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 @VSOMEIP_DIAGNOSIS_ADDRESS@ 187 188#define VSOMEIP_DEFAULT_SHM_PERMISSION 0666 189#define VSOMEIP_DEFAULT_UDS_PERMISSIONS 0666 190 191#define VSOMEIP_ROUTING_READY_MESSAGE "@VSOMEIP_ROUTING_READY_MESSAGE@" 192 193namespace vsomeip_v3 { 194 195typedef 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 202struct service_data_t { 203 service_t service_; 204 instance_t instance_; 205 major_version_t major_; 206 minor_version_t minor_; 207 208 bool operator<(const service_data_t &_other) const { 209 return (service_ < _other.service_ 210 || (service_ == _other.service_ 211 && instance_ < _other.instance_)); 212 } 213}; 214 215typedef enum { 216 SUBSCRIPTION_ACKNOWLEDGED, 217 SUBSCRIPTION_NOT_ACKNOWLEDGED, 218 IS_SUBSCRIBING 219} subscription_state_e; 220 221const std::uint32_t MESSAGE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)(); 222 223const 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 228const std::uint32_t MAX_RECONNECTS_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)(); 229 230const std::uint32_t ANY_UID = 0xFFFFFFFF; 231const std::uint32_t ANY_GID = 0xFFFFFFFF; 232 233typedef std::pair<std::uint32_t, std::uint32_t> credentials_t; 234 235enum class port_type_e { 236 PT_OPTIONAL, 237 PT_SECURE, 238 PT_UNSECURE, 239 PT_UNKNOWN 240}; 241 242typedef uint8_t partition_id_t; 243const partition_id_t VSOMEIP_DEFAULT_PARTITION_ID = 0; 244 245} // namespace vsomeip_v3 246 247#endif // VSOMEIP_V3_INTERNAL_HPP_ 248