Skip to content

Releases: ZZ-Cat/CRSFforArduino

Version 1.0.4 - Final maintenance update to v1.0.0

29 Aug 23:08
97d4b38
Compare
Choose a tag to compare

Overview

Note

This is the fourth and final maintenance release for Version 1.0.0.
By the time you're reading this release note, the v1.0.x-Maintenance-Branch has been merged into the Main-Trunk, thus concluding its development.
All new development is going into the upcoming Version 1.1.0 release, this includes any issues that are found since v1.0.4.

What's Changed

Not a lot, aside from a couple of quality-of-life stuff regarding debugging and semantic versioning.

Re-factors

  • refactor(serial receiver interface): ♻️ Facilitate custom baud rates by @ZZ-Cat in #132
    In your CRSFforArduino::begin() function, you can now pass in your own baud rate as an unsigned long integer parameter.

Chores

  • chore(library): House keeping by @ZZ-Cat in #135
    This streamlines the Semantic Versioning of CRSF for Arduino, thus making it less tedious for things such as re-bases.
    You can now view CRSF for Arduino's boiler plate in the Serial Monitor, if you have the CRSF_DEBUG_ENABLED set to 1.
    If you want to view your current configuration in the Serial Monitor, set CRSF_DEBUG_ENABLE_CONFIGURATION_DUMP to 1 in CFA_Config.hpp.

For more information

Full Changelog: v1.0.3...v1.0.4

For updating and installation instructions, please read the Wiki.


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This Patch Version is the fourth and final follow-up release to Version 1.0.x.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.

Version 1.0.3

20 Jul 09:11
aa2be50
Compare
Choose a tag to compare

Overview

Note

You MUST update your copy of CRSF for Arduino to this version as soon as possible.
CRSF for Arduino has been re-licensed to the GNU Affero General Public License v3 and is in effect from v1.0.3 onwards.
The GNU General Public License v3 no longer applies to CRSF for Arduino, and is invalid from v1.0.3 onwards.
This is the first security-focused release of its kind, and any future releases that are security-focused, you SHOULD update to that version as soon as possible.

I know this isn't the release many of you were expecting, but it's one that's sorely needed to be made.
The main highlight here is CRSF for Arduino has been re-licensed to the GNU Affero General Public License v3.
So, you SHOULD take the time to familiarise yourself with that as soon as you can.

There are a couple of minor things here that are also noteworthy, and that's moving from the old Arduino/MBed version of RP2040 support to Earle Philhower's Arduino-Pico package for RP2040 support; and I have fixed a typo in the compatibility table for STM32F405RG targets.

On my side, there's some CI changes, where I have re-factored my old Arduino and PlatformIO CIs into one unified Quality Control CI.
As a part of my Quality Control CI, I am performing static code analysis in (what I call) my "Defect Detector", and I am performing vulnerability scanning with CodeQL.

What's Changed

The elephant in the room

  • Re-license CRSF for Arduino under the latest GNU Affero General Public License by @ZZ-Cat in #128

Security

  • ci(CodeQL): Add vulnerability scanning using CodeQL by @ZZ-Cat in #89

Fixes

  • fix(targets): Refine ESP32 compatibility by @ZZ-Cat in #99
  • fix(compatibility table): 🚑 Add missing STM32F405RG string to deviceNames[] array by @ZZ-Cat in #107

Re-factors

  • refactor(targets): ♻️ Use Arduino-Pico instead of the "official" PlatformIO package for RP2040 by @ZZ-Cat in #112
  • refactor(CI): ♻️ Replace existing CIs with one Quality Control CI by @ZZ-Cat in #115
  • refactor(quality control): Use an isolated version of CFA_Config.hpp for Defect Detector environment. by @ZZ-Cat in #117

Chores

  • chore(library): Clean up deprecated CI and fix defects by @ZZ-Cat in #116

For more information

Full Changelog: v1.0.0...v1.0.3


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This Patch Version is the third follow-up release to Version 1.0.x,
and is the first security-focused release of its kind for CRSF for Arduino.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.

Version 1.0.2

18 Mar 22:02
92200ea
Compare
Choose a tag to compare

Overview

This is the second maintenance release of CRSF for Arduino.
It resolves the initialisation bug where the underlying SerialReceiver::SerialReceiver() constructor was not being called when you instantiate CRSF for Arduino in your sketches.

For ESP32 targets, you are now able to assign custom UART pins via the constructor CRSFforArduino::CRSFforArduino(HardwareSerial *serialPort, int RxPin, int TxPin).

The API Reference has been updated to reflect the changes introduced by this release.

What's Changed

Fixes

  • fix(targets): Refine ESP32 compatibility by @ZZ-Cat in #99

More information

Full Changelog: v1.0.1...v1.0.2

The Wiki is available for your perusal.


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This Patch Version is the second follow-up release to Major Version 1.x.x.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.


Installation

Installation instructions have moved to the Wiki. To install this version, view the Getting Started guide.

Version 1.0.1

06 Mar 21:45
c26e139
Compare
Choose a tag to compare

Overview

This is a follow-up release to Version 1.0.0, and it is for those that were unable to install or build CRSF for Arduino in the Arduino IDE.

What's Changed

Fixes

  • fix(arduino): Arduino IDE build failure by @ZZ-Cat in #94

Chores

  • ci(workflows): Arduino, Auto-close, and PlatformIO maintenance by @ZZ-Cat in #91

More information

Full Changelog: v1.0.0...v1.0.1


Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This is Patch Version is the first follow-up release to Major Version 1.x.x.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.


Installation

Arduino IDE v2.x.x

  1. Download the Source Code (ZIP) in the Assets section of this Release, and save to a convenient space on your hard drive.
  2. In the Arduino IDE, go to Sketch -> Include Library -> Add .ZIP Library...
  3. Click CRSFforArduino-1.0.1 and Arduino IDE will automatically install it for you.
  4. Build-test one of the examples. preferably the rc_channels example by File -> Examples -> CRSFforArduino -> rc_channels.
  5. Click Verify and the build should pass.

PlatformIO

Installing for the first time:

  1. Type pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git into your Terminal, using the version tag #1.0.1 suffix.
  2. Hit enter.
  3. PlatformIO will automatically install CRSF for Arduino for you.

Updating from a previous version:

You MUST delete the previous version before you update to this version.
The version tag suffix MUST match the Semantic Version of CRSF for Arduino that you currently have.

  1. Type: pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git into your Terminal, followed by your existing version suffix. EG #v1.0.0
  2. Hit enter.
  3. Once PlatformIO has cleared out CRSF for Arduino, this is where you install this version.
  4. Type: pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git#v1.0.1 into your Terminal.
  5. PlatformIO will automatically install this version of CRSF for Arduino.

You MAY build-test your side of things, to ensure compilation passes.

If you're unfamiliar with the Command Line, you MAY add https://github.com/ZZ-Cat/CRSFforArduino.git#v1.0.1 to your lib_deps section of your platformio.ini configuration file.

Version 1.0.0... at last!

23 Feb 06:05
35eb5c6
Compare
Choose a tag to compare

Overview

Wow, what a journey it has been!
The first MAJOR cut of CRSF for Arduino is finally here.

I can't say this enough: A huge thank you to you all for your contributions, hardware testing, Issues, Pull Requests, your patience with me, and your wonderful ideas in my Discussions tab.
You all have helped make Version 1.0.0 of CRSF for Arduino a reality.

Thank you very much from the bottom of my heart.
This project has been some two years in the making (both offline and online), through various iterations and attempts.
A few bumps along the way, plus a point where I simply wanted to give up, delete this repo and call it quits.
But, I found it in me to keep going, despite the setbacks... and gods, that has finally paid off.

Some say firmware and software development is a thank-less job.
I beg to differ. My own experience, I have had nothing but overwhelming support from my user-base.
You all have been what's kept me going through the times where I had reached my absolute lowest with CRSF for Arduino.
You folks are amazing.

So, here's to you all, my gift to you... CRSF for Arduino, Version 1.0.0.
Enjoy~ 🖤

What's new

Features

  • feat(telemetry): Add battery sensor telemetry by @ZZ-Cat in #45
  • feat(library): Add full telemetry support by @ZZ-Cat in #47
  • feat(link statistics): Add Link Statistics API by @ZZ-Cat in #78
  • feat(serial receiver interface): Add custom Flight Mode strings as telemetry by @berickson in #83

Hardware targets

  • feat(devboard): Add support for Teensy 3.x and 4.x by @ZZ-Cat in #37
  • feat(devboard): Add support for ESP32 by @ZZ-Cat in #39
  • feat(devboard): Add support for RP2040 by @ZZ-Cat in #72
  • feat(devboard) Add support for STM32 F103, F4, and H7 targets by @ZZ-Cat in #81

What's Changed

Fixes

  • fix(hal): Inherit from Stream instead of HardwareSerial across all supported targets by @ZZ-Cat in #44
  • fix(platformio): Remove $PROJECT_DIR from all relevant paths. by @ZZ-Cat in #64
  • fix(compatibility table): Add missing Arduino Nano 33 IoT compatibility by @Speshl in #57
  • fix(platformio): CRSF for Arduino not recognised as a dependency by @ZZ-Cat in #77

Re-factors and re-writes

  • refactor(rc channels): Improve readability of RC Channels in Serial Plotter by @Kristabel28 in #40
  • refactor(compatibility table): Permissive Incompatibility by @ZZ-Cat in #68
  • refactor(hal): Deprecate DevBoards class and bring HardwareSerial class up to the Sketch Layer by @ZZ-Cat in #71
  • refactor(rc channels): Use event handler for fail-safe and RC channels by @ZZ-Cat in #79
  • refactor(library): Flight Modes API and Custom Flight Modes integration, plus code and comments clean-up by @ZZ-Cat in #84

Chores

  • chore(library): Restructure entire repository by @ZZ-Cat in #46

Miscellaneous

  • build(ci): Trigger CI checks on pull requests by @ZZ-Cat in #41

Kia ora and haere mai to our new contributors

Full Changelog: v0.4.0...v1.0.0

Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This is Major Version 1.x.x and is considered stable.
While every effort has gone in to ensure the latest release is bug-free, there are no guarantees with firmware development.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.
New contributors are always welcome. Please read through my Contribution Guidelines before you go Gung Ho with coding.

Version 0.4.0

08 Aug 03:36
ce0fc7c
Compare
Choose a tag to compare
Version 0.4.0 Pre-release
Pre-release

Overview

It has been a while since my last MINOR cut of CRSF for Arduino.
I told you all I would be on hiatus by the start of August. Yet... here I am. I am too much of a 'work-a-holic' to stay away from my project. So, enjoy August's release. =^/.~=

As always, there is a discussion thread open for this release. So, download this, flash it, test it, submit your feedback etc.

PS: I need to remember to roll these things out more regularly.

What's New

  • feat(devboard): Add support for Seeed Studio XIAO SAMD21 (#27)
  • feat(telemetry): Add GPS Telemetry (#18)

What's Changed

  • refactor(rc channels): Use packed RC channels (#30)
  • refactor(library): Split CRSF for Arduino up into abstraction layers (#34)
  • refactor(crsf): Performance & reliability improvements (#32)

API Changes

There are some slight changes to the API & these changes are as follows:

  • CRSFforArduino(HardwareSerial *) constructor is deprecated & has been removed from the API.
    • Use CRSFforArduino() as your default constructor from here on out.
  • CRSFforArduino::begin() returns a bool value - IE This function returns true if CRSF for Arduino is initialised successfully or false if it hasn't.
  • The return data type for CRSFforArduino::update() is void.
    • This means you no longer need to read back the return value from this function, to check whether-or-not valid RC channel data was received. Everything is now handled internally.
    • Simply call CRSFforArduino::update() in your loop() as a standalone function.
  • Reading back RC channels like this: crsf.rcToUs(crsf.getChannel(1)) is now deprecated.
    • To read an RC channel value, use CRSFforArduino::readRcChannel(n). Where n is the channel number from 1 to 16. This function returns the channel value in microseconds, by default.
    • If you want to read the raw channel value, CRSFforArduino::readRcChannel() takes an optional bool argument. Set this to true to get the raw value. For example crsf.readRcChannel(1, true) will give you the raw value of channel 1.
  • To send GPS telemetry, use CRSFforArduino::telemetryWriteGPS().
    • This takes six arguments. Five of which are float & the sixth argument is uint8_t.
    • These arguments are:
      • latitude (in decimal degrees)
      • longitude (in decimal degrees)
      • altitude (in centimetres)
      • speed (in centimetres per second)
      • groundCourse (in degrees)
      • satellites (the number of satellites that are in view of your GPS module)

Full Changelog: v0.3.3...v0.4.0

Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This also means that Major version 0.x.x is experimental software, where a lot of features are either still missing or are unstable. You are advised to use this Major version with caution.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.

Version 0.3.3

19 Jul 03:30
436459a
Compare
Choose a tag to compare
Version 0.3.3 Pre-release
Pre-release

Overview

This is a short maintenance release that resolves a bug with the Compatibility Table, where non-supported SAMD21-based & SAMD51-based boards were being detected as an Arduino Zero by default.

What's Changed

  • refactor(compatibility table): Use USB VIDs & PIDs to detect compatible development boards by @ZZ-Cat in #28

Full Changelog: v0.3.2...v0.3.3

Version 0.3.2

03 Jun 01:59
0a379f8
Compare
Choose a tag to compare
Version 0.3.2 Pre-release
Pre-release

Overview

This is a maintenance release that resolves compilation errors in the Arduino IDE, where the Compatibility Table was not being seen by the Arduino IDE.
There is also some repository maintenance that had to happen, to keep the information on the main readme.md page relevant & up-to-date.

What's Changed

  • Fix incorrect code format by @ZZ-Cat in #13
  • Repository Maintenance by @ZZ-Cat in #14
  • Manually point Arduino IDE to Compatibility Table location by @ZZ-Cat in #21
  • Overhaul Continuous Integration by @ZZ-Cat in #22

Full Changelog: v0.3.1...v0.3.2

Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This also means that Major version 0.x.x is experimental software, where a lot of features are either still missing or are unstable. You are advised to use this Major version with caution.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.

Version 0.3.1

05 Apr 03:19
df3022c
Compare
Choose a tag to compare
Version 0.3.1 Pre-release
Pre-release

Overview

This is a patch that prevents CRSF for Arduino from initialising & running on incompatible hardware.

What's Changed

  • build(arduino): Check for compatible hardware at runtime. By @ZZ-Cat.
    Before CRSF for Arduino can be initialised, the library checks whether-or-not it has been flashed onto compatible hardware.
    If the hardware is compatible, CRSF for Arduino will initialise & carry on with normal operation.
    If CRSF for Arduino is flashed onto incompatible hardware, it will halt the setup process indefinitely.
    If the CRSF_DEBUG flag is enabled at compile time, the name of the development board is visible in the Serial Monitor. If the development board is incompatible, you will see "Unknown device" in the Serial Monitor.

Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This also means that Major version 0.x.x is experimental software, where a lot of features are either still missing or are unstable. You are advised to use this Major version with caution.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.

Version 0.3.0

25 Feb 07:20
cca0c2c
Compare
Choose a tag to compare
Version 0.3.0 Pre-release
Pre-release

What's Changed

  • Reinstate compatibility with the Arduino IDE. by @ZZ-Cat in #10

Full Changelog: v0.1.0...v0.3.0

Semantic Versioning

All releases of CRSF for Arduino follow the Semantic Versioning Guidelines.
This means "Major.Minor.Patch".
Major = New features that are incompatible with previous iterations.
Minor = New features &/or hardware support that retains compatibility with the current Major release.
Patch = Bug fixes.

This also means that Major version 0.x.x is experimental software, where a lot of features are either still missing or are unstable. You are advised to use this Major version with caution.
Your feedback is always welcome. If you spot any bugs, don't hesitate to open an issue.
For general comments & questions, please use the discussions section.