1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 08:15:30 +03:00

Allow CRSF RX binding via cli (#13119)

This commit is contained in:
Auster 2023-12-04 02:28:45 +00:00 committed by GitHub
parent b199e65000
commit c41e2f2680
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 1 deletions

View file

@ -681,4 +681,22 @@ bool crsfRxIsActive(void)
{
return serialPort != NULL;
}
void crsfRxBind(void)
{
if (serialPort != NULL) {
uint8_t bindFrame[] = {
CRSF_SYNC_BYTE,
0x07, // frame length
CRSF_FRAMETYPE_COMMAND,
CRSF_ADDRESS_CRSF_RECEIVER,
CRSF_ADDRESS_FLIGHT_CONTROLLER,
CRSF_COMMAND_SUBCMD_RX,
CRSF_COMMAND_SUBCMD_RX_BIND,
0x9E, // Command CRC8
0xE8, // Packet CRC8
};
serialWriteBuf(serialPort, bindFrame, 9);
}
}
#endif

View file

@ -88,3 +88,4 @@ bool crsfRxInit(const struct rxConfig_s *initialRxConfig, struct rxRuntimeState_
void crsfRxUpdateBaudrate(uint32_t baudrate);
bool crsfRxUseNegotiatedBaud(void);
bool crsfRxIsActive(void);
void crsfRxBind(void);

View file

@ -60,9 +60,14 @@ typedef enum {
} crsfFrameType_e;
enum {
CRSF_COMMAND_SUBCMD_RX = 0x10, // receiver command
CRSF_COMMAND_SUBCMD_GENERAL = 0x0A, // general command
};
enum {
CRSF_COMMAND_SUBCMD_RX_BIND = 0x01, // bind command
};
enum {
CRSF_COMMAND_SUBCMD_GENERAL_CRSF_SPEED_PROPOSAL = 0x70, // proposed new CRSF port speed
CRSF_COMMAND_SUBCMD_GENERAL_CRSF_SPEED_RESPONSE = 0x71, // response to the proposed CRSF port speed

View file

@ -24,12 +24,13 @@
#include "rx/rx_spi_common.h"
#include "rx/srxl2.h"
#include "rx/crsf.h"
#include "rx_bind.h"
static bool doRxBind(bool doBind)
{
#if !defined(USE_SERIALRX_SRXL2) && !defined(USE_RX_FRSKY_SPI) && !defined(USE_RX_SFHSS_SPI) && !defined(USE_RX_FLYSKY) && !defined(USE_RX_SPEKTRUM) && !defined(USE_RX_EXPRESSLRS)
#if !defined(USE_SERIALRX_SRXL2) && !defined(USE_RX_FRSKY_SPI) && !defined(USE_RX_SFHSS_SPI) && !defined(USE_RX_FLYSKY) && !defined(USE_RX_SPEKTRUM) && !defined(USE_RX_EXPRESSLRS) && !defined(USE_RX_CRSF)
UNUSED(doBind);
#endif
@ -40,6 +41,14 @@ static bool doRxBind(bool doBind)
switch (rxRuntimeState.serialrxProvider) {
default:
return false;
#if defined(USE_RX_CRSF)
case SERIALRX_CRSF:
if (doBind) {
crsfRxBind();
}
break;
#endif
#if defined(USE_SERIALRX_SRXL2)
case SERIALRX_SRXL2:
if (doBind) {

View file

@ -153,6 +153,7 @@
#define USE_RX_SPI
#define USE_RX_CC2500
#define USE_RX_CRSF
#define USE_RX_EXPRESSLRS
#define USE_RX_SX1280
#define USE_RX_SX127X