diff options
Diffstat (limited to 'interface')
-rw-r--r-- | interface/vsomeip/application.hpp | 52 | ||||
-rw-r--r-- | interface/vsomeip/configuration.hpp | 93 | ||||
-rw-r--r-- | interface/vsomeip/constants.hpp | 7 | ||||
-rw-r--r-- | interface/vsomeip/defines.hpp | 8 | ||||
-rw-r--r-- | interface/vsomeip/enumeration_types.hpp | 6 | ||||
-rw-r--r-- | interface/vsomeip/handler.hpp | 2 | ||||
-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.hpp | 48 | ||||
-rw-r--r-- | interface/vsomeip/message_base.hpp | 5 | ||||
-rw-r--r-- | interface/vsomeip/payload.hpp | 5 | ||||
-rw-r--r-- | interface/vsomeip/runtime.hpp | 6 | ||||
-rw-r--r-- | interface/vsomeip/vsomeip.hpp | 5 |
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> |