Copyright © GENIVI Alliance 2015

Slides:



Advertisements
Similar presentations
IVOA Beijing Interop May 15-16, 2007 Apps Messaging Issues.
Advertisements

Status on the Mapping of Metadata Standards
Three types of remote process invocation
Improving Learning Object Description Mechanisms to Support an Integrated Framework for Ubiquitous Learning Scenarios María Felisa Verdejo Carlos Celorrio.
Introduction to Web Services Protocols. Talk titledate2 Communication and standards Efficient (or indeed any) communication is dependent on a shared vocabulary.
CACORE TOOLS FEATURES. caCORE SDK Features caCORE Workbench Plugin EA/ArgoUML Plug-in development Integrated support of semantic integration in the plugin.
Programming Paradigms and languages
Software Frame Simulator (SFS) Technion CS Computer Communications Lab (236340) in cooperation with ECI telecom Uri Ferri & Ynon Cohen January 2007.
Copyright © 2001 Qusay H. Mahmoud RMI – Remote Method Invocation Introduction What is RMI? RMI System Architecture How does RMI work? Distributed Garbage.
GridRPC Sources / Credits: IRISA/IFSIC IRISA/INRIA Thierry Priol et. al papers.
Remote Procedure CallCS-4513, D-Term Remote Procedure Call CS-4513 Distributed Computing Systems (Slides include materials from Operating System.
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Netprog RPC Overview1 Distributed Program Design n Communication-Oriented Design –Design protocol first. –Build programs that adhere to the protocol.
Remote Procedure Calls. 2 Client/Server Paradigm Common model for structuring distributed computations A server is a program (or collection of programs)
A Framework for Smart Proxies and Interceptors in RMI Nuno Santos P. Marques, L. Silva CISUC, University of Coimbra, Portugal
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Lecture Roger Sutton CO530 Automation Tools 5: Class Libraries and Assemblies 1.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Presented by: Katie Milanowski. 2  Formed in 1982  Bruce Barrington (HBO & Company)  Apply RAD technology to IBM PC  1986: Clarion Version 1.0, Atlanta,
1 3. Implementing Web Services 1.Create SOAP proxy interfaces and WSDL based service descriptions 2.Register/publish services 3.Stores service descriptions.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
CS 603 DCOM April 5, DCOM – What is it? Start with COM – Component Object Model –Language-independent object interface Add interprocess communication.
11 September 2008CIS 340 # 1 Topics To examine the variety of approaches to handle the middle- interaction (continued) 1.RPC-based systems 2.TP monitors.
.NET Framework Danish Sami UG Lead.NetFoundry
Introduction to Distributed Systems Slides for CSCI 3171 Lectures E. W. Grundke.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
© 2004 Mercury Computer Systems, Inc. FPGAs & Software Components Graham Bardouleau & Jim Kulp Mercury Computer Systems, Inc. High Performance Embedded.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
PI Data Archive Server COM Points Richard Beeson.
Office Business Applications Workshop Defining Business Process and Workflows.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved RPC Tanenbaum.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 14 Threads 2 Read Ch.
1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Programming HeuristicLab Basics A. Scheibenpflug Heuristic and Evolutionary Algorithms Laboratory (HEAL) School of Informatics/Communications/Media, Campus.
ICM – API Server Gary Ratcliffe. 2 Agenda Webinar Programme API Server Overview JSON-RPC iCM API Service API Server and Forms New services under.
Chapter 5 Classes and Methods II Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition) by S.N. Kamin, D. Mickunas, E.
Computer Science Lecture 3, page 1 CS677: Distributed OS Last Class: Communication in Distributed Systems Structured or unstructured? Addressing? Blocking/non-blocking?
.NET Mobile Application Development XML Web Services.
EGEE is a project funded by the European Union under contract IST Introduction to Web Services 3 – 4 June
THE EYESWEB PLATFORM - GDE The EyesWeb XMI multimodal platform GDE 5 March 2015.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
Nguyen Thi Thanh Nha HMCL by Roelof Kemp, Nicholas Palmer, Thilo Kielmann, and Henri Bal MOBICASE 2010, LNICST 2012 Cuckoo: A Computation Offloading Framework.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
TTCN-3 Testing and Test Control Notation Version 3.
Computer Science Lecture 4, page 1 CS677: Distributed OS Last Class: RPCs RPCs make distributed computations look like local computations Issues: –Parameter.
Java Distributed Computing
GENIVI – W3C Collaboration October 10, 2017 | AMM Seoul
Data Transport for Online & Offline Processing
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Java Distributed Computing
In-situ Visualization using VisIt
CORBA Alegria Baquero.
Realizing Concurrency using Posix Threads (pthreads)
CORBA Alegria Baquero.
Realizing Concurrency using the thread model
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
TTCN-3 Status Report.
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Remote Procedure Call Hank Levy 1.
Introduction to Web Services
Realizing Concurrency using Posix Threads (pthreads)
Realizing Concurrency using the thread model
Remote Procedure Call Hank Levy 1.
Remote Procedure Call Hank Levy 1.
Franca+ Bernhard Hennlich and Manfred Bathelt
Presentation transcript:

Copyright © GENIVI Alliance 2015 CommonAPI C++ Update 21-Oct-15 Jürgen Gehring BMW Group Dashboard image reproduced with the permission of Visteon and 3M Corporation GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

Copyright © GENIVI Alliance 2015 Content CommonAPI C++ 3 Introduction New Features / API Changes Roadmap yamaica Overview and Roadmap GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ Basic Features High-level, thread-safe C++ API for IPC Adaption of application code to specific IPC by CommonAPI bindings Actual support for D-Bus (libdbus) and SOME/IP Franca IDL base code generator (actual Franca 0.9.1) High performant implementation using C++ templates GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ Documentation / Links Wiki: https://genivi- ss.atlassian.net/wiki/display/COMMONAPICPP/CommonAPI-cpp Specification / UserGuides: http://docs.projects.genivi.org/ipc.common-api-tools/ (see binding specific tools projects for binding specific documentation) Source code: http://git.projects.genivi.org/ (note that the SOME/IP stack for CommonAPI C++ SOME/IP is vsomeip). Executable Code Generators: http://docs.projects.genivi.org/yamaica-update- site/CommonAPI/generator/ GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 and yamaica User API yamaica CommonAPI Generated Code CommonAPI Code Generator CommonAPI Tools Tool for editing and transforming interface descriptions based on Eclipse Modeling Tools, Xtext and Xtend. CommonAPI Runtime CommonAPI Binding Generated Code CommonAPI Binding Code Generator CommonAPI D-Bus Tools CommonAPI SOME/IP Tools CommonAPI Binding Runtime yamaica- ea IPC Stack Franca Wire IPC GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 New Features New concept for generic integration of deployment parameters CommonAPI C++ logging (supports integration with DLT) Enhanced code generator features New runtime loading concept Multi-version support Asynchronous stubs New configuration parameters (e.g. timeouts) SOME/IP binding GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 Deployment Parameters Core Deployment Specification /org.genivi.commonapi.core/deployment/CommonAPI_deployment_spec.fdepl import import /org.genivi.commonapi.core/deployment/CommonAPI_deployment_spec.fdepl D-Bus Deployment Specification SOME/IP Deployment Specification /org.genivi.commonapi.core/deployment/CommonAPI_deployment_spec.fdepl Supported CommonAPI 3 deployment parameters specified in *_spec.fdepl Deployment parameters cover serialization parameters (e.g. string encoding) and deployment parameters like instance names For SOME/IP a deployment specification is mandatory (the SOME/IP code generator can only be started with a fdepl-file GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 Core Deployment specification org.genivi.commonapi.core.deployment { for interfaces { DefaultEnumBackingType : {UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64} (default: UInt32); } for providers { ClientInstanceReferences : Instance[] (optional); for instances { Domain : String (default: "local"); // the domain part of the CommonAPI address. InstanceId : String; // the instance id of the CommonAPI address. DefaultMethodTimeout : Integer (default:0); PreregisteredProperties : String [] (optional); for methods { Timeout : Integer (default: 0); for enumerations { EnumBackingType : {UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64} (optional); GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 SOME/IP Deployment specification org.genivi.commonapi.someip.deployment extends org.genivi.commonapi.core.deployment for instances { SomeIpInstanceID: Integer ; SomeIpUnicastAddress: String (default: ""); SomeIpReliableUnicastPort: Integer (default: 0); SomeIpUnreliableUnicastPort: Integer (default: 0); ... // Other parameters here for interfaces { SomeIpServiceID: Integer ; SomeIpEventGroups: Integer[] (optional); } for attributes { SomeIpGetterID: Integer (optional); SomeIpGetterReliable: Boolean (default: false); SomeIpGetterPriority: Integer (optional); for strings { SomeIpStringLength: Integer (default: 0); SomeIpStringEncoding: {utf8, utf16le, utf16be} (default: utf8); GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 Loading Runtime Client MyClient (executable) The application implements against the CommonAPI C++ runtime API and the CommonAPI generated API. The executable application links against the CommonAPI runtime library and the generated CommonAPI C++. The binding dependent generated glue-code (D-Bus or SOME/IP) can be built in one or several glue-code libraries The CommonAPI configuration or the application itself defines which glue-code library is loaded for a certain instance of an interface. In order to build the glue-code libraries it is necessary to link against the binding specific runtime library. Runtime Linker libCommonAPI.so CommonAPI Runtime Proxy E01 Proxy E03 ... CommonAPI Gen. Code E01 CommonAPI Gen. Code E03 loadLibrary (depending on configuration) Generated Libraries (Binding Specific) libcapigen1.so libcapigen2.so CommonAPI IPC Binding XX Gen. Code E01 CommonAPI IPC Binding XX Gen. Code E02 CommonAPI IPC Binding YY Gen. Code E03 ... Runtime Linker libCommonAPI-XX.so CommonAPI IPC Binding XX Runtime Runtime Linker other libraries (e.g. libdbus) GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 Loading Runtime Standard CommonAPI loading code: /* DLT context ID, only necessary in case of DLT logging */ CommonAPI::Runtime::setProperty("LogContext", "ABCD"); /* Optional: Load this library if there is no other library configured */ CommonAPI::Runtime::setProperty("LibraryBase", "MyLibrary"); /* Get generic CommonAPI runtime object */ std::shared_ptr<CommonAPI::Runtime> runtime = CommonAPI::Runtime::get(); /* The domain is always local */ std::string domain = "local"; /* Instance name */ std::string instance = "MyInstance"; /* Optional: Connection ID (= internal thread if no external mainloop is used, replaces old factory) */ std::string id = "app01"; /* Get proxy; no factory is needed; necessary is only instance name */ std::shared_ptr<MyProxy<>> myProxy = runtime->buildProxy<MyProxy>(domain, instance, id); GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 Parallel Versions Application Client for ABC Interface Version 2.0 + 1.0 FIDL Interface ABC Version 1.0 Parallel Versions: The version is part of the namespace; therefore different versions of the same service can exist in parallel. By default the code generator generates code in subdirectories with the name of the version. Different versions must be provided by different instances of the same service. buildProxy(...) FIDL Interface ABC Version 2.0 Specific Code for 1.0 Specific Code for 2.0 Generated Proxy ABC Version 1.0 Generated Proxy ABC Version 2.0 Use Cases: Support several versions of a service in one client in parallel (picture). Update service to new version but not all clients can be updated.  ✔ ✔  Generated Stub ABC Version 1.0 Generated Stub ABC Version 2.0 Service with Interface ABC Version 1.0 Service with Interface ABC Version 2.0 GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 Asynchronous Stubs It is not necessary anymore to calculate the return values in the stub implementation synchronously. Use Cases: Applications which work as intermediate layer that only passes messages. Swap out the calculation of big computationally intensive tasks to worker threads. y = foo(x) Client foo(x, callback) callback(y) Service void foo(x, fooReply_t r) { worker(x, r); } void worker(x, r) { // calculate y r(y); } GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

CommonAPI C++ 3 CallInfo It is possible to pass an optional CallInfo argument to all function calls (also setter/getter of attributes). At the moment CallInfo contains the timeout parameter (when do I expect that the function returns) and a sender identifier. The timeout can also be defined in the deployment. The sender identifier is only used to log the correlation between this ID and IPC specific identifiers (like the D-Bus serial number). namespace CommonAPI { struct COMMONAPI_EXPORT CallInfo { CallInfo() : timeout_(DEFAULT_SEND_TIMEOUT_MS), sender_(0) { } CallInfo(Timeout_t _timeout) : timeout_(_timeout), sender_(0) { CallInfo(Timeout_t _timeout, Sender_t _sender) : timeout_(_timeout), sender_(_sender) { Timeout_t timeout_; Sender_t sender_; }; } // namespace CommonAPI GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

Copyright © GENIVI Alliance 2015 CommonAPI C++ 3 SOME/IP SOME/IP: Scalable service-Oriented middlewarE over IP is an automotive/embedded RPC mechanism including the definition of the serialization / wire format. The specification defines datatypes, fields, messages, events, subscriptions, service discovery and so on (refer to http://some-ip.com/ for the details). CommonAPI SOME/IP provides a full implementation of this specification; the serialization is done by the CommonAPI SOME/IP binding; the implementation of the basic communication and the service discovery by vsomeip (see http://git.projects.genivi.org/?p=vSomeIP.git;a=summary). For CommonAPI SOME/IP see the git projects common-api/cpp-someip- runtime.git and common-api/cpp-someip-tools.git at GENIVI. GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

Copyright © GENIVI Alliance 2015 CommonAPI C++ 3 Roadmap Actual version CommonAPI 3.1.3 Mid of November 2015 CommonAPI 3.1.4: Bugfixing January 2016 CommonAPI 3.2.0: Enhanced Service Discovery features and version management. GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

Copyright © GENIVI Alliance 2015 yamaica yamaica is an acronym for yet another model and interface conversion application. It is a collection of Eclipse plugins which are integrated together in one tool for convenient use and to avoid version conflicts. At GENIVI it is available as Eclipse update-site (http://docs.projects.genivi.org/yamaica- update-site/yamaica/updatesite/). The main feature is the EnterpriseArchitect-to-Franca transformator which works in both directions (roundtrip). This feature allows it to use all the modeling features of EA to describe interfaces and to export then a Franca IDL description. GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15

Copyright © GENIVI Alliance 2015 yamaica Roadmap The actual yamaica version 0.9.1 is very old. It is still based on Franca 0.8 and contains old code generators. The new version yamaica 15 will be published at the end of October 2015 (Franca 0.9.1, full roundtrip for the EA transformations, newest code generators integrated). yamaica 16 is planned at the end of the year (bugfixing). GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries Copyright © GENIVI Alliance 2015 5-Oct-15