# i2ctcp (I2C over TCP)
This folder includes protocol (de)serialization functions for sending and
receiving I2C messages over TCP. These functions are used by the
[main controller](../main) and the [puzzle box client (pbc)](../client). This
folder does not include any puzzle bus specific code, and the headers for
puzbus are in the [shared](../shared) folder instead.
[MessagePack][msgpack] (specifically the [mpack][mpack] implementation) is used
for the actual serialization/deserializtion, and the functions in this folder
act as helpers for parsing from chunked data streams.
To use these functions, include the following statement in your CMakeLists.txt:
```cmake
include(../i2ctcp/include.cmake)
```
The functions are available by `#include`ing the `i2ctcpv1.h` header, and are
extensively documented using Doxygen-style comments.
[msgpack]: https://msgpack.org/
[mpack]: https://github.com/ludocode/mpack/