@@ -28,20 +28,23 @@ template<size_t BufferSize=DEFAULT_MONITOR_BUF_SIZE>
2828class BridgeMonitor : public Stream {
2929
3030private:
31- BridgeClass& bridge;
31+ BridgeClass* bridge;
3232 RingBufferN<BufferSize> temp_buffer;
3333 struct k_mutex monitor_mutex;
3434 bool is_connected = false ;
3535
3636public:
37- BridgeMonitor (BridgeClass& bridge): bridge(bridge) {}
37+ BridgeMonitor (BridgeClass& bridge): bridge(& bridge) {}
3838
3939 bool begin () {
40- return bridge.call (MON_CONNECTED_METHOD, is_connected);
4140 k_mutex_init (&monitor_mutex);
41+ if (!bridge) {
42+ bridge->begin ();
43+ }
44+ return bridge->call (MON_CONNECTED_METHOD, is_connected);
4245 }
4346
44- bool isConnected () const {
47+ operator bool () const {
4548 return is_connected;
4649 }
4750
@@ -73,6 +76,7 @@ class BridgeMonitor: public Stream {
7376 int peek () override {
7477 k_mutex_lock (&monitor_mutex, K_FOREVER);
7578 if (temp_buffer.available ()) {
79+ k_mutex_unlock (&monitor_mutex);
7680 return temp_buffer.peek ();
7781 }
7882 k_mutex_unlock (&monitor_mutex);
@@ -95,7 +99,7 @@ class BridgeMonitor: public Stream {
9599 }
96100
97101 size_t written;
98- bool ret = bridge. call (MON_WRITE_METHOD, written, send_buffer);
102+ bool ret = bridge-> call (MON_WRITE_METHOD, written, send_buffer);
99103 if (ret) {
100104 return written;
101105 }
@@ -105,7 +109,7 @@ class BridgeMonitor: public Stream {
105109
106110 bool reset () {
107111 bool res;
108- bool ok = bridge. call (MON_RESET_METHOD, res);
112+ bool ok = bridge-> call (MON_RESET_METHOD, res);
109113 if (ok && res) {
110114 is_connected = false ;
111115 }
@@ -114,7 +118,7 @@ class BridgeMonitor: public Stream {
114118
115119 size_t write (String message) {
116120 size_t size;
117- bool ok = bridge. call (MON_WRITE_METHOD, size, message);
121+ bool ok = bridge-> call (MON_WRITE_METHOD, size, message);
118122
119123 if (!ok) return 0 ;
120124
@@ -126,7 +130,7 @@ class BridgeMonitor: public Stream {
126130 if (size == 0 ) return 0 ;
127131
128132 MsgPack::arr_t <uint8_t > message;
129- bool ret = bridge. call (MON_READ_METHOD, message, size);
133+ bool ret = bridge-> call (MON_READ_METHOD, message, size);
130134
131135 k_mutex_lock (&monitor_mutex, K_FOREVER);
132136 if (ret) {
0 commit comments