Git Product home page Git Product logo

framework-core's Introduction

REDHAWK Core Framework

Description

Contains the REDHAWK Core Framework

REDHAWK Documentation

REDHAWK Website: www.redhawksdr.org

Copyrights

This work is protected by Copyright. Please refer to the Copyright File for updated copyright information.

License

The REDHAWK Core Framework is licensed under the GNU Lesser General Public License (LGPL).

framework-core's People

Contributors

bagoulla avatar drwille avatar esturm avatar jirwin-geon avatar maxrobert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

framework-core's Issues

Boost header errors while building RedHawk

Hi all:

I am trying to build RedHawk 2.0 SDR framework core on a BeagleBone
Black running Kali Linux 2.0.
gcc version is 4.9.2 (Debian 4.9.2-10)
and Boost version is 1.55.0.2

I get the following partial errors while building. The full list of errors is
in the attached file. Can anyone help?

Making all in framework
make[2]: Entering directory '/root/Downloads/redhawk-src-2.0.0/redhawk/src/base/framework'
CXX libossiecf_la-AggregateDevice_impl.lo
CXX libossiecf_la-PortSupplier_impl.lo
CXX libossiecf_la-PortSet_impl.lo
CXX libossiecf_la-Device_impl.lo
CXX libossiecf_la-PropertySet_impl.lo
CXX libossiecf_la-LifeCycle_impl.lo
CXX libossiecf_la-Logging_impl.lo
CXX libossiecf_la-Resource_impl.lo
CXX libossiecf_la-ThreadedComponent.lo
CXX libossiecf_la-ExecutableDevice_impl.lo
CXX libossiecf_la-LoadableDevice_impl.lo
CXX libossiecf_la-TestableObject_impl.lo
CXX libossiecf_la-helperFunctions.lo
CXX libossiecf_la-affinity.lo
CXX libossiecf_la-Port_impl.lo
CXX libossiecf_la-FileStream.lo
CXX libossiecf_la-POACreator.lo
CXX libossiecf_la-CorbaUtils.lo
CXX libossiecf_la-prop_helpers.lo
CXX libossiecf_la-MessageInterface.lo
CXX libossiecf_la-PropertyInterface.lo
CXX libossiecf_la-Service_impl.lo
CXX libossiecf_la-type_traits.lo
CXX libossiecf_la-AnyUtils.lo
CXX logging/libossiecf_la-loghelpers.lo
In file included from /usr/local/include/boost/asio/detail/task_io_service.hpp:207:0,
from /usr/local/include/boost/asio/impl/io_service.hpp:71,
from /usr/local/include/boost/asio/io_service.hpp:767,
from /usr/local/include/boost/asio/basic_io_object.hpp:19,
from /usr/local/include/boost/asio/basic_socket.hpp:19,
from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/local/include/boost/asio.hpp:20,
from logging/loghelpers.cpp:41:
/usr/local/include/boost/asio/detail/impl/task_io_service.hpp:32:6: error: prototype for 'void boost::asio::detail::task_io_service::dispatch(Handler&)' does not match any in class 'boost::asio::detail::task_io_service'
void task_io_service::dispatch(Handler& handler)
^
In file included from /usr/local/include/boost/asio/impl/io_service.hpp:71:0,
from /usr/local/include/boost/asio/io_service.hpp:767,
from /usr/local/include/boost/asio/basic_io_object.hpp:19,
from /usr/local/include/boost/asio/basic_socket.hpp:19,
from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/local/include/boost/asio.hpp:20,
from logging/loghelpers.cpp:41:
/usr/local/include/boost/asio/detail/task_io_service.hpp:97:8: error: candidate is: template void boost::asio::detail::task_io_service::dispatch(Handler)
void dispatch(Handler handler);
^
In file included from /usr/local/include/boost/asio/detail/task_io_service.hpp:207:0,
from /usr/local/include/boost/asio/impl/io_service.hpp:71,
from /usr/local/include/boost/asio/io_service.hpp:767,
from /usr/local/include/boost/asio/basic_io_object.hpp:19,
from /usr/local/include/boost/asio/basic_socket.hpp:19,
from /usr/local/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/local/include/boost/asio.hpp:20,
from logging/loghelpers.cpp:41:
/usr/local/include/boost/asio/detail/impl/task_io_service.hpp:56:6: error: prototype for 'void boost::asio::detail::task_io_service::post(Handler&)' does not match any in class 'boost::asio::detail::task_io_service'
void task_io_service::post(Handler& handler)

Best regards,
Art

redhawk_build_errors.txt

Bugs with Project Explorer and new C++ components

1). Problem: When opening RH, it sometimes will not fill the Project Explorer with my files. On top of that, it will simply say "ERROR" when opening a file from 'recent files'. The workspace is the same but none of the files will be detected. Bug happens when I shutdown virtual box without closing RH first.

Temp solution: The simple fix is to go into file > import > general > existing projects into workspace > select root directory, then add your folders.

2). This problem is unrelated to the first one.
Problem: File > SCA Component > C++ > Finish >> Generate All. This gives 4 errors in /test/cpp.
They read:
installing './config.guess' - Line 9
installing '.config.sub' - Line 9
installing './install-sh' - Line 2
installing './missing' - Line 2

Solution: Right click project > clean project

RH IDE: Version 1.8.4
Using VM box, CentOS 6.4 w/ Red Hat

Units for MemFree fallback in GPP.py assigned to incorrect variable

In GPP.py, the units for MemFree got assigned to "value" instead of "units", fix shown below.

@@ -740,11 +740,11 @@ class GPP(GPP_base):
                 commited_as = commited_as / 1024
                 return total - commited_as
             except KeyError:
                 # Fall back to MemFree
                 value = meminfo['MemFree'][0]
-                value = meminfo['MemFree'][1]
+                units = meminfo['MemFree'][1]
                 assert units == "kB" # We don't expect the Linux kernal to change this
                 # The kernel reports KiB values but uses the old notation of kB
                 value = value / 1024
                 return value
         except KeyError:

Also, you should probably do s/kernal/kernel as well.

Connecting waveforms via external ports in the shell requires call to api()

Example case: two waveforms with external ports have been launched and started. One has a uses port, the other has the provides port. Both port types match.

Calling uses.connect(provides) fails indicating that no matching interfaces are found.

Trying to call connect with explicitly naming usesName and providesName also fails but with the error that the named interface is not found (despite it existing).

Work-around:
Calling api() on each waveform prior to calling uses.connect(provides) allows the connection to take place without error by either of the above methods.

Problem building Core Framework on Ubuntu 14.04 on Beaglebone Black for Sub$100

Hi there. Help would be greatly appreciated, I believe I have followed the Sub$100 Project instructions to the letter, but the build always fails the same way. I have checked everything in the instructions 3 times. After several failed attempts, and trying both "git checkout 1.10.0" (per the instructions) and 1.10.1 (per the latest), here is the log starting with the configure showing the incremental build and error, as well as the Ubuntu and Boost versions:

ubuntu@arm:/framework-core/src$ ./configure --disable-java --with-boost-libdir=/usr/lib/arm-linux-gnueabihf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking how to create a pax tar archive... gnutar
checking for ossie home... /home/ubuntu/redhawk
configure: using /home/ubuntu/redhawk as installation prefix
checking for sdr root... /home/ubuntu/redhawk/sdr
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking whether make sets $(MAKE)... (cached) yes
checking build system type... armv7l-unknown-linux-gnueabihf
checking host system type... armv7l-unknown-linux-gnueabihf
checking how to print strings... printf
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert armv7l-unknown-linux-gnueabihf file names to armv7l-unknown-linux-gnueabihf format... func_convert_file_noop
checking how to convert armv7l-unknown-linux-gnueabihf file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking gr_libdir_suffix...
checking whether to append 64 to libdir... no
checking for omniORB4... yes
checking for boostlib >= 1.35... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking whether the Boost::Serialization library is available... yes
checking for exit in -lboost_serialization... yes
checking whether the Boost::Regex library is available... yes
checking for exit in -lboost_regex... yes
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread... yes
checking whether the Boost::Date_Time library is available... yes
checking for exit in -lboost_date_time... yes
checking for Expat XML Parser headers in /usr/include... found
checking for Expat XML Parser libraries... found
checking for Expat XML Parser... yes
checking if Expat XML Parser version is >= 1.95.8... yes
checking for OMNIORB... yes
checking for OMNITHREAD... yes
checking for OMNIDYNAMIC... yes
checking for COS library... yes
checking for OMNICOS... yes
checking for omniidl... omniidl
checking for default IDL path... /usr/share/idl/omniORB
checking for xsdcxx... xsdcxx
checking xsd version... 3.3.0
checking xsd/cxx/config.hxx usability... yes
checking xsd/cxx/config.hxx presence... yes
checking for xsd/cxx/config.hxx... yes
checking for xmlcatalog... xmlcatalog
checking for a sed that does not truncate output... (cached) /bin/sed
checking for python install scheme... home
checking for LOG4CXX... yes
checking to see if tracing should be enabled... no
checking to see if domain persistence should be enabled... no
checking whether make supports nested variables... (cached) yes
checking if xml parsers should perform validation... yes
checking for a Python interpreter with version >= 2.3... python
checking for python... /usr/bin/python
checking for python version... 2.7
checking for python platform... linux2
checking for python script directory... ${prefix}/lib/python2.7/site-packages
checking for python extension module directory... ${exec_prefix}/lib/python2.7/site-packages
checking if python backports are necessary... "no"
checking for python module logging ... yes
checking for python module subprocess... yes
checking for python module omniORB... yes
checking for python module omniidl... yes
checking for sys/wait.h that is POSIX.1 compatible... (cached) yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for pid_t... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking uuid/uuid.h usability... yes
checking uuid/uuid.h presence... yes
checking for uuid/uuid.h... yes
checking for uuid_generate in -luuid... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating ossie.pc
config.status: creating acinclude/Makefile
config.status: creating etc/Makefile
config.status: creating omnijni/Makefile
config.status: creating omnijni/include/omnijni/Makefile
config.status: creating omnijni/src/cpp/Makefile
config.status: creating omnijni/src/cpp/CORBA/Makefile
config.status: creating omnijni/src/java/Makefile
config.status: creating omnijni/src/python/omnijni/Makefile
config.status: creating control/Makefile
config.status: creating control/parser/Makefile
config.status: creating control/framework/Makefile
config.status: creating control/sdr/Makefile
config.status: creating control/sdr/dommgr/Makefile
config.status: creating control/sdr/devmgr/Makefile
config.status: creating base/Makefile
config.status: creating base/framework/python/Makefile
config.status: creating base/framework/java/Makefile
config.status: creating base/framework/java/jni/Makefile
config.status: creating base/framework/java/jni/COS/Makefile
config.status: creating base/framework/java/ossie/Makefile
config.status: creating base/framework/idl/Makefile
config.status: creating base/framework/Makefile
config.status: creating base/include/ossie/Makefile
config.status: creating base/include/Makefile
config.status: creating base/parser/Makefile
config.status: creating idl/Makefile
config.status: creating xml/Makefile
config.status: creating tools/LogEventAppender/Makefile
config.status: creating testing/Makefile
config.status: creating testing/_unitTestHelpers/buildconfig.py
config.status: creating testing/sdr/dev/devices/ExecutableDevice/Makefile
config.status: creating testing/sdr/dev/devices/BasicTestDevice_cpp/BasicTestDevice_cpp_impl1/Makefile
config.status: creating testing/sdr/dev/devices/BasicTestDevice_java/java/Makefile
config.status: creating testing/sdr/dev/devices/CppTestDevice/cpp/Makefile
config.status: creating testing/sdr/dev/devices/BasicDevWithExecParam_cpp/BasicDevWithExecParam_cpp_impl1/Makefile
config.status: creating testing/sdr/dev/devices/JavaTestDevice/java/Makefile
config.status: creating testing/sdr/dev/devices/SimpleDevice/SimpleDevice_cpp_impl1/Makefile
config.status: creating testing/sdr/dev/devices/props_test_device/props_test_device_cpp_impl1/Makefile
config.status: creating testing/sdr/dev/devices/issue_111_cpp/cpp/Makefile
config.status: creating testing/sdr/dev/devices/issue_111_java/java/Makefile
config.status: creating testing/sdr/dev/devices/PersonaDevice/cpp/Makefile
config.status: creating testing/sdr/dev/devices/ProgrammableDevice/cpp/Makefile
config.status: creating testing/sdr/dev/services/BasicService_java/java/Makefile
config.status: creating testing/sdr/dom/components/CppCallbacks/cpp/Makefile
config.status: creating testing/sdr/dom/components/TestCppProps/Makefile
config.status: creating testing/sdr/dom/components/TestJavaProps/Makefile
config.status: creating testing/sdr/dom/components/TestLegacyJavaProps/Makefile
config.status: creating testing/sdr/dom/components/TestJavaPropsRange/java/Makefile
config.status: creating testing/sdr/dom/components/linkedLibraryTest/Makefile
config.status: creating testing/sdr/dom/components/TestCppsoftpkgDeps/Makefile
config.status: creating testing/sdr/dom/components/javaDep/javaDep/Makefile
config.status: creating testing/sdr/dom/components/HardLimit/HardLimit_java_impl1/Makefile
config.status: creating testing/sdr/dom/components/SimpleComponent/SimpleComponent_cpp_impl1/Makefile
config.status: creating testing/sdr/dom/components/BasicAC/basicac_java_impl1/Makefile
config.status: creating testing/sdr/dom/components/BasicAC/BasicAC_cpp_impl1/Makefile
config.status: creating testing/sdr/dom/components/MessageReceiverCpp/Makefile
config.status: creating testing/sdr/dom/components/MessageSenderCpp/Makefile
config.status: creating testing/sdr/dom/components/EventSend/EventSend_java_impl1/Makefile
config.status: creating testing/sdr/dom/components/EventReceive/EventReceive_java_impl1/Makefile
config.status: creating testing/sdr/dom/components/PropertyChangeEventsCpp/Makefile
config.status: creating testing/sdr/dom/components/PropertyChangeEventsJava/PropertyChangeEventsJava_java_impl1/Makefile
config.status: creating testing/sdr/dom/components/ticket2093/cpp/Makefile
config.status: creating testing/sdr/dom/components/TestComplexProps/cpp/Makefile
config.status: creating testing/sdr/dom/components/TestComplexProps/java/Makefile
config.status: creating testing/sdr/dom/components/TestCppPropsRange/cpp/Makefile
config.status: creating testing/sdr/dom/components/TestAllPropTypes/cpp/Makefile
config.status: creating testing/sdr/dom/components/TestAllPropTypes/java/Makefile
config.status: creating testing/sdr/dom/components/TestLoggingAPI/cpp/Makefile
config.status: creating testing/sdr/dom/components/TestLoggingAPI/java/Makefile
config.status: executing depfiles commands
config.status: executing libtool commands
ubuntu@arm:
/framework-core/src$ make
Making all in acinclude
make[1]: Entering directory /home/ubuntu/framework-core/src/acinclude' make[1]: Nothing to be done forall'.
make[1]: Leaving directory /home/ubuntu/framework-core/src/acinclude' Making all in etc make[1]: Entering directory/home/ubuntu/framework-core/src/etc'
GEN ld.so.conf.d/redhawk.conf
GEN profile.d/redhawk.sh
GEN profile.d/redhawk.csh
GEN profile.d/redhawk-sdrroot.sh
GEN profile.d/redhawk-sdrroot.csh
make[1]: Leaving directory /home/ubuntu/framework-core/src/etc' Making all in base make[1]: Entering directory/home/ubuntu/framework-core/src/base'
Making all in framework/idl
make[2]: Entering directory /home/ubuntu/framework-core/src/base/framework/idl' make all-am make[3]: Entering directory/home/ubuntu/framework-core/src/base/framework/idl'
make[3]: Nothing to be done for all-am'. make[3]: Leaving directory/home/ubuntu/framework-core/src/base/framework/idl'
make[2]: Leaving directory /home/ubuntu/framework-core/src/base/framework/idl' Making all in framework/python make[2]: Entering directory/home/ubuntu/framework-core/src/base/framework/python'
make all-am
make[3]: Entering directory /home/ubuntu/framework-core/src/base/framework/python' python setup.py --quiet build make[3]: Leaving directory/home/ubuntu/framework-core/src/base/framework/python'
make[2]: Leaving directory /home/ubuntu/framework-core/src/base/framework/python' Making all in parser make[2]: Entering directory/home/ubuntu/framework-core/src/base/parser'
make[2]: Nothing to be done for all'. make[2]: Leaving directory/home/ubuntu/framework-core/src/base/parser'
Making all in framework
make[2]: Entering directory /home/ubuntu/framework-core/src/base/framework' CXX libossiecf_la-Device_impl.lo CXX libossiecf_la-PropertySet_impl.lo CXX libossiecf_la-Logging_impl.lo CXX libossiecf_la-Resource_impl.lo CXX libossiecf_la-ThreadedComponent.lo CXX libossiecf_la-ExecutableDevice_impl.lo CXX libossiecf_la-LoadableDevice_impl.lo LoadableDevice_impl.cpp: In member function 'virtual void LoadableDevice_impl::load(CF::FileSystem_ptr, const char*, CF::LoadableDevice::LoadType)': LoadableDevice_impl.cpp:325:43: warning: ignoring return value of 'int chdir(const char*)', declared with attribute warn_unused_result [-Wunused-result] chdir(currentPath.c_str()); ^ LoadableDevice_impl.cpp:367:43: warning: ignoring return value of 'int chdir(const char*)', declared with attribute warn_unused_result [-Wunused-result] chdir(currentPath.c_str()); ^ CXX libossiecf_la-helperFunctions.lo CXX libossiecf_la-POACreator.lo CXX libossiecf_la-CorbaUtils.lo CXX libossiecf_la-ORB.lo CXX libossiecf_la-prop_helpers.lo CXX libossiecf_la-MessageInterface.lo CXX libossiecf_la-PropertyInterface.lo CXX libossiecf_la-Service_impl.lo CXX libossiecf_la-AnyUtils.lo CXX libossiecf_la-loghelpers.lo logging/loghelpers.cpp: In function 'std::string ossie::logging::_saveConfig(const string&)': logging/loghelpers.cpp:408:43: warning: ignoring return value of 'ssize_t write(int, const void*, size_t)', declared with attribute warn_unused_result [-Wunused-result] write( fd, fc.c_str(), fc.size() ); ^ CXX libossiecf_la-rh_logger.lo CXX libossiecf_la-RH_LogEventAppender.lo CXX libossiecf_la-EventChannelSupport.lo CXXLD libossiecf.la libtool: link:libossiecf_la-PortSupplier_impl.lo' is not a valid libtool object
make[2]: *** [libossiecf.la] Error 1
make[2]: Leaving directory /home/ubuntu/framework-core/src/base/framework' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/ubuntu/framework-core/src/base'
make: *** [all-recursive] Error 1
ubuntu@arm:/framework-core/src$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
ubuntu@arm:
/framework-core/src$ dpkg -s libboost-dev | grep 'Version'
Version: 1.54.0.1ubuntu1

I'm hoping you will tell me I've done something stupid. I really appreciate your help, I'm a systems guy, not a software guy, so this is a stretch for me.

Thanks,
--Scott

Property Min/Max constants implementation

At present setting min/max values on a property seems like an arbitrary piece of documentation visible from the IDE. Despite adding the limits, it still requires the designer to hardcode the values into their classes. Perhaps an alternative approach could be to have the code generators add methods to the base class for either range checking or mangling constant fields for the designer to use.

For the latter example, if a string property had a min of 5 and max of 8, the code generator would provide in the base class:

property_name
PROPERTY_NAME_MIN
PROPERTY_NAME_MAX

This way the class instance could be written to interpret those numbers as lengths of strings, for example, or simply as strings themselves.

Limiting the number of results returned from a query

When querying a resource it would be nice if there was a way to limit the number of results and break the query up into multiple queries. For example, if you are querying a list of structs and the list contains thousands of elements you may end up going over the CORBA message size limit. In this case what you want to do is query for a specific number of elements in the list until you reach the end of the list.

Automatically send events when a property change

When a property is configured on a component it would be nice if there was an event send out to an event channel that would indicate what component, waveform, property, and changes just occurred. This would save other components from having to poll for changes.

Programmable Device Overloaded Assignment Operator Bug

The overloaded operator>>= in a programmable device fails to properly assign values to a hw_load_request_struct.

Below is the original function:

    inline bool operator>>= (const CORBA::Any& a, HW_LOAD::default_hw_load_request_struct& s) {
        CF::Properties* temp;
        if (!(a >>= temp)) return false;
        CF::Properties& props = *temp;
        for (unsigned int idx = 0; idx < props.length(); idx++) {
            if (!strcmp("request_id", props[idx].id)) {
                if (!(props[idx].value >>= s.request_id)) return false;
            }
            if (!strcmp("requester_id", props[idx].id)) {
                if (!(props[idx].value >>= s.requester_id)) return false;
            }
            if (!strcmp("hardware_id", props[idx].id)) {
                if (!(props[idx].value >>= s.hardware_id)) return false;
            }
            if (!strcmp("load_filepath", props[idx].id)) {
                if (!(props[idx].value >>= s.load_filepath)) return false;
            }
        }
        return true;
    };

I'm guessing the function is designed expecting an exact match for each property id. However, this is a discrepancy from the Persona::hwLoadRequest, which prepends "hw_load_request::" by default to each property id. This causes none of the values to be written into the hw_load_request_struct.
It also prevents the operator from returning false, so all loadRequests get stored as structs with empty values in the Programmable Device with no warning.

I believe the proposed solution allows the operator to behave correctly under the assumption that the expected property id must be at least a subset of the incoming value while also ensuring a meaningful return value.

inline bool operator>>=(const CORBA::Any& a,
        HW_LOAD::default_hw_load_request_struct& s) {
    CF::Properties* temp;
    if (!(a >>= temp)) {
        return false;
    }
    CF::Properties& props = *temp;
    std::string propertyId;
    for (unsigned int idx = 0; idx < props.length(); idx++) {
        propertyId = props[idx].id;
        if (propertyId.find("request_id") != std::string::npos) {
            if (!(props[idx].value >>= s.request_id)) {
                return false;
            }
        } else if (propertyId.find("requester_id") != std::string::npos) {
            if (!(props[idx].value >>= s.requester_id)) {
                return false;
            }
        } else if (propertyId.find("hardware_id") != std::string::npos) {
            if (!(props[idx].value >>= s.hardware_id)) {
                return false;
            }
        } else if (propertyId.find("load_filepath") != std::string::npos) {
            if (!(props[idx].value >>= s.load_filepath)) {
                return false;
            }
        } else {
            return false;
        }
    }
    return true;
}
;

One place to define message events

If two separate components want to send message events over an event channel then the message event needs to be defined in two different places. It would be helpful to only have to maintain the message event in one place.

nodeBooter Error

Hi,

I am trying to build redhawk-src-2.1.0, but failing when building nodeBooter. The error log is shown below:

./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign(char const*, char const*, unsigned int)': /usr/include/boost/regex/v4/basic_regex.hpp:382: undefined reference to boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits > >::do_assign(char const*, char const*, unsigned int)'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool)': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:1117: undefined reference to boost::re_detail::put_mem_block(void*)'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const': /usr/include/boost/regex/v4/cpp_regex_traits.hpp:447: undefined reference to boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function void boost::re_detail::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type)': /usr/include/boost/regex/pattern_except.hpp:75: undefined reference to boost::re_detail::raise_runtime_error(std::runtime_error const&)'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const': /usr/include/boost/regex/v4/cpp_regex_traits.hpp:445: undefined reference to boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function save_state_init': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:107: undefined reference to boost::re_detail::get_mem_block()'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp()': /usr/include/boost/regex/v4/perl_matcher_common.hpp:294: undefined reference to boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)'
./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function ~save_state_init': /usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:115: undefined reference to boost::re_detail::put_mem_block(void*)'
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:115: undefined reference to boost::re_detail::put_mem_block(void*)' ./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function perl_matcher':
/usr/include/boost/regex/v4/perl_matcher.hpp:374: undefined reference to boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)' ./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::cpp_regex_traits::transform_primary(char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:923: undefined reference to boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const' ./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::cpp_regex_traits::transform(char const*, char const*) const':
/usr/include/boost/regex/v4/cpp_regex_traits.hpp:919: undefined reference to boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const' ./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits > >::extend_stack()':
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:213: undefined reference to boost::re_detail::get_mem_block()' ./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits > >::match_prefix()':
/usr/include/boost/regex/v4/perl_matcher_common.hpp:333: undefined reference to boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > > >::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > > > const&)' ./.libs/libossiedomain.a(libossiedomain_la-helperFunctions.o): In function boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > >, boost::regex_traits<char, boost::cpp_regex_traits > >::match_match()':
/usr/include/boost/regex/v4/perl_matcher_non_recursive.hpp:973: undefined reference to boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > > >::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::string>, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::string> > > > const&)' collect2: error: ld returned 1 exit status make[2]: *** [nodeBooter] Error 1 make[2]: Leaving directory /home/karma/redhawk/redhawk-src-2.1.0/redhawk/src/control/framework'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/karma/redhawk/redhawk-src-2.1.0/redhawk/src/control'
make: *** [all-recursive] Error 1

Thanks!

Typo in online manual

In Appendix G, section 2, there is a colon missing after '= giop:unix"
(sorry if this is the wrong place to post this, I'm not sure where documentation issues should go)

sad.xsd hostcollocation's componentplacement not a sequence

In src/base/xml/xsd/sad.xsd, line 167 has the following in it:

maxOccurs="unbounded"

That needs to be moved to the next line because when I use the SADParser it will skip all componentplacement elements except for the last one. When I do the suggested change and regenerate the SADParser using generateDS then I get a sequence (list in python) of componentplacement objects as expected.

Unable to locate EPEL standalone tarball

I would like to install REDHAWK 1.10.0 on a standalone system. Section 2.3.1 of the documentation says to use redhawk-standalone-epel---.tar.gz to install the dependencies from EPEL, but I cannot find this anywhere on the REDHAWK site. Sorry if this is not the correct place for this issue!

bluefile.py

Hello,

I have ported bluefile.py to python3, and I would like to contribute it to this project: https://github.com/gnuradio/SigMF since this project seems ... staleish. There is any prospect for getting permission to do that?

Minor typo in manual

Online manual E.4 #6.2

sudo update-rc.d ominorb-eventservice defaults

has misspelled 'omniorb'

Problems building framework-core master on Xilinx ZC706

On CentOS6.7, Using Yocto Poky-Jethro in /opt/Yocto/poky-jethro-14.0.1
Added meta-xilinx recipes from https://github.com/Xilinx/meta-xilinx
Added openembedded-redhawk, edited all recipes to use SRCREV="${AUTOREV}"
Edited redhawk-core recipe to retrieve GIT repo from RedhawkSDR/framework-core; branch=master
Download and Unzip the Yocto 2.0.1 Buildtools to /opt/poky, source /opt/poky/2.0.1/environment-setup-x86_64-pokysdk-linux
Source /opt/Yocto/poky-jethro-14.0.1/oe-init-build-env
Add meta-xilinx, openembedded-redhawk to bblayers.conf
Select zc706-zynq7 hardware in local.conf
Execute bitbake core-image-minimal

Build of redhawk-core fails with missing headers in xsd/cxx/include
| #include <xsd/cxx/config.hxx>
| configure:19056: result: no
| configure:19056: checking for xsd/cxx/config.hxx
| configure:19056: result: no
| configure:19060: error: missing XSD headers

Followed similar setup in Bagoulla feature-no-xsd-1.10 branch to add in XSD using GIT patch, remove XSD tests from configure.ac, remove XSD calls from control/parsers/Makefile.am.
XSD. Created patches for all, added patches to redhawk-core recipe and attempted build again.
Received multiple errors regarding skel files. Errors pertain to parser routines expecting 3 arguments, but being given 4. It appears that the XSD skel files in Bagoulla feature-no-xsd-1.10 are not compatible with the latest other cpp and headers from the master branch.

Support for load balancing across multiple GPPs

When running multiple GPPs in the same domain it would be helpful if the waveform launching process was load balanced. This could be based on CPU/memory metrics: launch the next waveform on the GPP with the lowest CPU/memory usage. There could also be different load balancing schemes, such as performance based or round robin.

Domain documentation incorrect in Python

The comments of a domain object's help() indicate the method for releasing a waveform is called releaseApplication. No such method exists, but there is another method: removeApplication. The documentation comments may need to be updated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.