"Part 1- Unlocking the Power of AUTOSAR: Understanding Components, Ports, and Port Interfaces in Automotive Software"
Tags: autosar, portconnection, autosarinterface, automotive
Published: 2023-08-21 19:22:54

Hello everyone, I am Pooja, and I work at Luxoft India. Here I would like to provide a brief knowledge about "Part 1-Unlocking the Power of AUTOSAR: Understanding Components, Ports, and Port Interfaces in Automotive Software".
_**Software Component and Compositions**_
**Software Components:-**
In AUTOSAR, the application software is structured into self-contained units known as Atomic Software Components. These Atomic Software Components collectively create the entire operational functionality of the software. Different types of Software component.
**1.ApplicationSw Component: -** software component holds the functionality of the software. Example: Calculations, Functional/decision-making Algorithms etc.
**2.NV Block Sw Component: -** component is used when we have interfaces on the application layer to be stored on NVM memory. It interacts with the NVRAM Manager
**3.Complex Device Driver Sw Component:-** component provides easy access to hardware directly from the application layer to fulfil special timings and functional requirements
**4.ServiceSw Component: -** component is used for configuring services for a particular control unit
**5.ServiceProxySw Component: -** component is used when a particular service component is to be accessed from different control units
**6. Ecu Abstraction Sw Component: -** This component, found within the BSW, functions as an intermediary between MCAL and the Sensor Actuator component within the ASW, facilitating smooth communication.
**7. Sensor Actuator Sw Component: -** component is used on the application layer to interact with the BSW ECU Abstraction layer and acts as an interface to the other application components.
**8.ParameterSw Component: -** component is a part of software component types that provide only calibrations to the software. Example: Tuning vehicle performance using parameters during testing
**9.Compositions Component: -** Aggregates components and connections between its sub Components.

**_Autosar Ports and Port Interfaces: -_**
**Ports:** Autosar architecture proposes Ports as the mode of communication between Autosar modules.
•	Provider Port (P-Port) 
•	 Receiver Port (R-Port) 
•	Provider Receiver Port (PR-Port)
![Autosar different modules](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t2d6rnvfg54aq3def5xl.PNG) **Fig. :** Above the fig. will indicate the communication between Autosar's different modules.

![Port Interface](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5dggowp4m9ns799mk41w.PNG) **Fig.** Above fig are different types of Port Interface

_**Port Interfaces:-**_ The kind of information that is communicated between ports is defined by port interfaces. Below are some different types of port Interfaces.

**Sender Receiver Interface: -**
Sender Receiver Interface is used to send or receive data between software components.
It is used to communicate interfaces between components Port writing the interface is the Provider and receiving end is the Receiver. It's an asynchronous communication.
![Sender Receiver Interface](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m7m3hszjlv6gx9l9v80i.png) **Fig.** Sender Receiver Interface.

**Client Server Interface:-**
Client Server Interface is used for function calls. The server is the provider that has the P-port and the Client is the receiver that has the R_Port. While synchronous call client will wait until the server function runs and completes. While Asynchronous call client will trigger the server function and just proceed.
![Client Server](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ph65dpodq2x4drwf7rl2.png) **Fig.** Client Server Interface

**NVData Interface: -** NVData Interface is to communicate with NVBlock SWC to send and receive non-volatile memory interface

**Parameter Interface: -**The parameter interface is used for exchanging calibrations or constants across components

**ModeSwitch Interface: -** The mode switch interface is used for notification of a software component of different states that the system can enter

**Trigger Interface: -** The trigger interface induces a trigger execution for other components.

_**Composition and Connectors:-**_
**Compositions:-** A software component type that aggregates software components or compositions. Composition is a software component type that clusters or aggregates other software components or compositions. In simple terms, a composition could be understood as a container that can hold a group of software components.
**Connectors:-** Used to complete the connections port prototypes in a live system, you might have thousands of provider ports and receiver ports and who's connected with whom is decided from the connector configuration. A delegation connector and Pass-through Connector. Connectors have 2 types. 
**1.Assembly Connector: -** Connects a provider and a receiver port. Let's take two software components that have a sender-receiver and a client-server communication with the two provider and two receiver ports. And we shall place them under a composition called Composition One To connect these two ports, we can use a simple assembly connector. An assembly connector is used to connect to ports within the same composition.
![Assembly connection] (https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdmq2megbxib2oeifjsj.png) **Fig.** Assembly connector

**2. Delegation Connector: -** Connects the same port types to delegate ports to the outer composition. A delegation connector extends the inner port from the components to the outer composition. A new mirror port is also created on the outer composition and the delegation connector connects this outer port to the inner port of the component. The opposite connecting ports of software component 3 are now available within the same parent, and we can now have an assembly connector between composition 1 and software component 3. An additional difference between these two connectors is that an assembly connector connects a provider and a receive port, but a delegation connector connects the same port, either provider to provider or receiver to receiver. Every port connection should finally end with an assembly connector configuration.
![Delegate Connection] (https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wd4ntzuy459l02vgw76.png) **Fig.** Delegate Connector

**_Runnable: -_** Enable entities are the smallest code fragments that are provided by the component.
•Runnable entities together with Events are scheduled by the operating system.
•Am atomic software component has to provide an entry point to code for each runnable in its internal behavior.
•Runnable can be defined only for atomic software components. Composition software components or parameter software components cannot have runnable.

_**Conclusion:-**_
In a nutshell, AUTOSAR makes car software work together smoothly by using different "components" for tasks, "ports" for communication, and "interfaces" like a language. Connectors link things up, and there are also small tasks called "runnable entities." All of this teamwork creates a well-organized system for cars to run smoothly and safely. Stay tuned for Part 2, Thank you for your interest.