Skip to content

Commit 48d7683

Browse files
committed
feat: bridge reset and register according to specs. boolean begin
1 parent ddfcfdd commit 48d7683

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

examples/simple_bridge/simple_bridge.ino

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,18 @@ void setup() {
1111

1212
pinMode(LED_BUILTIN, OUTPUT);
1313

14-
bridge.begin();
14+
if (!bridge.begin()) {
15+
Serial.println("Error initializing bridge");
16+
while(1);
17+
} else {
18+
Serial.println("Bridge initialized successfully");
19+
}
1520

1621
if (!bridge.provide("set_led", set_led)) {
1722
Serial.println("Error providing method: set_led");
18-
};
23+
} else {
24+
Serial.println("Registered method: set_led");
25+
}
1926

2027
bridge.provide("add", add);
2128

@@ -42,6 +49,7 @@ void loop() {
4249
Serial.println("Error calling method: multiply");
4350
Serial.println(bridge.get_error_code());
4451
Serial.println(bridge.get_error_message());
52+
delay(1000);
4553
};
4654

4755
bridge.notify("signal", 200);

src/bridge.h

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
#ifndef BRIDGE_IMOLA_H
44
#define BRIDGE_IMOLA_H
55

6+
#define RESET_METHOD "$/reset"
7+
#define BIND_METHOD "$/register"
8+
69
#include <Arduino_RPClite.h>
710

811

@@ -19,22 +22,34 @@ class Bridge {
1922
}
2023

2124
// Initialize the bridge
22-
void begin() {
25+
bool begin() {
2326
client = new RPCClient(*transport);
2427
server = new RPCServer(*transport);
28+
bool res;
29+
return call(RESET_METHOD, res);
2530
}
2631

2732
template<typename F>
2833
bool provide(const MsgPack::str_t& name, F&& func) {
34+
bool res;
35+
if (!call(BIND_METHOD, res, name)) {
36+
return false;
37+
}
2938
return server->bind(name, func);
3039
}
3140

3241
void update() {
42+
// Protect the following calls with a mutex if necessary
43+
// server->read_request(); // <- inbound
44+
// server->serve(); // -> outbound
3345
server->run();
3446
}
3547

3648
template<typename RType, typename... Args>
3749
bool call(const MsgPack::str_t method, RType& result, Args&&... args) {
50+
// Protect the following calls with a mutex if necessary
51+
// client->send_call(); // -> outbound
52+
// client->read_response(); // <- inbound
3853
return client->call(method, result, std::forward<Args>(args)...);
3954
}
4055

@@ -44,7 +59,7 @@ class Bridge {
4459
}
4560

4661
String get_error_message() const {
47-
return client->lastError.traceback;
62+
return (String) client->lastError.traceback;
4863
}
4964

5065
uint8_t get_error_code() const {

0 commit comments

Comments
 (0)