Releases: ZZ-Cat/CRSFforArduino
Version 1.0.4 - Final maintenance update to v1.0.0
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 yourCRSFforArduino::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 theCRSF_DEBUG_ENABLED
set to1
.
If you want to view your current configuration in the Serial Monitor, setCRSF_DEBUG_ENABLE_CONFIGURATION_DUMP
to1
inCFA_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
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
Security
Fixes
- fix(targets): Refine ESP32 compatibility by @ZZ-Cat in #99
- fix(compatibility table): 🚑 Add missing
STM32F405RG
string todeviceNames[]
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
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
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
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
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
Chores
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
- Download the
Source Code (ZIP)
in theAssets
section of this Release, and save to a convenient space on your hard drive. - In the Arduino IDE, go to
Sketch
->Include Library
->Add .ZIP Library...
- Click
CRSFforArduino-1.0.1
and Arduino IDE will automatically install it for you. - Build-test one of the examples. preferably the
rc_channels
example byFile
->Examples
->CRSFforArduino
->rc_channels
. - Click
Verify
and the build should pass.
PlatformIO
Installing for the first time:
- Type
pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git
into your Terminal, using the version tag#1.0.1
suffix. - Hit enter.
- 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.
- 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
- Hit enter.
- Once PlatformIO has cleared out CRSF for Arduino, this is where you install this version.
- Type:
pio pkg install -l https://github.com/ZZ-Cat/CRSFforArduino.git#v1.0.1
into your Terminal. - 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!
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 bringHardwareSerial
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
Miscellaneous
Kia ora and haere mai to our new contributors
- @Kristabel28 made their first contribution in #40
- @Speshl made their first contribution in #57
- @berickson made their first contribution in #83
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
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.
- Use
CRSFforArduino::begin()
returns abool
value - IE This function returnstrue
if CRSF for Arduino is initialised successfully orfalse
if it hasn't.- The return data type for
CRSFforArduino::update()
isvoid
.- 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 yourloop()
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)
. Wheren
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 optionalbool
argument. Set this totrue
to get the raw value. For examplecrsf.readRcChannel(1, true)
will give you the raw value of channel 1.
- To read an RC channel value, use
- To send GPS telemetry, use
CRSFforArduino::telemetryWriteGPS()
.- This takes six arguments. Five of which are
float
& the sixth argument isuint8_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)
- This takes six arguments. Five of which are
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
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
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
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 theCRSF_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
What's Changed
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.