roo_transport
API Documentation for roo_transport
Loading...
Searching...
No Matches
link_stream_transport.cpp
Go to the documentation of this file.
1#if (defined ARDUINO)
2
4
5#include "Arduino.h"
6
7namespace roo_transport {
8
9LinkStreamTransport::LinkStreamTransport(Stream& stream, LinkBufferSize sendbuf,
10 LinkBufferSize recvbuf)
11 : stream_(stream),
12 output_(stream_),
13 input_(stream_),
14 sender_(output_),
15 receiver_(input_),
16 transport_(sender_, sendbuf, recvbuf) {}
17
18void LinkStreamTransport::begin() { transport_.begin(); }
19
20LinkStream LinkStreamTransport::connectAsync(
21 std::function<void()> disconnect_fn) {
22 return LinkStream(transport_.connect(std::move(disconnect_fn)));
23}
24
25LinkStream LinkStreamTransport::connect(std::function<void()> disconnect_fn) {
26 LinkStream link = connectAsync(std::move(disconnect_fn));
27 link.awaitConnected();
28 return LinkStream(std::move(link));
29}
30
31LinkStream LinkStreamTransport::connectOrDie() {
32 return connect(
33 []() { LOG(FATAL) << "LinkTransport: peer reset; rebooting"; });
34}
35
36size_t LinkStreamTransport::tryReceive() {
37 return receiver_.tryReceive([this](const roo::byte* buf, size_t len) {
38 transport_.processIncomingPacket(buf, len);
39 });
40}
41
42size_t LinkStreamTransport::receive() {
43 return receiver_.receive([this](const roo::byte* buf, size_t len) {
44 transport_.processIncomingPacket(buf, len);
45 });
46}
47
48} // namespace roo_transport
49
50#endif // defined(ARDUINO)