| .. zephyr:code-sample:: zbus-msg-subscriber |
| :name: Message subscriber |
| :relevant-api: zbus_apis |
| |
| Use zbus message subscribers to listen to messages published to channels. |
| |
| Overview |
| ******** |
| This sample illustrates how to use a message subscriber in different |
| ways in conjunction with other types of observers. |
| |
| 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/msg_subscriber |
| :host-os: unix |
| :board: qemu_x86 |
| :goals: run |
| |
| Sample Output |
| ============= |
| |
| .. code-block:: console |
| |
| -- west build: running target run |
| [0/1] To exit from QEMU enter: 'CTRL+a, x'[QEMU] CPU: qemu32,+nx,+pae |
| Booting from ROM.. |
| I: ----> Publishing to acc_data_chan channel |
| I: AL Memory allocated 28 bytes. Total allocated 28 bytes |
| I: From listener foo_lis -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub1 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub2 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub3 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub4 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub5 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub6 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub7 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub8 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub9 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub10 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub11 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub12 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub13 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub14 -> Acc x=1, y=10, z=100 |
| I: From msg subscriber bar_msg_sub15 -> Acc x=1, y=10, z=100 |
| I: FR Memory freed 28 bytes. Total allocated 0 bytes |
| I: From msg subscriber bar_msg_sub16 -> Acc x=1, y=10, z=100 |
| I: From subscriber bar_sub1 -> Acc x=1, y=10, z=100 |
| I: From subscriber bar_sub2 -> Acc x=1, y=10, z=100 |
| I: ----> Publishing to acc_data_chan channel |
| I: AL Memory allocated 28 bytes. Total allocated 28 bytes |
| I: From listener foo_lis -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub1 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub2 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub3 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub4 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub5 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub6 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub7 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub8 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub9 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub10 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub11 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub12 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub13 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub14 -> Acc x=2, y=20, z=200 |
| I: From msg subscriber bar_msg_sub15 -> Acc x=2, y=20, z=200 |
| I: FR Memory freed 28 bytes. Total allocated 0 bytes |
| I: From msg subscriber bar_msg_sub16 -> Acc x=2, y=20, z=200 |
| I: From subscriber bar_sub1 -> Acc x=2, y=20, z=200 |
| I: From subscriber bar_sub2 -> Acc x=2, y=20, z=200 |
| <continues> |
| |
| Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`. |