From 19a109ed5f931c8d8ded53d070c2a5d6bdf2ab19 Mon Sep 17 00:00:00 2001 From: Devin Barillari Date: Mon, 14 Apr 2025 15:02:47 -0400 Subject: [PATCH 1/2] Add Raw Crsf BackPack Target # Conflicts: # targets/common.ini --- hardware/targets.json | 29 ++++++++++++++++++++++++++++ platformio.ini | 1 + src/Vrx_main.cpp | 5 +++++ src/module_base.cpp | 5 +++++ src/module_base.h | 1 + src/raw_crsf.cpp | 21 +++++++++++++++++++++ src/raw_crsf.h | 23 ++++++++++++++++++++++ targets/common.ini | 33 +++++++++++++++++++++++++++++++- targets/raw_crsf.ini | 44 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 src/raw_crsf.cpp create mode 100644 src/raw_crsf.h create mode 100644 targets/raw_crsf.ini diff --git a/hardware/targets.json b/hardware/targets.json index baf9c878..c7e4dcad 100644 --- a/hardware/targets.json +++ b/hardware/targets.json @@ -610,5 +610,34 @@ "platform": "esp32-s3" } } + }, + "raw-crsf": { + "name": "Raw CRSF Backpack", + "aat": { + "esp82": { + "product_name": "Generic ESP8285 / ESP8266 Receiver", + "firmware": "Raw_CRSF_ESP8285_Backpack", + "upload_methods": ["uart", "wifi"], + "platform": "esp8285" + }, + "esp32": { + "product_name": "Generic ESP32 Receiver", + "firmware": "Raw_CRSF_ESP32_Backpack", + "upload_methods": ["uart", "wifi"], + "platform": "esp32" + }, + "esp32c3": { + "product_name": "Generic ESP32C3 Receiver", + "firmware": "Raw_CRSF_ESP32C3_Backpack", + "upload_methods": ["uart", "wifi"], + "platform": "esp32-c3" + }, + "esp32s3": { + "product_name": "Generic ESP32S3 Receiver", + "firmware": "Raw_CRSF_ESP32S3_Backpack", + "upload_methods": ["uart", "wifi"], + "platform": "esp32-s3" + } + } } } diff --git a/platformio.ini b/platformio.ini index 7bad0d8b..a05d2294 100644 --- a/platformio.ini +++ b/platformio.ini @@ -16,3 +16,4 @@ extra_configs = targets/rx5808.ini targets/skyzone.ini targets/mfd_crossbow.ini + targets/raw_crsf.ini diff --git a/src/Vrx_main.cpp b/src/Vrx_main.cpp index e9921275..d66a18d5 100644 --- a/src/Vrx_main.cpp +++ b/src/Vrx_main.cpp @@ -43,6 +43,8 @@ #include "module_aat.h" #elif defined(CROSSBOW_BACKPACK) #include "mfd_crossbow.h" +#elif defined(RAW_CRSF_BACKPACK) + #include "raw_crsf.h" #endif /////////// DEFINES /////////// @@ -124,6 +126,8 @@ VrxBackpackConfig config; AatModule vrxModule(Serial); #elif defined(CROSSBOW_BACKPACK) MFDCrossbow vrxModule(&Serial); +#elif defined(RAW_CRSF_BACKPACK) + CRSFBackPack vrxModule(&Serial); #endif /////////// FUNCTION DEFS /////////// @@ -260,6 +264,7 @@ void ProcessMSPPacket(mspPacket_t *packet) DBGLN("CRSF_TLM packet too short") break; } + vrxModule.SendRawTelemetry(packet->payload, packet->payloadSize); switch (packet->payload[2]) { case CRSF_FRAMETYPE_GPS: vrxModule.SendGpsTelemetry((crsf_packet_gps_t *)packet->payload); diff --git a/src/module_base.cpp b/src/module_base.cpp index 989eb4e3..7ab89862 100644 --- a/src/module_base.cpp +++ b/src/module_base.cpp @@ -59,6 +59,11 @@ ModuleBase::SendBatteryTelemetry(uint8_t *rawCrsfPacket) { } +void +ModuleBase::SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size) +{ +} + void ModuleBase::Loop(uint32_t now) { diff --git a/src/module_base.h b/src/module_base.h index cace5ab6..629ba55b 100644 --- a/src/module_base.h +++ b/src/module_base.h @@ -16,6 +16,7 @@ class ModuleBase void SendLinkTelemetry(uint8_t *rawCrsfPacket); void SendBatteryTelemetry(uint8_t *rawCrsfPacket); void SendGpsTelemetry(crsf_packet_gps_t *packet) {} + void SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size); void Loop(uint32_t now); }; diff --git a/src/raw_crsf.cpp b/src/raw_crsf.cpp new file mode 100644 index 00000000..dcc751d8 --- /dev/null +++ b/src/raw_crsf.cpp @@ -0,0 +1,21 @@ +#include "raw_crsf.h" + +CRSFBackPack::CRSFBackPack(HardwareSerial *port) : + m_port(port), + lastSent(0), + lastUpdated(0) +{ +} + +void +CRSFBackPack::SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size) +{ + lastUpdated = millis(); + m_port->write(rawCrsfPacket, size); +} + +void +CRSFBackPack::Loop(uint32_t now) +{ + ModuleBase::Loop(now); +} diff --git a/src/raw_crsf.h b/src/raw_crsf.h new file mode 100644 index 00000000..8d8a2467 --- /dev/null +++ b/src/raw_crsf.h @@ -0,0 +1,23 @@ +#pragma once + +#include "module_base.h" +#include "msptypes.h" + +#define VRX_UART_BAUD 115200 + +class CRSFBackPack : public ModuleBase +{ +public: +CRSFBackPack(HardwareSerial *port); + void SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size); + void Loop(uint32_t now); + +private: + void SendHeartbeat(); + void SendGpsRawInt(); + void SendGlobalPositionInt(); + + HardwareSerial *m_port; + uint32_t lastSent; + uint32_t lastUpdated; +}; diff --git a/targets/common.ini b/targets/common.ini index c8b200bd..eb3d44b4 100644 --- a/targets/common.ini +++ b/targets/common.ini @@ -96,6 +96,7 @@ build_src_filter = - - - + - # ------------------------- COMMON RAPIDFIRE-BACKPACK DEFINITIONS ----------------- [rapidfire_vrx_backpack_common] @@ -116,6 +117,7 @@ build_src_filter = - - - + - # ------------------------- COMMON RX5808-BACKPACK DEFINITIONS ----------------- [rx5808_vrx_backpack_common] @@ -136,6 +138,7 @@ build_src_filter = - - - + - # ------------------------- COMMON STEADYVIEW-BACKPACK DEFINITIONS ----------------- [steadyview_vrx_backpack_common] @@ -156,6 +159,7 @@ build_src_filter = - - - + - # ------------------------- COMMON FUSION-BACKPACK DEFINITIONS ----------------- [fusion_vrx_backpack_common] @@ -176,6 +180,7 @@ build_src_filter = - - - + - # ------------------------- COMMON HDZERO-BACKPACK DEFINITIONS ----------------- [hdzero_vrx_backpack_common] @@ -196,6 +201,7 @@ build_src_filter = - - - + - # ------------------------- COMMON SKYZONE-MSP-BACKPACK DEFINITIONS ----------------- [skyzone_msp_vrx_backpack_common] @@ -216,6 +222,7 @@ build_src_filter = - - - + - # ------------------------- COMMON ORQA-BACKPACK DEFINITIONS ------------------- [orqa_backpack_common] @@ -236,6 +243,7 @@ build_src_filter = ; - - - + - # ------------------------- COMMON TIMER-BACKPACK DEFINITIONS ----------------- [timer_backpack_common] @@ -255,6 +263,7 @@ build_src_filter = - ; - - + - # ------------------------- COMMON MFD-CROSSBOW-BACKPACK DEFINITIONS ----------------- [mfd_crossbow_backpack_common] @@ -275,6 +284,28 @@ build_src_filter = - - ; - + - lib_deps = ${env.lib_deps} - ${common_env_data.mavlink_lib_dep} \ No newline at end of file + ${common_env_data.mavlink_lib_dep} + +# ------------------------- COMMON RAW-CRSF-BACKPACK DEFINITIONS ----------------- +[raw_crsf_backpack_common] +build_flags = + ${common_env_data.build_flags} + -D TARGET_VRX_BACKPACK + -D RAW_CRSF_BACKPACK +build_src_filter = + ${common_env_data.build_src_filter} + - + ; - + - + - + - + - + - + - + - + - + - + ; - diff --git a/targets/raw_crsf.ini b/targets/raw_crsf.ini new file mode 100644 index 00000000..6449baa7 --- /dev/null +++ b/targets/raw_crsf.ini @@ -0,0 +1,44 @@ +# ******************************** +# MFD Crossbow tracker backpack +# ******************************** + +[env:Raw_CRSF_ESP8285_Backpack_via_UART] +extends = env_common_esp8285, raw_crsf_backpack_common +build_flags = + ${env_common_esp8285.build_flags} + ${raw_crsf_backpack_common.build_flags} + -D PIN_BUTTON=0 + -D PIN_LED=16 + +[env:Raw_CRSF_ESP8285_Backpack_via_WIFI] +extends = env:Raw_CRSF_ESP8285_Backpack_via_UART + +[env:Raw_CRSF_ESP32_Backpack_via_UART] +extends = env_common_esp32, raw_crsf_backpack_common +build_flags = + ${env_common_esp32.build_flags} + ${raw_crsf_backpack_common.build_flags} + -D PIN_BUTTON=0 + +[env:Raw_CRSF_ESP32_Backpack_via_WIFI] +extends = env:Raw_CRSF_ESP32_Backpack_via_UART + +[env:Raw_CRSF_ESP32C3_Backpack_via_UART] +extends = env_common_esp32c3, raw_crsf_backpack_common +build_flags = + ${env_common_esp32c3.build_flags} + ${raw_crsf_backpack_common.build_flags} + -D PIN_BUTTON=9 + +[env:Raw_CRSF_ESP32C3_Backpack_via_WIFI] +extends = env:Raw_CRSF_ESP32C3_Backpack_via_UART + +[env:Raw_CRSF_ESP32S3_Backpack_via_UART] +extends = env_common_esp32s3, raw_crsf_backpack_common +build_flags = + ${env_common_esp32s3.build_flags} + ${raw_crsf_backpack_common.build_flags} + -D PIN_BUTTON=0 + +[env:Raw_CRSF_ESP32S3_Backpack_via_WIFI] +extends = env:Raw_CRSF_ESP32S3_Backpack_via_UART From 5fd381c65eb9e0bdafefe7df14fc788ddcc61679 Mon Sep 17 00:00:00 2001 From: Devin Barillari Date: Mon, 3 Nov 2025 15:38:08 -0500 Subject: [PATCH 2/2] Remove crossbow refs Move common ini elements into raw_crsf.ini rename class to CrsfRawBackpack remove msptypes.h from header --- src/Vrx_main.cpp | 2 +- src/raw_crsf.cpp | 6 +++--- src/raw_crsf.h | 5 ++--- targets/common.ini | 23 +---------------------- targets/raw_crsf.ini | 25 ++++++++++++++++++++++++- 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/Vrx_main.cpp b/src/Vrx_main.cpp index d66a18d5..db499580 100644 --- a/src/Vrx_main.cpp +++ b/src/Vrx_main.cpp @@ -127,7 +127,7 @@ VrxBackpackConfig config; #elif defined(CROSSBOW_BACKPACK) MFDCrossbow vrxModule(&Serial); #elif defined(RAW_CRSF_BACKPACK) - CRSFBackPack vrxModule(&Serial); + CrsfRawBackpack vrxModule(&Serial); #endif /////////// FUNCTION DEFS /////////// diff --git a/src/raw_crsf.cpp b/src/raw_crsf.cpp index dcc751d8..b4356db6 100644 --- a/src/raw_crsf.cpp +++ b/src/raw_crsf.cpp @@ -1,6 +1,6 @@ #include "raw_crsf.h" -CRSFBackPack::CRSFBackPack(HardwareSerial *port) : +CrsfRawBackpack::CrsfRawBackpack(HardwareSerial *port) : m_port(port), lastSent(0), lastUpdated(0) @@ -8,14 +8,14 @@ CRSFBackPack::CRSFBackPack(HardwareSerial *port) : } void -CRSFBackPack::SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size) +CrsfRawBackpack::SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size) { lastUpdated = millis(); m_port->write(rawCrsfPacket, size); } void -CRSFBackPack::Loop(uint32_t now) +CrsfRawBackpack::Loop(uint32_t now) { ModuleBase::Loop(now); } diff --git a/src/raw_crsf.h b/src/raw_crsf.h index 8d8a2467..3e883aaf 100644 --- a/src/raw_crsf.h +++ b/src/raw_crsf.h @@ -1,14 +1,13 @@ #pragma once #include "module_base.h" -#include "msptypes.h" #define VRX_UART_BAUD 115200 -class CRSFBackPack : public ModuleBase +class CrsfRawBackpack : public ModuleBase { public: -CRSFBackPack(HardwareSerial *port); +CrsfRawBackpack(HardwareSerial *port); void SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size); void Loop(uint32_t now); diff --git a/targets/common.ini b/targets/common.ini index eb3d44b4..cf252ce8 100644 --- a/targets/common.ini +++ b/targets/common.ini @@ -287,25 +287,4 @@ build_src_filter = - lib_deps = ${env.lib_deps} - ${common_env_data.mavlink_lib_dep} - -# ------------------------- COMMON RAW-CRSF-BACKPACK DEFINITIONS ----------------- -[raw_crsf_backpack_common] -build_flags = - ${common_env_data.build_flags} - -D TARGET_VRX_BACKPACK - -D RAW_CRSF_BACKPACK -build_src_filter = - ${common_env_data.build_src_filter} - - - ; - - - - - - - - - - - - - - - - - - - - ; - + ${common_env_data.mavlink_lib_dep} \ No newline at end of file diff --git a/targets/raw_crsf.ini b/targets/raw_crsf.ini index 6449baa7..caff5581 100644 --- a/targets/raw_crsf.ini +++ b/targets/raw_crsf.ini @@ -1,7 +1,30 @@ # ******************************** -# MFD Crossbow tracker backpack +# RAW CRSF backpack +# uses UART0 on all targets +# 115200 baud # ******************************** +# ------------------------- COMMON RAW-CRSF-BACKPACK DEFINITIONS ----------------- +[raw_crsf_backpack_common] +build_flags = + ${common_env_data.build_flags} + -D TARGET_VRX_BACKPACK + -D RAW_CRSF_BACKPACK +build_src_filter = + ${common_env_data.build_src_filter} + - + ; - + - + - + - + - + - + - + - + - + - + ; - + [env:Raw_CRSF_ESP8285_Backpack_via_UART] extends = env_common_esp8285, raw_crsf_backpack_common build_flags =