Skip to content

C++ framework for embedded programming on top of Espressif's ESP-IDF.

License

Notifications You must be signed in to change notification settings

ebarczynski/Smooth

 
 

Repository files navigation

Smooth

C++ framework for writing applications based on Espressif's ESP-IDF.

Overview

Smooth provides a set of classes that makes life as a developer easier compared to working directly with ESP-IDF & FreeRTOS APIs. An application built with Smooth is entirely event driven and thread-safe*. Smooth utilizes the power of FreeRTOS, but hides all the complexities from the application programmer.

Traditionally, embedded systems require a fully static memory footprint after start-up. Smooth takes a somewhat more pragmatic view on this; it utilizes the standard library (which is not memory static) to provide cleaner code, at the cost of some extra used bytes of RAM. However, where it is appropriate, such as with the Queue, things are designed so that the result is a memory static instance, i.e. a smooth::ipc::Queue will not behave like an std::vector.

Apart from hardware/IDF-specific classes, applications written using Smooth can be compiled and run on POSIX systems (e.g. Linux) without any special considerations.

*) To certain limits, of course.

Provided functionality

Core

  • Application initialization
  • Wifi configuration / control
  • Tasks
  • Queues with support for proper C++ objects, not just plain data structures
  • Timer Events
  • Event-driven TCP Sockets, including TLS support and server sockets.
  • System events

Hardware level

  • Output
  • Input
  • Input with interrupt to event translation
  • I2C Master Device class
  • Flash and SDCard initialization.

Application level

  • HTTP(s) Server (please enable PSRAM (make menuconfig) when using TLS; it uses ~23kb per connection, also make sure mbedTLS is configured to use PSRAM.)
  • MQTT Client
  • Sensor BME280
  • 16 channel I/O expander MCP23017
  • RGB LED, i.e. WS2812(B), SK6812, WS2813, (a.k.a NeoPixel).

Installation

In your ESP-IDF projects's root folder, type the following to add smooth as a submodule.

git submodule add https://github.com/PerMalmberg/Smooth.git components/smooth

Sample applications

Please see the the different test projects under the test folder. When compiling these, open the root of the repo as a CMake project.

About

C++ framework for embedded programming on top of Espressif's ESP-IDF.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 94.2%
  • HTML 3.6%
  • CMake 1.1%
  • Other 1.1%