“IceC is an object oriented communication middleware,
specifically designed for highly constrained devices. Written in
C/C++, and with a binary protocol, it uses a minimal footprint, not
only on processor and memory resources, but also in network bandwith
usage.”
Portable
Written in ANSI C (with some endpoints in C++), you can use
IceC wherever you have a compliant C
compiler. Moreover, the core units are decoupled from
non-standard libraries, which makes porting very easy.
Extendable
IceC uses a plug-in system to implement the communication
endpoints. With a very straightforward interface, it is
easy to add support for additional network protocols or hardware
adapters.
For many protocols
Currently, IceC has endpoints for TCP/IP or UDP/IP, but
also for Serial, RS-485 (using a custom protocol called
RRP), FIFO
buffers, ZigBee, nRF24... and growing. Need more?
Tell us!
Ready for IoT
You can use IceC to send the value of your sensors or
change the state of your actuators from anywhere (even more
seamlessly with IDM).
IceC is compatible with cloud and cloud-less applications.
Small hardware needs
It is designed for highly resource constrained hardware
(like Class 0 devices, as specified in RFC
7228). Thus, it works perfectly on AVR based devices (like
many Arduinos), with
only 32 KiB of code and 2 KiB of RAM. Of course, it is
ported to "bigger" platforms, like the ESP8266, many ARMs
and even some FPGA, like the Zynq.
Full of features
IceC is a minimal implementation of IceP, the protocol used by
ZeroC Ice. It supports the
core features of IceP v1.0, along some "extra" features, like Dynamic Ice
or Default Servants, and Ice core services, like the IceStorm event service.
Efficient
Using a binary and well-designed protocol, IceP,
you will use your network bandwith wisely. Given that IceC
does not need to parse complex plain-text headers or markup,
also is very efficient in computational resources, like CPU
time and memory, reducing latency too.
Intuitive IDL
Define you API (the contract between clients and servers)
using Ice's IDL,
called Slice.
IceC, again, supports all basic features:
modules, interfaces, methods, basic types, custom structs,
dictionaries, sequences...
Easy to use
IceC handles the communication part, lets you focus on your
application solution! Please, go to Getting
Started if you want to start right now!