nuttx-apps/system/psmq/README.md
Michał Łyszczek 19e2ffe37e system/psmq: update to v0.2.1
This release breaks API and ABI by making use of library way
easier and more safe. No app in a nuttx tree uses psmq, so
nothing in-tree will be broken by this change.

Updated license files to Apache 2.0.

Tested on nucleo-f091

Signed-off-by: Michał Łyszczek <michal.lyszczek@bofc.pl>
2021-05-23 23:57:25 +01:00

62 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# System / `psmq` Publish Subscribe Message Queue
`psmq` is publish subscribe message queue. It's a set of programs and libraries
to implement publish/subscribe way of inter-process communication on top of
POSIX message queue.
Manuals, source code and more info at: https://psmq.bofc.pl
Little demo using `psmqd` broker, `psmq_pub` and `psmq_sub`:
Start broker and make it log to file
```
nsh> psmqd -b/brok -p/sd/psmqd/psmqd.log &
```
Start subscribe thread that will read all messages send on `/can/*` and
`/adc/*` topic, and dump all readings to file
```
nsh> psmq_sub -n/sub -b/brok -t/can/* -t/adc/* -o/sd/psmq-sub/can.log &
n/connected to broker /brok
n/subscribed to: /can/*
n/subscribed to: /adc/*
n/start receiving data
n/reply timeout set 100
```
Publish some messages
```
nsh> psmq_pub -b/brok -t/can/engine/rpm -m50
nsh> psmq_pub -b/brok -t/adc/volt -m30
nsh> psmq_pub -b/brok -t/can/room/10/temp -m23
nsh> psmq_pub -b/brok -t/pwm/fan1/speed -m300
```
Check out subscribe thread logs
```
nsh> cat /sd/psmq-sub/can.log
```
```
[2021-05-23 17:53:59] p:0 l: 3 /can/engine/rpm 50
[2021-05-23 17:53:59] p:0 l: 3 /adc/volt 30
[2021-05-23 17:53:59] p:0 l: 3 /can/room/10/temp 23
```
As you can see `/pwm/fan1/speed` hasn't been received by subscribe thread,
since we didn't subscribe to it.
Content:
- `psmqd` broker, relays messages between clients.
- `psmq_sub` listens to specified topics, can be used as logger for
communication (optional).
- `psmq_pub` publishes messages directly from shell. Can send binary data, but
requires pipes, so on nuttx it can only send ASCII.
- `libpsmq` library used to communicate with the broker and send/receive
messages.