@@ -18,7 +18,7 @@ class BridgeMonitor: public Stream {
1818
1919private:
2020 BridgeClass& bridge;
21- RingBufferN<BufferSize> buffer ;
21+ RingBufferN<BufferSize> temp_buffer ;
2222 bool is_connected = false ;
2323
2424public:
@@ -33,18 +33,53 @@ class BridgeMonitor: public Stream {
3333 }
3434
3535 int read () override {
36- return 0 ;
36+ uint8_t c;
37+ read (&c, 1 );
38+ return c;
39+ }
40+
41+ int read (uint8_t * buffer, size_t size) {
42+ int i = 0 ;
43+ while (temp_buffer.available () && i < size) {
44+ buffer[i++] = temp_buffer.read_char ();
45+ }
46+ return i;
3747 }
3848
3949 int available () override {
40- return 0 ;
50+ int size = temp_buffer.availableForStore ();
51+ if (size > 0 ) _read (size);
52+ return temp_buffer.available ();
4153 }
4254
4355 int peek () override {
44- return 0 ;
56+ if (temp_buffer.available ()) {
57+ return temp_buffer.peek ();
58+ }
4559 }
4660
4761 size_t write (uint8_t c) override {
62+ return write (&c, 1 );
63+ }
64+
65+ size_t write (const uint8_t * buffer, size_t size) override {
66+
67+ MsgPack::str_t send_buffer;
68+
69+ for (size_t i = 0 ; i < size; ++i) {
70+ #ifdef ARDUINO
71+ send_buffer += (char )buffer[i];
72+ #else
73+ send_buffer.push_back (static_cast <char >(buffer[i]));
74+ #endif
75+ }
76+
77+ size_t written;
78+ bool ret = bridge.call (MON_WRITE_METHOD, written, send_buffer);
79+ if (ret) {
80+ return written;
81+ }
82+
4883 return 0 ;
4984 }
5085
@@ -66,8 +101,26 @@ class BridgeMonitor: public Stream {
66101 return size;
67102 }
68103
69- bool read (String& message, size_t size) {
70- return bridge.call (MON_READ_METHOD, message, size);
104+ int _read (size_t size) {
105+
106+ if (size == 0 ) return 0 ;
107+
108+ MsgPack::str_t message;
109+ bool ret = bridge.call (MON_READ_METHOD, message, size);
110+
111+ if (ret) {
112+ for (size_t i = 0 ; i < message.length (); ++i) {
113+ temp_buffer.store_char (message[i]);
114+ }
115+ return message.length ();
116+ }
117+
118+ // if (bridge.lastError.code > NO_ERR) {
119+ // is_connected = false;
120+ // }
121+
122+ return 0 ;
123+
71124 }
72125
73126
0 commit comments