All Projects → jfjlaros → simpleRPC

jfjlaros / simpleRPC

Licence: MIT License
Simple RPC implementation for Arduino.

Programming Languages

C++
36643 projects - #6 most used programming language
Makefile
30231 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to simpleRPC

Hprose Php
Hprose is a cross-language RPC. This project is Hprose 3.0 for PHP
Stars: ✭ 1,952 (+6871.43%)
Mutual labels:  rpc, rpc-server, rpc-framework
XRPC
dotnet high performance remote interface and delegate invoke(RPC) communication components,support millions RPS remote interface method invokes
Stars: ✭ 77 (+175%)
Mutual labels:  rpc-server, rpc-framework, rpc-api
rony
Fast and Scalable RPC Framework
Stars: ✭ 41 (+46.43%)
Mutual labels:  rpc, rpc-server, rpc-framework
nodejs grpc
GRPC based API CRUD using Nodejs at both server and client side
Stars: ✭ 17 (-39.29%)
Mutual labels:  rpc, rpc-server, rpc-framework
Armeria
Your go-to microservice framework for any situation, from the creator of Netty et al. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
Stars: ✭ 3,392 (+12014.29%)
Mutual labels:  rpc, rpc-server, rpc-framework
Ice
Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.
Stars: ✭ 1,772 (+6228.57%)
Mutual labels:  rpc, rpc-framework
Doge
Doge is a high-performance, Python based, open source RPC framework
Stars: ✭ 144 (+414.29%)
Mutual labels:  rpc, rpc-framework
Rpc
Simple RPC style APIs with generated clients & servers.
Stars: ✭ 192 (+585.71%)
Mutual labels:  rpc, rpc-framework
Blockchain Python
A blockchain implementation in Python
Stars: ✭ 233 (+732.14%)
Mutual labels:  simple, rpc
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+4860.71%)
Mutual labels:  rpc, rpc-framework
Fpnn
Fast Programmable Nexus Network
Stars: ✭ 220 (+685.71%)
Mutual labels:  rpc, rpc-framework
hrpc
Common interface definition based rpc implementation
Stars: ✭ 21 (-25%)
Mutual labels:  rpc, rpc-framework
Hprose Js
Hprose is a cross-language RPC. This project is Hprose 2.0 RPC for JavaScript
Stars: ✭ 133 (+375%)
Mutual labels:  rpc, rpc-framework
Purerpc
Asynchronous pure Python gRPC client and server implementation supporting asyncio, uvloop, curio and trio
Stars: ✭ 125 (+346.43%)
Mutual labels:  rpc, rpc-framework
libcorpc
Libcorpc is a high performance coroutine base RPC framework
Stars: ✭ 20 (-28.57%)
Mutual labels:  rpc, rpc-framework
Jrpc
JSON-RPC implementation in C++17
Stars: ✭ 113 (+303.57%)
Mutual labels:  rpc, rpc-framework
Sleuth
A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services
Stars: ✭ 331 (+1082.14%)
Mutual labels:  discovery, rpc
server
Implement the JSON-RPC 2.0 server specification for @laravel.
Stars: ✭ 154 (+450%)
Mutual labels:  rpc, rpc-server
Hprose Delphi
Hprose is a cross-language RPC. This project is Hprose 2.0 for Delphi and FreePascal
Stars: ✭ 100 (+257.14%)
Mutual labels:  rpc, rpc-framework
Jupiter
Jupiter是一款性能非常不错的, 轻量级的分布式服务框架
Stars: ✭ 1,372 (+4800%)
Mutual labels:  rpc, rpc-framework

Simple RPC implementation for Arduino.

https://readthedocs.org/projects/simplerpc/badge/?version=latest

This library provides a simple way to export Arduino functions as remote procedure calls. The exported method definitions are communicated to the host, which is then able to generate an API interface.

Features:

  • For each method, only one line of code is needed for exporting.
  • Automatic parameter- and return type inference.
  • Support for all native C types and strings.
  • Support for arbitrary functions and class methods.
  • Optional function and parameter naming and documentation.
  • Support for PROGMEM's F() macro to reduce memory footprint.
  • Support for compound data structures like Tuples, Objects (Tuples with internal structure), Vectors and arbitrary combinations of these.
  • Support for reading multidimensional C arrays (e.g., int**).
  • Support for different types of I/O interfaces via plugins, e.g.,
    • Bluetooth.
    • Ethernet (untested).
    • Hardware serial.
    • RS485 serial.
    • Software serial (untested).
    • USB serial.
    • WiFi.
    • Wire (untested).
  • Support for using multiple interfaces at the same time.

The Arduino library is independent of any host implementation, a Python API client library is provided as a reference implementation.

Please see ReadTheDocs for the latest documentation.

Quick start

Export any function e.g., digitalRead() and digitalWrite() using the interface() function.

#include <simpleRPC.h>

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  interface(Serial, digitalRead, "", digitalWrite, "");
}

These functions are now available on the host under names method0() and method1().

The documentation string can be used to name and describe the method.

interface(
  Serial,
  digitalRead,
    "digital_read: Read digital pin. @pin: Pin number. @return: Pin value.",
  digitalWrite,
    "digital_write: Write to a digital pin. @pin: Pin number. @value: Pin value.");

This is reflected on the host, where the methods are now named digital_read() and digital_write() and where the provided API documentation is also available. In the client reference implementation documentation, contains an example on how this works.

Further reading

Please read :doc:`usage` for more information about exporting normal functions, class member functions and documentation conventions.

If you want to create your own host library implementation for other programming languages, the section :doc:`protocol` should help you on your way.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].