TinyRobotics
Loading...
Searching...
No Matches
SerializeArduino.h
1#pragma once
2#include "Stream.h"
3
4namespace tinyrobotics {
5
6/**
7 * @class SerializeArduino
8 * @ingroup serialize
9 * @brief Arduino-compatible serialization utility for Serializable objects.
10 *
11 * The SerializeArduino class provides methods to serialize and deserialize objects
12 * implementing the Serializable interface, using Arduino's Stream and Print APIs.
13 *
14 * - Supports both input (Stream) and output (Print) for flexible I/O.
15 * - print() writes the object's string representation to the output stream.
16 * - read() reads a string from the input stream and populates the object using fromString().
17 * - Enables saving/loading object state or transmitting data over serial or other stream-based interfaces.
18 *
19 * Example:
20 * @code
21 * SerializeArduino serializer(Serial);
22 * serializer.print(myObject); // Write to Serial
23 * serializer.read(myObject); // Read from Serial
24 * @endcode
25 *
26 * @note The Serializable interface defines how objects are converted to/from strings.
27 *
28 * @see Serializable
29 */
30class SerializeArduino {
31 public:
32 SerializeArduino(Stream& io) {
33 p_io = &io;
34 p_out = &io;
35 }
36 SerializeArduino(Print& out) { p_out = &out; }
37
38 size_t print(Serializable& obj) {
39 if (p_out == nullptr) return 0;
40 return p_out->println(obj.toString().c_str());
41 }
42
43 bool read(Serializable& obj) {
44 if (p_io == nullptr) return false;
45 StringType str = p_io->readStringUntil('\n');
46 return obj.fromString(str);
47 }
48
49 protected:
50 Stream* p_io = nullptr;
51 Print* p_out = nullptr;
52};
53
54} // namespace tinyrobotics
Arduino-compatible serialization utility for Serializable objects.
Definition: SerializeArduino.h:30