summaryrefslogtreecommitdiff
path: root/interface
diff options
context:
space:
mode:
authorDirk Huss <dirk_huss@mentor.com>2015-11-25 15:11:49 +0100
committerDirk Huss <dirk_huss@mentor.com>2015-11-25 15:11:49 +0100
commit78be04b467566633318a277ccd2d968c1c4e46bf (patch)
tree444ef60cfdca2cc80d584f26911fb08b93a034b9 /interface
parent40d4759f262a86bcebaf3a91d9d813f4d6a3ae10 (diff)
downloadvSomeIP-78be04b467566633318a277ccd2d968c1c4e46bf.tar.gz
vSomeIP 2.0.02.0.0
Diffstat (limited to 'interface')
-rw-r--r--interface/vsomeip/application.hpp52
-rw-r--r--interface/vsomeip/configuration.hpp93
-rw-r--r--interface/vsomeip/constants.hpp7
-rw-r--r--interface/vsomeip/defines.hpp8
-rw-r--r--interface/vsomeip/enumeration_types.hpp6
-rw-r--r--interface/vsomeip/handler.hpp2
-rw-r--r--interface/vsomeip/internal/deserializable.hpp (renamed from interface/vsomeip/deserializable.hpp)0
-rw-r--r--interface/vsomeip/internal/serializable.hpp (renamed from interface/vsomeip/serializable.hpp)9
-rw-r--r--interface/vsomeip/logger.hpp48
-rw-r--r--interface/vsomeip/message_base.hpp5
-rw-r--r--interface/vsomeip/payload.hpp5
-rw-r--r--interface/vsomeip/runtime.hpp6
-rw-r--r--interface/vsomeip/vsomeip.hpp5
13 files changed, 64 insertions, 182 deletions
diff --git a/interface/vsomeip/application.hpp b/interface/vsomeip/application.hpp
index 98ee93d..f08a91d 100644
--- a/interface/vsomeip/application.hpp
+++ b/interface/vsomeip/application.hpp
@@ -7,6 +7,7 @@
#define VSOMEIP_APPLICATION_HPP
#include <memory>
+#include <set>
#include <vsomeip/primitive_types.hpp>
#include <vsomeip/enumeration_types.hpp>
@@ -15,18 +16,20 @@
namespace vsomeip {
+class configuration;
class event;
class payload;
class application {
public:
- virtual ~application() {
- }
+ virtual ~application() {}
// get name
virtual const std::string & get_name() const = 0;
virtual client_t get_client() const = 0;
+ virtual void set_configuration(const std::shared_ptr<configuration> _configuration) = 0;
+
// Lifecycle
virtual bool init() = 0;
virtual void start() = 0;
@@ -35,56 +38,71 @@ public:
// Provide services
virtual void offer_service(service_t _service, instance_t _instance,
major_version_t _major = DEFAULT_MAJOR, minor_version_t _minor =
- DEFAULT_MINOR, ttl_t _ttl = DEFAULT_TTL) = 0;
+ DEFAULT_MINOR) = 0;
virtual void stop_offer_service(service_t _service,
instance_t _instance) = 0;
+ virtual void offer_event(service_t _service,
+ instance_t _instance, event_t _event,
+ std::set<eventgroup_t> _eventgroups,
+ bool _is_field) = 0;
+ virtual void stop_offer_event(service_t _service,
+ instance_t _instance, event_t _event) = 0;
+
// Consume services
virtual void request_service(service_t _service, instance_t _instance,
- bool _has_selective = false, major_version_t _major = ANY_MAJOR,
- minor_version_t _minor = ANY_MINOR, ttl_t _ttl = ANY_TTL) = 0;
-
+ major_version_t _major = ANY_MAJOR,
+ minor_version_t _minor = ANY_MINOR,
+ bool _use_exclusive_proxy = false) = 0;
virtual void release_service(service_t _service, instance_t _instance) = 0;
+ virtual void request_event(service_t _service, instance_t _instance,
+ event_t _event, std::set<eventgroup_t> _eventgroups,
+ bool _is_field) = 0;
+ virtual void release_event(service_t _service, instance_t _instance,
+ event_t _event) = 0;
+
virtual void subscribe(service_t _service, instance_t _instance,
- eventgroup_t _eventgroup, major_version_t _major = ANY_MAJOR,
- ttl_t _ttl = ANY_TTL) = 0;
+ eventgroup_t _eventgroup, major_version_t _major = DEFAULT_MAJOR) = 0;
virtual void unsubscribe(service_t _service, instance_t _instance,
eventgroup_t _eventgroup) = 0;
- virtual bool is_available(service_t _service, instance_t _instance) = 0;
+ virtual bool is_available(service_t _service, instance_t _instance) const = 0;
// Send a message
virtual void send(std::shared_ptr<message> _message, bool _flush = true) = 0;
- // Notify subscribers in case an event payload changes
+ // Set a field or fire an event
virtual void notify(service_t _service, instance_t _instance,
event_t _event, std::shared_ptr<payload> _payload) const = 0;
virtual void notify_one(service_t _service, instance_t _instance,
- event_t _event, std::shared_ptr<payload> _payload, client_t _client) const = 0;
+ event_t _event, std::shared_ptr<payload> _payload,
+ client_t _client) const = 0;
- // Receive events (Non-SOME/IP)
- virtual void register_event_handler(event_handler_t _handler) = 0;
- virtual void unregister_event_handler() = 0;
+ // [Un]Register handler for state change events
+ virtual void register_state_handler(state_handler_t _handler) = 0;
+ virtual void unregister_state_handler() = 0;
- // Receive messages
+ // [Un]Register message handler for a method/an event/field
virtual void register_message_handler(service_t _service,
instance_t _instance, method_t _method,
message_handler_t _handler) = 0;
virtual void unregister_message_handler(service_t _service,
instance_t _instance, method_t _method) = 0;
- // Receive availability
+ // [Un]Register handler for availability reporting
virtual void register_availability_handler(service_t _service,
instance_t _instance, availability_handler_t _handler) = 0;
virtual void unregister_availability_handler(service_t _service,
instance_t _instance) = 0;
+ // [Un]Register handler for subscriptions
virtual void register_subscription_handler(service_t _service,
- instance_t _instance, eventgroup_t _eventgroup, subscription_handler_t _handler) = 0;
+ instance_t _instance, eventgroup_t _eventgroup,
+ subscription_handler_t _handler) = 0;
virtual void unregister_subscription_handler(service_t _service,
instance_t _instance, eventgroup_t _eventgroup) = 0;
};
diff --git a/interface/vsomeip/configuration.hpp b/interface/vsomeip/configuration.hpp
deleted file mode 100644
index 7eb81fc..0000000
--- a/interface/vsomeip/configuration.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (C) 2014-2015 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_CONFIGURATION_HPP
-#define VSOMEIP_CONFIGURATION_HPP
-
-#include <map>
-#include <memory>
-#include <set>
-#include <string>
-
-#include <boost/asio/ip/address.hpp>
-#include <boost/log/trivial.hpp>
-
-#include <vsomeip/export.hpp>
-#include <vsomeip/defines.hpp>
-#include <vsomeip/primitive_types.hpp>
-
-namespace vsomeip {
-
-class event;
-
-class VSOMEIP_EXPORT configuration {
-public:
- static configuration * get(const std::string &_path =
- VSOMEIP_DEFAULT_CONFIGURATION_FILE_PATH);
- virtual ~configuration() {
- }
-
- virtual bool load(const std::string &_path) = 0;
-
- virtual const boost::asio::ip::address & get_unicast() const = 0;
- virtual bool is_v4() const = 0;
- virtual bool is_v6() const = 0;
-
- virtual bool has_console_log() const = 0;
- virtual bool has_file_log() const = 0;
- virtual bool has_dlt_log() const = 0;
- virtual const std::string & get_logfile() const = 0;
- virtual boost::log::trivial::severity_level get_loglevel() const = 0;
-
- virtual const std::string & get_routing_host() const = 0;
-
- virtual bool is_service_discovery_enabled() const = 0;
- virtual const std::string & get_service_discovery_multicast() const = 0;
- virtual uint16_t get_service_discovery_port() const = 0;
- virtual const std::string & get_service_discovery_protocol() const = 0;
-
- virtual std::string get_group(service_t _service,
- instance_t _instance) const = 0;
- virtual std::set<std::string> get_servicegroups() const = 0;
-
- virtual bool is_local_servicegroup(const std::string &_name) const = 0;
- virtual int32_t get_min_initial_delay(const std::string &_name) const = 0;
- virtual int32_t get_max_initial_delay(const std::string &_name) const = 0;
- virtual int32_t get_repetition_base_delay(
- const std::string &_name) const = 0;
- virtual uint8_t get_repetition_max(const std::string &_name) const = 0;
- virtual int32_t get_cyclic_offer_delay(const std::string &_name) const = 0;
- virtual int32_t get_cyclic_request_delay(
- const std::string &_name) const = 0;
-
- virtual std::string get_unicast(service_t _service,
- instance_t _instance) const = 0;
- virtual std::string get_multicast_address(service_t _service,
- instance_t _instance) const = 0;
- virtual uint16_t get_multicast_port(service_t _service,
- instance_t _instance) const = 0;
- virtual uint16_t get_multicast_group(service_t _service,
- instance_t _instance) const = 0;
- virtual uint16_t get_reliable_port(service_t _service,
- instance_t _instance) const = 0;
- virtual bool has_enabled_magic_cookies(std::string _address,
- uint16_t _port) const = 0;
- virtual uint16_t get_unreliable_port(service_t _service,
- instance_t _instance) const = 0;
-
- virtual std::set<std::pair<service_t, instance_t> > get_remote_services() const = 0;
-
- virtual std::map<service_t,
- std::map<instance_t, std::map<eventgroup_t, std::set<event_t> > > > get_eventgroups() const = 0;
- virtual std::map<service_t, std::map<instance_t, std::set<event_t> > > get_events() const = 0;
- virtual void set_event(std::shared_ptr<event> &_event) const = 0;
-
- virtual client_t get_id(const std::string &_name) const = 0;
- virtual std::size_t get_num_dispatchers(const std::string &_name) const = 0;
-};
-
-} // namespace vsomeip
-
-#endif // VSOMEIP_CONFIGURATION_HPP
diff --git a/interface/vsomeip/constants.hpp b/interface/vsomeip/constants.hpp
index fb947b8..8062b12 100644
--- a/interface/vsomeip/constants.hpp
+++ b/interface/vsomeip/constants.hpp
@@ -13,9 +13,9 @@
namespace vsomeip {
-const major_version_t DEFAULT_MAJOR = 0x01;
+const major_version_t DEFAULT_MAJOR = 0x00;
const minor_version_t DEFAULT_MINOR = 0x000000;
-const ttl_t DEFAULT_TTL = 0xFFFFFF; // basically means "forever"
+const ttl_t DEFAULT_TTL = 0xFFFFFF; // "until next reboot"
const std::string DEFAULT_MULTICAST = "224.0.0.0";
const uint16_t DEFAULT_PORT = 30500;
@@ -26,7 +26,8 @@ const instance_t ANY_INSTANCE = 0xFFFF;
const method_t ANY_METHOD = 0xFFFF;
const major_version_t ANY_MAJOR = 0xFF;
const minor_version_t ANY_MINOR = 0xFFFFFF;
-const ttl_t ANY_TTL = 1;
+
+const eventgroup_t DEFAULT_EVENTGROUP = 0x0001;
const byte_t MAGIC_COOKIE_CLIENT_MESSAGE = 0x00;
const byte_t MAGIC_COOKIE_SERVICE_MESSAGE = 0x80;
diff --git a/interface/vsomeip/defines.hpp b/interface/vsomeip/defines.hpp
index 598bb25..d384d50 100644
--- a/interface/vsomeip/defines.hpp
+++ b/interface/vsomeip/defines.hpp
@@ -6,14 +6,6 @@
#ifndef VSOMEIP_DEFINES_HPP
#define VSOMEIP_DEFINES_HPP
-#define VSOMEIP_ENV_APPLICATION_NAME "VSOMEIP_APPLICATION_NAME"
-#define VSOMEIP_ENV_CONFIGURATION_FILE_PATH "VSOMEIP_CONFIGURATION_FILE"
-
-#define VSOMEIP_DEFAULT_CONFIGURATION_FILE_PATH "/etc/vsomeip.json"
-#define VSOMEIP_LOCAL_CONFIGURATION_FILE_PATH "./vsomeip.json"
-
-#define VSOMEIP_BASE_PATH "/tmp/vsomeip-"
-
#define VSOMEIP_PROTOCOL_VERSION 0x1
#define VSOMEIP_MAX_LOCAL_MESSAGE_SIZE 32768
diff --git a/interface/vsomeip/enumeration_types.hpp b/interface/vsomeip/enumeration_types.hpp
index 51c3df1..8be8413 100644
--- a/interface/vsomeip/enumeration_types.hpp
+++ b/interface/vsomeip/enumeration_types.hpp
@@ -10,9 +10,9 @@
namespace vsomeip {
-enum class event_type_e : uint8_t {
- ET_REGISTERED = 0x0,
- ET_DEREGISTERED = 0x1
+enum class state_type_e : uint8_t {
+ ST_REGISTERED = 0x0,
+ ST_DEREGISTERED = 0x1
};
// SIP_RPC_684
diff --git a/interface/vsomeip/handler.hpp b/interface/vsomeip/handler.hpp
index 29df46a..a703569 100644
--- a/interface/vsomeip/handler.hpp
+++ b/interface/vsomeip/handler.hpp
@@ -15,7 +15,7 @@ namespace vsomeip {
class message;
-typedef std::function< void (event_type_e) > event_handler_t;
+typedef std::function< void (state_type_e) > state_handler_t;
typedef std::function< void (const std::shared_ptr< message > &) > message_handler_t;
typedef std::function< void (service_t, instance_t, bool) > availability_handler_t;
typedef std::function< bool (client_t, bool) > subscription_handler_t;
diff --git a/interface/vsomeip/deserializable.hpp b/interface/vsomeip/internal/deserializable.hpp
index fb11dfd..fb11dfd 100644
--- a/interface/vsomeip/deserializable.hpp
+++ b/interface/vsomeip/internal/deserializable.hpp
diff --git a/interface/vsomeip/serializable.hpp b/interface/vsomeip/internal/serializable.hpp
index 4cab10f..4c22bf7 100644
--- a/interface/vsomeip/serializable.hpp
+++ b/interface/vsomeip/internal/serializable.hpp
@@ -12,11 +12,16 @@ namespace vsomeip {
class serializer;
+/**
+ * Abstract base class for element that can be serialized.
+ */
class serializable {
public:
- VSOMEIP_EXPORT virtual ~serializable() {
- }
+ VSOMEIP_EXPORT virtual ~serializable() {}
+ /**
+ * \brief serialize the content of the object
+ */
VSOMEIP_EXPORT virtual bool serialize(serializer *_to) const = 0;
};
diff --git a/interface/vsomeip/logger.hpp b/interface/vsomeip/logger.hpp
deleted file mode 100644
index 555f15e..0000000
--- a/interface/vsomeip/logger.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (C) 2014-2015 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_LOGGER_HPP
-#define VSOMEIP_LOGGER_HPP
-
-#include <string>
-
-#ifdef WIN32
-#include <iostream>
-#endif
-
-#include <vsomeip/export.hpp>
-
-#include <boost/log/sources/severity_logger.hpp>
-#include <boost/log/trivial.hpp>
-
-namespace vsomeip {
-
-class VSOMEIP_EXPORT logger {
-public:
- static std::shared_ptr<logger> get();
-
- virtual ~logger() {
- }
-
- virtual boost::log::sources::severity_logger<
- boost::log::trivial::severity_level> & get_internal() = 0;
-};
-
-#define VSOMEIP_FATAL BOOST_LOG_SEV(vsomeip::logger::get()->get_internal(), \
- boost::log::trivial::severity_level::fatal)
-#define VSOMEIP_ERROR BOOST_LOG_SEV(vsomeip::logger::get()->get_internal(), \
- boost::log::trivial::severity_level::error)
-#define VSOMEIP_WARNING BOOST_LOG_SEV(vsomeip::logger::get()->get_internal(), \
- boost::log::trivial::severity_level::warning)
-#define VSOMEIP_INFO BOOST_LOG_SEV(vsomeip::logger::get()->get_internal(), \
- boost::log::trivial::severity_level::info)
-#define VSOMEIP_DEBUG BOOST_LOG_SEV(vsomeip::logger::get()->get_internal(), \
- boost::log::trivial::severity_level::debug)
-#define VSOMEIP_TRACE BOOST_LOG_SEV(vsomeip::logger::get()->get_internal(), \
- boost::log::trivial::severity_level::trace)
-
-} // namespace vsomeip
-
-#endif // VSOMEIP_LOGGER_HPP
diff --git a/interface/vsomeip/message_base.hpp b/interface/vsomeip/message_base.hpp
index 9b464c7..225ec19 100644
--- a/interface/vsomeip/message_base.hpp
+++ b/interface/vsomeip/message_base.hpp
@@ -9,8 +9,9 @@
#include <vsomeip/export.hpp>
#include <vsomeip/primitive_types.hpp>
#include <vsomeip/enumeration_types.hpp>
-#include <vsomeip/deserializable.hpp>
-#include <vsomeip/serializable.hpp>
+
+#include <vsomeip/internal/deserializable.hpp>
+#include <vsomeip/internal/serializable.hpp>
namespace vsomeip {
diff --git a/interface/vsomeip/payload.hpp b/interface/vsomeip/payload.hpp
index 9c85906..693d5ba 100644
--- a/interface/vsomeip/payload.hpp
+++ b/interface/vsomeip/payload.hpp
@@ -9,9 +9,10 @@
#include <vector>
#include <vsomeip/export.hpp>
-#include <vsomeip/deserializable.hpp>
#include <vsomeip/primitive_types.hpp>
-#include <vsomeip/serializable.hpp>
+
+#include <vsomeip/internal/deserializable.hpp>
+#include <vsomeip/internal/serializable.hpp>
namespace vsomeip {
diff --git a/interface/vsomeip/runtime.hpp b/interface/vsomeip/runtime.hpp
index cb3f6f6..fb9c2ab 100644
--- a/interface/vsomeip/runtime.hpp
+++ b/interface/vsomeip/runtime.hpp
@@ -11,7 +11,6 @@
#include <vector>
#include <vsomeip/export.hpp>
-
#include <vsomeip/primitive_types.hpp>
namespace vsomeip {
@@ -28,7 +27,7 @@ public:
}
virtual std::shared_ptr<application> create_application(
- const std::string &_name = "") const = 0;
+ const std::string &_name = "") = 0;
virtual std::shared_ptr<message> create_message(
bool _reliable = false) const = 0;
@@ -44,6 +43,9 @@ public:
const byte_t *_data, uint32_t _size) const = 0;
virtual std::shared_ptr<payload> create_payload(
const std::vector<byte_t> &_data) const = 0;
+
+ virtual std::shared_ptr<application> get_application(
+ const std::string &_name) const = 0;
};
} // namespace vsomeip
diff --git a/interface/vsomeip/vsomeip.hpp b/interface/vsomeip/vsomeip.hpp
index 9d7cb56..3ee5819 100644
--- a/interface/vsomeip/vsomeip.hpp
+++ b/interface/vsomeip/vsomeip.hpp
@@ -6,10 +6,13 @@
#ifndef VSOMEIP_VSOMEIP_HPP
#define VSOMEIP_VSOMEIP_HPP
+/**
+ * \brief The central vsomeip header. Include this to use vsomeip.
+ */
+
#include <vsomeip/constants.hpp>
#include <vsomeip/defines.hpp>
#include <vsomeip/application.hpp>
-#include <vsomeip/logger.hpp>
#include <vsomeip/message.hpp>
#include <vsomeip/payload.hpp>
#include <vsomeip/runtime.hpp>