All Projects → eric-wieser → nanopb-arduino

eric-wieser / nanopb-arduino

Licence: other
Arduino stream wrappers for nanopb

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to nanopb-arduino

Effortless-SPIFFS
A class designed to make reading and storing data on the ESP8266 and ESP32 effortless
Stars: ✭ 27 (-15.62%)
Mutual labels:  platformio
platform-linux arm
Linux ARM: development platform for PlatformIO
Stars: ✭ 16 (-50%)
Mutual labels:  platformio
AutoBuildMarlin
Visual Studio Code extension to more easily build Marlin Firmware
Stars: ✭ 206 (+543.75%)
Mutual labels:  platformio
Arduino-Log
Simple application log library. supporting multiple log levels, custom output & flash memory support.
Stars: ✭ 132 (+312.5%)
Mutual labels:  platformio
Wortuhr
Software für eine ESP8266 basierte Wortuhr mit verschiedenen Layouts
Stars: ✭ 30 (-6.25%)
Mutual labels:  platformio
stewart-platform-esp32
https://ouilogique.com/plateforme-de-stewart-esp32/
Stars: ✭ 17 (-46.87%)
Mutual labels:  platformio
EUC-Dash-ESP32
Bluetooth Dashboard for electric unicycles (EUCs) for ESP32(ttgo t-watch). requires PlatformIO to build
Stars: ✭ 24 (-25%)
Mutual labels:  platformio
platformio-home
PlatformIO Home
Stars: ✭ 69 (+115.63%)
Mutual labels:  platformio
firebase-iot-demo
🔥 ESP8266 Firebase Arduino client developed using Platformio sending DHT11 and MQ5 data to Firebase Realtime Database
Stars: ✭ 20 (-37.5%)
Mutual labels:  platformio
esp8266-esp32-sdk
Library for https://sinric.pro - simple way to connect your device to Alexa, Google Home, SmartThings and cloud
Stars: ✭ 147 (+359.38%)
Mutual labels:  platformio
platform-nordicnrf52
Nordic nRF52: development platform for PlatformIO
Stars: ✭ 82 (+156.25%)
Mutual labels:  platformio
nuclei-sdk
Nuclei RISC-V Software Development Kit
Stars: ✭ 65 (+103.13%)
Mutual labels:  platformio
embedded-wasm-apps
Run statically-compiled WebAssembly apps on any embedded platform
Stars: ✭ 103 (+221.88%)
Mutual labels:  platformio
Arduino-Blinkenlight
Non-blocking blinking patterns and smooth fade effects for your LEDs.
Stars: ✭ 26 (-18.75%)
Mutual labels:  platformio
ADEM
Mobile device for distributed measurements of particulate matter (fine dust)
Stars: ✭ 12 (-62.5%)
Mutual labels:  platformio
RAK811-tracker
Example code for RAK811 nodes with GPS on board, transmitting their coordinates in the payload of the LoRaWAN packet in a format that is compatible with TTN Mapper.
Stars: ✭ 14 (-56.25%)
Mutual labels:  platformio
LMIC-node
LMIC-node | One example to rule them all. LMIC-node is an example LoRaWAN application for a node that can be used with The Things Network. It demonstrates how to send uplink messages, how to receive downlink messages, how to implement a downlink command and it provides useful status information. With LMIC-node it is easy to get a working node qu…
Stars: ✭ 108 (+237.5%)
Mutual labels:  platformio
platform-atmelavr
Atmel AVR: development platform for PlatformIO
Stars: ✭ 97 (+203.13%)
Mutual labels:  platformio
esp32-internet-ota
ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.
Stars: ✭ 28 (-12.5%)
Mutual labels:  platformio
platform-intel mcs51
Intel MCS-51 (8051): development platform for PlatformIO
Stars: ✭ 40 (+25%)
Mutual labels:  platformio

nanopb-arduino

A simple PlatformIO library for wrapping Arduino's Stream and Print objects into Nanopb's pb_istream_s and pb_ostream_s.

Exposes two functions that do exactly what you'd expect:

  • pb_istream_s as_pb_istream(Stream& p)
  • pb_ostream_s as_pb_ostream(Print& p)

In most cases, all you'll need is:

#include <pb_arduino.h>

pb_istream_s pb_in = as_pb_istream(Serial);
pb_ostream_s pb_out = as_pb_ostream(Serial);

and then use pb_encode(&pb_out, ...) and pb_decode(&pb_in).

This isn't restricted to Serial, and will work for any object that implements Stream, such as File (returned from SD.open and the ethernet Client.


This can be used on top of PacketIO, with

#include <pb_arduino.h>
#include <cobs/Stream.h>
#include <cobs/Print.h>

COBSStream cobs_in(Serial);
pb_istream_s pb_in = as_pb_istream(cobs_in);

COBSPrint cobs_out(Serial);
pb_ostream_s pb_out = as_pb_ostream(cobs_out);

and then calling cobs_out.end() after each pb_encode, and cobs_in.next() after each pb_decode.

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].