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