Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
slav-at-attachix committed Dec 25, 2021
2 parents 4523db2 + 819d485 commit 64578ce
Show file tree
Hide file tree
Showing 1,110 changed files with 22,393 additions and 24,109 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Run whenever a PR is generated or updated.

name: Pull Request Checks

on:
pull_request:

jobs:

code-spell:
name: Check spelling
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: false
- name: Get submodules
run: |
SMING_ARCH=Host make -C Sming submodules
echo "[codespell]" > .codespellrc
echo "skip = $(tr "\n" , < Tools/spelling/skip.txt)" >> .codespellrc
- name: Run codespell
uses: codespell-project/actions-codespell@master
with:
skip: "" # Use resource script entry
ignore_words_file: "Tools/spelling/ignore.txt"
check_filenames: true
only_warn: 1
23 changes: 16 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,28 @@ docs/build
docs/source/_inc
*.pyc

# dev tools, editors, etc.
# Eclipse
.project
.cproject
language.settings.xml
.settings
nbproject
.*.swp
.metadata

# MS Visual Studio Code
.vscode
*.code-workspace
GTAGS
GRTAGS
GPATH

# Microsoft Visual SourceSafe files
vssver2.scc

.metadata
# Other dev tools, editors, etc.
nbproject
.*.swp
GTAGS
GRTAGS
GPATH

# Tag files created by build system
.submodule
*.built
*.completed
40 changes: 33 additions & 7 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -91,16 +91,12 @@
path = Sming/Arch/Esp8266/Components/lwip2/lwip2
url = https://github.com/mikee47/esp82xx-nonos-linklayer.git
ignore = dirty
[submodule "Esp8266.new-pwm"]
path = Sming/Arch/Esp8266/Components/driver/new-pwm
url = https://github.com/StefanBruens/ESP8266_new_pwm.git
ignore = dirty
[submodule "Esp8266.umm_malloc"]
path = Sming/Arch/Esp8266/Components/heap/umm_malloc
url = https://github.com/rhempel/umm_malloc.git
ignore = dirty
[submodule "Esp8266.Sdk"]
path = Sming/Arch/Esp8266/Components/esp8266/ESP8266_NONOS_SDK
path = Sming/Arch/Esp8266/Components/esp8266/sdk
url = https://github.com/espressif/ESP8266_NONOS_SDK.git
ignore = dirty

Expand All @@ -112,6 +108,20 @@
### NONE ###


#
# `Rp2040` Components
#

[submodule "Rp2040.picotool"]
path = Sming/Arch/Rp2040/Components/picotool/picotool
url = https://github.com/mikee47/picotool
ignore = dirty

[submodule "Rp2040.Sdk"]
path = Sming/Arch/Rp2040/Components/rp2040/pico-sdk
url = https://github.com/raspberrypi/pico-sdk
ignore = dirty

#
# `Host` Components
#
Expand Down Expand Up @@ -143,6 +153,10 @@
path = Sming/Libraries/Adafruit_BME280_Library
url = https://github.com/adafruit/Adafruit_BME280_Library.git
ignore = dirty
[submodule "Libraries.Adafruit_BusIO"]
path = Sming/Libraries/Adafruit_BusIO
url = https://github.com/adafruit/Adafruit_BusIO
ignore = dirty
[submodule "Libraries.Adafruit_Sensor"]
path = Sming/Libraries/Adafruit_Sensor
url = https://github.com/adafruit/Adafruit_Sensor
Expand Down Expand Up @@ -211,6 +225,10 @@
path = Sming/Libraries/HueEmulator
url = https://github.com/mikee47/HueEmulator
ignore = dirty
[submodule "Libraries.jerryscript"]
path = Sming/Libraries/jerryscript
url = https://github.com/slaff/Sming-jerryscript.git
ignore = dirty
[submodule "Libraries.IR"]
path = Sming/Libraries/IR
url = https://github.com/markszabo/IRremoteESP8266.git
Expand All @@ -231,6 +249,10 @@
path = Sming/Libraries/MDNS
url = https://github.com/mikee47/Sming-MDNS
ignore = dirty
[submodule "Libraries.MHZ19"]
path = Sming/Libraries/MHZ19
url = https://github.com/mikee47/Sming-MHZ19
ignore = dirty
[submodule "Libraries.modbusino"]
path = Sming/Libraries/modbusino/modbusino
url = https://github.com/kmihaylov/modbusino.git
Expand All @@ -255,6 +277,10 @@
path = Sming/Libraries/RapidXML
url = https://github.com/mikee47/Sming-RapidXML
ignore = dirty
[submodule "Libraries.rbpf"]
path = Sming/Libraries/rbpf
url = https://github.com/slaff/Sming-rbpf.git
ignore = dirty
[submodule "Libraries.RingBufCPP"]
path = Sming/Libraries/RingBufCPP
url = https://github.com/wizard97/Embedded_RingBuf_CPP.git
Expand All @@ -268,7 +294,7 @@
url = https://github.com/mikee47/SignalGenerator
ignore = dirty
[submodule "Libraries.simpleRPC"]
path = Sming/Libraries/simpleRPC/simpleRPC
path = Sming/Components/simpleRPC/simpleRPC
url = https://github.com/jfjlaros/simpleRPC.git
ignore = dirty
[submodule "Libraries.SmingTest"]
Expand All @@ -279,7 +305,7 @@
path = Sming/Libraries/SolarCalculator
url = https://github.com/mikee47/SolarCalculator
ignore = dirty
[submodule "spiffs"]
[submodule "Libraries.spiffs"]
path = Sming/Libraries/Spiffs/spiffs
url = https://github.com/pellepl/spiffs.git
ignore = dirty
Expand Down
126 changes: 18 additions & 108 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Sming
Sming is an asynchronous C/C++ framework with superb performance and multiple network features.
Sming is [open source](LICENSE) and is tailored towards embedded devices.
It supports multiple architectures as ESP8266 for example.

[![ESP8266 C++ development framework](https://github.com/SmingHub/Sming/wiki/images/small/combine.png)](https://github.com/SmingHub/Sming/wiki/examples)
Sming is an asynchronous embedded C/C++ framework with superb performance and multiple network features.
Sming is [open source](LICENSE), modular and supports [multiple architectures](https://sming.readthedocs.io/en/latest/features.html) including ESP8266 and ESP32.

[![Examples](https://github.com/SmingHub/Sming/wiki/images/small/combine.png)](https://github.com/SmingHub/Sming/wiki/examples)

[![Gitter (chat)](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/SmingHub/Sming?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Backers](https://opencollective.com/Sming/backers/badge.svg)](#financial-contributions)
Expand All @@ -18,106 +18,26 @@ If you like **Sming**, give it a star, or fork it and [contribute](#contribute)!
[![GitHub stars](https://img.shields.io/github/stars/SmingHub/Sming.svg?style=social&label=Star)](https://github.com/SmingHub/Sming/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/SmingHub/Sming.svg?style=social&label=Fork)](https://github.com/SmingHub/Sming/network)

## Getting Started

Sming supports multiple architectures and has a [plethora of features](https://sming.readthedocs.io/en/latest/index.html#summary).
Choose the architecture of your choice to [install the needed development software](https://sming.readthedocs.io/en/latest/getting-started).

You can also try Sming without installing anything locally. We have an [interactive tutorial](https://www.katacoda.com/slaff/scenarios/sming-host-emulator) that can be run directly from your browser.

## Documentation

Table of Contents
=================

<!--ts-->
* [Sming](#sming)
* [Table of Contents](#table-of-contents)
* [Summary](#summary)
* [Compatibility](#compatibility)
* [GCC compiler &gt;= 8](#gcc-compiler--8)
* [Architecture: ESP8266](#architecture-esp8266)
* [Architecture: Host](#architecture-host)
* [Architecture: ESP32 (Experimental)](#architecture-esp32-experimental)
* [Releases](#releases)
* [Stable](#stable)
* [Long Term Support (LTS)](#long-term-support-lts)
* [Development](#development)
* [Getting Started](#getting-started)
* [Documentation](#documentation)
* [Examples](#examples)
* [Basic Blink](#basic-blink)
* [Simple GPIO Input/Output](#simple-gpio-inputoutput)
* [Start Serial Communication](#start-serial-communication)
* [Connect to WiFi](#connect-to-wifi)
* [Read DHT22 sensor](#read-dht22-sensor)
* [HTTP Client](#http-client)
* [OTA Application Update](#ota-application-update)
* [HTTP Server](#http-server)
* [Email Client](#email-client)
* [Live Debugging](#live-debugging)
* [Contribute](#contribute)
* [Financial contributions](#financial-contributions)
* [Backers and sponsors](#backers-and-sponsors)
<!--te-->

Please note Version 4 documentation is at [sming.readthedocs.io](https://sming.readthedocs.io/).

## Summary

* Superb performance and memory usage (Sming compiles to native firmware!).
* Fast and user friendly development.
* Simple yet powerful hardware API wrappers.
* Compatible with standard [Arduino Libraries](https://sming.readthedocs.io/en/latest/libraries.html) - use any popular hardware in few lines of code.
* Built-in file system: [spiffs](https://github.com/pellepl/spiffs).
* Built-in powerful wireless modules.
* Powerful asynchronous (async) network stack.
* Async TCP and UDP stack based on [LWIP](http://savannah.nongnu.org/projects/lwip/).
* With clients supporting: HTTP, MQTT, WebSockets and SMTP.
* And servers for: DNS, FTP, HTTP(+ WebSockets), Telnet.
* With [SSL support](https://sming.readthedocs.io/en/latest/_inc/Sming/Components/ssl/index.html) for all network clients and servers. Based on [axTLS](http://axtls.sourceforge.net/) and [BearSSL](https://www.bearssl.org/).
* Over-The-Air(OTA) firmware upgrades via HTTP(S) and MQTT(S).
* ESP8266 specific features.
* Integrated boot loader [rboot](https://sming.readthedocs.io/en/latest/_inc/Sming/Components/rboot/index.html) with support for 1MB ROMs, OTA firmware updating and ROM switching.
* [Crash handlers](https://sming.readthedocs.io/en/latest/information/debugging.html) for analyzing/handling system restarts due to fatal errors or WDT resets.
* [PWM support](https://sming.readthedocs.io/en/latest/_inc/Sming/Arch/Esp8266/Components/driver/index.html) based on [Stefan Bruens PWM](https://github.com/StefanBruens/ESP8266_new_pwm.git).
* Optional [custom heap allocation](https://sming.readthedocs.io/en/latest/_inc/Sming/Arch/Esp8266/Components/heap/index.html) based on [Umm Malloc](https://github.com/rhempel/umm_malloc.git).
* Based on Espressif NONOS SDK. Officially suppored NON SDK version is >= 3.0.1.
* Support for a [thin No-Wifi-SDK](https://sming.readthedocs.io/en/latest/_inc/Sming/Arch/Esp8266/Components/esp_no_wifi/index.html). Helpful when a project does not require WiFi (or networking) and reduces code size and memory usage signficantly.
* Linux/Windows features
* Sming has a [host emulator](https://sming.readthedocs.io/en/latest/arch/host/index.html) that allows libraries and sample applications to be compiled on a Linux/Windows host system and be tested before uploading them to an actual microcontroller.

## Compatibility


### GCC compiler >= 8

Your GCC compiler should be version 8 or newer! See the different architectures for details.
Newer compilers

- contain bugfixes
- produce smaller and better code
- have features which facilitate code quality, ease of use, etc.

### Architecture: ESP8266

OS/SDK | Linux | Mac OS X | Windows | FreeBSD-current |
-------|-------|----------|---------|-----------------|
UDK (v1.5)    | n/a   | n/a      |   [![Build status](https://ci.appveyor.com/api/projects/status/5aj0oi0wyk4uij00/branch/develop?svg=true)](https://ci.appveyor.com/project/slaff/sming-sb483/branch/develop)      |     n/a         |
esp-open-sdk (v1.5.x **, v2.0.0 **, v3.0.x) | :sunny:  | :sunny: | n/a | :sunny: |

- OS = Operating System.
- SDK = Software Development Kit.
- n/a = The selected SDK is not available on that OS.
- ** = not supported officially. Samples and library should compile and run but we recommend using version >= 3.0.3.

### Architecture: Host

Linux and Windows OSes with gcc compilers are supported. Clang is NOT supported.


### Architecture: ESP32 (Experimental)

Supported SDK: ESP-IDF v4.3. See https://sming.readthedocs.io/en/latest/_inc/Sming/Arch/Esp32/README.html.
The purpose of Sming is to simplify the creation of embedded applications. The documentation will help you get started in no time.

- [**Documentation for version 4.5.0**](https://sming.readthedocs.io/en/stable) - current stable version.
- [Documentation for version 4.2.x](https://sming.readthedocs.io/en/4.2.2) - Long Term Support (LTS) version.
- [Documentation for latest](https://sming.readthedocs.io/en/latest) - development version.

## Releases

### Stable

- [Sming V4.4.1](https://github.com/SmingHub/Sming/releases/tag/4.4.1) - great new features, performance and stability improvements.
- [Sming V4.5.0](https://github.com/SmingHub/Sming/releases/tag/4.5.0) - great new features, performance and stability improvements.


### Long Term Support (LTS)
Expand All @@ -134,16 +54,6 @@ git clone https://github.com/SmingHub/Sming.git
```


## Getting Started

Sming supports multiple architectures. Choose the architecture of your choice to [install the needed development software](https://sming.readthedocs.io/en/latest/getting-started) and toolchain(s).

You can also try Sming without installing anything locally. We have an [interactive tutorial](https://www.katacoda.com/slaff/scenarios/sming-host-emulator) that can be run directly from your browser.

## Documentation
In addition to our [online documentation](https://sming.readthedocs.io/),
you can also generate a complete documentation locally by following these [instructions](https://sming.readthedocs.io/en/latest/_inc/docs/README.html).


## Examples
The examples are a great way to learn the API and brush up your C/C++ knowledge.
Expand Down Expand Up @@ -175,7 +85,7 @@ make # -- compiles the application
make flash # -- tries to upload the application to your ESP8266 device.
```

More information at **[Wiki Examples](https://github.com/SmingHub/Sming/wiki/examples)** page.
More information at **[Sample Projects](https://sming.readthedocs.io/en/latest/samples.html)** page.

### Simple GPIO Input/Output
```c++
Expand Down
Loading

0 comments on commit 64578ce

Please sign in to comment.