These two parsers take the esterel specification of the application as input and are called in sequence. The first one collects the data interface from the esterel specification: types, output signals, sensors, functions, procedures in order to generated the data interface skeleton. It also collects input signals to feed the second parser that will add some instructions in the application specification. This concerns principaly the specification for removing the adus when they are retreived from the environment; for example the esterel instruction present x(val:ADU) will be transformed into present x(val:ADU) then emit RemoveADU(Val); end present
All the files generated by the ALFred tool, using the information collected by the first parser, are described in the implementation steps section.
The graphical interface to enter QoS parameters is also managed by the ALFred parser. According to the values selected, the correct Esterel modules are put in parallel in a file that contains the protocol specification.
To add a new QoS parameter in ALFred you have to describe it in the interface but you also have to inform the ALFred Service manager of the ALFred library (inria.alfred.lib.AlfredService). To achieve this correspondance with the QoS information of the application you have to:
The ALFred java library (inria.alfred.lib) contains the top level execution environment and the data interface to protocol mechanisms described in Esterel. The set of Esterel modules for protocol mechanisms are gathered in the file "inria/alfred/strl/Communication.strl".
AlfAutoInterface.java
AlfredService.java
RecvWindow.java
AppliHandler.java
RtoTimer.java
Run.java
PROFILES.java
SlidingWindow.java
TimerMng.java
QoSParameters.java
---------------- ---------------- ----- -----------
/ALFPEventHandler/ /RTPEventHandler/ / ADU/ / ADUwrapper/
----------------- ----------------- ----- -----------
| | --------------
| -----------------|AlfredHandler |--------------------------------------- ....
| | | -------------- | |
| | | | | |
| | | | |
------------- | -------------- ----------------
| ALFPHandler | |--| RTPHandler | | RMDPRLCHandler | ........
------------- -------------- ----------------
------------- -------------
| ALFPCommon | | RTPCommon |
------------- -------------
/ \ / \
----- ----- ----- -----
|ALFP | |ALFCP| | RTP | | RTCP|
----- ----- ----- -----
The AlfredHandler contains the reception, emission, and application queues. The reception and emission are implemented by a hashtable associating a key (unique sequence number) and an ADU.
Most of the handlers that are currently implemented interface the network with UDP but it could be something else if needed.
To add a new protocol mechanism in ALFred you have to: