Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A wrapper of Arduino_RPClite, specific for the Arduino UNO Q. It provides a better UX and API for sketches.

License

NotificationsYou must be signed in to change notification settings

arduino-libraries/Arduino_RouterBridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

In this repo it will be implemented an Arduino library wrapper for RPClite to be run on Arduino UNO Q boards.

Including Arduino_RouterBridge.h gives the user access to a Bridge object that can be used both as a RPC client and/or server to execute and serve RPCs to/from the CPU Host running a GOLANG router.

  • The Bridge object is pre-defined on Serial1 and automatically initialized inside the main setup()
  • The Bridge.call method is non-blocking and returns a RpcResult async object
  • RpcResult class implements a blocking .result method that waits for the RPC response and returns true if the RPC returned with no errors
  • The Bridge can provide callbacks to incoming RPC requests both in a thread-unsafe and thread-safe fashion (provide & provide_safe)
  • Thread-safe methods execution is granted in the main loop thread where update_safe is called. By design users cannot access .update_safe() freely
  • Thread-unsafe methods are served in an update callback, whose execution is granted in a separate thread. Nonetheless users can access .update() freely with caution
#include<Arduino_RouterBridge.h>boolset_led(bool state) {digitalWrite(LED_BUILTIN, state);return state;}Stringgreet() {returnString("Hello Friend");}voidsetup() {    Bridge.begin();    Monitor.begin();pinMode(LED_BUILTIN, OUTPUT);if (!Bridge.provide("set_led", set_led)) {        Monitor.println("Error providing method: set_led");    }else {        Monitor.println("Registered method: set_led");    }    Bridge.provide_safe("greet", greet);}voidloop() {float sum;// CALL EXAMPLES// Standard chained call: Bridge.call("method", params...).result(res)if (!Bridge.call("add",1.0,2.0).result(sum)) {        Monitor.println("Error calling method: add");    };// Async call    RpcResult async_rpc = Bridge.call("add",3.0,4.5);if (!async_rpc.result(sum)) {        Monitor.println("Error calling method: add");        Monitor.print("Error code:");        Monitor.println(async_rpc.error.code);        Monitor.print("Error message:");        Monitor.println(async_rpc.error.traceback);    }// Implicit boolean cast. Use with caution as in this case the call is indeed// executed expecting a fallback nil result (MsgPack::object::nil_t)if (!Bridge.call("send_greeting","Hello Friend")) {        Monitor.println("Error calling method: send_greeting");    };// Please use notify when no reult (None, null, void, nil etc.) is expected from the opposite side// the following is executed immediately    Bridge.notify("signal",200);}

About

A wrapper of Arduino_RPClite, specific for the Arduino UNO Q. It provides a better UX and API for sketches.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors7

Languages


[8]ページ先頭

©2009-2025 Movatter.jp