FESA3 2.x.x FAQ - Frequently Asked Questions
Working with Projects in Eclipse
Q: How to import an existing FESA class/FESA deploy-unit into the workspace ?
A:
- Copy the class to your workspace or check it out via SVN
- Open the C++ perspective or the FESA perspective
- File --> Import --> "Existing Projects into Workspace"
- Select the root directory of the project you want to add.
- Press "Finish"
Working with FESA3 in Eclipse
Q: How can I find out more on working with the FESA3 Eclipse plug-in?
A: The FESA3 Eclipse plug-in ships with a number of "cheat sheets". The cheat sheets are integrated into the Eclipse IDE and can be accessed via the menu: Help > Cheat Sheets... . Open the folder named FESA from the cheat sheet list to select a cheat sheet to work with. The information of each step inside a cheat sheet will be displayed when clicking on "Start working on this task" and "Click to begin" in the introduction to each task. To display the wiki links select them and copy them into the browser of your choice.
Q: Where do I find example FESA3 software?
A: A source for example FESA3 software is the SVN repository, namely the integration tests that are used for testing a release candidate. Check e.g.
https://www-acc.gsi.de/svn/fesa/framework/branches/release/FESA3_2.0.1/fesa-core-gsi-integration-test or
https://www-acc.gsi.de/svn/fesa/framework/branches/release/FESA3_2.0.1/fesa-core-integration-test
Q: What can I do if I encounter broken pipe errors during compilation?
...
objcopy (...) bin/manifest bin/manifest.i686.o
generated/cpp/RDADataTypesTestDU/GeneratedCode/ServerEquipmentGen.cpp:28: fatal error: error writing to -: Broken pipe
compilation terminated.
The bug is not reproducible, so it is likely a hardware or OS problem.
make: *** [bin/obj-src/RDADataTypesTestDU/generated/cpp/RDADataTypesTestDU/GeneratedCode/ServerEquipmentGen.i686.o] Error 1
...
A: Broken pipe errors occur sometimes during parallel compilation on NFS based file systems. Parallel compilation with the option -j4 is used to speed up the whole compilation process which would take longer if it was still sequential. If a broken pipe error occurs simply repeat the compilation by performing make all CPU=
<?> again.
Q:
The default of a new value-item is scalar. How can I use arrays?
A: One way is to select the value-item's type <sclar> in the class design (Design View). Right-click to open the context menu and select the desired array, array2D, custom-type-array, etc .
The same works reverse, array types can be replaced by scalars as well.
Q: How can I comment or copy nodes in the design view of a FESA design?
A: Right-click on any XML element and select <Comment> or <Copy> from the context menu.
Plug-In Configuration
Q: What can I do to see more log-messages?
A: In Window > Preferences > FESA > Log Preferences select the log level. Log level INFO allows to see detailed output of various FESA actions, e.g. the delivery paths during deployment.
Q: How do I
set Eclipse's Secure Storage master password?
A: E.g. the first time an SVN repository location is accessed the secure storage mechanism becomes active and asks the user to provide a master password. If a master password is entered the FESA plug-in requests this information during the start-up phase.
Q: How do I
reset Eclipse's Secure Storage master password?
A: On the Secure Storage Settings page in Window > Preferences > General > Security > Secure Storage select on the Contents tab the Default Secure Storage entry and press delete.
Q: How do I get rid of obsolete perspectives in Eclipse, e.g. <FESA> / <<FESA>> after repeated updates or new installations of the FESA plug-in?
A: Open Window>Preferences>General>Perspectives, from the list of available perspectives delete the unwanted ones.
Q: How do I convince the build console to appear automatically in the front during a build?
A: he full path for the console settings in Eclipse Kepler in the preferences is Window>Preferences>C++>Build>Console>Bring console to top when building (if present). It is also possible to search the preferences with the keyword "console" to find this option.
Q: How do I prevent Eclipse Kepler crashing with an error message relating to a gtk.cairo library? (01/2015)
A: Launch Eclipse Kepler like this on the command line: eclipse -Dorg.eclipse.swt.internal.gtk.cairoGraphics=false& .
Error Messages
Q: What does "ERROR Exception: FESA_9006 Failed to restore the devices." mean?
A: This error is relatet to persistent data. If an xml file (<FESA class name>PersistentData.xml) containing persistent data is created during start of a deploy-unit because of persistent data fields in the class design the deploy-unit will not start a second time until the persistent data file is removed.
Q: What does "rdaIOError Exception: FESA_13008 Partial setting not allowed for this property." mean?
A: The rda data container expects all desired data values to be used during call of the settings property.
Q: What does the exception "FESA_13021 The field namedPositionNames has no data for the cycle selector ALL (no set was done before calling get).. " mean?
A: The exception relates to the content of the rolling buffer that is used internally for acquisition fields. If the content is empty when a get-Operation is performed the exception is thrown. To circumvent this exception it is recommened to fill the buffer, e.g. during initialization before reading it.
FESA3 Software on a FEC / on an SCU
Q: How do I mount the required FESA directories on a (virtual) front-end?
A: Create a directory matching the hostname of the (virtual) front-end in /common/export/nfsinit/ and provide a symbolic link to the FESA initialization script similar to the one in e.g. /common/export/nfsinit/vmla02/ .
Q: How do I set launch a FESA3 deploy-unit automatically on a (virtual) front-end?
A: The basic steps to launch a FESA3 deploy-unit are outlined here:
https://www-acc.gsi.de/wiki/FESA/VirtualFrontendForCryring .
Q: How do I increase the message queue size on a (virtual) FEC / on an SCU?
A:
root@FEC: echo 32768 >> /proc/sys/fs/mqueue/msgsize_max # This overrides the initial value which is often set to 8192 initially.
FESA Framework Services
Q: When is the persistency file written ?
A: The default-interval is: 300sec. After a new setting, a delay of 30sec is forced. As well there is a possibility to
trigger persistency "by hand".
The default-interval and the delay both can be configured in the fesa.cfg file. ( You can pass the config of your choice via application-argument )
Documentation
Q: How do I provide documentation for a FESA3 class?
A: See
FESA3 Class Documentation
C++ Programming
Q: How do I use C++ editing support?
A: Eclipse offers the possibility to define code fragments that can be inserted by typing the name of the fragment and pressing CTRL+SPACE. For C++ a huge collection is already available and can be configured in Window > Preferences > C/C++ > Editor > Templates. For FESA3 related code a collection of
code templates is defined.
Q: How do I place 2D-Arrays in the RDA data container using C++?
A: For example:
string testString = "This is a test string";
const char ** stringArray = new const char*[11];
for (int i = 0; i < 11 ; i++) {
stringArray[i] = testString.c_str();
}
long dims[2] = {11,25};
data.insert("dim_charArrayValue", dims, 2);
data.insert("charArrayValue", stringArray, 11);
Q: How do I enable / disable my own DEBUG messages within a FESA class?
A: Best practice is to use the
FESA diagnostic logging.
Q: How do I use preprocessor directives to enable MOCK sections?
A: If the preprocessor directive is going to be reused within several source files:
- Define a C++ helper class within <class project>/src/<class name>/Common/UserCode, e.g. <class name>Helper, make sure you have the same namespace as the FESA class itself
- define the preprocessor directive you need in the header, e.g. MOCK_<class name>
- in the source file you would like to use the preprocessor directive:
- include the helper class using #include <<class name>/Common/UserCode/<class name>Helper.hpp>
- use the directive #ifdef MOCK_<class name> around the section you use for mocking, etc
- if the preprocessor directive is uncommented in the helper classes' header the section will be executed during runtime
- if the preprocessor directive is commented the section will be ignored
Q: How do I use the hasDataChanged()-method in custom get actions?
A: The hasDataChanged()-method was introduced to filter manual notifications. The default implementation returns true, but manual checks can be implemented to trigger manual notifications. A typical use-case for this method is data filtering at the real-time level.
++ SVN Repository Usage
Q: I just marked a file to be ignored by SVN. However now I cannot commit the folder where the file to be ignored is inside.
A: Trigger a SVN update of the folder in the Project Explorer. After that you will be able to commit the SVN ignore info of the folder.
Q: My FESA project was inserted into the SVN repository automatically during creation. But I am not able to synchronize the project with the SVN repository.
A: Make sure the SVN connector 1.7.x is installed. See
https://www-acc.gsi.de/wiki/FESA/FESA3Install201#SVN_Connector for details.
Plug-Ins in Eclipse
Q: How do I uninstall the FESA3 Eclipse plug-in?
A:
- Select from the menu Help > Install New Software... . This displays the Available Software dialog.
- Click the blue hyperlink "What is already installed" in the bottom section of the Available Software dialog.
- From the Installed Software tab select the FESA Eclipse plug-in and press the Uninstall... button.
- Follow the required steps of the uninstall procedure and restart Eclipse as suggested.
FESA3 Workflow
Q: How do I work with the FESA3 database?
A: Opt-in to export to the database during delivery in the FESA preferences. The issues to consider are briefly outline on
https://www-acc.gsi.de/wiki/FESA/FESA3DatabaseWorkflow201 .
General
Q: How do I enable icons in menus in Eclipse?
A: This is related to the general Linux settings. To enable the icons type the following in a terminal:
x@asl73x> gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true
x@asl73x> gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true