Files
Houssem Dafdouf 60fe655337 bwl: agent: fix amxb_usp events not received
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>
2025-12-17 11:50:59 +01:00
..

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.

Intel MultiAP Framework

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

1.5.0

Authors

License

This project is licensed under the BSD+Pantet License - see the LICENSE file for details

Table Of contents