3 - Communication

SDL-RT is event driven, meaning communication is based on message exchanges. A message has a name and a parameter that is basically a pointer to some data. Messages go through channels that connect agents and end up in the processes implicit queues.
Channels have names and are represented by a one-way or two-ways arrows. A channel name is written next to the arrow without any specific delimiter. The list of messages going in a specific way are listed next to the arrow between brackets and separated by commas. Messages can be gathered in message lists, to indicate a message list in the list of messages going through a channel the message list is surrounded by parenthesis. Note the same message can be listed in both directions.

Channels end points can be connected to: the environment, another channel or a process. Graphically a channel can be connected to a block but it is actually connected to another channel inside the block. To represent the outside channels connected to the block at the upper architecture level, a block view is surrounded by a frame representing the edge of the block. The upper level channels connected to the block are then represented outside the frame and channels inside the block can be connected to these upper level channels. Note a channel can be connected to several channels. In any case consistency is kept between levels e.g. all messages in a channel are listed in the upper or lower level channels connected to it.
Let us consider an SDL-RT system made of two blocks: blockA and blockB.

The channels chEnvA and chEnvB are connected to the surrounding frame of the system mySystem. They define communication with the environment, e.g. the interface of the system. chEnvA and chAB are connected to blockA and define the messages coming in or going out of the block.

The inner view of block blockA shows it is made of the blocks blockC and blockD and of the process processE. chEnvAC is connected to the upper level channel chEnvA and chABD is connected to the upper channel chAB. The flow of messages is consistent between levels since for example the messages coming in block blockA through chEnvA (message1, message2, message3) are also listed in chEnvAC.