diff --git a/examples/platformio/main.cpp b/examples/platformio/main.cpp index e9cc8a6c..7d8eb116 100644 --- a/examples/platformio/main.cpp +++ b/examples/platformio/main.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This is the main development file for CRSF for Arduino. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -29,6 +29,8 @@ CRSFforArduino *crsf = nullptr; +void onReceiveRcChannels(serialReceiverLayer::rcChannels_t *rcChannels); + void setup() { Serial.begin(115200); @@ -51,33 +53,51 @@ void setup() delay(10); } } + + crsf->setRcChannelsCallback(onReceiveRcChannels); } void loop() { crsf->update(); +} - /* Print RC channels every 100 ms. Do this using the millis() function to avoid blocking the main loop. */ - static unsigned long lastPrint = 0; +void onReceiveRcChannels(serialReceiverLayer::rcChannels_t *rcChannels) +{ + static unsigned long lastPrint = millis(); if (millis() - lastPrint >= 100) { lastPrint = millis(); - Serial.print("RC Channels rcToUs(crsf->getChannel(1))); - Serial.print(", E: "); - Serial.print(crsf->rcToUs(crsf->getChannel(2))); - Serial.print(", T: "); - Serial.print(crsf->rcToUs(crsf->getChannel(3))); - Serial.print(", R: "); - Serial.print(crsf->rcToUs(crsf->getChannel(4))); - Serial.print(", Aux1: "); - Serial.print(crsf->rcToUs(crsf->getChannel(5))); - Serial.print(", Aux2: "); - Serial.print(crsf->rcToUs(crsf->getChannel(6))); - Serial.print(", Aux3: "); - Serial.print(crsf->rcToUs(crsf->getChannel(7))); - Serial.print(", Aux4: "); - Serial.print(crsf->rcToUs(crsf->getChannel(8))); - Serial.println(">"); + + static bool initialised = false; + static bool lastFailSafe = false; + if (rcChannels->failsafe != lastFailSafe || !initialised) + { + initialised = true; + lastFailSafe = rcChannels->failsafe; + Serial.print("FailSafe: "); + Serial.println(lastFailSafe ? "Active" : "Inactive"); + } + + if (rcChannels->failsafe == false) + { + Serial.print("RC Channels rcToUs(rcChannels->value[0])); + Serial.print(", E: "); + Serial.print(crsf->rcToUs(rcChannels->value[1])); + Serial.print(", T: "); + Serial.print(crsf->rcToUs(rcChannels->value[2])); + Serial.print(", R: "); + Serial.print(crsf->rcToUs(rcChannels->value[3])); + Serial.print(", Aux1: "); + Serial.print(crsf->rcToUs(rcChannels->value[4])); + Serial.print(", Aux2: "); + Serial.print(crsf->rcToUs(rcChannels->value[5])); + Serial.print(", Aux3: "); + Serial.print(crsf->rcToUs(rcChannels->value[6])); + Serial.print(", Aux4: "); + Serial.print(crsf->rcToUs(rcChannels->value[7])); + Serial.println(">"); + } } } diff --git a/examples/rc_channels/rc_channels.ino b/examples/rc_channels/rc_channels.ino index 38879da7..5446b9be 100644 --- a/examples/rc_channels/rc_channels.ino +++ b/examples/rc_channels/rc_channels.ino @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief Example of how to read rc channels from a receiver. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -49,6 +49,8 @@ const char *rcChannelNames[] = { "Aux11", "Aux12"}; +void onReceiveRcChannels(serialReceiverLayer::rcChannels_t *rcChannels); + void setup() { // Initialise the serial port & wait for the port to open. @@ -76,6 +78,8 @@ void setup() rcChannelCount = rcChannelCount > crsfProtocol::RC_CHANNEL_COUNT ? crsfProtocol::RC_CHANNEL_COUNT : rcChannelCount; + crsf->setRcChannelsCallback(onReceiveRcChannels); + // Show the user that the sketch is ready. Serial.println("RC Channels Example"); delay(1000); @@ -86,43 +90,49 @@ void setup() void loop() { crsf->update(); +} - /* Print RC channels every 100 ms. */ - unsigned long thisTime = millis(); - static unsigned long lastTime = millis(); - - /* Compensate for millis() overflow. */ - if (thisTime < lastTime) +void onReceiveRcChannels(serialReceiverLayer::rcChannels_t *rcChannels) +{ + if (rcChannels->failsafe == false) { - lastTime = thisTime; - } + /* Print RC channels every 100 ms. */ + unsigned long thisTime = millis(); + static unsigned long lastTime = millis(); - if (thisTime - lastTime >= 100) - { - lastTime = thisTime; -#if USE_SERIAL_PLOTTER > 0 - for (int i = 1; i <= rcChannelCount; i++) + /* Compensate for millis() overflow. */ + if (thisTime < lastTime) { - Serial.print(i); - Serial.print(":"); - Serial.print(crsf->rcToUs(crsf->getChannel(i))); - Serial.print("\t"); + lastTime = thisTime; } - Serial.println(); -#else - Serial.print("RC Channels <"); - for (int i = 1; i <= rcChannelCount; i++) - { - Serial.print(rcChannelNames[i - 1]); - Serial.print(": "); - Serial.print(crsf->rcToUs(crsf->getChannel(i))); - if (i < rcChannelCount) + if (thisTime - lastTime >= 100) + { + lastTime = thisTime; +#if USE_SERIAL_PLOTTER > 0 + for (int i = 1; i <= rcChannelCount; i++) { - Serial.print(", "); + Serial.print(i); + Serial.print(":"); + Serial.print(crsf->rcToUs(crsf->getChannel(i))); + Serial.print("\t"); } - } - Serial.println(">"); + Serial.println(); +#else + Serial.print("RC Channels <"); + for (int i = 1; i <= rcChannelCount; i++) + { + Serial.print(rcChannelNames[i - 1]); + Serial.print(": "); + Serial.print(crsf->rcToUs(crsf->getChannel(i))); + + if (i < rcChannelCount) + { + Serial.print(", "); + } + } + Serial.println(">"); #endif + } } } diff --git a/src/CFA_Config.hpp b/src/CFA_Config.hpp index 83854c52..24e5806e 100644 --- a/src/CFA_Config.hpp +++ b/src/CFA_Config.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This is the configuration file for CRSF for Arduino. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -37,11 +37,19 @@ namespace crsfForArduinoConfig Versioning is done using Semantic Versioning 2.0.0. See https://semver.org/ for more information. */ #define CRSFFORARDUINO_VERSION "1.0.0" -#define CRSFFORARDUINO_VERSION_DATE "2024-2-6" +#define CRSFFORARDUINO_VERSION_DATE "2024-2-7" #define CRSFFORARDUINO_VERSION_MAJOR 1 #define CRSFFORARDUINO_VERSION_MINOR 0 #define CRSFFORARDUINO_VERSION_PATCH 0 +/* Failsafe Options +- CRSF_FAILSAFE_LQI_THRESHOLD: The minimum LQI value for the receiver to be considered connected. +- CRSF_FAILSAFE_RSSI_THRESHOLD: The minimum RSSI value for the receiver to be considered connected. + - NB: It is considered good practice to set this value to the same as the RSSI Sensitivity Limit in your Lua script. +*/ +#define CRSF_FAILSAFE_LQI_THRESHOLD 80 +#define CRSF_FAILSAFE_RSSI_THRESHOLD 105 + /* RC Options - RC_ENABLED: Enables or disables the RC API. - RC_MAX_CHANNELS: The maximum number of RC channels to be received. diff --git a/src/CRSFforArduino.cpp b/src/CRSFforArduino.cpp index 599fe3b5..414697fc 100644 --- a/src/CRSFforArduino.cpp +++ b/src/CRSFforArduino.cpp @@ -4,7 +4,7 @@ * @brief This is the Sketch Layer, which is a simplified API for CRSF for Arduino. * It is intended to be used by the user in their sketches. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -118,7 +118,7 @@ namespace sketchLayer * * @return The RC value. */ - uint16_t CRSFforArduino::readRcChannel(uint8_t channel, bool raw) + [[deprecated("Use RC channel callback instead")]] uint16_t CRSFforArduino::readRcChannel(uint8_t channel, bool raw) { #if CRSF_RC_ENABLED > 0 return _serialReceiver->readRcChannel(channel - 1, raw); @@ -138,7 +138,7 @@ namespace sketchLayer * @param channel The channel to read. * @return The RC value. */ - uint16_t CRSFforArduino::getChannel(uint8_t channel) + [[deprecated("Use RC channel callback instead")]] uint16_t CRSFforArduino::getChannel(uint8_t channel) { #if CRSF_RC_ENABLED > 0 return _serialReceiver->getChannel(channel - 1); @@ -170,6 +170,16 @@ namespace sketchLayer #endif } + void CRSFforArduino::setRcChannelsCallback(void (*callback)(serialReceiverLayer::rcChannels_t *rcChannels)) + { +#if CRSF_RC_ENABLED > 0 + _serialReceiver->setRcChannelsCallback(callback); +#else + // Prevent compiler warnings + (void)callback; +#endif + } + void CRSFforArduino::setLinkStatisticsCallback(void (*callback)(serialReceiverLayer::link_statistics_t linkStatistics)) { #if CRSF_LINK_STATISTICS_ENABLED > 0 diff --git a/src/CRSFforArduino.hpp b/src/CRSFforArduino.hpp index d075b9ae..80f1f956 100644 --- a/src/CRSFforArduino.hpp +++ b/src/CRSFforArduino.hpp @@ -4,7 +4,7 @@ * @brief This is the Sketch Layer, which is a simplified API for CRSF for Arduino. * It is intended to be used by the user in their sketches. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -46,6 +46,7 @@ namespace sketchLayer uint16_t getChannel(uint8_t channel); uint16_t rcToUs(uint16_t rc); uint16_t readRcChannel(uint8_t channel, bool raw = false); + void setRcChannelsCallback(void (*callback)(serialReceiverLayer::rcChannels_t *rcChannels)); // Link statistics functions. void setLinkStatisticsCallback(void (*callback)(serialReceiverLayer::link_statistics_t linkStatistics)); diff --git a/src/SerialReceiver/CRC/CRC.cpp b/src/SerialReceiver/CRC/CRC.cpp index bee2108d..bba27b61 100644 --- a/src/SerialReceiver/CRC/CRC.cpp +++ b/src/SerialReceiver/CRC/CRC.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief A generic CRC8 implementation for the CRSF for Arduino library. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/SerialReceiver/CRC/CRC.hpp b/src/SerialReceiver/CRC/CRC.hpp index f645ad85..da734910 100644 --- a/src/SerialReceiver/CRC/CRC.hpp +++ b/src/SerialReceiver/CRC/CRC.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief A generic CRC8 implementation for the CRSF for Arduino library. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/SerialReceiver/CRSF/CRSF.cpp b/src/SerialReceiver/CRSF/CRSF.cpp index a77a2ae9..9a7258c0 100644 --- a/src/SerialReceiver/CRSF/CRSF.cpp +++ b/src/SerialReceiver/CRSF/CRSF.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This decodes CRSF frames from a serial port. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -163,6 +163,18 @@ namespace serialReceiverLayer return false; } + void CRSF::getFailSafe(bool *failSafe) + { + if (linkStatistics.lqi <= CRSF_FAILSAFE_LQI_THRESHOLD || linkStatistics.rssi >= CRSF_FAILSAFE_RSSI_THRESHOLD) + { + *failSafe = true; + } + else + { + *failSafe = false; + } + } + void CRSF::getRcChannels(uint16_t *rcChannels) { if (rcFrameReceived) diff --git a/src/SerialReceiver/CRSF/CRSF.hpp b/src/SerialReceiver/CRSF/CRSF.hpp index 0c470efc..1146a982 100644 --- a/src/SerialReceiver/CRSF/CRSF.hpp +++ b/src/SerialReceiver/CRSF/CRSF.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This decodes CRSF frames from a serial port. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -62,6 +62,7 @@ namespace serialReceiverLayer void end(); void setFrameTime(uint32_t baudRate, uint8_t packetCount = 10); bool receiveFrames(uint8_t rxByte); + void getFailSafe(bool *failSafe); void getRcChannels(uint16_t *rcChannels); void getLinkStatistics(link_statistics_t *linkStats); diff --git a/src/SerialReceiver/CRSF/CRSFProtocol.hpp b/src/SerialReceiver/CRSF/CRSFProtocol.hpp index 7923aed9..70e4d848 100644 --- a/src/SerialReceiver/CRSF/CRSFProtocol.hpp +++ b/src/SerialReceiver/CRSF/CRSFProtocol.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This file contains enums and structs for the CRSF protocol. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/SerialReceiver/SerialBuffer/SerialBuffer.cpp b/src/SerialReceiver/SerialBuffer/SerialBuffer.cpp index b4b65b18..eb998b51 100644 --- a/src/SerialReceiver/SerialBuffer/SerialBuffer.cpp +++ b/src/SerialReceiver/SerialBuffer/SerialBuffer.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief A generic serial buffer for the CRSF for Arduino library. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/SerialReceiver/SerialBuffer/SerialBuffer.hpp b/src/SerialReceiver/SerialBuffer/SerialBuffer.hpp index f7690882..a1e1fc0e 100644 --- a/src/SerialReceiver/SerialBuffer/SerialBuffer.hpp +++ b/src/SerialReceiver/SerialBuffer/SerialBuffer.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief A generic serial buffer for the CRSF for Arduino library. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/SerialReceiver/SerialReceiver.cpp b/src/SerialReceiver/SerialReceiver.cpp index 4865d95e..486cd5a7 100644 --- a/src/SerialReceiver/SerialReceiver.cpp +++ b/src/SerialReceiver/SerialReceiver.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief The Serial Receiver layer for the CRSF for Arduino library. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -38,7 +38,10 @@ namespace serialReceiverLayer _uart = &Serial1; #if CRSF_RC_ENABLED > 0 - _rcChannels = new uint16_t[RC_CHANNEL_COUNT]; + _rcChannels = new rcChannels_t; + _rcChannels->valid = false; + _rcChannels->failsafe = false; + memset(_rcChannels->value, 0, sizeof(_rcChannels->value)); #if CRSF_FLIGHTMODES_ENABLED > 0 _flightModes = new flightMode_t[FLIGHT_MODE_COUNT]; #endif @@ -50,7 +53,10 @@ namespace serialReceiverLayer _uart = hwUartPort; #if CRSF_RC_ENABLED > 0 - _rcChannels = new uint16_t[RC_CHANNEL_COUNT]; + _rcChannels = new rcChannels_t; + _rcChannels->valid = false; + _rcChannels->failsafe = false; + memset(_rcChannels->value, 0, sizeof(_rcChannels->value)); #if CRSF_FLIGHTMODES_ENABLED > 0 _flightModes = new flightMode_t[FLIGHT_MODE_COUNT]; #endif @@ -62,7 +68,8 @@ namespace serialReceiverLayer _uart = nullptr; #if CRSF_RC_ENABLED > 0 - delete[] _rcChannels; + delete _rcChannels; + _rcChannels = nullptr; #if CRSF_FLIGHTMODES_ENABLED > 0 delete[] _flightModes; #endif @@ -86,34 +93,34 @@ namespace serialReceiverLayer #if CRSF_RC_INITIALISE_ARMCHANNEL > 0 && CRSF_RC_INITIALISE_THROTTLECHANNEL > 0 if (i == RC_CHANNEL_AUX1 || i == RC_CHANNEL_THROTTLE) { - _rcChannels[i] = CRSF_RC_CHANNEL_MIN; + _rcChannels->value[i] = CRSF_RC_CHANNEL_MIN; } else { - _rcChannels[i] = CRSF_RC_CHANNEL_CENTER; + _rcChannels->value[i] = CRSF_RC_CHANNEL_CENTER; } #elif CRSF_RC_INITIALISE_ARMCHANNEL > 0 if (i == RC_CHANNEL_AUX1) { - _rcChannels[i] = CRSF_RC_CHANNEL_MIN; + _rcChannels->value[i] = CRSF_RC_CHANNEL_MIN; } else { - _rcChannels[i] = CRSF_RC_CHANNEL_CENTER; + _rcChannels->value[i] = CRSF_RC_CHANNEL_CENTER; } #elif CRSF_RC_INITIALISE_THROTTLECHANNEL > 0 if (i == RC_CHANNEL_THROTTLE) { - _rcChannels[i] = CRSF_RC_CHANNEL_MIN; + _rcChannels->value[i] = CRSF_RC_CHANNEL_MIN; } else { - _rcChannels[i] = CRSF_RC_CHANNEL_CENTER; + _rcChannels->value[i] = CRSF_RC_CHANNEL_CENTER; } #else - _rcChannels[i] = CRSF_RC_CHANNEL_CENTER; + _rcChannels->value[i] = CRSF_RC_CHANNEL_CENTER; #endif } #endif @@ -249,7 +256,12 @@ namespace serialReceiverLayer #if CRSF_RC_ENABLED > 0 // Update the RC Channels. - crsf->getRcChannels(_rcChannels); + crsf->getFailSafe(&_rcChannels->failsafe); + crsf->getRcChannels(_rcChannels->value); + if (_rcChannelsCallback != nullptr) + { + _rcChannelsCallback(_rcChannels); + } #endif } #endif @@ -273,13 +285,18 @@ namespace serialReceiverLayer #endif #if CRSF_RC_ENABLED > 0 + void SerialReceiver::setRcChannelsCallback(rcChannelsCallback_t callback) + { + _rcChannelsCallback = callback; + } + uint16_t SerialReceiver::readRcChannel(uint8_t channel, bool raw) { if (channel <= 15) { if (raw == true) { - return _rcChannels[channel]; + return _rcChannels->value[channel]; } else { @@ -290,7 +307,7 @@ namespace serialReceiverLayer - Scale factor = (2012 - 988) / (1811 - 172) = 0.62477120195241 - Offset = 988 - 172 * 0.62477120195241 = 880.53935326418548 */ - return (uint16_t)((_rcChannels[channel] * 0.62477120195241F) + 881); + return (uint16_t)((_rcChannels->value[channel] * 0.62477120195241F) + 881); } } else diff --git a/src/SerialReceiver/SerialReceiver.hpp b/src/SerialReceiver/SerialReceiver.hpp index 982015d7..b9355b3b 100644 --- a/src/SerialReceiver/SerialReceiver.hpp +++ b/src/SerialReceiver/SerialReceiver.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief The Serial Receiver layer for the CRSF for Arduino library. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * @@ -47,6 +47,16 @@ namespace serialReceiverLayer FLIGHT_MODE_COUNT } flightModeId_t; + typedef struct rcChannels_s + { + bool valid; + bool failsafe; + uint16_t value[crsfProtocol::RC_CHANNEL_COUNT]; + } rcChannels_t; + + // Function pointer for RC Channels Callback + typedef void (*rcChannelsCallback_t)(rcChannels_t *); + // Function pointer for Flight Mode Callback typedef void (*flightModeCallback_t)(flightModeId_t); @@ -72,6 +82,7 @@ namespace serialReceiverLayer #endif #if CRSF_RC_ENABLED > 0 + void setRcChannelsCallback(rcChannelsCallback_t callback); uint16_t getChannel(uint8_t channel); uint16_t rcToUs(uint16_t rc); uint16_t usToRc(uint16_t us); @@ -101,7 +112,8 @@ namespace serialReceiverLayer #endif #if CRSF_RC_ENABLED > 0 - uint16_t *_rcChannels; + rcChannels_t *_rcChannels = nullptr; + rcChannelsCallback_t _rcChannelsCallback = nullptr; #endif #if CRSF_TELEMETRY_ENABLED > 0 diff --git a/src/SerialReceiver/Telemetry/Telemetry.cpp b/src/SerialReceiver/Telemetry/Telemetry.cpp index 5d82e097..1646fc53 100644 --- a/src/SerialReceiver/Telemetry/Telemetry.cpp +++ b/src/SerialReceiver/Telemetry/Telemetry.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This encodes data into CRSF telemetry frames for transmission to the RC handset. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/SerialReceiver/Telemetry/Telemetry.hpp b/src/SerialReceiver/Telemetry/Telemetry.hpp index 41c18efa..6a997a30 100644 --- a/src/SerialReceiver/Telemetry/Telemetry.hpp +++ b/src/SerialReceiver/Telemetry/Telemetry.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief This encodes data into CRSF telemetry frames for transmission to the RC handset. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/hal/CompatibilityTable/CompatibilityTable.cpp b/src/hal/CompatibilityTable/CompatibilityTable.cpp index 2c11048a..d857fecc 100644 --- a/src/hal/CompatibilityTable/CompatibilityTable.cpp +++ b/src/hal/CompatibilityTable/CompatibilityTable.cpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief The Compatibility Table determines if the target development board is compatible with CRSF for Arduino. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. * diff --git a/src/hal/CompatibilityTable/CompatibilityTable.hpp b/src/hal/CompatibilityTable/CompatibilityTable.hpp index c131f382..487ab434 100644 --- a/src/hal/CompatibilityTable/CompatibilityTable.hpp +++ b/src/hal/CompatibilityTable/CompatibilityTable.hpp @@ -3,7 +3,7 @@ * @author Cassandra "ZZ Cat" Robinson (nicad.heli.flier@gmail.com) * @brief The Compatibility Table determines if the target development board is compatible with CRSF for Arduino. * @version 1.0.0 - * @date 2024-2-6 + * @date 2024-2-7 * * @copyright Copyright (c) 2024, Cassandra "ZZ Cat" Robinson. All rights reserved. *