Problem: -------- The agent process is not receiving pwhm events over usp direct socket. Cause: ------ beerocks_agent connects simultaneously to both ubus and usp direct socket. The following initialization sequence exposes several limitations in libamxb and amxb_usp: 1 - Load and connect to ubus 2 - Load usp backend 3 - Set usp configuration 4 - Connect to usp socket In step 1: An internal libamxb configuration is created without a usp section. In step 2: - When loading usp backend the previous configuration (which doesn't include any usp section) is automatically set to amxb_usp. As a "limitation" in amxb_usp, this will result into a NULL amxb_usp configuration (ie config_opts = NULL). - As a consequence no EndPointID (needed later by usp LocalAgent to created imtp handshake) can be created and later events subscription will fail internally. The fail is not returned by the subscribe API which is yet another problem. In step 3: - Calling amxb_set_config has no effect because the configuration is applied only to backends listed in the load_order. - Since the usp backend was not added to load_order list (internal to libamxb) in step 2, the USP configuration is never applied. (This appears to be another limitation in libamxb.) Solution: --------- Invert steps 2 and 3. By setting the usp configuration before loading the backend, the usp section is present in the internal libamxb configuration. As a result, when the usp backend is loaded, it receives a non-NULL configuration, allowing the EndPointID to be created correctly and enabling successful event subscription. Fixes: PPW-1208 Signed-off-by: Houssem Dafdouf <houssem.dafdouf_ext@softathome.com>
MultiAP Framework
This project includes the implementation of the following MultiAP modules as defined in the MultiAP low level architecture - broker (local & global), MultiAP library, WFA-CA, discovery agent and the 1905 transport, platform agent core & PAL (the PAL links to platform specific library implementing the PAL for the platform - libplat.so).
The MultiAP controller and agent are external to this project.
Table of Contents
Prerequisites
The following are needed for building the MultiAP framework on any Linux machine (local and cross compile):
| Package | Version |
|---|---|
| cmake | >=2.8 |
| c++11 | |
| json-c | 0.12.1 |
| ubus | any |
Cross compiling - currently supporting UGW & RDKB cross compiling, see feed_multiap.
Build & Install
It is recommended to build "out of tree". This is specially useful if the same sources are used for compiling on the local machine and cross compiling.
git clone ssh://git@gts-chd.intel.com:29418/sw_ugw/multiap.git
mkdir build && cd build
cmake ../multiap && make install
At this point multiap framework is built, binaries are available in build/install folder.
Tests
The MultiAP framework project has support for CMAKE CTEST.
To compile and run the tests: cmake ../multiap && make install && make test
Unit Tests
Supported Unit Tests:
- version - messaging library sanity test and show version
- broker_test - test the broker functionality by running a broker, subscriber and publisher that sends a single message
- socket_test - test socket class
- poller_test - test poller class
- transport_test - Sending 1905 CMDUs over 1905.1 Transport service over raw socket
References
Versioning
Authors
- Tomer Eliyahu tomer.b.eliyahu@intel.com
License
This project is licensed under the BSD+Pantet License - see the LICENSE file for details
