Sming Versions Save

Sming - powerful open source framework simplifying the creation of embedded C++ applications.

3.6.0

5 years ago

This is a major release containing fixes, new features and backwards-incompatible changes

Features

  • SmtpClient (#1380) A powerful asynchronous smtp client that allows sending emails directly from ESP8266.

    • support for authentication (PLAIN and CRAM-MD5)
    • support for faster transfer via PIPELINING
    • support for attachments ( as much and as big as the remote server allows)
    • support for UTF-8 text encoding
    • support for sending multiple emails using the same TCP connection
    • support for connection over SSL and support for STARTTLS (needs Sming to be compiled with ENABLE_SSL=1 )
  • MqttClient: changing server and port setting can be done in runtime (#1390)

  • Added support for Nextion displays. (#1389)

  • Added open collective badge and information for financial contributions. (#1398)

  • Added support for lambdas in the Timer class (#1378) Using C++11 std::function and std::bind

  • Added support for POST params and file upload via POST in the HttpClient. (#1381)

  • Exposed the remote port and ip for the connections. (#1370)

Changes

  • Improvements to the InfraRed libraries (#1318)

    • Added RingBufCPP library from Aaron Wisner
    • Updated IR lib sample
    • Fixed sign problem with JVC send when time elapsed is bigger than JVC_RPT_LENGTH - JVC_MIN_GAP
    • Reduced timer for IR sample application
    • Updated IRremoteESP8266 library to latest version
  • Replaced DHT library with DHTesp. Updated the samples accordingly. (#1341)

  • Improved design for the HttpConnection. (#1386)

    • (Before) By default the HttpConnection was storing all data coming back from the server. Meaning that a response body bigger than 30K will crash for sure the device.
    • (Now) By default the HttpConnection stores the first 1024 bytes. Thus by default the device will not crash with big response body. If a developer wants to use the httpclient and store more than 1024 bytes from the response, then he/she can set the response stream to be MemoryStream. Ex: request.setResponseStream(new MemoryStream());
  • Refactored the streams (#1377)

    • Moved the streams from SmingCore/Network/Http/Stream to SmingCore/Data/Stream. They will be used also in the coming SmtpClient.
    • Unified the stream transformation code and added it to StreamTransformer.
    • Removed deprecated method name from CircularBuffer.
    • Moved common data structures from HttpCommon.h to SmingCore/Data/Structures.h
    • Moved DataSourceStream, CircularBuffer and OutputStream to SmingCore/Data.
    • Added username and password processing in the URL.
  • Refactored SSL validators (#1379)

    • Allow creating fingerprint chain.
    • Allow multiple fingerprints from the same type to be in the chain. For example public key hash and a backup public key hash for the backup private key.
    • Move the fingerprinting to the TcpClient.
    • Unify the private key / certificate setting for both TcpClient and TcpServer.

Migration from v. 3.5.2 or earlier

Those changes will affect your code ONLY if you use DIRECTLY in your application the following classes.

  • HttpMultipartStream * HttpMultipartStream is renamed to MultipartStream * SmingCore/Network/Http/Stream/HttpMultipartStream.h is moved to SmingCore/Data/Stream/MultipartStream.h

  • HttpChunkedStream.h
    * HttpChunkedStream is renamed to ChunkedStream * SmingCore/Network/Http/Stream/HttpChunkedStream is moved to SmingCore/Data/Stream/ChunkedStream.h

  • DataSourceStream.h and OutputStream.h are now located in SmingCore/Data/Stream/.

    • CircularBuffer.h is moved to SmingCore/Data/.
    • URL - if you use protocol different than HTTP then the default port will be set to 0. In the previous versions the default port was always 80, no matter what the URL protocol was.
  • The deprecated TcpConnection::setSslFingerprint is removed. Use TcpClient::pinCertificate instead.

  • TcpConnection::setSslClientKeyCert is deprecated. Use TcpConnection::setSslKeyCert instead. It can be used on a server to set the server certificate used for encryption, or on a client to set a client certificate used for authentication.

    • All SSL fingerprinting is moved to the TcpClient as it is relevant only for the client SSL connections.
    • Calling multiple times TcpClient::pinCertificate will add multiple SSL validators. This is quite useful if you have one private key, that is currently used on the server, and another backup key, just in case the previous key gets compromised. In that case one can do the following:
    MqttClient mqttClient;
    // ...
    mqttClient.pinCertificate(fingerprintPublicKeyCurrent, eSFT_PkSha256); // first fingeprint
    mqttClient.pinCertificate(fingerprintPublicKeyEmergencyBackup, eSFT_PkSha256); // second fingerprint
    

    In the example above the first fingerprint will be checked. If it is valid no further checks will be done. If the first one fails then the next will be validated. If none of the fingerprints was valid then the connection will be rejected.

Fixes

  • Fixes to the postParams unescaping (#1402)
  • Fixes to the IR Library. (#1373)

All PRs merged in this release can be seen from here

For a complete list of changes run the following command:

git log 3.5.2..3.6.0

Thanks to everyone who helped us make this release happen.

3.5.2

6 years ago

This is a minor release containing:

  • Updated version of the third-party http_parser.
  • Updated version of the third-party PWM library.
  • Small memory fixes.
  • Initial introduction and usage of C++11 std::function that will eventually replace Delegates.

All PRs scheduled for this release can be seen from here

For a complete list of changes run the following command:

git log 3.5.1..3.5.2

Thanks to everyone who helped us make this release happen.

3.5.1

6 years ago

Sming v3.5.1 is here. With this minor version you will have more free heap memory at your disposal and less bugs.

Some of the changes in this release:

  • Unified the stream classes for better testability and reusability. (#1332) The length() method in the DataSourceStream classes is deprecated
  • MacOS compatibility issues. (#1316)
  • Memory Optimization: Moved C++ vtables into IRAM, out of HEAP. In some cases increased the free heap with 3K. (#1320)
  • Updated axTLS to its latest version and increased available free heap (#1329).
  • Decreased the default debug messages in the network layer (#1327) as part of our effort to provide better out-of-the-box experience (#1328)
  • Reorganization: Moved the tools under tools/ folder and added esptool2 as submodule as part of the better experience.
  • Fix: Added linker flags to allow the use of custom crash handlers in the user code. (#1326)
  • Small fix to the FreeBSD make mechanism.
  • HardwareSerial: Fix for zero availableCharsCount in callback ... (#1307)
  • Adds Cygwin32 build support (#1306)
  • Modified libemqtt & MqttClient to allow the publishing of binary messages (#1300)

All PRs scheduled for this release can be seen from here

For a complete list of changes run the following command:

git log 3.5.0..3.5.1

Thanks to everyone who helped us make this release happen.

3.5.0

6 years ago

Santa came earlier this year and we are ready with the new v3.5.0 release!

In it you will find the following new features and improvements

  • Fixed spiffs_mount to work with rBoot(#1292)
  • Added method to shutdown a TcpServer (#1272).
  • Added Adafruit_BME280 Library and Adafruit_Sensor support (#1286).
  • Improved websocket ping and pong commands (#1270).
  • Added experimental support for SDK 2.1 (#1264).
  • Added experimental support for LWIP2 (#1289)
  • Fixed memory leaks in the MQTT client and SSL handling.

All PRs that made it in this release can be found here: https://github.com/SmingHub/Sming/milestone/13.

For a complete list of changes run the following command:

git log 3.4.0..3.5.0

Thanks to everyone who helped us make this release happen and especially to our first-time contributors! You are awesome!

3.4.0

6 years ago

This release contains major changes related to better compatibility with Arduino.

Changes

  • Arduino compatibility improvements (#1213).
  • Library code for some Arduino libraries comes directly from their source repositories (Adafruit_ST7735, Adafruit_SSD1306).
  • Added dynamic recalculation of image offsets to prevent rom overlapping (#1208).
  • Added Wi-Fi Protected Setup (WPS) support (#1199).
  • Ram savings in axTLS (#1255).
  • Simplified and improved Http Client and Http Server stream handling (#1247).
  • Fixed Memory Leak in Mqtt (#1273).
  • Updated Spiffs code to version 0.3.7 + fixes (##1246).

And much more. All merged PRs in this release can be seen from here

Backwards-incompatible changes

  • Changed the order of Wire.begin and Wire.pins parameters to match the Arduino order (#1193).

For a complete list of changes run the following command:

git log 3.3.0..3.4.0

Thanks to everyone who helped us make this release happen.

3.3.0

6 years ago

This release contains major changes related to Tcp stack, HTTP client and servers and Websocket processing.

Major Changes

  • Refactored HttpClient and HttpServer. See details (#1112).
  • Support for SSL session resumption in TcpConnection and TcpServer.
  • Custom PWM is enabled by default.
  • Multiple fixes to issues reported from Codacy's Vera++ and CppCheck reports.

And much more. All merged PRs in this release can be seen from here

Backwards-incompatible changes

  • Removed deprecated Station::waitConnection. If you need to migrate see how to use WifiEvents instead
  • WebSocket is renamed to WebSocketConnection to reflect better its meaning and intended use.
  • Removed the tightly coupled websocket methods inside the HttpServer. You can use WebSocketResource and add it to the HttpServer resource tree to achieve the same results.
  • Moved writeInit(), writeFlash(const u8 *data, u16 size) and writeEnd() methods from rBootHttpUpdate to rBootItemOutputStream.
  • TemplateFileStream::setVarsFromRequest needs to be refactored completely. The current code couples TemplateFileStream to HttpRequest, which is too restrictive. TemplateFileStream::setVars method should be introduced that accepts HashMap<String,String>
  • HttpRequest::getRequestMethod() is removed. Use HttpRequest::method instead.
  • CommandExecutor with WebsocketConnection won't work.

For a complete list of changes run the following command:

git log 3.2.0..3.3.0

Thanks to everyone who helped us in this new release.

3.3.0-rc2

6 years ago

This version includes:

  • Optimizations to the Tcp stack.
  • Improvements to the HttpServer connection handling.
  • Fixes to the Websocket frame processing.

If there are no show-stoppers then this version will be the last RC version.

For a complete list of changes between RC1 and RC2 run the following command:

git log 3.3.0-rc1..3.3.0-rc2

3.3.0-rc1

6 years ago

This version includes:

  • Refactored HttpClient and HttpServer
  • Support for SSL session resumption in TcpConnection and TcpServer.
  • Removed deprecated Station::waitConnection.
  • Custom PWM is enabled by default.
  • Multiple fixes to issues reported from Codacy's Vera++ and CppCheck reports.

3.2.0

7 years ago

This is a clean-up release.

Some of the main changes include

Clean-up

  • Removed all code related to the Espressif bootloader. You should use rBoot as bootloader.
  • Deprecated WifiStation::waitConnect (#1071, #1072). WifiStation::waitConnect will be removed in the next version and replaced with WifiEvents.
  • Deprecated DriverPWM( aka Software PWM).

New features and fixes

  • Improved SSL fingerprinting - added code that allows checking the fingerprint of a public key. Useful in cases where the private key is reused for certificates over longer period of time. (#1034)
  • Added asynchronous AT command client ( to communicate with GSM/GPRS modules that use AT commands) (#1033)
  • Switched to i2c HAL and Wire libraries from the esp8266/Arduino project. (#1061)
  • Added NFC support (#1049)
  • Fixed SPI mode issues (#1083)

And multiple bug fixes to the code and the documentation.

All merged PRs in this release can be seen from here

For a complete list of changes run the following command:

git log 3.1.2..3.2.0

And last but not least this release would have been possible without the help of our fantastic contributors and community members. This time we give our special thanks to Jarek Zgoda who helped us clean a lot of old code and improve existing one.

3.1.2

7 years ago

This release contains changes leading to more free heap space, faster tcp operations, faster and smaller Docker images, improved CI tests for Windows and more.

Changes

  • Fix compilation of native spiffy executable.
  • Linker script refactoring.
  • Docker images are now based on Alpine with Cloud9 and Xtensa GCC toolchain.
  • Added UDK on Windows to our CI system.
  • Moved debugf strings into SPI flash to preserve heap space.
  • Optional disabling of Command Executor to preserve heap and flash space.
  • Unified the memanalyzer input.

And much more. All merged PRs in this release can be seen from here

Requirements

  • Starting from this version having python version 2.7 or bigger is a requirement in order to be able to upload the compiled application to your device and be able to see the memory analysis.

For a complete list of changes run the following command:

git log 3.1.0..3.1.2

And last but not least this release would have been possible without the help of our fantastic contributors and community members. And again special thanks to ADiea who contributed a lot in this release and has a trove of features that promise even more improvements.