{"id":4178,"date":"2020-06-29T08:51:59","date_gmt":"2020-06-29T06:51:59","guid":{"rendered":"https:\/\/zen-cori.138-201-132-86.plesk.page\/?p=4178"},"modified":"2022-09-19T17:24:27","modified_gmt":"2022-09-19T15:24:27","slug":"autosar-architecture-what-every-function-developer-should-know","status":"publish","type":"post","link":"https:\/\/www.btc-embedded.com\/de\/autosar-architecture-what-every-function-developer-should-know\/","title":{"rendered":"AUTOSAR \u2013 What Every Function Developer Should Know\u2026"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"4178\" class=\"elementor elementor-4178\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3b5f0493 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3b5f0493\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-559a247a\" data-id=\"559a247a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d83c847 elementor-widget elementor-widget-text-editor\" data-id=\"d83c847\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In recent decades, the demands for designing smarter and safer vehicles has caused a significant increase in the size and complexity of the automotive systems software. In a modern high-end passenger car, more than 100 million software lines of code (SLoC) are embedded and distributed across as many as 80 ECUs communicating in a network infrastructure. In terms of SLoC, automobile code size is second only to Google&#8217;s internet services (2billions SLoC). This makes the modern passenger car one of the most complex systems being developed today. To effectively address this complexity while improving the efficiency and quality of automotive software, OEMs (Original Equipment Manufacturer) and suppliers formed a consortium back in 2003 to create AUTOSAR (<a href=\"https:\/\/www.autosar.org\/\" target=\"_blank\" rel=\"noopener\">AUTOmotive Open Software Architecture<\/a>) as an integrated standard for vehicle software development. The first AUTOSAR architecture version was released in 2006. It\u2019s now called AUTOSAR Classic and in 2017 another AUTOSAR standard (Adaptive) was created to address connected vehicles and autonomous driving applications.<\/p><p>In this article, we\u2019ll explain how AUTOSAR Classic helps to deal with software complexity and introduce the main AUTOSAR concepts and terminologies the function developer should know.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c099a8 elementor-widget elementor-widget-heading\" data-id=\"7c099a8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Introduction to AUTOSAR Architecture Classic<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1ff07f elementor-widget elementor-widget-text-editor\" data-id=\"a1ff07f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Automotive systems are often developed in a collaborative effort between OEMs and suppliers. Suppliers develop subsystems specified by the OEM or develop their own subsystem that they sell as an \u201coff-the-shelf\u201d product. Before AUTOSAR, the collaboration relied on specification languages defined within the OEM-Supplier partnership. A new partnership began with an agreement on a new specification language, and integrating a proprietary supplier component required adaptation efforts. With the growing demand of new vehicle functions and the expansion into several domains, the old collaboration approach became impractical.\u00a0 Distributed functionalities in the vehicle architecture also added complexity. AUTOSAR architecture was created to make this complexity manageable, by providing a system-based design environment for the development teams creating the software architecture.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27e953f elementor-widget elementor-widget-heading\" data-id=\"27e953f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Modular architecture and virtual communication bus<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cdaf06 elementor-widget elementor-widget-text-editor\" data-id=\"6cdaf06\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>To manage the complexity, AUTOSAR introduced a modular architecture with layers to separate hardware-independent application software from hardware-oriented software.<\/p><ul><li>The upper layer,\u00a0<strong>Application Software (ASW)<\/strong>\u00a0hosts the application functions as individual software components (SWC).<\/li><li>The lower layer, the\u00a0<strong>Basic Software (BSW)<\/strong>\u00a0includes low level software like services and hardware specific software.<\/li><li>Between these layers is an abstraction layer called the\u00a0<strong>Runtime Environment (RTE)<\/strong>\u00a0that manages the interface between the two other layers.<\/li><\/ul><div>\u00a0<\/div><p>The AUTOSAR architecture also provides a way to decouple the applications from the hardware infrastructure. AUTOSAR introduced the concept of Virtual Functional Bus (VFB) which makes it possible for the SWCs to interact independently from where they are executed in the system (inside one ECU or on different ECUs). \u00a0As SWCs are allocated to the various ECUs, the virtual connections are mapped to local connections (intra-ECU) or onto network communication technologies such as CAN or FlexRay (inter-ECUs). The connection mapping is implemented by the RTE and becomes the concrete interface between individual SWCs and also between SWCs and the BSW (the RTE implements the VFB on a specific ECU).<\/p><p>With the VFB, OEMs and suppliers can develop multi-domains and competitive software without detailed knowledge on the lower-level technologies or dependencies. It gives the flexibility to scale the overall system afterwards (e.g. number of ECUs, ECU-to-Application mapping, network technology, etc.). It enables the reusability and transferability of software components and makes it easier to add new functions to the system. Moreover, the VFB validates all plausible communication between SWCs, which will detect any software architecture errors and improve the software architecture quality.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f3060b elementor-widget elementor-widget-heading\" data-id=\"8f3060b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">AUTOSAR Architecture - Application Software Layer<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ec190f elementor-widget elementor-widget-text-editor\" data-id=\"6ec190f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>An AUTOSAR application consists of several software components interacting together.<\/p><h4>Hierarchical architecture<\/h4><p>The Application software layer offers a hierarchical structure to create the software components:<\/p><ul><li><strong>Composition<\/strong>: Composition packages several SWCs to implement a subsystem. A composition has its own connections visible to the outside world. It\u2019s possible to create a composition of compositions.<\/li><li><strong>Atomic software component<\/strong>: There are two kinds of Atomic software components: Application and Sensor-Actuator. Application software components implement (part of) an application. It can use all AUTOSAR communication mechanisms and services but it interacts with sensor or actuator hardware through a Sensor-Actuator software component. The latter has access to the ECU\u2019s specific hardware I\/O signals. \u201cAtomic\u201d means it cannot be further decomposed into smaller components.<\/li><\/ul><h4>\u00a0<\/h4><h4>AUTOSAR Interfaces<\/h4><p>Software components communicate via \u201cPorts\u201d. A Port is a gateway that is used to request or send information. The semantics of the information depends on the kind of data or service being exchanged. A port must first be associated with an Interface which will define the exchanged information (e.g. request\/send some specific data). One Interface can be referenced in multiple places, ensuring consistent data definitions for the provided port(s) and the related required port(s). The AUTOSAR Interfaces are:<\/p><ul><li><strong>Sender\/Receiver interface<\/strong>: Defines a set of data elements that are sent from one component to one or more components. The data-element is like a global variable which exchanges values. Sender\/Receiver ports can be characterized with additional communication attributes like:<ul><li><strong>RTE Status<\/strong>: returns an error code (e.g. timeout) or no error indicating whether or not the communication operation was complete.<\/li><li><strong>Signal Invalidate<\/strong>: a sender can decide to invalidate the signal and an invalid value is sent instead of the signal&#8217;s original value.<\/li><li><strong>Acknowledgment (Feedback)<\/strong>: A sender can request an acknowledgment of the sender operation (i.e. data writing confirmation). The feedback signal returns an error after an acknowledgment timeout has expired.<\/li><\/ul><\/li><li><strong>Client\/Server interface<\/strong>: Defines a set of operations that a server-component can implement and one or several client-components can use or invoke. This mechanism is similar to a function call. The function can get, process and return data through function arguments.<\/li><li><strong>Parameter interface<\/strong>: Defines a set of parameter elements (constant or calibratable) that a \u201cParameter software component\u201d (a specific type of component) provides to other components. Note: Parameters can also be defined within the scope of a SWC as part of the Internal Behavior (See below).<\/li><li><strong>Non-Volatile Data Interface<\/strong>: Provides read and write accesses to Non-volatile (Nv) data-elements. The Nv data elements are exchanged between an \u201cNv Block software component\u201d (a specific type of component) and other software components. The Nv Block software component is responsible to handle the communication with the BSW modules accessing the physical non-volatile memory.<\/li><li><strong>Trigger Interface<\/strong>: Enables a SWC to trigger another SWC with the purpose of fast response time for triggers which might occur sporadically or at a variable cycle time. This could be useful for cases such as triggering a SWC based on the crankshaft and camshaft position to control ignition system and fuel injection.<\/li><li><strong>Mode-Switch Interface<\/strong>: Declares groups of modes that represent operating states of an ECU or a SWC. Modes are similar to enumeration values. A component providing modes is called a Mode Manager and the user component is called a Model User. The Mode Manager notifies the mode user when the mode has changed (switched). The Mode User can use the mode signal for an internal process (e.g. to disable or trigger an execution).<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f72eab6 elementor-widget elementor-widget-image\" data-id=\"f72eab6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"720\" height=\"259\" src=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/06\/autosar_layers-1920x1920-6db.png\" class=\"attachment-large size-large wp-image-4182\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-95f5f80 elementor-widget elementor-widget-text-editor\" data-id=\"95f5f80\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>AUTOSAR Architecture &#8211; layers and interfaces<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa217fc elementor-widget elementor-widget-text-editor\" data-id=\"fa217fc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In the RTE, the respective communication interfaces are implemented with specific constructs called RTE API. E.g. Rte_Read_xxxx(), Rte_Write_ xxxx (), Rte_Call_ xxxx (), Rte_Invalidate_xxxx(), etc.<\/p><p>We\u2019ve seen the communication mechanisms between SWCs. Now let\u2019s look at how a SWC is implemented.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7303e71 elementor-widget elementor-widget-heading\" data-id=\"7303e71\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Internal Behavior of an Atomic software component<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79c29f9 elementor-widget elementor-widget-text-editor\" data-id=\"79c29f9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>AUTOSAR\u00a0<strong>Internal Behavior (IB)<\/strong>\u00a0defines the architecture elements that implement the SWC. It describes the implementation from a code perspective. In the system design timeline, the IB can be specified only when the SWC needs to be implemented, while the structure of the SWC (e.g. the ports) need to be specified upfront. The IB also specifies if the SWC supports multiple instantiations, meaning the SWC is implemented once and instantiated several times in the ECU(s).\u00a0 This is comparable to the principle of a reusable function (e.g. Seat heating SWC instantiated on each seat). The main IB elements are:<\/p><ul><li><strong>Runnables<\/strong>: These are the smallest pieces of code (basically C-functions) which implement the SWC functionality. A SWC can have one or multiple runnables. When the SWC supports multiple-instantiation, the runnable handles instance-specific data (e.g. the state variables) via an additional function argument.<\/li><li><strong>RTE-Even<\/strong>t: The RTE-Event offers a mechanism to specify when to execute a runnable. For each runnable, an RTE Event defines whether the runnable needs to be called periodically or event-based (e.g. events related to communications like when a mode switches, when an operation is invoked, when a trigger signal is received, etc.).<\/li><li><strong>Access points<\/strong>: To access the information conveyed via the SWC ports, the IB defines access points between runnable and SWC ports. The access points specify how the runnable expects to access a data (buffered or not) or an operation (synchronous or asynchronous).<\/li><li><strong>InterRunnableVariable<\/strong>: Allows runnables within the same SWC to exchange data. It\u2019s like an access to a global that is defined in the scope of the SWC. Runnables of different SWCs have to communication via the SWC ports.<\/li><li><strong>PerInstanceMemory<\/strong>: SWC can have states that need to be maintained during the execution. When the SWC is single-instance, a global variable is adequate, but for multiple instances, the states have to be stored in separate memory regions to avoid concurrencies between the instances. Hence, the state can be defined as PerInstaceMemory.<\/li><li><strong>Private calibration parameters<\/strong>: SWC can have parameters defined internally. The parameter can be defined per instance of the SWC (PerInstanceParameter) or can be shared between all instance of a software component (SharedParameter). Those are not accessible to other SWCs.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ad22db3 elementor-widget elementor-widget-image\" data-id=\"ad22db3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"614\" src=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/06\/elements_half-1920x1920-160.jpeg\" class=\"attachment-large size-large wp-image-4185\" alt=\"\" srcset=\"https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/06\/elements_half-1920x1920-160.jpeg 1401w, https:\/\/www.btc-embedded.com\/wp-content\/uploads\/2020\/06\/elements_half-1920x1920-160-768x590.jpeg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-190a8e8 elementor-widget elementor-widget-text-editor\" data-id=\"190a8e8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>AUTOSAR Architecture &#8211; elements and terminology<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a9f5a0 elementor-widget elementor-widget-heading\" data-id=\"9a9f5a0\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">AUTOSAR Architecture - Methodology and Templates<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-be1858c elementor-widget elementor-widget-text-editor\" data-id=\"be1858c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In addition to the architecture description, AUTOSAR provides a methodology that describes the process steps from the abstract system definition right down to the final EUC executable with a list of design steps and work products. It also provides templates (meta-model) to define design semantics and constraints called the \u201cAUTOSAR Schema,\u201d from which architecture description files can be created and exchanged (as AUTOSAR XML files). This encompassing approach allows all stakeholders of the system development to understand and speak the same language, which dramatically improves the collaborative development environment.Moreover, with the architecture being described in a machine-readable format, it can be processed by design tools to generate the necessary system components (e.g. RTE API calls in the SWC implementation, RTE implementation, BSW implementation including the Operating System, etc.)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2f44e2 elementor-widget elementor-widget-heading\" data-id=\"c2f44e2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b404e37 elementor-widget elementor-widget-text-editor\" data-id=\"b404e37\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>AUTOSAR architecture makes it possible to develop application software on an abstraction level, focusing on the interactions between the software components. It offers a modular architecture with a hierarchical structure and standardized interfaces connecting architecture layers and components. More than just a design tool for a single ECU, AUTOSAR addresses challenges bringing together an entire system of interconnected ECUs. It offers a wide range of communication and implementation techniques to develop complex automotive software applications. The standardized exchange formats, encourages collaborative development and enables the creation of software as off-the-self products which can be integrated into any AUTOSAR environment. The machine-readable description of the software architecture enables interoperability between design and test tools (e.g. model-based development tools like Simulink or TargetLink have the ability to read AUTOSAR files, making it possible to generate AUTOSAR compliant code and test it in a tool like<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: var( --e-global-typography-text-font-size ); font-style: var( --e-global-typography-text-font-style ); font-weight: var( --e-global-typography-text-font-weight ); letter-spacing: var( --e-global-typography-text-letter-spacing ); text-transform: var( --e-global-typography-text-text-transform ); background-color: var( --e-global-color-8c64e01 );\">\u00a0<\/span><a style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: var( --e-global-typography-text-font-size ); font-style: var( --e-global-typography-text-font-style ); font-weight: var( --e-global-typography-text-font-weight ); letter-spacing: var( --e-global-typography-text-letter-spacing ); text-transform: var( --e-global-typography-text-text-transform ); background-color: #ffffff;\" href=\"https:\/\/www.btc-embedded.com\/btc-embeddedplatform\/\" target=\"_blank\" rel=\"noopener\">BTC EmbeddedPfatform<\/a>)<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: var( --e-global-typography-text-font-size ); font-style: var( --e-global-typography-text-font-style ); font-weight: var( --e-global-typography-text-font-weight ); letter-spacing: var( --e-global-typography-text-letter-spacing ); text-transform: var( --e-global-typography-text-text-transform ); background-color: var( --e-global-color-8c64e01 );\">. Last but not least, for safety critical software development, many AUTOSAR mechanisms support the architecture design methods recommended in standard like ISO 26262.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In recent decades, the demands for designing smarter and safer vehicles has caused a significant increase in the size and complexity of the automotive systems software. In a modern high-end passenger car, more than 100 million software lines of code (SLoC) are embedded and distributed across as many as 80 ECUs communicating in a network [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":9044,"comment_status":"open","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[52],"product":[],"use_cases":[],"class_list":["post-4178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-autosar"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/posts\/4178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/comments?post=4178"}],"version-history":[{"count":0,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/posts\/4178\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/media\/9044"}],"wp:attachment":[{"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/media?parent=4178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/categories?post=4178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/tags?post=4178"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/product?post=4178"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.btc-embedded.com\/de\/wp-json\/wp\/v2\/use_cases?post=4178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}