@@ -31,13 +31,18 @@ class BridgeMonitor: public Stream {
3131 RingBufferN<BufferSize> temp_buffer;
3232 struct k_mutex monitor_mutex{};
3333 bool _connected = false ;
34+ bool _compatibility_mode = true ;
3435
3536public:
3637 explicit BridgeMonitor (BridgeClass& bridge): bridge(&bridge) {}
3738
3839 using Print::write;
3940
4041 bool begin (unsigned long _legacy_baud=0 , uint16_t _legacy_config=0 ) {
42+ // unused parameters for compatibility with Stream
43+ (void )_legacy_baud;
44+ (void )_legacy_config;
45+
4146 k_mutex_init (&monitor_mutex);
4247
4348 if (is_connected ()) return true ;
@@ -55,6 +60,8 @@ class BridgeMonitor: public Stream {
5560
5661 bool out = false ;
5762 _connected = bridge->call (MON_CONNECTED_METHOD).result (out) && out;
63+ MsgPack::str_t ver;
64+ _compatibility_mode = !bridge->getRouterVersion (ver);
5865 k_mutex_unlock (&monitor_mutex);
5966 return out;
6067 }
@@ -71,19 +78,19 @@ class BridgeMonitor: public Stream {
7178 }
7279
7380 int read () override {
74- uint8_t c;
81+ uint8_t c = 0 ;
7582 read (&c, 1 );
7683 return c;
7784 }
7885
7986 int read (uint8_t * buffer, size_t size) {
8087 k_mutex_lock (&monitor_mutex, K_FOREVER);
81- int i = 0 ;
88+ size_t i = 0 ;
8289 while (temp_buffer.available () && i < size) {
8390 buffer[i++] = temp_buffer.read_char ();
8491 }
8592 k_mutex_unlock (&monitor_mutex);
86- return i;
93+ return ( int ) i;
8794 }
8895
8996 int available () override {
@@ -117,10 +124,15 @@ class BridgeMonitor: public Stream {
117124 send_buffer += static_cast <char >(buffer[i]);
118125 }
119126
120- size_t written;
121- const bool ret = bridge->call (MON_WRITE_METHOD, send_buffer).result (written);
127+ size_t written = 0 ;
128+
129+ if (_compatibility_mode) {
130+ bridge->call (MON_WRITE_METHOD, send_buffer).result (written);
131+ } else {
132+ bridge->notify (MON_WRITE_METHOD, send_buffer);
133+ }
122134
123- return ret? written : 0 ;
135+ return written;
124136 }
125137
126138 bool reset () {
@@ -167,4 +179,4 @@ extern BridgeClass Bridge;
167179
168180inline BridgeMonitor<> Monitor (Bridge);
169181
170- #endif // BRIDGE_MONITOR_H
182+ #endif // BRIDGE_MONITOR_H
0 commit comments