| .. zephyr:code-sample:: zbus-runtime-obs-registration |
| :name: Runtime observer registration |
| :relevant-api: zbus_apis |
| |
| Use zbus' runtime observer registration to filter data generated by a producer. |
| |
| Overview |
| ******** |
| The sample illustrates a way of using the runtime observer registration feature. The developer can understand how to use static and runtime observer registration with this sample. |
| |
| In this sample, we have the threads producer and consumer. In the middle of the communication, we have the filter responsible for filtering the data generated by the producer. In a loop, the code activates the filter. After 5 seconds, the filter is disabled, and the filter bypass is enabled. At last, 5 seconds later, the filter bypass is disabled, and the loop repeats everything. |
| |
| Building and Running |
| ******************** |
| |
| This project outputs to the console. It can be built and executed |
| on QEMU as follows: |
| |
| .. zephyr-app-commands:: |
| :zephyr-app: samples/subsys/zbus/runtime_obs_registration |
| :host-os: unix |
| :board: qemu_x86 |
| :goals: run |
| |
| Sample Output |
| ============= |
| |
| .. code-block:: console |
| |
| I: System started |
| I: Activating filter |
| I: >-- Raw data fetched |
| I: -|- Filtering data |
| I: --> Consuming data: Acc x=0, y=0, z=0 |
| I: >-- Raw data fetched |
| I: -|- Filtering data |
| I: --> Consuming data: Acc x=2, y=2, z=2 |
| I: >-- Raw data fetched |
| I: -|- Filtering data |
| I: --> Consuming data: Acc x=0, y=0, z=0 |
| I: >-- Raw data fetched |
| I: -|- Filtering data |
| I: --> Consuming data: Acc x=4, y=4, z=4 |
| I: >-- Raw data fetched |
| I: -|- Filtering data |
| I: --> Consuming data: Acc x=0, y=0, z=0 |
| I: Deactivating filter |
| I: Bypass filter |
| I: >-- Raw data fetched |
| I: --> Consuming data: Acc x=6, y=6, z=6 |
| I: >-- Raw data fetched |
| I: --> Consuming data: Acc x=7, y=7, z=7 |
| I: >-- Raw data fetched |
| I: --> Consuming data: Acc x=8, y=8, z=8 |
| I: >-- Raw data fetched |
| I: --> Consuming data: Acc x=9, y=9, z=9 |
| I: >-- Raw data fetched |
| I: --> Consuming data: Acc x=10, y=10, z=10 |
| I: Disable bypass filter |
| I: >-- Raw data fetched |
| I: >-- Raw data fetched |
| I: >-- Raw data fetched |
| I: >-- Raw data fetched |
| I: >-- Raw data fetched |
| |
| <continues> |
| |
| Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`. |