diff --git a/src/DummyTransport.h b/examples/decoder_example/DummyTransport.h similarity index 100% rename from src/DummyTransport.h rename to examples/decoder_example/DummyTransport.h diff --git a/examples/decoder_example/decoder_example.ino b/examples/decoder_example/decoder_example.ino index 9a12f6c..794314b 100644 --- a/examples/decoder_example/decoder_example.ino +++ b/examples/decoder_example/decoder_example.ino @@ -1,5 +1,5 @@ -#define DEBUG #include +#include "DummyTransport.h" void blink_before(){ digitalWrite(LED_BUILTIN, HIGH); diff --git a/examples/decoder_tests/DummyTransport.h b/examples/decoder_tests/DummyTransport.h new file mode 100644 index 0000000..dc3b3b7 --- /dev/null +++ b/examples/decoder_tests/DummyTransport.h @@ -0,0 +1,56 @@ +// +// Created by lucio on 4/8/25. +// + +#ifndef DUMMY_TRANSPORT_H +#define DUMMY_TRANSPORT_H +#include "transport.h" + +class DummyTransport: public ITransport { + + const uint8_t* _dummy_buf; + size_t _dummy_buf_size = 0; + size_t r_size = 0; + + public: + + DummyTransport(const uint8_t* buf, size_t size): _dummy_buf(buf), _dummy_buf_size(size){} + + void begin(){} + + bool available() override { + return _dummy_buf_size > 0; + } + + size_t write(const uint8_t* data, size_t size) override { + // Mock write + (void)data; + return size; + } + + size_t read(uint8_t* buffer, size_t size) override { + + size_t i; + for (i = 0; i < size; i++){ + if ((r_size + i) == _dummy_buf_size) break; + buffer[i] = _dummy_buf[r_size + i]; + delay(1); + } + + r_size = r_size + i; + return i; + + } + + size_t read_byte(uint8_t& r) override { + uint8_t b[1]; + if (read(b, 1) != 1){ + return 0; + }; + r = b[0]; + return 1; + } + +}; + +#endif //SERIALTRANSPORT_H \ No newline at end of file diff --git a/examples/decoder_tests/decoder_tests.ino b/examples/decoder_tests/decoder_tests.ino index ede3afb..9838829 100644 --- a/examples/decoder_tests/decoder_tests.ino +++ b/examples/decoder_tests/decoder_tests.ino @@ -1,4 +1,5 @@ #include +#include "DummyTransport.h" // Shorthand MsgPack::Packer packer; diff --git a/src/Arduino_RPClite.h b/src/Arduino_RPClite.h index 9a45c23..61b7d85 100644 --- a/src/Arduino_RPClite.h +++ b/src/Arduino_RPClite.h @@ -8,7 +8,6 @@ #include "Arduino.h" //#define HANDLE_RPC_ERRORS -#define DEBUG #include "transport.h" #include "client.h" #include "server.h" @@ -17,7 +16,6 @@ #include "decoder.h" #include "decoder_manager.h" -#include "DummyTransport.h" #include "SerialTransport.h" #endif //ARDUINO_RPCLITE_H diff --git a/src/rpclite_utils.h b/src/rpclite_utils.h index 0e13e65..9f17a44 100644 --- a/src/rpclite_utils.h +++ b/src/rpclite_utils.h @@ -16,8 +16,7 @@ namespace detail { bool unpackObject(MsgPack::Unpacker& unpacker); bool unpackArray(MsgPack::Unpacker& unpacker, size_t& size) { - - static MsgPack::arr_size_t sz; + MsgPack::arr_size_t sz; unpacker.deserialize(sz); size = 0; @@ -34,7 +33,7 @@ bool unpackArray(MsgPack::Unpacker& unpacker, size_t& size) { } bool unpackMap(MsgPack::Unpacker& unpacker, size_t& size) { - static MsgPack::map_size_t sz; + MsgPack::map_size_t sz; unpacker.deserialize(sz); size = 0;