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..db499580 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) + CrsfRawBackpack 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..b4356db6 --- /dev/null +++ b/src/raw_crsf.cpp @@ -0,0 +1,21 @@ +#include "raw_crsf.h" + +CrsfRawBackpack::CrsfRawBackpack(HardwareSerial *port) : + m_port(port), + lastSent(0), + lastUpdated(0) +{ +} + +void +CrsfRawBackpack::SendRawTelemetry(uint8_t *rawCrsfPacket, uint16_t size) +{ + lastUpdated = millis(); + m_port->write(rawCrsfPacket, size); +} + +void +CrsfRawBackpack::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..3e883aaf --- /dev/null +++ b/src/raw_crsf.h @@ -0,0 +1,22 @@ +#pragma once + +#include "module_base.h" + +#define VRX_UART_BAUD 115200 + +class CrsfRawBackpack : public ModuleBase +{ +public: +CrsfRawBackpack(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..cf252ce8 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,7 @@ build_src_filter = - - ; - + - lib_deps = ${env.lib_deps} ${common_env_data.mavlink_lib_dep} \ No newline at end of file diff --git a/targets/raw_crsf.ini b/targets/raw_crsf.ini new file mode 100644 index 00000000..caff5581 --- /dev/null +++ b/targets/raw_crsf.ini @@ -0,0 +1,67 @@ +# ******************************** +# 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 = + ${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