@@ -12,6 +12,7 @@ This library provides the protocol foundation (encoding, decoding, message frami
1212- ** IOTMP message framing** — protobuf-style varint fields with support for all message types (CONNECT, RUN, DESCRIBE, START_STREAM, STOP_STREAM, STREAM_DATA, KEEP_ALIVE, etc.)
1313- ** Lightweight value type** (` iotmp_value ` ) — dynamic JSON-like data model at ~ 12 bytes per value on 32-bit targets
1414- ** Resource model** — register input, output, and input/output callbacks with ` operator= `
15+ - ** CRTP client base** (` iotmp_client_base ` ) — complete client logic (authentication, message handling, streaming, keepalive) with zero-overhead compile-time polymorphism. Platform clients only implement ` send_bytes ` and ` recv_bytes ` .
1516- ** Header-only** — no compilation needed, just add the include path
1617- ** Zero platform dependencies** — pure C++17, works on any platform with a conforming compiler
1718
@@ -23,8 +24,9 @@ This library is designed to be consumed by platform-specific IOTMP client librar
2324
2425| Platform | Repository |
2526| ----------| ------------|
27+ | Arduino / ESP32 / ESP8266 | [ IOTMP-Arduino] ( https://github.com/thinger-io/IOTMP-Arduino ) |
28+ | ESP-IDF (native) | [ IOTMP-ESPIDF] ( https://github.com/thinger-io/IOTMP-ESPIDF ) |
2629| Zephyr RTOS | [ IOTMP-Zephyr] ( https://github.com/thinger-io/IOTMP-Zephyr ) |
27- | Arduino / ESP32 | [ IOTMP-Arduino] ( https://github.com/thinger-io/iotmp-arduino ) |
2830
2931### Direct usage
3032
@@ -131,15 +133,18 @@ c++ -std=c++17 -I../../include -o test_protocol test_protocol.cpp
131133
132134```
133135include/thinger/iotmp/core/
136+ ├── iotmp_client.hpp # CRTP client base (auth, messages, streams, keepalive)
134137├── iotmp_value.hpp # Lightweight dynamic value type
135- ├── pson_types.hpp # PSON wire type enum
136- ├── pson_encoder.hpp # PSON binary encoder (template)
137- ├── pson_decoder.hpp # PSON binary decoder (template)
138+ ├── iotmp_resource.hpp # Resource model (input/output callbacks)
139+ ├── iotmp_message.hpp # Message model (types, fields, framing)
138140├── iotmp_encoder.hpp # IOTMP message encoder
139141├── iotmp_decoder.hpp # IOTMP message decoder
140- ├── iotmp_message.hpp # Message model (types, fields, framing)
141- ├── iotmp_resource.hpp # Resource model (input/output callbacks)
142+ ├── pson_encoder.hpp # PSON binary encoder (template)
143+ ├── pson_decoder.hpp # PSON binary decoder (template)
144+ ├── pson_types.hpp # PSON wire type enum
142145├── iotmp_adapters.hpp # I/O adapters (memory, string, null writers)
146+ ├── iotmp_compat.hpp # Operators (>> <<) and platform macros
147+ ├── iotmp_log.hpp # Unified logging macros
143148└── iotmp_types.hpp # Common type aliases
144149```
145150
0 commit comments