In FEP
the FEP Control
is used to control a FEP System
. In ADTF we have the ADTF Control for that purpose. To make your life easier we adopted some of the commands from FEP Control
into ADTF Control (It will be more in the future).
Please have a look at ADTF Control and its FEP
group within help call for an overview of available commands.
This includes discoverallfepsystems
to collect information regarding all available FEP Systems
in your network topology and discoverfepsystem
to discover all FEP Participants
which are part of one of those FEP Systems
.
The default implementation of FEP
makes use of a TCP broadcast address 230.230.230.1:9990
. So you can only discover FEP Participants
that are part of this network segment.
In the future it is planned to make use of RTI Connext DDS (same technology use for the data transfer) which provides a routing service and more detailed configuration options
to overcome those limits.
Normally you use adtf> connect tcp://localhost:8000
to connect to an ADTF Launcher. With connectfepsystem
you can connect to a FEP System
with multiple instances of ADTF Launcher and other FEP Participants
.
So instead of using adtf> runlevel running
we can use fep::systemrunlevel running
to bring the entire FEP System
into state running.
Please ignore warnings like the following in ADTF Control:
sendto 127.0.0.1:9990 for multicast address 230.230.230.1:9990 failed, errno = Ein Socketvorgang bezog sich auf ein nicht verf³gbares Netzwerk. (10051)
This is a known issue in the FEP Service Bus
.
With the ability to use the ADTF Control in scripting mode we can write scripts to start and control multiple ADTF instances:
adtf_launcher --control-url fep://<fep_system_name>/<fep_participant_name_1>
adtf_launcher --control-url fep://<fep_system_name>/<fep_participant_name_2>
adtf_control --url fep://<fep_system_name> -e fep::systemrunlevel running
Want to learn more about the ADTF Control and its Scripting Mode? See ADTF Control
Typically you use http://localhost:8000
in the ADTF Control to connect to a single instance of ADTF Launcher. Using FEP
you can connect to a single ADTF Launcher with the address fep://<fep_system_name>/<fep_participant_name>
.
All commands from ADTF Control will than be routed over the FEP Bus
to the corresponding ADTF as FEP Participants
. Then all commands can be used as usual. For Example you can create a report of an ADTF instance:
adtf_control --url fep://<fep_system_name>/<fep_participant_name> -e createreport
Want to learn more about all available ADTF Control commands and how to use them? See ADTF Control
Since the FEP SDK
is totally independent of ADTF it comes with its own state machine. If you use ADTF as a FEP Participant
, there are two state machines in the same process that must be synchronized.
In a normal scenario, ADTF hands over complete control to the FEP System
and is controlled by it. But there are corner usecases where you are not part of a FEP System
and ADTF has to control its own state machine by itself.
For example if you want to use FEP
as a data bus only to transmit samples from one ADTF instance to another.
That's why we provide two different ways to use the ADTF url:
fep://
in the adtf_launcher --control-url
your ADTF Session will be a fully qualified FEP Participants
of the FEP System
.
That means you are no longer in control of the ADTF state machine. At this point ADTF is part of the distributed state machine and will be started and stopped together with the other FEP Participants
.
That means for example adtf_launcher --run
and adtf_control -e rl 5
are no longer available to change the runlevel of ADTF.
FEP Participant
state machine. ADTF will automatically startup and shutdown the FEP State Machine
.
This is necessary if you don't want to create and handle a whole FEP System
.
That's all you have to know about controlling the FEP System
and its FEP Participants
. The next guide will tell you more about FEP
integration and its components available for GUI Tools within ADTF.