mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-17 21:35:44 +03:00
add serial_rx msp
Conflicts: Makefile src/board.h src/main.c src/mw.h src/serial_cli.c
This commit is contained in:
parent
771edeb29f
commit
9e8b05dc0e
9 changed files with 64 additions and 5077 deletions
1
Makefile
1
Makefile
|
@ -110,6 +110,7 @@ COMMON_SRC = build_config.c \
|
||||||
rc_controls.c \
|
rc_controls.c \
|
||||||
rc_curves.c \
|
rc_curves.c \
|
||||||
rx_common.c \
|
rx_common.c \
|
||||||
|
rx_msp.c \
|
||||||
rx_pwm.c \
|
rx_pwm.c \
|
||||||
rx_sbus.c \
|
rx_sbus.c \
|
||||||
rx_sumd.c \
|
rx_sumd.c \
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -14,6 +14,7 @@
|
||||||
#include "rx_sbus.h"
|
#include "rx_sbus.h"
|
||||||
#include "rx_spektrum.h"
|
#include "rx_spektrum.h"
|
||||||
#include "rx_sumd.h"
|
#include "rx_sumd.h"
|
||||||
|
#include "rx_msp.h"
|
||||||
|
|
||||||
#include "rx_common.h"
|
#include "rx_common.h"
|
||||||
|
|
||||||
|
@ -21,6 +22,7 @@ void pwmRxInit(rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *failsafe, rcReadR
|
||||||
void sbusInit(rxConfig_t *initialRxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
void sbusInit(rxConfig_t *initialRxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
||||||
void spektrumInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
void spektrumInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
||||||
void sumdInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
void sumdInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
||||||
|
void rxMspInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback);
|
||||||
|
|
||||||
const char rcChannelLetters[] = "AERT1234";
|
const char rcChannelLetters[] = "AERT1234";
|
||||||
|
|
||||||
|
@ -62,6 +64,9 @@ void serialRxInit(rxConfig_t *rxConfig, failsafe_t *failsafe)
|
||||||
case SERIALRX_SUMD:
|
case SERIALRX_SUMD:
|
||||||
sumdInit(rxConfig, &rxRuntimeConfig, failsafe, &rcReadRawFunc);
|
sumdInit(rxConfig, &rxRuntimeConfig, failsafe, &rcReadRawFunc);
|
||||||
break;
|
break;
|
||||||
|
case SERIALRX_MSP:
|
||||||
|
rxMspInit(rxConfig, &rxRuntimeConfig, failsafe, &rcReadRawFunc);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +80,8 @@ bool isSerialRxFrameComplete(rxConfig_t *rxConfig)
|
||||||
return sbusFrameComplete();
|
return sbusFrameComplete();
|
||||||
case SERIALRX_SUMD:
|
case SERIALRX_SUMD:
|
||||||
return sumdFrameComplete();
|
return sumdFrameComplete();
|
||||||
|
case SERIALRX_MSP:
|
||||||
|
return rxMspFrameComplete();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@ typedef enum {
|
||||||
SERIALRX_SPEKTRUM2048 = 1,
|
SERIALRX_SPEKTRUM2048 = 1,
|
||||||
SERIALRX_SBUS = 2,
|
SERIALRX_SBUS = 2,
|
||||||
SERIALRX_SUMD = 3,
|
SERIALRX_SUMD = 3,
|
||||||
|
SERIALRX_MSP = 4,
|
||||||
|
SERIALRX_PROVIDER_MAX = SERIALRX_MSP
|
||||||
} SerialRXType;
|
} SerialRXType;
|
||||||
|
|
||||||
#define MAX_SUPPORTED_RC_PPM_AND_PWM_CHANNEL_COUNT 8
|
#define MAX_SUPPORTED_RC_PPM_AND_PWM_CHANNEL_COUNT 8
|
||||||
|
|
46
src/rx_msp.c
Normal file
46
src/rx_msp.c
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
#include "drivers/system_common.h"
|
||||||
|
|
||||||
|
#include "drivers/serial_common.h"
|
||||||
|
#include "drivers/serial_uart_common.h"
|
||||||
|
#include "serial_common.h"
|
||||||
|
|
||||||
|
#include "failsafe.h"
|
||||||
|
|
||||||
|
#include "rx_common.h"
|
||||||
|
#include "rx_msp.h"
|
||||||
|
|
||||||
|
failsafe_t *failsafe;
|
||||||
|
|
||||||
|
static bool rxMspFrameDone = false;
|
||||||
|
|
||||||
|
static uint16_t rxMspReadRawRC(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, uint8_t chan)
|
||||||
|
{
|
||||||
|
return rcData[chan];
|
||||||
|
}
|
||||||
|
|
||||||
|
void rxMspFrameRecieve(void)
|
||||||
|
{
|
||||||
|
rxMspFrameDone = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool rxMspFrameComplete(void)
|
||||||
|
{
|
||||||
|
if (rxMspFrameDone) {
|
||||||
|
failsafe->vTable->reset();
|
||||||
|
rxMspFrameDone = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void rxMspInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, failsafe_t *initialFailsafe, rcReadRawDataPtr *callback)
|
||||||
|
{
|
||||||
|
failsafe = initialFailsafe;
|
||||||
|
if (callback)
|
||||||
|
*callback = rxMspReadRawRC;
|
||||||
|
}
|
4
src/rx_msp.h
Normal file
4
src/rx_msp.h
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
bool rxMspFrameComplete(void);
|
||||||
|
void rxMspFrameRecieve(void);
|
|
@ -174,7 +174,7 @@ const clivalue_t valueTable[] = {
|
||||||
{ "gps_type", VAR_UINT8, &masterConfig.gps_type, 0, GPS_HARDWARE_MAX },
|
{ "gps_type", VAR_UINT8, &masterConfig.gps_type, 0, GPS_HARDWARE_MAX },
|
||||||
{ "gps_baudrate", VAR_INT8, &masterConfig.gps_baudrate, 0, GPS_BAUD_MAX },
|
{ "gps_baudrate", VAR_INT8, &masterConfig.gps_baudrate, 0, GPS_BAUD_MAX },
|
||||||
|
|
||||||
{ "serialrx_type", VAR_UINT8, &masterConfig.rxConfig.serialrx_type, 0, 3 },
|
{ "serialrx_type", VAR_UINT8, &masterConfig.rxConfig.serialrx_type, 0, SERIALRX_PROVIDER_MAX },
|
||||||
|
|
||||||
{ "telemetry_provider", VAR_UINT8, &masterConfig.telemetryConfig.telemetry_provider, 0, TELEMETRY_PROVIDER_MAX },
|
{ "telemetry_provider", VAR_UINT8, &masterConfig.telemetryConfig.telemetry_provider, 0, TELEMETRY_PROVIDER_MAX },
|
||||||
{ "telemetry_port", VAR_UINT8, &masterConfig.telemetryConfig.telemetry_port, 0, TELEMETRY_PORT_MAX },
|
{ "telemetry_port", VAR_UINT8, &masterConfig.telemetryConfig.telemetry_port, 0, TELEMETRY_PORT_MAX },
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "boardalignment.h"
|
#include "boardalignment.h"
|
||||||
#include "gps_common.h"
|
#include "gps_common.h"
|
||||||
#include "rx_common.h"
|
#include "rx_common.h"
|
||||||
|
#include "rx_msp.h"
|
||||||
#include "battery.h"
|
#include "battery.h"
|
||||||
#include "gimbal.h"
|
#include "gimbal.h"
|
||||||
#include "telemetry_common.h"
|
#include "telemetry_common.h"
|
||||||
|
@ -325,6 +326,7 @@ static void evaluateCommand(void)
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
rcData[i] = read16();
|
rcData[i] = read16();
|
||||||
headSerialReply(0);
|
headSerialReply(0);
|
||||||
|
rxMspFrameRecieve();
|
||||||
break;
|
break;
|
||||||
case MSP_SET_ACC_TRIM:
|
case MSP_SET_ACC_TRIM:
|
||||||
currentProfile.accelerometerTrims.trims.pitch = read16();
|
currentProfile.accelerometerTrims.trims.pitch = read16();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue