Welcome to Sming Framework

Let’s do smart things!!!

Sming is an asynchronous embedded C++ framework with superb performance and multiple network features. Sming is open source, modular and supports multiple architectures: ESP8266, ESP32, RP2040, and Host Emulation.

samples

Summary

  • Superb performance and memory usage: Sming compiles to native firmware!

  • Fast and user-friendly C++ development

  • Integrated host emulator to assist with developing, testing and debugging libraries and applications on a PC. It even includes networking support! Try it out online here.

  • Built-in powerful wireless modules

  • Compatible with standard Libraries - use popular hardware in few lines of code

  • Integrated FlashString support for direct use of structured data stored in flash memory. Features IMPORT_FSTR macro for linking external binary files: no conversion to C arrays required!

  • Simple yet powerful hardware API wrappers

    • Standard Arduino-style wrappers for simplicity and flexibility

    • HardwareSPI library provides advanced asynchronous SPI device master capability including use of ESP8266 ‘overlapped’ mode for reduced pin usage and dual/quad I/O support.

    • Sming Graphics Library implements asynchronous display control model with low memory usage, transparency (alpha-blending), flexible scripted resource management and graphical layout editor.

  • Modular C++ Storage and Installable File System interfaces

    • Supports popular SPIFFS and LittleFS filing systems

    • New FWFS read-only high-performance filesystem can be used as base file system, with read/write filesystems mounted in sub-directories

    • Integrated metadata support (file times, security descriptors, user metadata)

    • Access to Host (GNU/Linux, Windows, MacOS) filing system via same API

    • Integrated streaming archival system to support backups or file system compaction operations

    • Modular Storage Management layer providing consistent access to off-device media such as SD Cards or USB mass storage for devices with USB support.

  • Powerful asynchronous (async) network stack including:

    • Async TCP and UDP stack based on LWIP.

    • With clients supporting: HTTP, MQTT, WebSockets and SMTP.

    • And servers for: DNS, FTP, HTTP(+ WebSockets), Telnet.

    • Optional SSL support support for network clients and servers. Choose either axTLS or BearSSL.

    • Over-The-Air (OTA) firmware upgrades via HTTP(S) and MQTT(S).

  • Universal Plug and Play (UPnP) framework supports both standard and custom devices with full ControlPoint support.

    • Generates C++ code from standard UPnP XML schema.

    • Companion SSDP library independently supports discovery on local network.

    • GoogleCast library allows control of ChromeCast devices or smart TVs supporting the GoogleCast protocol.

    • Hue Emulator provides simple way to implement devices compatible with Amazon Alexa.

Indices and tables