Lighter-than-air, peer-to-peer, bounded, non-blocking, non-threaded, etc., publish-subscribe networking
Switch branches/tags
Nothing to show
Clone or download
eboasson Merge pull request #3 from grassjelly/master
commented out non-existent header file "arduino.h"
Latest commit d193488 Jul 6, 2018
Failed to load latest commit information.
example Merge pull request #3 from grassjelly/master Jul 6, 2018
spec spec: consistently use Zenoh throughout the document May 11, 2018
src attempt at reducing the cmake mess (and fixing issues discovered in t… Jun 3, 2018
test proof-of-concept for TCP-based communications (with some papering ove… May 10, 2018
zhe.xcodeproj add PoC TLS support May 14, 2018
.gitignore attempt at reducing the cmake mess (and fixing issues discovered in t… Jun 3, 2018
LICENSE added license Nov 10, 2017 docs update May 10, 2018
makefile set language standard to C99, enable pedantic mode of gcc and clang Mar 2, 2018
zheConfig.cmake add bogus zheConfig.cmake file for the benefit of rmw_zhe package Jun 1, 2018

Zeno-He (zhe for short) is a compact implementation of the Zenoh protocol that does not depend on dynamic allocation or threading. Instead, it is a non-blocking implementation that assumes single threaded use with polling, and a system that can be sized at compile time. Zhe can be configured to operate in peer-to-peer mode or to operate as a client that relies on a broker.

Targeted configurations vary from a minimal client on an Arduino Uno (an 8-bit CPU with only 2kB of RAM) to a bunch of low-power, high-integrity CPUs running a real-time, distributed control system, and on to dozens of peers running on high-end CPUs and saturating a fast network. Whether it will actually meet all these requirements remains to be seen. Still, so far, so good.

Zhe does not call any operating system functions directly (its use of the standard library is currently limited to mem*, strlen and isalnum). It does rely on a small abstraction layer for sending a message without blocking (it may of course be dropped), comparing addresses and converting an address to text. What constitutes sending data on a network or what an address looks like is deliberately left undefined.

Please note that it is currently a research project under active development. Only the basic functionality supported by the Zenoh protocol has so far been implemented, and still missing are several features we consider important, such as selections and transient data support. These will be implemented in the near future. Furthermore, none of the settings are final, and everything can (and probably will) still change.