Hi, On Thu, May 26, 2016 at 9:11 AM, Anupam Datta <[email protected]> wrote: > Hi Pepjin, > I had some query regarding celix : > > 1. is it possible to pass arguments to bundles ? ie. at the time of > starting I want to send some configurable parameters.
Yes. Currently there are two ways. 1 Add a property to the config.properties file. A bundle can retrieve the values using the bundleContext_getProperty. See [1] and [2]. When possible we try to follow the Java OSGi api (adapted to C). 2 Declare a env variable. In case of the Celix bundleContext_getProperty method if a property is not present in the framework properties (read the config.properties file) the framework will look if there is an environment variable present with the requested property name [1] https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html#getProperty%28java.lang.String%29 [2] https://github.com/apache/celix/blob/master/framework/public/include/bundle_context.h Another way is to use the config admin, this is more flexible but also more complex. And there are still some TODO's left for the config admin. > 2. What is the way of remotely controlling and data capturing via celix > bundles ? Is there any server where device can register itself via celix > and from server through browser we can start stop bundle and fetch data? > I had seen the remote shell and remote service folder but not much > documentation is available there in the folders to understand how exactly > it works. For remote controlling the bundles you can use the remote shell and Apache ACE. For remote shell you can try the remote_shell example (in the deploy/remote_shell folder of the build). When started use a telnet program to connect (telnet localhost 6666). The remote_shell depends on the shell bundle. Note that remote_shell is a nice feature to gain remote control, but is (by design) not secure. An other option is to use Apache ACE. In this case different devices can register to Apache ACE using the deployment_admin bundle. You can then use Apache ACE to define which bundles should be deployed on which devices. See Apache ACE [3] for more info. You can combine this with remote shell for more control. [3] https://ace.apache.org/ Remote services can be used to create distributed application base on services. The Apache Celix remote services implementation works with the Amdatu Remote Services implementation [4] The remote-services-cfg example should work out of the box to give you an idea. Note that although technically remote services works, you still need to put considerable effort in it to get something working. We are aware of this and are working on a solution to simplify the use of remote services, but for the time being manually effort is needed to get it running. [4] http://www.amdatu.org/components/remote.html Could you specify in more details why do want to build / meand with 'data capturing via celix' ? Because I am not sure if the remote services is want you want (synchronized communication). > > Thanks & Regards > Anupam Datta > > On Tue, May 24, 2016 at 12:42 AM, Anupam Datta <[email protected]> wrote: > >> Thank you Pepjin. I will definitely try that out. >> >> Thanks & Regards >> Anupam Datta >> On 24-May-2016 12:28 AM, "Pepijn Noltes" <[email protected]> wrote: >> >>> Hi Anupam, >>> >>> Please use the documentation at >>> https://github.com/apache/celix/tree/develop/documents >>> The idea is when a new Celix release has been made, the website will >>> refer to documentation github. >>> >>> On Mon, May 23, 2016 at 11:52 AM, Anupam Datta <[email protected]> wrote: >>> > Hi, >>> > I had tried with git version as per the doc : >>> > https://celix.apache.org/documentation/getting_started.html >>> > after >>> > make all >>> > I did : >>> > #install the framework and the bundles >>> > sudo make install-all >>> > >>> > It showed me error : make: *** No rule to make target 'install-all'. >>> Stop. >>> > >>> > So I did sudo make install >>> > >>> > log file attached : install_log.txt >>> > >>> > I created the demo project . After creating, built it and another error >>> > showed : >>> > >>> > -- Using jar to create bundles >>> > -- bundle function is deprecated. update target 'hello_001' to >>> add_bundle >>> > -- Configuring done >>> > CMake Error at >>> > /usr/local/share/celix/cmake/modules/cmake_celix/Packaging.cmake:149 >>> > (add_library): >>> > Cannot find source file: >>> > >>> > ( >>> > >>> > Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm >>> .hpp >>> > .hxx .in .txx >>> > Call Stack (most recent call first): >>> > >>> /usr/local/share/celix/cmake/modules/cmake_celix/PackagingLegacy.cmake:41 >>> > (add_bundle) >>> > bundles/hello_001/CMakeLists.txt:4 (bundle) >>> > >>> >>> The documentation was incorrect. The should be no parentheses around >>> the bundle SOURCES. >>> If you remove them, it should work .... >>> >>> > >>> > CMake Error: CMake can not determine linker language for target: >>> hello_001 >>> > CMake Error: Cannot determine link language for target "hello_001". >>> > -- Generating done >>> > -- Build files have been written to: >>> > /home/anupam/Dev/ApacheCelix/git_celix/DM_proj_001-build >>> > >>> > So what was the issue with it? The directory structure of the demo proj >>> : >>> > >>> > ├── DM_proj_001 >>> > │ ├── bundles >>> > │ │ └── hello_001 >>> > │ │ ├── CMakeLists.txt >>> > │ │ └── private >>> > │ │ └── src >>> > │ │ └── activator.c >>> > │ └── CMakeLists.txt >>> > └── DM_proj_001-build >>> > ├── bundles >>> > │ └── hello_001 >>> > │ ├── CMakeFiles >>> > │ │ ├── CMakeDirectoryInformation.cmake >>> > │ │ ├── hello_001_bundle.dir >>> > │ │ │ ├── build.make >>> > │ │ │ ├── cmake_clean.cmake >>> > │ │ │ ├── DependInfo.cmake >>> > │ │ │ └── progress.make >>> > │ │ ├── hello_001.dir >>> > │ │ │ ├── build.make >>> > │ │ │ ├── cmake_clean.cmake >>> > │ │ │ ├── DependInfo.cmake >>> > │ │ │ ├── depend.make >>> > │ │ │ ├── flags.make >>> > │ │ │ └── progress.make >>> > │ │ └── progress.marks >>> > │ ├── cmake_install.cmake >>> > │ ├── hello_001_gen >>> > │ │ ├── MANIFEST.MF >>> > │ │ ├── MANIFEST.step1 >>> > │ │ └── MANIFEST.step2 >>> > │ └── Makefile >>> > ├── CMakeCache.txt >>> > ├── CMakeFiles >>> > │ ├── 3.5.1 >>> > │ │ ├── CMakeCCompiler.cmake >>> > │ │ ├── CMakeDetermineCompilerABI_C.bin >>> > │ │ ├── CMakeSystem.cmake >>> > │ │ └── CompilerIdC >>> > │ │ ├── a.out >>> > │ │ └── CMakeCCompilerId.c >>> > │ ├── bundles.dir >>> > │ │ ├── build.make >>> > │ │ ├── cmake_clean.cmake >>> > │ │ ├── DependInfo.cmake >>> > │ │ └── progress.make >>> > │ ├── cmake.check_cache >>> > │ ├── CMakeDirectoryInformation.cmake >>> > │ ├── CMakeOutput.log >>> > │ ├── CMakeRuleHashes.txt >>> > │ ├── CMakeTmp >>> > │ ├── deploy.dir >>> > │ │ ├── build.make >>> > │ │ ├── cmake_clean.cmake >>> > │ │ ├── DependInfo.cmake >>> > │ │ └── progress.make >>> > │ ├── feature_tests.bin >>> > │ ├── feature_tests.c >>> > │ ├── Makefile2 >>> > │ ├── Makefile.cmake >>> > │ ├── progress.marks >>> > │ ├── rat.dir >>> > │ │ ├── build.make >>> > │ │ ├── cmake_clean.cmake >>> > │ │ ├── DependInfo.cmake >>> > │ │ └── progress.make >>> > │ └── TargetDirectories.txt >>> > ├── cmake_install.cmake >>> > └── Makefile >>> > >>> > Please share your view on it. let me know if any other log is needed. >>> > >>> > Thanks & Regards >>> > Anupam Datta >>> > >>> >>> Greetings, >>> Pepijn >>> >>
