Skip to content

Commit 931a179

Browse files
committed
feat: BridgeMonitor class stub
1 parent 63d1bf0 commit 931a179

File tree

4 files changed

+143
-0
lines changed

4 files changed

+143
-0
lines changed

examples/monitor/monitor.ino

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#include <Arduino_RouterBridge.h>
2+
3+
4+
bool set_led(bool state) {
5+
digitalWrite(LED_BUILTIN, state);
6+
return state;
7+
}
8+
9+
int add(int a, int b) {
10+
return a + b;
11+
}
12+
13+
String greet() {
14+
return String("Hello Friend");
15+
}
16+
17+
void setup() {
18+
Serial.begin(115200);
19+
while (!Serial);
20+
21+
if (!Bridge.begin()) {
22+
Serial.println("cannot setup Bridge");
23+
}
24+
25+
if(!Monitor.begin()){
26+
Serial.println("cannot setup Monitor");
27+
}
28+
29+
pinMode(LED_BUILTIN, OUTPUT);
30+
31+
if (!Bridge.provide("set_led", set_led)) {
32+
Serial.println("Error providing method: set_led");
33+
} else {
34+
Serial.println("Registered method: set_led");
35+
}
36+
37+
Bridge.provide("add", add);
38+
Bridge.provide("greet", greet);
39+
40+
}
41+
42+
void loop() {
43+
44+
Bridge.notify("signal", 200);
45+
46+
Monitor.write("DEBUG: a debug message");
47+
48+
// read needs to be fixed
49+
// String incoming_msg;
50+
// if (Monitor.read(incoming_msg, 64)) {
51+
// Serial.println(incoming_msg);
52+
// } else {
53+
// Serial.println("ERROR on Monitor.read");
54+
// }
55+
56+
Bridge.update();
57+
58+
delay(500);
59+
}

src/Arduino_RouterBridge.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33

44
#include "Arduino.h"
55
#include "bridge.h"
6+
#include "monitor.h"
67

78
#endif //ARDUINO_ROUTER_BRIDGE_H

src/bridge.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ class BridgeClassUpdater {
174174
BridgeClass Bridge(Serial1);
175175

176176
void updateEntryPoint(void *, void *, void *){
177+
178+
Serial1.begin(115200);
179+
while (!Serial1);
180+
177181
while(1){
178182
Bridge.update();
179183
}

src/monitor.h

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#pragma once
2+
3+
#ifndef BRIDGE_MONITOR_H
4+
#define BRIDGE_MONITOR_H
5+
6+
#include <api/RingBuffer.h>
7+
#include "bridge.h"
8+
9+
#define MON_CONNECTED_METHOD "mon/connected"
10+
#define MON_RESET_METHOD "mon/reset"
11+
#define MON_READ_METHOD "mon/read"
12+
#define MON_WRITE_METHOD "mon/write"
13+
14+
#define DEFAULT_MONITOR_BUF_SIZE 512
15+
16+
template<size_t BufferSize=DEFAULT_MONITOR_BUF_SIZE>
17+
class BridgeMonitor: public Stream {
18+
19+
private:
20+
BridgeClass& bridge;
21+
RingBufferN<BufferSize> buffer;
22+
bool is_connected = false;
23+
24+
public:
25+
BridgeMonitor(BridgeClass& bridge): bridge(bridge) {}
26+
27+
bool begin() {
28+
return bridge.call(MON_CONNECTED_METHOD, is_connected);
29+
}
30+
31+
bool isConnected() const {
32+
return is_connected;
33+
}
34+
35+
int read() override {
36+
return 0;
37+
}
38+
39+
int available() override {
40+
return 0;
41+
}
42+
43+
int peek() override {
44+
return 0;
45+
}
46+
47+
size_t write(uint8_t c) override {
48+
return 0;
49+
}
50+
51+
bool reset() {
52+
bool res;
53+
bool ok = bridge.call(MON_RESET_METHOD, res);
54+
if (ok && res) {
55+
is_connected = false;
56+
}
57+
return (ok && res);
58+
}
59+
60+
size_t write(String message) {
61+
size_t size;
62+
bool ok = bridge.call(MON_WRITE_METHOD, size, message);
63+
64+
if (!ok) return 0;
65+
66+
return size;
67+
}
68+
69+
bool read(String& message, size_t size) {
70+
return bridge.call(MON_READ_METHOD, message, size);
71+
}
72+
73+
74+
};
75+
76+
extern BridgeClass Bridge;
77+
BridgeMonitor<> Monitor(Bridge);
78+
79+
#endif // BRIDGE_MONITOR_H

0 commit comments

Comments
 (0)