1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 05:15:25 +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:
treymarc 2014-05-01 05:06:36 +02:00 committed by Dominic Clifton
parent 771edeb29f
commit 9e8b05dc0e
9 changed files with 64 additions and 5077 deletions

View file

@ -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

View file

@ -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;
} }

View file

@ -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
View 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
View file

@ -0,0 +1,4 @@
#pragma once
bool rxMspFrameComplete(void);
void rxMspFrameRecieve(void);

View file

@ -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 },

View file

@ -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();