blob: 7f98edf694950ecb6382090af00ad8e940c2ac63 [file] [log] [blame] [edit]
// Copyright (C) 2014-2019 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#ifndef VSOMEIP_V3_INTERNAL_HPP_
#define VSOMEIP_V3_INTERNAL_HPP_
#include <cstdint>
#include <limits>
#include <vsomeip/primitive_types.hpp>
#define VSOMEIP_ENV_APPLICATION_NAME "VSOMEIP_APPLICATION_NAME"
#define VSOMEIP_ENV_CONFIGURATION "VSOMEIP_CONFIGURATION"
#define VSOMEIP_ENV_CONFIGURATION_MODULE "VSOMEIP_CONFIGURATION_MODULE"
#define VSOMEIP_ENV_E2E_PROTECTION_MODULE "VSOMEIP_E2E_PROTECTION_MODULE"
#define VSOMEIP_ENV_MANDATORY_CONFIGURATION_FILES "VSOMEIP_MANDATORY_CONFIGURATION_FILES"
#define VSOMEIP_ENV_LOAD_PLUGINS "VSOMEIP_LOAD_PLUGINS"
#define VSOMEIP_ENV_CLIENTSIDELOGGING "VSOMEIP_CLIENTSIDELOGGING"
#define VSOMEIP_DEFAULT_CONFIGURATION_FILE "/etc/vsomeip.json"
#define VSOMEIP_LOCAL_CONFIGURATION_FILE "./vsomeip.json"
#define VSOMEIP_MANDATORY_CONFIGURATION_FILES "vsomeip_std.json,vsomeip_app.json,vsomeip_plc.json,vsomeip_log.json,vsomeip_security.json,vsomeip_whitelist.json"
#define VSOMEIP_DEFAULT_CONFIGURATION_FOLDER "/etc/vsomeip"
#define VSOMEIP_DEBUG_CONFIGURATION_FOLDER "/var/opt/public/sin/vsomeip/"
#define VSOMEIP_LOCAL_CONFIGURATION_FOLDER "./vsomeip"
#define VSOMEIP_BASE_PATH "/tmp/"
#ifdef _WIN32
#define VSOMEIP_CFG_LIBRARY "vsomeip3-cfg.dll"
#else
#define VSOMEIP_CFG_LIBRARY "libvsomeip3-cfg.so"
#endif
#ifdef _WIN32
#define VSOMEIP_SD_LIBRARY "vsomeip3-sd.dll"
#else
#define VSOMEIP_SD_LIBRARY "libvsomeip3-sd.so"
#endif
#ifdef _WIN32
#define VSOMEIP_E2E_LIBRARY "vsomeip3-e2e.dll"
#else
#define VSOMEIP_E2E_LIBRARY "libvsomeip3-e2e.so"
#endif
#define VSOMEIP_ROUTING_CLIENT 0
#define VSOMEIP_CLIENT_UNSET 0xFFFF
#ifdef _WIN32
#define VSOMEIP_INTERNAL_BASE_PORT 51234
#define __func__ __FUNCTION__
#endif
#define VSOMEIP_UNICAST_ADDRESS "127.0.0.1"
#define VSOMEIP_NETMASK "255.255.255.0"
#define VSOMEIP_DEFAULT_CONNECT_TIMEOUT 100
#define VSOMEIP_MAX_CONNECT_TIMEOUT 1600
#define VSOMEIP_DEFAULT_FLUSH_TIMEOUT 1000
#define VSOMEIP_DEFAULT_SHUTDOWN_TIMEOUT 5000
#define VSOMEIP_DEFAULT_QUEUE_WARN_SIZE 102400
#define VSOMEIP_MAX_TCP_CONNECT_TIME 5000
#define VSOMEIP_MAX_TCP_RESTART_ABORTS 5
#define VSOMEIP_MAX_TCP_SENT_WAIT_TIME 10000
#define VSOMEIP_DEFAULT_BUFFER_SHRINK_THRESHOLD 5
#define VSOMEIP_DEFAULT_WATCHDOG_TIMEOUT 5000
#define VSOMEIP_DEFAULT_MAX_MISSING_PONGS 3
#define VSOMEIP_DEFAULT_UDP_RCV_BUFFER_SIZE 1703936
#define VSOMEIP_IO_THREAD_COUNT 2
#define VSOMEIP_IO_THREAD_NICE_LEVEL 255
#define VSOMEIP_MAX_DISPATCHERS 10
#define VSOMEIP_MAX_DISPATCH_TIME 100
#define VSOMEIP_REQUEST_DEBOUNCE_TIME 10
#define VSOMEIP_DEFAULT_STATISTICS_MAX_MSG 50
#define VSOMEIP_DEFAULT_STATISTICS_MIN_FREQ 50
#define VSOMEIP_DEFAULT_STATISTICS_INTERVAL 10000
#define VSOMEIP_DEFAULT_MAX_REMOTE_SUBSCRIBERS 3
#define VSOMEIP_MAX_WAIT_SENT 5
#define VSOMEIP_COMMAND_HEADER_SIZE 7
#define VSOMEIP_COMMAND_TYPE_POS 0
#define VSOMEIP_COMMAND_CLIENT_POS 1
#define VSOMEIP_COMMAND_SIZE_POS_MIN 3
#define VSOMEIP_COMMAND_SIZE_POS_MAX 6
#define VSOMEIP_COMMAND_PAYLOAD_POS 7
#define VSOMEIP_ASSIGN_CLIENT 0x00
#define VSOMEIP_ASSIGN_CLIENT_ACK 0x01
#define VSOMEIP_REGISTER_APPLICATION 0x02
#define VSOMEIP_DEREGISTER_APPLICATION 0x03
#define VSOMEIP_APPLICATION_LOST 0x04
#define VSOMEIP_ROUTING_INFO 0x05
#define VSOMEIP_REGISTERED_ACK 0x06
#define VSOMEIP_PING 0x0E
#define VSOMEIP_PONG 0x0F
#define VSOMEIP_OFFER_SERVICE 0x10
#define VSOMEIP_STOP_OFFER_SERVICE 0x11
#define VSOMEIP_SUBSCRIBE 0x12
#define VSOMEIP_UNSUBSCRIBE 0x13
#define VSOMEIP_REQUEST_SERVICE 0x14
#define VSOMEIP_RELEASE_SERVICE 0x15
#define VSOMEIP_SUBSCRIBE_NACK 0x16
#define VSOMEIP_SUBSCRIBE_ACK 0x17
#define VSOMEIP_SEND 0x18
#define VSOMEIP_NOTIFY 0x19
#define VSOMEIP_NOTIFY_ONE 0x1A
#define VSOMEIP_REGISTER_EVENT 0x1B
#define VSOMEIP_UNREGISTER_EVENT 0x1C
#define VSOMEIP_ID_RESPONSE 0x1D
#define VSOMEIP_ID_REQUEST 0x1E
#define VSOMEIP_OFFERED_SERVICES_REQUEST 0x1F
#define VSOMEIP_OFFERED_SERVICES_RESPONSE 0x20
#define VSOMEIP_UNSUBSCRIBE_ACK 0x21
#define VSOMEIP_RESEND_PROVIDED_EVENTS 0x22
#define VSOMEIP_UPDATE_SECURITY_POLICY 0x23
#define VSOMEIP_UPDATE_SECURITY_POLICY_RESPONSE 0x24
#define VSOMEIP_REMOVE_SECURITY_POLICY 0x25
#define VSOMEIP_REMOVE_SECURITY_POLICY_RESPONSE 0x26
#define VSOMEIP_UPDATE_SECURITY_CREDENTIALS 0x27
#define VSOMEIP_DISTRIBUTE_SECURITY_POLICIES 0x28
#define VSOMEIP_UPDATE_SECURITY_POLICY_INT 0x29
#define VSOMEIP_EXPIRED_SUBSCRIPTION 0x2A
#define VSOMEIP_SUSPEND 0x30
#define VSOMEIP_SEND_COMMAND_SIZE 13
#define VSOMEIP_SEND_COMMAND_INSTANCE_POS_MIN 7
#define VSOMEIP_SEND_COMMAND_INSTANCE_POS_MAX 8
#define VSOMEIP_SEND_COMMAND_RELIABLE_POS 9
#define VSOMEIP_SEND_COMMAND_CHECK_STATUS_POS 10
#define VSOMEIP_SEND_COMMAND_DST_CLIENT_POS_MIN 11
#define VSOMEIP_SEND_COMMAND_DST_CLIENT_POS_MAX 12
#define VSOMEIP_SEND_COMMAND_PAYLOAD_POS 13
#define VSOMEIP_ASSIGN_CLIENT_ACK_COMMAND_SIZE 9
#define VSOMEIP_OFFER_SERVICE_COMMAND_SIZE 16
#define VSOMEIP_REQUEST_SERVICE_COMMAND_SIZE 16
#define VSOMEIP_RELEASE_SERVICE_COMMAND_SIZE 11
#define VSOMEIP_STOP_OFFER_SERVICE_COMMAND_SIZE 16
#define VSOMEIP_SUBSCRIBE_COMMAND_SIZE 18
#define VSOMEIP_SUBSCRIBE_ACK_COMMAND_SIZE 19
#define VSOMEIP_SUBSCRIBE_NACK_COMMAND_SIZE 19
#define VSOMEIP_UNSUBSCRIBE_COMMAND_SIZE 17
#define VSOMEIP_UNSUBSCRIBE_ACK_COMMAND_SIZE 15
#define VSOMEIP_REGISTER_EVENT_COMMAND_SIZE 16
#define VSOMEIP_UNREGISTER_EVENT_COMMAND_SIZE 14
#define VSOMEIP_OFFERED_SERVICES_COMMAND_SIZE 8
#define VSOMEIP_RESEND_PROVIDED_EVENTS_COMMAND_SIZE 11
#define VSOMEIP_REMOVE_SECURITY_POLICY_COMMAND_SIZE 19
#define VSOMEIP_UPDATE_SECURITY_POLICY_RESPONSE_COMMAND_SIZE 11
#define VSOMEIP_REMOVE_SECURITY_POLICY_RESPONSE_COMMAND_SIZE 11
#define VSOMEIP_PING_COMMAND_SIZE 7
#define VSOMEIP_PONG_COMMAND_SIZE 7
#define VSOMEIP_REGISTER_APPLICATION_COMMAND_SIZE 7
#define VSOMEIP_DEREGISTER_APPLICATION_COMMAND_SIZE 7
#define VSOMEIP_REGISTERED_ACK_COMMAND_SIZE 7
#define VSOMEIP_EXPIRED_SUBSCRIPTION_COMMAND_SIZE 17
#ifndef _WIN32
#include <pthread.h>
#endif
#define VSOMEIP_DATA_ID 0x677D
#define VSOMEIP_DIAGNOSIS_ADDRESS 0x01
#define VSOMEIP_DEFAULT_SHM_PERMISSION 0666
#define VSOMEIP_DEFAULT_UDS_PERMISSIONS 0666
#define VSOMEIP_ROUTING_READY_MESSAGE "SOME/IP routing ready."
namespace vsomeip_v3 {
typedef enum {
RIE_ADD_CLIENT = 0x0,
RIE_ADD_SERVICE_INSTANCE = 0x1,
RIE_DEL_SERVICE_INSTANCE = 0x2,
RIE_DEL_CLIENT = 0x3,
} routing_info_entry_e;
struct service_data_t {
service_t service_;
instance_t instance_;
major_version_t major_;
minor_version_t minor_;
bool operator<(const service_data_t &_other) const {
return (service_ < _other.service_
|| (service_ == _other.service_
&& instance_ < _other.instance_));
}
};
typedef enum {
SUBSCRIPTION_ACKNOWLEDGED,
SUBSCRIPTION_NOT_ACKNOWLEDGED,
IS_SUBSCRIBING
} subscription_state_e;
const std::uint32_t MESSAGE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)();
const std::uint32_t QUEUE_SIZE_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)();
#define VSOMEIP_DEFAULT_NPDU_DEBOUNCING_NANO 2 * 1000 * 1000
#define VSOMEIP_DEFAULT_NPDU_MAXIMUM_RETENTION_NANO 5 * 1000 * 1000
const std::uint32_t MAX_RECONNECTS_UNLIMITED = (std::numeric_limits<std::uint32_t>::max)();
const std::uint32_t ANY_UID = 0xFFFFFFFF;
const std::uint32_t ANY_GID = 0xFFFFFFFF;
typedef std::pair<std::uint32_t, std::uint32_t> credentials_t;
enum class port_type_e {
PT_OPTIONAL,
PT_SECURE,
PT_UNSECURE,
PT_UNKNOWN
};
typedef uint8_t partition_id_t;
const partition_id_t VSOMEIP_DEFAULT_PARTITION_ID = 0;
} // namespace vsomeip_v3
#endif // VSOMEIP_V3_INTERNAL_HPP_