RAW-Interface
Raw connections¶
The gateway introduces the concept of mimetypes. The following table shows the supported mimetypes in FERAL:
Mimetype String | Network type | Technology | Description |
---|---|---|---|
special/NullCoder |
- | - | Default coder that throws errors on reception of messages |
special/EchoCoder |
- | - | This coder can be mainly used for testing purposes. It just bypass the message value to the required format. No special encoding or decoding is happening here. |
application/FERAL/CANFD/Native-V2 |
CAN | Framecoder/Native | legacy CAN message encoding, protocol version |
application/FERAL/Ethernet/Native-V1 |
ETH | Framecoder/Native | legacy ethernet message encoding |
application/FERAL/FlexRay/Native-V2 |
FLR | Framecoder/Native | legacy flexray message encoding, protocol version |
application/FERAL/LIN/Native-V1 |
LIN | Framecoder/Native | legacy LIN message encoding, LIN simulation with scheduler |
application/vda.silvi.can.flatbuffers.1 |
CAN | Flatbuffers | flatbuffers encoded CAN message based on SiLVI scheme |
application/vda.silvi.ethernet.flatbuffers.1 |
ETH | Flatbuffers | flatbuffers encoded ethernet message based on SiLVI scheme |
application/vda.silvi.flexray.flatbuffers.1 |
FLR | Flatbuffers | flatbuffers encoded flexray message based on SiLVI scheme |
Basically, those mimetypes are strings telling the FERAL component behind the gateway which semantics of raw messages data is used.
This has been introduced for the context of networks behind a gateway, but may proove useful for many other occasions as well. In the network context, the mimetype is used to connect to raw network interfaces to identify the coder that shall be used and to serialize and deserialize network specific messages. In regard on the FERAL Gateway Concept, this represents the downmost worker port that connects to the yellow "RAW port" of the attached network simulation. More information on the mechanics behind this can be found in the chapter Networking.
The gateway does not care for the semantics of the raw data transmitted through worker ports to the client instances, hence it does also not interpret the mimetype. When a connection is established from a client library (e.g. through usage of the interface IClientControl::connect(String serverAddress, int serverPort, String clientAddress, String portName, String mimeType)
of the Java implementation) and the mimetype is not empty, the gateway will establish a connection just the same as when connecting using IClientControl::connect(String serverAddress, int serverPort, String clientAddress, String portName)
, but the gateway forwards a MimetypeConfigurationMessage via the FERAL link to the FERAL simulation worker connected to that port. A FERAL worker expecting a mimetype must handle this message properly. It is guaranteed that this message arrives before a connected client can send any raw data.
The mimetype concept is fully implemented in the NetworkEventInterface
class.