Application Interfaces
Application interfaces handle call-backs to incoming events via their methods, like onVehicleUpdated()
, called by the
application simulator. The following table lists all interfaces usable for application implementation, the type of unit as well as
important other interfaces it implements. Interface specific public methods which have to be implemented by the user are listed in the
“Provides” column. The elementary interface (Application
) provides the methods onStartup()
, onShutdown()
. Implementation details
are given in
Development of applications.
Interface | Applicable to | Provides | Description |
---|---|---|---|
Application / AbstractApplication |
all | onStartup , onShutdown |
Elementary application class providing an operating system |
ConfigurableApplication |
all | Basic application class providing an operating system and a configuration, which automatically loaded from a JSON file. | |
CommunicationApplication |
all | onMessageReceived , onAcknowledgementReceived , onCamBuilding , onMessageTransmitted |
All applications that implement some form of V2X communication are to implement this interface. |
VehicleApplication |
vehicle | onVehicleUpdated |
General vehicle funtionality |
ElectricVehicleApplication |
vehicle | onBatteryStateUpdated , onChargingRequestRejected |
Electric vehicle functionality |
TrafficSignAwareApplication |
vehicle | onTrafficSignInvalidated , onTrafficSignNoticed |
Used by vehicles which are aware of traffic signs. |
TrafficLightApplication |
traffic light | onTrafficLightGroupUpdated |
Traffic light functionality |
TrafficManagementCenterApplication |
TMC | onInductionLoopUpdated , onLaneAreaDetectorUpdated |
Traffic management functionality |
MosaicApplication |
all | onSumoTraciResponded , onInteractionReceived |
Features that involve customized RTI-interactions of MOSAIC |
All interfaces can be found in the package org.eclipse.mosaic.fed.application.app.api.*
For example, when implementing the VehicleApplication
, your application is able to react on movements of the vehicle:
public class MyApplication extends AbstractApplication<VehicleOperatingSystem>
implements VehicleApplication
{
...
@Override
public void onVehicleUpdated(VehicleData previous, VehicleData current) {
...
}
...
}
To create a Road Side Unit application which should react on incoming V2X messages, one need to implement the CommunicationApplication
interface.
public class MyRsuApplication extends AbstractApplication<RoadSideUnitOperatingSystem>
implements CommunicationApplication
{
...
@Override
public void onMessageReceived(ReceivedV2xMessage v2xMessage) {
...
}
...
}
Of course, you can also combine the interfaces with each other.