elbus 0.2.21

Local and network IPC bus
Documentation
elbus protocol specification
****************************

Greetings
=========

server: EB 01 00

client: EB 01 00

server: 01 or 75 if not supported and closes

client: XX XX (len) ID (string-utf8-bytes)

server: 01 (OK) or XX (error code) and closes the connection

Outgoing frames
===============

client: XX XX XX XX (OP-ID-CUSTOM) FLAGS XX XX XX XX (frame len) TARGET 00 PAYLOAD

FLAGS = u8, first 6 bits - op, last 2 bits = QoS (0 - no confirm, 1 - confirm
processed)

Operations:

* 0 - NOP (ping)
* 1 - publish to topic, target = topic
* 2 - subscribe to topic(s), no target required
* 3 - unsubscribe from topic(s), no target required
* 0x12 - direct message
* 0x13 - broadcast message

Pings (keep-alive frames)
=========================

client: XX XX XX XX 00 XX XX XX XX

where XX - any bytes (so 0x00 * 9 is fine)

the client should ping the server to make sure the connection is alive. the
server may ping the client, no reply is required.

Incoming frames
===============

first 6 bytes:

* 0 - frame type
* 1-4 - frame len or op id
* 5 - reserved or ack result

Acknowledgements
----------------

The server sends acks for all operations with QoS > 0

server: FE XX XX XX XX (OP-ID-CUSTOM) 01 (OK) or error code

Messages
--------

server: 0x12/0x13 XX XX XX XX 00 (frame len) SENDER 00 PAYLOAD 

Topic publications
------------------

server: 01 XX XX XX XX 00 (frame len) SENDER 00 TOPIC 00 PAYLOAD